5 spôsobov, ako odpojiť a pripojiť zariadenie USB bez toho, aby ste zložili ruky z klávesnice

Pri mnohých príležitostiach, keď používame náš počítač, odpojíme zariadenie USB (bezpečne, ako to musí byť) a hneď potom si uvedomíme, že sme zabudli skopírovať súbor, alebo že sme sa museli ubezpečiť, že boli v naša jednotka. V týchto prípadoch je zvyčajne veľmi užitočné virtuálne odpojiť USB disky, keď pracujeme na diaľku.

Po vysunutí zariadenia ho už nevidíme v zozname zariadení, ale pevný disk alebo pendrive je stále pripojený cez port USB a v mnohých dnešných distribúciách po bezpečnom vysunutí disku tiež nevidíme zariadenie a Nemôžeme to urobiť namontovať z nášho terminálu. Najrýchlejším riešením je odpojiť kábel a znova ho pripojiť, v niektorých prípadoch buď kvôli lenivosti vstávať, alebo kvôli prístupu k počítaču, pred ktorým nie sme a nikto v jeho okolí nie je, nemôžeme to urobiť .

Informácie o zariadeniach USB

Než začneme, pozrime sa, ako získať informácie o zariadeniach USB pripojených k systému. Na to môžeme použiť lsusb, ktorý zobrazí zoznam pripojených zariadení práve teraz. Teraz uvádzam príklady toho, čo mám v počítači, ale možno sa to veľmi líši od toho, čo dostanete:

$ lsusb Bus 002 Device 001: ID 1d6b: 0003 Linux Foundation 3.0 root hub Bus 001 Device 006: ID 8087: 0a2a Intel Corp. Bus 001 Device 007: ID 046d: c52b Logitech, Inc. Unifying Receiver Bus 001 Device 005: ID 1a40 : 0101 Terminus Technology Inc. Hub Bus 001 Device 010: ID 125f: c93a A-DATA Technology Co., Ltd. 4GB Pen Drive Bus 001 Device 003: ID 04f2: b424 Chicony Electronics Co., Ltd Bus 001 Device 001: ID 1d6b : 0002 koreňový rozbočovač Linux Foundation 2.0

Ak chceme viac informácií, môžeme použiť modifikátor -t, ktorý nám ukáže výstup v podobe stromu s informáciami o moduloch:

$ lsusb -t /: Bus 02. Port 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 | __ Port 4: Dev 3, If 0, Class = Video, Driver = uvcvideo, 480M | __ Port 4: Dev 3, If 1, Class = Video, Driver = uvcvideo, 480M | __ Port 5: Dev 10, If 0, Class = Mass Storage, Driver = usb-storage, 480M | __ Port 6: Dev 5, If 0, Class = Hub, Driver = hub / 4p, 12M | __ Port 4: Dev 7, If 0, Class = Human Interface Device, 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 | __ Port 9: Dev 6, ak 0, trieda = bezdrôtové pripojenie, ovládač = btusb, 12M | __ port 9: dev 6, ak 1, trieda = bezdrôtové pripojenie, ovládač = btusb, 12M

Ak chceme oveľa viac informácií, môžeme použiť lsusb -v (výstup je veľmi veľký), navyše by sme mohli napríklad poznať maximálny výkon dodávaný do zariadenia nasledujúcim spôsobom:

$ 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 Zariadenie 007: ID 046d: c52b Logitech, Inc. Zjednocujúci prijímač MaxPower 98 mA Bus 001 Zariadenie 005: ID 1a40: 0101 Terminus Technology Inc. Hub MaxPower 100 mA Bus 001 Zariadenie 010: ID 125f: c93a A-DATA Technology Co., Ltd. 4 GB Pen Drive MaxPower 480mA Bus 001 Device 003: ID 04f2: b424 Chicony Electronics Co., Ltd MaxPower 500mA Bus 001 Device 001: ID 1d6b: 0002 Linux Foundation 2.0 root hub MaxPower 0mA

Ďalšie veľmi užitočné príkazy sú USB zariadenia, hwinfo, alebo napríklad ak máme cestu k zariadeniu (inside / dev /), môžeme požiadať systém o všetky možné informácie o ňom a subsystémoch, cez ktoré musí prechádzať. Napríklad, ak pripojíme pevný disk USB, aby sme videli, ako zariadenie používať, potrebujeme ovládač SCSI (na to, aby bol / dev / sdX), potrebujeme tiež ovládač úložiska USB, ktorý funguje cez USB port, ktorý patrí k rozbočovaču, ktorý je okrem iných prechodných systémov zapojený do portu PCI. Všetko, s čím sme mohli vidieť

$ udevadm info --query = cesta --name = / dev / sdX --attribute-walk

o

$ udevadm info -a -n / dev / sdX

Ak sa chceme odvážiť, môžeme tiež vstúpiť / sys / bus / usb a pozri sa na všetko, čo tam je, uvidíme veľa informácií, ale našťastie vyššie uvedené príkazy všetky tieto informácie klasifikujú.

Výsady a zariadenia

Na vykonanie tejto úlohy budeme potrebovať vedieť, ku ktorému zariadeniu sa chystáme znovu sa pripojiť. Na tento účel môžeme spustiť:

$ dmesg | chvost [Št 24. novembra 19:50:04 2016] sd 7: 0: 0: 0: Pripojené scsi generické sg3 typu 0 [798339.431677] sd 7: 0: 0: 0: [sdc] 15806464 512 bajtov logických blokov: ( 8.09 GB / 7.54 GiB) [798339.431840] sd 7: 0: 0: 0: [sdc] Ochrana proti zápisu je vypnutá [798339.431848] sd 7: 0: 0: 0: [sdc] Režim snímania: 00 00 00 00 [798339.431988] sd 7: 0: 0: 0: [sdc] Požiadanie o údaje medzipamäte zlyhalo [798339.431996] sd 7: 0: 0: 0: [sdc] Za predpokladu medzipamäte disku: zápis cez [798339.434157] sdc: sdc1 sdc2 [798339.446812] sd 7 : 0: 0: 0: [sdc] Pripojený vymeniteľný disk SCSI [798360.808588] Rozšírenia ISO 9660: Microsoft Joliet úrovne 3 [798360.809353] Rozšírenia ISO 9660: RRIP_1991A

Na tomto výstupe uvidíme, že zariadenie, s ktorým pracujeme, je sdc (sdc1 a sdc2 by boli oddiely na danom disku). Ako príklad použijem toto zariadenie, vo vašom prípade si budete musieť vizualizovať, ktoré máte.

V nasledujúcich príkladoch použijem sudo vykonávať príkazy s oprávneniami koreň. Aj keď by stačilo mať používateľa s dostatočným povolením. Ak chceme vidieť potrebné privilégiá, jednoducho tak robte ls do zariadenia:

$ ls -latr / dev / sdc brw-rw ---- 1 koreňový disk 8, 32. novembra 24, 19:50 / dev / sdc

Tam vidíme, že vlastníkom je root a skupina disk. Stačilo by mať používateľa patriaceho do skupinového disku.

Metóda 1. Správajte sa k nej ako k CD / DVD

Je to najjednoduchšie zo všetkých. Iste, ak ste už roky v GNU / Linux, pri práci s CD-ROM alebo DVD ste použili príkaz vysunutia. Vysunutie sa použilo na otvorenie CDROM a vysunutie -t sa použilo na zatvorenie zásobníka. Pokiaľ to urobíme pred USB zariadením:

$ sudo eject -t / dev / sdc

Zariadenie by sa malo javiť, akoby sme ho znova pripojili.

Metóda 2. Unplugged a Virtual Plug In

V niektorých systémoch (pokiaľ to hardvér podporuje), keď bezpečne odpojíte zariadenie USB, zariadenie sa prestane napájať a prestane sa zobrazovať. Je to rovnaké ako keď:

udisksctl vypnutie -b / dev / sdc

V tomto prípade, / Dev / sdc je to moje zariadenie a týmto príkazom simulovalo odpojenie virtuálneho napájania.

Problém je v tom, že teraz / dev / sdc neexistuje, ba čo viac, keď sa pozrieme na dmesg, dostaneme niečo také:

$ dmesg | chvost [281954.693298] USB 1-5: USB odpojenie, číslo zariadenia 3

Takže ak to skúsime metódou vysunúť nepôjde to. Poznámka: Zvýraznil som USB 1-5 a čoskoro uvidíme prečo.

Ak pracujete na diaľku, môže to byť dobrý nápad. Predstavte si, že máte pripojené jednotky USB na vytváranie záložných kópií. Keď robíte kópie, je dobré, že systém vie, že sú pripojené disky, ale keď ich nepoužívame, musíme na jednej strane šetrí energiu a zabráňte opotrebovaniu diskov, preto je lepšie prúd znížiť, na druhej strane, nechceme, aby škodlivé aplikácie zistili, že existujú tieto disky, aby sa nenakazili. (Áno, v GNU / Linux sú vírusy).

Ako teraz pripojíme prúd?

Musíme zavolať na USB port, pretože existuje projekt, ktorý sa volá náboj (Odkazujem na vidličku pôvodného projektu, pretože tu je opravená chyba, ktorá dokáže odstrániť prúd z viacerých zariadení, nielen z toho, ktoré chceme). Existuje viac projektov (ako uhubctl), ale nemá žiadne závislosti, keď ideme kompilovať, je to tiež len súbor hubpower.c.
Najprv to zostavíme,

$ gcc -o hubpower hubpower.c

Pamätáte si teraz čísla, ktoré sú označené tučným písmom, z dmesg? Budeme ich používať, budeme musieť zariadenie odpojiť a znova pripojiť, napríklad takto:

$ sudo ./hubpower 1: 1 vypnuté 5, stav portu 5: 0000 Vypnuté $ sudo ./hubpower 1: 1, vypnuté 5, stav portu 5: 0100 zapnuté

Ak nás zariadenie nezistí, môžeme skúsiť urobiť:

$ sudo ./hubpower 1: 1 bind Bind-driver požiadavka odoslaná do jadra

Týmto spôsobom opäť uvidíme naše pripojené zariadenie USB.

Ak nechceme program C ... mám ho v Perl

Program C je ťažké zostaviť a otestovať, či je to, čo urobíme, veľmi jednoduché, takže môžeme vyskúšať tento malý port v 10 riadkoch vytvorených v jazyku perl:

#! / bin / perl vyžaduje "sys / ioctl.ph"; $ device = "05"; open (my $ usbdev,"> "," / dev / bus / usb/ 001/001 "); $ data = pack ("H *", "23010800". $ device. "000000FFFFFF8813"); ioctl ($ usbdev, 0xC0185500, $ dáta); $ data = pack ("H *", "23030800". $ device. "000000FFFFFF8813"); ioctl ($ usbdev, 0xC0185500, $ dáta); zavrieť ($ usbdev);

Musíme rešpektovať $ zariadenie, číslo portu (v mojom prípade to bolo 5), ide o hexadecimálnu hodnotu, preto 10 bude A, 11 bude B, 15 bude F, 16 bude 10 ... Musíme tiež monitorovať zariadenie a autobus, ku ktorému pristupujeme z / dev / bus / usb /001/001, čísla musia byť s úvodnými nulami, pretože voláme tento súbor.

Ako vidíme, kľúč je v ioctl (), ide o funkciu, ktorá manipuluje s parametrami zariadenia zo špeciálneho súboru v súborovom systéme. Nájdeme medzi použitými hexadecimálnymi hodnotami 0xC0185500, konštanta zvaná USBDEVFS_CONTROL, pomocou ktorej pošleme riadiaci príkaz do USB zariadenia, Ostatné kódy patria k požiadavke na odpojenie a pripojenie (viac informácií nájdete v programe vytvorenom v C).

Metóda 3. Skrytie a zobrazenie zariadenia

Ďalším spôsobom, ako odpojiť zariadenie, môže byť:

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

Môžeme ho zotaviť:

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

Táto metóda nespôsobuje úplné odpojenie zariadenia. Robí to iba to, že s ním operačný systém nemusí hovoriť a veľa zariadení, keď o nich počítač nechce nič vedieť, sa prepne do režimu nízkej spotreby, pretože o nič nebudeme žiadať.

Metóda 4. Autorizácia zariadenia

Nevýhodou tejto metódy je, že v mnohých systémoch je možné dočasne deaktivovať viac zariadení, ktoré sú nielen tým, ktoré potrebujeme, ale útočia aj na celý USB rozbočovač. Napríklad:

$ echo 0 | sudo tee / sys / bus / usb / devices / usb1 / autorizované $ echo 1 | sudo tee / sys / bus / usb / devices / usb1 / autorizované

Čo samozrejme môžeme spustiť všetko za sebou:

$ echo 0 | sudo tee / sys / bus / usb / devices / usb1 / autorizované; ozvena 1 | sudo tee / sys / bus / usb / devices / usb1 / autorizované

Musíme byť opatrní, ak je k rovnakému USB portu pripojených viac diskov (a takmer vždy v našich počítačoch, niekoľko USB portov, ako vidíme, je interne pripojených k rozbočovaču, takže existujú skupiny portov s rovnakým USB otec, daj to nejakým spôsobom.

Metóda 5. Reštartujte subsystém USB

Ak chceme reštartovať USB subsystém. To znamená, že obnovíte všetky USB zariadenia, ako je napríklad odpojenie a zapojenie všetkých, na jednej strane si môžeme stiahnuť a znovu načítať USB jadrový modul:

$ sudo modprobe -r ehci_hcd; sudo modprobe ehci_hcd #For USB2 $ sudo modprobe -r xhci_hcd; sudo modprobe xhci_hcd # Pre USB3

Aj keď niektoré distribúcie, vrátane najnovších verzií Ubuntu a derivátov, obsahujú integrované USB moduly a nedajú sa stiahnuť. Na druhej strane nám systém nemusí umožniť stiahnuť ich, pretože sa používajú kvôli iným modulom (tlačiarňam, úložným priestorom, zariadeniam s rozhraním atď.), A ak začneme sťahovať moduly a rozbíjať veci, možno budeme musieť nakoniec reštartujte počítač. Takže iným spôsobom môžeme urobiť:

$ echo '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

Aby sme našli naše zariadenie, môžeme urobiť ls inside / sys / bus / pci / drivers / xhci_hcd, objaví sa niekoľko vecí, musíme hľadať ten, ktorý vyzerá takto aaaa: bb: cc: dd.e. Váš USB port nemusí byť xhci_hcd (USB3), ale skôr ehci_hcd (USB2)


Zanechajte svoj komentár

Vaša e-mailová adresa nebude zverejnená. Povinné položky sú označené *

*

*

  1. Zodpovedný za údaje: Miguel Ángel Gatón
  2. Účel údajov: Kontrolný SPAM, správa komentárov.
  3. Legitimácia: Váš súhlas
  4. Oznamovanie údajov: Údaje nebudú poskytnuté tretím stranám, iba ak to vyplýva zo zákona.
  5. Ukladanie dát: Databáza hostená spoločnosťou Occentus Networks (EU)
  6. Práva: Svoje údaje môžete kedykoľvek obmedziť, obnoviť a vymazať.

  1.   Cristian dijo

    Vynikajúci článok!

    1.    gasparfm dijo

      Ďakujem pekne Cristianovi! Dúfam, že vám to prišlo užitočné.

  2.   Antonio juan dijo

    V tomto článku sa nehovorí, že kedykoľvek sa chystáte dať, je na opačnej strane ako tá správna a musíte ju otočiť ... hehehe. Skvelý článok.

    1.    gasparfm dijo

      Vďaka Antonio Juan! No pozri, nevieš, koľkokrát sa mi to stalo, keď som skúšal všetko, čo som do príspevku vložil! 🙂

  3.   ROMSAT dijo

    Brilantné. Vynikajúca položka. Mal by mať názov: „Dozviete sa viac o systéme Linux jednoduchým odpojením a pripojením USB kľúča.“ Gratulujem.
    Zdravím z Malagy.

    1.    gasparfm dijo

      No áno, neviem, či niekto začne programovať v C a pristupovať k zariadeniam z tohto príspevku! Aj z Malagy !! Sme všade 🙂

  4.   HO2Gi dijo

    Pôsobivý článok. S takým materiálom ste išli cez palubu.

    1.    gasparfm dijo

      Vďaka HO2Gi !! Na mojom osobnom blogu ( http://totaki.com/poesiabinaria ) existuje aj veľa návodov na daný štýl 🙂

  5.   atahualpa dijo

    dakujem pekne kamarat. Začínam v linuxe, konkrétne v linux mint a mám nasledujúci problém: v konzole vidím, že môj telefón je pripojený k stroju, ale nie v správcovi súborov. Preto ho nemôžem použiť ako modem na pripojenie na internet. Čo môžem urobiť?

    1.    Gašpar Fernandez dijo

      Existujú telefóny, ktoré vám neumožňujú pripojenie ako modem, ale môžete to urobiť Tethering

  6.   Milazzo dijo

    Vynikajúca dokumentácia!
    Ďakujeme, že ste si našli čas a podelili sa o túto skúsenosť.
    Používam ho ako referenciu pre iný typ problému, ktorý mám: Odpojenie USB portov v Ubuntu (# 42 ~ precízny1-Ubuntu SMP St 14. augusta 15:31:16 UTC 2013)
    Príde čas, keď systém hodí -110 do dmesg a reštartuje počítač, predpokladá sa, že porucha je spôsobená nedostatkom energie v USB, kde je pripojené zariadenie (USB3.0).

    Teraz používam lsusb -v na kontrolu úrovne výkonu zariadenia, ale hodí 2mA, čo je úplne absurdné ... iba LED diódy spotrebúvajú viac než to ...

    Pripojujem huawei E4 USB-8372G modem, ale maxpower naznačuje 2mA, čo je neuveriteľné, teraz sa pochybnosti zmenili a vznikli ďalšie:
    Je MaxPower atribút, ktorý sa predvolene dodáva v zariadení alebo v operačnom systéme?
    Je to parameter maximálneho výkonu, ktorý USB port dodá?
    V prípade, že ide o parameter
    Je možné tento parameter upraviť a nastaviť na maximum dané portom USB (900 mAh - 3.0 / 500 mAh - 2.0)?
    V prípade, že nejde o parameter,
    Je to nepravdepodobná hodnota merania spotreby USB v reálnom čase?
    Ak je to iná možnosť, vysvetlite mi to, pretože pochybujem o referenčných informáciách.

    Mám niekoľko pochybností týkajúcich sa tejto hodnoty MaxPower, ak máte nejaké ďalšie informácie, budem vám veľmi vďačný.

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

    Zbernica 002 Zariadenie 006: ID 1a86: 7523 Sériový adaptér QinHeng Electronics HL-340 USB
    bDeviceClass 255 Špecifická trieda dodávateľa
    iProduct 2 USB2.0-Serial
    Max. Výkon 96 mA
    Bus 002 Device 008: ID 12d1: 14db Huawei Technologies Co., Ltd.
    Komunikácia bDeviceClass 2
    iProduct 2 HUAWEI_MOBILE
    Max. Výkon 2 mA

  7.   Anonymný dijo

    Dá sa to aplikovať na okná?

  8.   chelo dijo

    Ďakujem mnohokrát. S udisksctl power-off -b / dev / sdc na mojom externom disku to stačilo na vyriešenie bolesti hlavy. Nebolo by lepšie, keby mal odpojiteľ možnosť urobiť to sám?

  9.   Marisa dijo

    Bože, čo to kurva! Čítal niekto celú túto vôľu? A vyššie po doske stále nevieme, ako vypnúť zvukové rozhranie DAC / USB, tlačiareň, grafický tablet ... no, nič, čo by nebolo hrotom alebo externým diskom. Aká strata času ...