5 manieroj malkonekti kaj konekti USB-aparaton sen depreni viajn manojn de la klavaro

Multfoje, kiam ni uzas nian komputilon, ni malkonektas USB-aparaton (sekure, kiel ĝi devas esti) kaj, tuj poste, ni konstatas, ke ni forgesis kopii dosieron aŭ ke ni devis certigi, ke datumoj estas en nia unuo. Por ĉi tiuj kazoj kutime tre utilas preskaŭ malkonekti la USB-diskojn kiam ni laboras malproksime.

Forpelinte la aparaton, ni ne plu vidas ĝin en nia listo de aparatoj, sed la malmola disko aŭ pendrive estas ankoraŭ konektitaj per la USBa haveno, kaj en multaj distribuoj hodiaŭ, sekure elpelinte la diskon, ni ankaŭ ne vidas la aparaton kaj Ni ne povas fari monto de nia fina stacio. La plej rapida solvo estas malkonekti la kablon kaj religi ĝin, en iuj kazoj, ĉu pro mallaboremo devi leviĝi aŭ ĉar ni aliras komputilon, kiun ni ne estas antaŭ kaj estas neniu ĉirkaŭe, ni ne povas fari ĝin .

Informoj pri USB-aparatoj

Antaŭ ol komenci, ni vidu kiel akiri informojn pri USB-aparatoj konektitaj al la sistemo. Por ĉi tio, ni povas uzi lsusb, kiu listigos la konektitajn aparatojn nun. Mi metas ekzemplojn de tio, kion mi ricevas en mia komputilo nun, sed eble ĝi tre diferencas de tio, kion vi ricevas:

$ lsusb Bus 002 Aparato 001: ID 1d6b: 0003 Linux Foundation 3.0 radika nabo Bus 001 Aparato 006: ID 8087: 0a2a Intel Corp. Bus 001 Aparato 007: ID 046d: c52b Logitech, Inc. Unuiganta Ricevilo Bus 001 Aparato 005: ID 1a40 : 0101 Terminus Technology Inc. Hub Bus 001 Aparato 010: ID 125f: c93a A-DATA Technology Co., Ltd. 4GB Pen Drive Bus 001 Aparato 003: ID 04f2: b424 Chicony Electronics Co., Ltd Bus 001 Aparato 001: ID 1d6b : 0002 Linuksa Fundamento 2.0-radika nabo

Se ni volas pli da informoj, ni povas uzi la -t-modifilon, kiu montros al ni produktaĵon en formo de arbo kun informoj pri la moduloj:

$ lsusb -t /: Buso 02. Haveno 1: Dev 1, Class = root_hub, Driver = xhci_hcd / 8p, 5000M /: Bus 01. Port 1: Dev 1, Class = root_hub, Driver = xhci_hcd / 16p, 480M | __ Haveno 4: Dev 3, Se 0, Class = Video, Driver = uvcvideo, 480M | __ Haveno 4: Dev 3, If 1, Class = Video, Driver = uvcvideo, 480M | __ Port 5: Dev 10, If 0, Class = Amasa Stokado, Ŝoforo = usb-stokado, 480M | __ Haveno 6: Dev 5, Se 0, Klaso = Nabo, Ŝoforo = nabo / 4p, 12M | __ Haveno 4: Dev 7, Se 0, Klaso = Homa Interfaca Aparato, Driver = usbhid, 12M | __ Port 4: Dev 7, If 1, Class = Human Interface Device, Driver = usbhid, 12M | __ Port 4: Dev 7, If 2, Class = Human Interface Device, Driver = usbhid, 12M | __ Haveno 9: Dev 6, Se 0, Klaso = Sendrata, Ŝoforo = btusb, 12M | __ Haveno 9: Dev 6, Se 1, Klaso = Sendrata, Ŝoforo = btusb, 12M

Se ni volas multe pli da informoj, ni povas uzi lsusb -v (la eligo estas tre granda), krome ni povus ekzemple scii la maksimuman potencon liveratan al la aparato, jene:

$ lsusb -v 2> / dev / null | egrep "^ Bus | MaxPower" Bus 002 Device 001: ID 1d6b: 0003 Linux Foundation 3.0 root hub MaxPower 0mA Bus 001 Device 006: ID 8087: 0a2a Intel Corp. MaxPower 100mA Bus 001 Aparato 007: ID 046d: c52b Logitech, Inc. Unuiga Ricevilo MaxPower 98mA Buso 001 Aparato 005: ID 1a40: 0101 Terminus Technology Inc. Hub MaxPower 100mA Buso 001 Aparato 010: ID 125f: c93a A-DATA Technology Co., Ltd. 4GB Pen Drive MaxPower 480mA Bus 001 Aparato 003: ID 04f2: b424 Chicony Electronics Co., Ltd MaxPower 500mA Bus 001 Aparato 001: ID 1d6b: 0002 Linukso-Fundamento 2.0 radika nabo MaxPower 0mA

Aliaj tre utilaj komandoj estas usb-aparatoj, hwinfo, aŭ, ekzemple, se ni havas la vojon de aparato (ene / dev /), ni povas peti al la sistemo ĉiujn eblajn informojn pri ĝi kaj la subsistemojn, kiujn ĝi devas trairi. Ekzemple, se ni konektas USB-malmolan diskon, por ke ni povu vidi kiel uzi la aparaton, ni bezonas SCSI-pelilon (por esti / dev / sdX), ni ankaŭ bezonas USB-stokan pelilon, kiu funkcias per la USBa haveno, kiu apartenas al nabo, kiu estas konektita al PCI-haveno, inter aliaj interaj sistemoj. Ĉion, kion ni povis vidi

$ udevadm info --query = vojo --nomo = / dev / sdX --atributo-promenado

o

$ udevadm-info -a -n / dev / sdX

Se ni volas enriskiĝi, ni ankaŭ povas eniri / sys / bus / usb kaj rigardu ĉion, kio troviĝas, ni vidos multajn informojn, sed feliĉe la supraj komandoj klasifikas ĉiujn ĉi informojn.

Privilegioj kaj aparatoj

Por plenumi ĉi tiun taskon ni devos scii al kiu aparato ni iras rekonekti. Por fari tion, ni povas lanĉi:

$ dmesg | vosto [Thu Nov 24 19:50:04 2016] sd 7: 0: 0: 0: Kuna scsi generic sg3 tipo 0 [798339.431677] sd 7: 0: 0: 0: [sdc] 15806464 512-bajtaj logikaj blokoj: ( 8.09 GB / 7.54 GiB) [798339.431840] sd 7: 0: 0: 0: [sdc] Write Protect estas malŝaltita [798339.431848] sd 7: 0: 0: 0: [sdc] Mode Sense: 00 00 00 00 [798339.431988] sd 7: 0: 0: 0: [sdc] Malsukcesis peti kaŝmemorajn datumojn [798339.431996] sd 7: 0: 0: 0: [sdc] Supozante disk-kaŝmemoron: skribu tra [798339.434157] sdc: sdc1 sdc2 [798339.446812] sd 7 : 0: 0: 0: [sdc] Kuna SCSI-forprenebla disko [798360.808588] Etendaĵoj ISO 9660: Microsoft Joliet Nivelo 3 [798360.809353] Etendaĵoj ISO 9660: RRIP_1991A

En ĉi tiu eligo, ni vidos, ke la aparato kun kiu ni laboras estas sdc (sdc1 kaj sdc2 estus dispartigoj ene de tiu disko). Por la ekzemploj mi uzos ĉi tiun aparaton, en via kazo vi devos bildigi, kiun vi havas.

En la ekzemploj sube mi uzos sudo plenumi la komandojn kun la privilegioj de radikon. Kvankam sufiĉus havi uzanton kun sufiĉa permeso. Se ni volas vidi la necesajn privilegiojn, simple faru ls al aparato:

$ ls -latr / dev / sdc brw-rw ---- 1 radika disko 8, 32 nov 24 19:50 / dev / sdc

Tie ni vidas, ke la posedanto estas root kaj la grupo Disko. Sufiĉus havi uzanton apartenantan al la grupa disko.

Metodo 1. Traktu ĝin kiel KD / DVD

Ĝi estas la plej simpla el ĉiuj. Certe se vi uzas GNU / Linukso dum jaroj, kiam vi laboris kun CD-ROM aŭ DVD, vi uzis la ordonon elĵeti. Nu, elĵeti estis uzita por malfermi la CDROM kaj elĵeti -t estis uzita por fermi la pleton. Nu, se ni faros tion antaŭ la USB-aparato:

$ sudo elĵetu -t / dev / sdc

La aparato devas aperi kvazaŭ ni konektus ĝin denove.

Metodo 2. Malligita kaj Virtuala Enŝovita

En iuj sistemoj (kondiĉe ke la aparataro subtenas ĝin), kiam vi sekure forigas la USB-aparaton, la aparato ĉesas funkciigi kaj la aparato ne plu aperas. Estas same kiel kiam vi faras:

udisksctl malŝaltita -b / dev / sdc

En ĉi tiu kazo, / dev / sdc ĝi estas mia aparato, kaj per ĉi tiu komando ĝi simulis virtualan elektran malkonektadon.

La problemo estas, ke nun / dev / sdc ne ekzistas, kio estas pli, se ni rigardas dmesg, ni ricevos ion tian:

$ dmesg | vosto [281954.693298] usb 1-5: USB malkonekti, aparato numero 3

Do se ni provas per la metodo de elĵeti ĝi ne funkcios. Noto: mi reliefigis usb 1-5 kaj ni vidos kial baldaŭ.

Se vi laboras malproksime, ĉi tio eble estas bona ideo. Imagu, ke vi havas USB-diskojn ligitajn al sekurkopio. Kiam vi faras la kopiojn, estas bone por la sistemo scii, ke estas diskoj konektitaj, sed, kiam ni ne uzas ilin unuflanke, ni devas savi energion kaj evitu la eluziĝon de la diskoj, do estas pli bone tranĉi la kurenton, aliflanke, ni ne volas, ke malicaj programoj vidu, ke ili ekzistas ĉi tiuj diskoj por ke ili ne infektiĝu. (Jes, en GNU / Linukso ekzistas virusoj).

Kiel ni konektas la fluon nun?

Ni devas telefoni al la USBa haveno, por tio ekzistas projekto nomata hubpovo (Mi ligas al forko de la originala projekto ĉar ĉi tie riparas cimon, kiu povas forigi la kurenton de pli da aparatoj kaj ne nur de tiu, kiun ni volas). Estas pli da projektoj (kiel uhubctl), sed ĉi tio ne havas dependecojn por kiam ni kompilos, ĝi ankaŭ estas nur hubpower.c-dosiero.
Unue, ni kompilas ĝin,

$ gcc -o hubpower hubpower.c

Nun, ĉu vi memoras la nombrojn grasajn de la dmesg? Nu, ni uzos ilin, ni devos malkonekti la aparaton kaj rekonekti ĝin, tiel:

$ sudo ./hubpower 1: 1 potenco 5 malŝaltita Port 5 stato: 0000 Malŝalto $ sudo ./hubpower 1: 1 potenco 5 ĉe haveno 5 stato: 0100 Potenco

Se la aparato ne detektas nin, ni povas provi fari:

$ sudo ./hubpower 1: 1 bind Bind-driver-peto sendita al la kerno

Tiel ni revidos nian konektitan USB-aparaton.

Se ni ne volas C-programon ... Mi havas ĝin perl

C-programo malfacile kompileblas kaj testas, ĉu ni faros tion, estas tre simpla, do ni povas provi ĉi tiun malgrandan havenon en 10 linioj perl:

#! / bin / perl postulas "sys / ioctl.ph"; $ aparato = "05"; malfermu (mia $ usbdev,"> "," / dev / bus / usb/ 001/001 "); $ data = pack ("H *", "23010800". $ aparato. "000000FFFFFF8813"); ioctl ($ usbdev, 0xC0185500, $ datumoj); $ datumoj = pack ("H *", "23030800". $ aparato. "000000FFFFFF8813"); ioctl ($ usbdev, 0xC0185500, $ datumoj); fermi ($ usbdev);

Ni devas respekti $ aparato, la porda numero (en mia kazo ĝi estis 5), ĝi estas valoro en deksesuma, tial 10 estos A, 11 estos B, 15 estos F, 16 estos 10 ... Ni ankaŭ devas monitori la aparaton kaj la buso, al kiu ni aliras de / dev / bus / usb /001/001, la nombroj devas iri kun ĉefaj nuloj ĉar ni nomas tiun dosieron.

Kiel ni povas vidi, la ŝlosilo estas en ioctl (), ĝi estas funkcio, kiu manipulas parametrojn de aparato de speciala dosiero en la dosiersistemo. Inter la uzitaj deksesumaj valoroj, ni trovas 0xC0185500, konstanto nomata USBDEVFS_CONTROL per kiu ni sendos kontrolan komandon al la USB-aparato, La aliaj kodoj apartenas al la peto de malkonekto kaj konekto (vi povas trovi pli da informoj en la programo farita en C).

Metodo 3. Kaŝi kaj montri la aparaton

Alia maniero malkonekti la aparaton povus esti:

eoo '1-5' | sudo tee / sys / bus / usb / drivers / usb / unbind

Kaj ni povas rekuperi ĝin farante:

eoo '1-5' | sudo tee / sys / bus / usb / drivers / usb / bind

Ĉi tiu metodo ne kaŭzas kompletan malkonekton de la aparato. Ĝi nur igas la operaciumon ne paroli kun ĝi kaj multaj aparatoj, kiam komputilo ne volas scii ion pri ili, estas metitaj en modon de malalta potenco, ĉar ni nenion petos.

Metodo 4. Aparata rajtigo

La malavantaĝo de ĉi tiu metodo estas, ke en multaj sistemoj pli da aparatoj povas esti provizore malŝaltitaj, kiuj estas ne nur tiuj, kiujn ni bezonas, sed ni ankaŭ atakas tutan USB-centron. Ekzemple:

$ eoo 0 | sudo tee / sys / bus / usb / devices / usb1 / rajtigita $ echo 1 | sudo tee / sys / bus / usb / devices / usb1 / rajtigita

Kiu, kompreneble, ni povas funkciigi ĉion sinsekve:

$ eoo 0 | sudo tee / sys / bus / usb / aparatoj / usb1 / rajtigita; eoo 1 | sudo tee / sys / bus / usb / devices / usb1 / rajtigita

Ni devas zorgi, se estas pli da diskoj konektitaj al la sama USB-haveno (kaj preskaŭ ĉiam en niaj komputiloj, pluraj USB-havenoj ol tiuj, kiujn ni vidas, estas interne konektitaj al nabo, do estas grupoj de havenoj kun la sama USB patro, esprimu ĝin iel.

Metodo 5. Rekomencu la subsistemon USB

Se ni volas rekomenci la USB-subsistemon. Tio estas refreŝigi ĉiujn USB-aparatojn, kiel malŝalti kaj ŝtopi ĉiujn, unuflanke ni povas elŝuti kaj reŝargi la USB-kernan modulon:

$ sudo modprobe -r ehci_hcd; sudo modprobe ehci_hcd #Por USB2 $ sudo modprobe -r xhci_hcd; sudo modprobe xhci_hcd #Por USB3

Kvankam iuj distribuoj, la plej novaj versioj de Ubuntu kaj derivaĵoj inkluzivitaj, havas la integritaj USB-moduloj kaj ili ne elŝuteblas. Aliflanke, la sistemo eble ne lasas nin elŝuti ilin ĉar ili estas uzataj pro aliaj moduloj (presiloj, stokado, interfacaj aparatoj, ktp), kaj se ni komencas elŝuti modulojn kaj rompi aferojn, ni eble devos rekomenci la komputilo.ĉe la fino. Do, alimaniere ni povas fari:

$ eoo '0000: 00: 14.5'| sudo tee / sys / bus / pci / drivers / xhci_hcd / unbind $ echo '0000: 00: 14.5'| sudo tee / sys / bus / pci / drivers / xhci_hcd / bind

Por trovi nian aparaton, ni povas fari ls ene / sys / bus / pci / drivers / xhci_hcd, pluraj aferoj aperos, ni devas serĉi unu, kiu aspektas tiel aaaa: bb: cc: dd.e. Via USBa haveno eble ne venas kiel xhci_hcd (USB3), sed prefere ehci_hcd (USB2)


La enhavo de la artikolo aliĝas al niaj principoj de redakcia etiko. Por raporti eraron alklaku Ĉi tie.

14 komentoj, lasu la viajn

Lasu vian komenton

Via retpoŝta adreso ne estos eldonita. Postulita kampojn estas markita per *

*

*

  1. Respondeculo pri la datumoj: Miguel Ángel Gatón
  2. Celo de la datumoj: Kontrola SPAM, administrado de komentoj.
  3. Legitimado: Via konsento
  4. Komunikado de la datumoj: La datumoj ne estos komunikitaj al triaj krom per laŭleĝa devo.
  5. Stokado de datumoj: Datumbazo gastigita de Occentus Networks (EU)
  6. Rajtoj: Iam ajn vi povas limigi, retrovi kaj forigi viajn informojn.

  1.   Cristian diris

    Bonega artikolo!

    1.    gasparfm diris

      Koran dankon Cristian! Mi esperas, ke vi trovis ĝin utila.

  2.   Antonio Johano diris

    En ĉi tiu artikolo oni ne diras, ke kiam ajn vi metos ĝin, ĝi estas sur la kontraŭa flanko al la ĝusta kaj vi devas turni ĝin ... hehehe. Bonega artikolo.

    1.    gasparfm diris

      Dankon Antonio Juan! Nu, vidu, vi ne scias, kiom da fojoj tio okazis al mi, dum mi provis ĉion, kion mi afiŝis! 🙂

  3.   ROMSAT diris

    Bonege. Supera ero. Ĝi devas esti titolita: "Lernu pri la Linuksa sistemo simple malŝaltante kaj enŝovante vian USB-bastonon." Gratulon.
    Salutojn el Malago.

    1.    gasparfm diris

      Nu jes, mi ne scias, ĉu iu komencos programi en C kaj aliri aparatojn de ĉi tiu afiŝo! Ankaŭ el Malago !! Ni estas ĉie 🙂

  4.   HO2Gi diris

    Impresa artikolo. Vi preterpasis kun tia materialo.

    1.    gasparfm diris

      Dankon HO2Gi !! En mia persona blogo ( http://totaki.com/poesiabinaria ) ekzistas ankaŭ multaj lerniloj de la stilo 🙂

  5.   atahualpa diris

    koran dankon amiko. Mi komencas en linux, specife en linux mint, kaj mi havas la sekvan problemon: en la konzolo mi povas vidi, ke mia telefono estas konektita al la maŝino sed ne en la dosieradministrilo. Kaj tial mi ne povas uzi ĝin kiel modemon por konekti al la interreto. Kion mi povas fari?

    1.    Gaspar Fernandez diris

      Estas telefonoj, kiuj ne permesas vin konekti kiel modemo, sed vi povas fari Tethering

  6.   Milazzo diris

    Bonega dokumentado!
    Dankon pro via tempo por dividi la sperton.
    Mi uzas ĝin kiel referencon por alia problemo, kiun mi havas: Malkonekto de USB-havenoj en Ubuntu (# 42 ~ precise1-Ubuntu SMP Wed Aug 14 15:31:16 UTC 2013)
    Venas tempo, kiam la Sistemo ĵetas -110 en la dmesg kaj rekomencas la komputilon, oni supozas, ke la fiasko estas pro manko de potenco en la USB, kie la aparato estas konektita (USB3.0).

    Nun mi uzas la lsusb -v por kontroli la potencan nivelon de la aparato sed ĝi ĵetas 2mA, kio estas tute absurda ... nur la LEDoj konsumas pli ol tio ...

    Mi konektas Huawei E4 USB-8372G-modemon, tamen la maksimuma potenco indikas 2mA, kio estas nekredebla, nun la dubo ŝanĝiĝis kaj aliaj aperis:
    Ĉu MaxPower estas atributo, kiu aperas defaŭlte sur la aparato aŭ en la OS?
    Ĉu ĝi estas parametro de la maksimuma potenco, kiun liveros la usb-haveno?
    Kaze de esti parametro
    Ĉu ĉi tiu parametro povas esti modifita kaj agordita al la maksimumo donita de la USBa haveno (900mAh- 3.0 / 500mAh- 2.0)?
    Se ĝi ne estas parametro,
    Ĉu ĝi estas realtempa mezura valoro de la USB-konsumo (neverŝajna)?
    Se ĝi estas alia eblo, bonvolu klarigi al mi, ĉar mi dubas pri la referencaj informoj.

    Mi havas plurajn dubojn pri ĉi tiu MaxPower-valoro, se vi havas pliajn informojn, mi tre dankus.

    lsusb -v 2> / dev / null | egrep "^ Bus | MaxPower | bDeviceClass | iProduct"

    Buso 002 Aparato 006: ID 1a86: 7523 QinHeng Electronics HL-340 USB-Seria adaptilo
    bDeviceClass 255 Vendor Specifa Klaso
    iProdukto 2 USB2.0-Seria
    Maksimuma potenco 96mA
    Buso 002 Aparato 008: ID 12d1: 14db Huawei Technologies Co., Ltd.
    Komunikadoj de bDeviceClass 2
    iProdukto 2 HUAWEI_MOBILE
    Maksimuma potenco 2mA

  7.   Anonimo diris

    Ĉu ĝi povas esti aplikita al fenestroj?

  8.   Chelo diris

    Multaj dankoj. Kun udisksctl power-off -b / dev / sdc sur mia ekstera disko sufiĉis solvi la kapdoloron. Ĉu ne estus pli bone, se la malmuntado havas eblon fari tion mem?

  9.   Marisa diris

    Dio, kia diablo! Ĉu iu legis ĉi tiun tutan testamenton? Kaj supre post la plato ni ankoraŭ ne scias kiel malŝalti soninterfacon DAC / USB, presilon, grafikan tableton ... nu, nenio, kio ne estas pikilo aŭ ekstera disko. Kia tempoperdo ...