5 načinov za odklop in priključitev naprave USB, ne da bi odmaknili roke s tipkovnice

Velikokrat, ko uporabljamo svoj računalnik, odklopimo napravo USB (varno, kot mora biti) in takoj zatem ugotovimo, da smo pozabili kopirati datoteko ali da smo morali zagotoviti, da so podatki v naši enoti. V teh primerih je običajno zelo koristno, da pogone USB skoraj izključimo, ko delamo na daljavo.

Ko je napravo izmetnil, je ne vidimo več na seznamu naprav, vendar je trdi disk ali pendrive še vedno povezan z vrati USB in v mnogih distribucijah danes, ko smo varno izvlekli pogon, tudi ne vidimo naprave in Ne moremo storiti mount z našega terminala. Najhitrejša rešitev je odklop kabla in njegovo ponovno priključitev, v nekaterih primerih bodisi zaradi lenobe, da moramo vstati, bodisi zato, ker dostopamo do računalnika, pred katerim nismo pred seboj in ni nikogar v bližini, tega ne moremo storiti.

Informacije o napravah USB

Preden začnemo, poglejmo, kako pridobiti informacije o napravah USB, priključenih na sistem. Za to lahko uporabimo lsusb, v katerem bodo trenutno navedene povezane naprave. Dajem primere tega, kar dobim v računalniku zdaj, vendar se morda zelo razlikuje od tistega, kar dobite:

$ 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 korensko vozlišče Linux Foundation 2.0

Če želimo več informacij, lahko uporabimo modifikator -t, ki nam bo prikazal izhod v obliki drevesa z informacijami o modulih:

$ 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 | __ Vrata 4: Dev 3, če je 0, razred = video, gonilnik = uvcvideo, 480M | __ vrata 4: dev 3, če je 1, razred = video, voznik = uvcvideo, 480M | __ vrata 5: Dev 10, če je 0, razred = 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, Gonilnik = usbhid, 12M | __ Vrata 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 | __ Vrata 9: Dev 6, če je 0, razred = brezžični, voznik = btusb, 12M | __ vrata 9: dev 6, če je 1, razred = brezžični, gonilnik = btusb, 12M

Če želimo veliko več informacij, jih lahko uporabimo lsusb -v (izhod je zelo velik), poleg tega pa bi lahko na primer vedeli največjo moč, ki se dovaja v napravo, na naslednji način:

$ lsusb -v 2> / dev / null | egrep "^ Bus | MaxPower" Bus 002 Device 001: ID 1d6b: 0003 Korensko vozlišče Linux Foundation 3.0 MaxPower 0mA Bus 001 Device 006: ID 8087: 0a2a Intel Corp. MaxPower 100mA Bus 001 Naprava 007: ID 046d: c52b Logitech, Inc. Združevalni sprejemnik MaxPower 98mA Bus 001 Naprava 005: ID 1a40: 0101 Terminus Technology Inc. Središče MaxPower 100mA Bus 001 Naprava 010: ID 125f: c93a A-DATA Technology Co., Ltd. Pen Pen MaxPower 4mA Bus 480 Device 001: ID 003f04: b2 Chicony Electronics Co., Ltd MaxPower 424mA Bus 500 Device 001: ID 001d1b: 6 Koreninsko pesto Linux Foundation 0002 MaxPower 2.0mA

Drugi zelo uporabni ukazi so usb-naprave, hwinfoali, če imamo na primer pot do naprave (znotraj / dev /), lahko sistem prosimo za vse možne informacije o njej in podsistemih, skozi katere mora iti. Če na primer priključimo trdi disk USB, da bomo lahko videli, kako uporabljati napravo, potrebujemo gonilnik SCSI (za / dev / sdX), potrebujemo tudi gonilnik USB, ki deluje prek vrat USB, ki pripada zvezdišče, ki je med drugimi vmesnimi sistemi priključeno na vrata PCI. Vse, kar smo lahko videli

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

o

$ udevadm info -a -n / dev / sdX

Če želimo tvegati, lahko tudi vstopimo / sys / bus / usb in če pogledamo vse, kar obstaja, bomo videli veliko informacij, a na srečo zgornji ukazi razvrstijo vse te informacije.

Privilegiji in naprave

Za izvedbo te naloge bomo morali vedeti, na katero napravo gremo ponovno povezati. Za to lahko zaženemo:

$ dmesg | tail [Thu Nov 24 19:50:04 2016] sd 7: 0: 0: 0: Priloženi scsi generični sg3 tip 0 [798339.431677] sd 7: 0: 0: 0: [sdc] 15806464 512-bajtni logični bloki: ( 8.09 GB / 7.54 GiB) [798339.431840] sd 7: 0: 0: 0: [sdc] Zaščita pred zapisovanjem je izključena [798339.431848] sd 7: 0: 0: 0: [sdc] Občutljivost načina: 00 00 00 00 [798339.431988] sd 7: 0: 0: 0: [sdc] Zahteva po podatkih predpomnilnika ni uspela [798339.431996] sd 7: 0: 0: 0: [sdc] Ob predpostavki predpomnilnika pogona: piši skozi [798339.434157] sdc: sdc1 sdc2 [798339.446812] sd 7 : 0: 0: 0: [sdc] Priloženi odstranljivi disk SCSI [798360.808588] Razširitve ISO 9660: Microsoft Joliet Level 3 [798360.809353] Razširitve ISO 9660: RRIP_1991A

V tem izidu bomo videli, da je naprava, s katero delamo, SDC (sdc1 in sdc2 bi bili particiji na tem disku). Za primere, ki jih bom uporabil, boste morali v vašem primeru predstaviti, kateri račun imate.

V spodnjih primerih bom uporabil sudo za izvajanje ukazov s privilegiji koren. Čeprav bi bilo dovolj, če bi imeli uporabnika z zadostnim dovoljenjem. Če želimo videti potrebne privilegije, samo naredi ls na napravo:

$ ls -latr / dev / sdc brw-rw ---- 1 korenski disk 8, 32. november 24 19:50 / dev / sdc

Tam vidimo, da je lastnik root in skupina disk. Dovolj bi bilo imeti uporabnika, ki pripada disku skupine.

Metoda 1. Obnašajte se kot CD / DVD

Je najpreprostejši od vseh. Če že leta uporabljate GNU / Linux, ste pri delu s CD-ROM-om ali DVD-jem uporabili ukaz za izmet. No, izmet je bil uporabljen za odpiranje CDROM-a, izmet -t pa za zapiranje pladnja. No, če to naredimo pred napravo USB:

$ sudo eject -t / dev / sdc

Naprava se mora videti, kot da smo jo znova povezali.

Metoda 2. Odklopljeni in navidezno priključeni

V nekaterih sistemih (če strojna oprema to podpira), ko napravo USB varno odstranite, se naprava preneha napajati in se naprava ne prikaže več. Enako je, kot če:

udisksctl izklop -b / dev / sdc

V tem primeru oz. / dev / sdc to je moja naprava in s tem ukazom je simulirala navidezni izklop.

Težava je v tem, da zdaj / dev / sdc ne obstaja, še več, če pogledamo dmesg, bomo dobili nekaj takega:

$ dmesg | rep [281954.693298] usb 1-5: Odklop USB, naprava številka 3

Torej, če poskusimo z metodo izmet ne bo delovalo. Opomba: poudaril sem usb 1-5 in kmalu bomo videli, zakaj.

Če delate na daljavo, je to morda dobra ideja. Predstavljajte si, da imate na varnostno kopijo priključene pogone USB. Ko delate kopije, je dobro, da sistem ve, da so povezani diski, toda ko jih po eni strani ne uporabljamo, moramo varčevanje z energijo in se izogibajte obrabi diskov, zato je po drugi strani bolje zmanjšati tok, ne želimo, da zlonamerne aplikacije vidijo, da obstajajo teh diskov, da se ne okužijo. (Da, v GNU / Linux obstajajo virusi).

Kako zdaj povežemo tok?

Moramo poklicati vrata USB, za to obstaja projekt moči (Povežem se z vilicami prvotnega projekta, ker je tukaj odpravljena napaka, ki lahko odstrani tok iz več naprav in ne samo iz tiste, ki jo želimo). Projektov je več (npr uhubctl), vendar to nima odvisnosti, saj gremo, ko gremo na prevajanje, tudi le datoteka hubpower.c.
Najprej ga sestavimo,

$ gcc -o hubpower hubpower.c

Zdaj se spomnite številk, krepko zapisanih iz dmesgNo, jih bomo uporabili, napravo bomo morali odklopiti in znova povezati, takole:

$ sudo ./hubpower 1: 1 power 5 off Port 5 status: 0000 Power-Off $ sudo ./hubpower 1: 1 power 5 on Port 5 status: 0100 Power-On

Če nas naprava ne zazna, lahko poskusimo:

$ sudo ./hubpower 1: 1 bind Zahteva za vezni gonilnik, poslana jedru

Na ta način bomo spet videli našo priključeno napravo USB.

Če ne želimo programa C ... ga imam v perlu

Program C je težko sestaviti in preizkusiti, ali je to, kar bomo storili, zelo preprosto, zato lahko preizkusimo to majhno vrata v 10 vrsticah, izdelanih v perl:

#! / bin / perl zahteva "sys / ioctl.ph"; $ device = "05"; odprto (moj $ usbdev,"> "," / dev / bus / usb/ 001/001 "); $ podatkov = paket ("H *", "23010800". $ naprava. "000000FFFFFF8813"); ioctl ($ usbdev, 0xC0185500, $ podatkov); $ podatkov = paket ("H *", "23030800". $ naprava. "000000FFFFFF8813"); ioctl ($ usbdev, 0xC0185500, $ podatkov); zapri ($ usbdev);

Spoštovati moramo $ naprava, številka vrat (v mojem primeru je bila 5), ​​je vrednost v šestnajstiški, zato bo 10 A, 11 bo B, 15 bo F, 16 bo 10 ... Nadzorovati moramo tudi napravo in vodilo, do katerega dostopamo iz / dev / bus / usb /001/001, številke morajo biti z vodilnimi ničlami, ker kličemo to datoteko.

Kot lahko vidimo, je ključ v ioctl (), je funkcija, ki manipulira s parametri naprave iz posebne datoteke v datotečnem sistemu. Med uporabljenimi šestnajstiškimi vrednostmi najdemo 0xC0185500, konstanta, imenovana USBDEVFS_CONTROL, s katero bomo na napravo USB poslali nadzorni ukaz. Ostale kode spadajo v zahtevo za odklop in povezavo (več informacij najdete v programu, narejenem v C).

Metoda 3. Skrivanje in prikaz naprave

Drug način za odklop naprave je lahko:

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

In jo lahko obnovimo tako:

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

Ta metoda ne povzroči popolnega odklopa naprave. Zaradi tega samo operacijski sistem ne govori z njim in številne naprave, ko računalnik ne želi ničesar vedeti o njih, preidejo v način nizke porabe, saj ne bomo ničesar zahtevali.

Metoda 4. Pooblastitev naprave

Slaba stran te metode je, da je v številnih sistemih mogoče začasno onemogočiti več naprav, ki pa niso le tista, ki jih potrebujemo, ampak tudi napademo celotno zvezdišče USB. Na primer:

$ echo 0 | sudo tee / sys / bus / usb / devices / usb1 / pooblaščeni $ echo 1 | sudo tee / sys / bus / usb / devices / usb1 / pooblaščen

Kar seveda lahko zaženemo vse zapored:

$ echo 0 | sudo tee / sys / bus / usb / devices / usb1 / pooblaščen; odmev 1 | sudo tee / sys / bus / usb / devices / usb1 / pooblaščen

Paziti moramo, če je na ista vrata USB priključenih več diskov (in skoraj vedno v naših računalnikih je več vrat USB, kot jih vidimo, notranje povezanih s zvezdiščem, zato obstajajo skupine vrat z istim USB-jem Oče, povedano na nek način.

Metoda 5. Znova zaženite podsistem USB

Če želimo znova zagnati podsistem USB. To pomeni, da osvežite vse naprave USB, na primer, da jih odklopite in priključite, na eni strani lahko naložimo in znova naložimo modul jedra USB:

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

Čeprav imajo nekatere distribucije, vključno z najnovejšimi različicami Ubuntuja in izpeljanih finančnih instrumentov, vgrajeni moduli USB in jih ni mogoče prenesti. Po drugi strani pa nam sistem morda ne dovoli, da jih prenesemo, ker so v uporabi zaradi drugih modulov (tiskalniki, pomnilniki, vmesniške naprave itd.), In če začnemo nalagati module in lomimo stvari, bomo morda morali računalnik znova zagnati. na koncu. Torej lahko na drug način:

$ 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

Če želimo najti svojo napravo, lahko naredimo ls znotraj / sys / bus / pci / drivers / xhci_hcd, pojavilo se bo več stvari, poiskati moramo takšno, ki je videti tako aaaa: bb: cc: dd.e. Vrata USB morda niso v obliki xhci_hcd (USB3), temveč kot ehci_hcd (USB2)


Pustite svoj komentar

Vaš e-naslov ne bo objavljen. Obvezna polja so označena z *

*

*

  1. Za podatke odgovoren: Miguel Ángel Gatón
  2. Namen podatkov: Nadzor neželene pošte, upravljanje komentarjev.
  3. Legitimacija: Vaše soglasje
  4. Sporočanje podatkov: Podatki se ne bodo posredovali tretjim osebam, razen po zakonski obveznosti.
  5. Shranjevanje podatkov: Zbirka podatkov, ki jo gosti Occentus Networks (EU)
  6. Pravice: Kadar koli lahko omejite, obnovite in izbrišete svoje podatke.

  1.   Cristian je dejal

    Odličen članek!

    1.    gasparfm je dejal

      Najlepša hvala Cristian! Upam, da se vam je zdelo koristno.

  2.   Antonio juan je dejal

    V tem članku ni rečeno, da kadarkoli ga boste postavili, je na nasprotni strani od pravega in ga morate obrniti ... hehehe. Odličen članek.

    1.    gasparfm je dejal

      Hvala Antonio Juan! No, glejte, ne veste, kolikokrat se mi je to zgodilo, ko sem poskušal vse, kar sem dal v objavo! 🙂

  3.   ROMSAT je dejal

    Super. Vrhunski izdelek. Naslov bi moral biti: "Spoznajte sistem Linux s preprostim odklopom in priklopom USB ključa." Vse čestitke.
    Lep pozdrav iz Malage.

    1.    gasparfm je dejal

      No ja, ne vem, če bo nekdo začel s programiranjem v jeziku C in dostopati do naprav iz te objave! Tudi iz Malage !! Smo povsod 🙂

  4.   HO2Gi je dejal

    Impresiven članek. Pretiravali ste s takim materialom.

    1.    gasparfm je dejal

      Hvala HO2Gi !! Na mojem osebnem blogu ( http://totaki.com/poesiabinaria ) obstaja tudi veliko vadnic o slogu 🙂

  5.   atahualpa je dejal

    najlepša hvala prijatelju. Začenjam v sistemu Linux, natančneje v sistemu Linux mint, in imam naslednjo težavo: v konzoli vidim, da je moj telefon povezan z računalnikom, ne pa tudi z upraviteljem datotek. Zato ga ne morem uporabljati kot modem za povezavo z internetom. Kaj lahko naredim?

    1.    Gaspar Fernandez je dejal

      Obstajajo telefoni, ki vam ne omogočajo povezave kot modema, lahko pa povežete internet

  6.   Milazzo je dejal

    Odlična dokumentacija!
    Hvala, ker ste si vzeli čas za izmenjavo izkušenj.
    Uporabljam ga kot referenco za drugo vrsto težav, ki jih imam: odklop vrat USB v Ubuntuju (# 42 ~ natančen1-Ubuntu SMP, sreda, 14. avgusta 15:31:16 UTC 2013)
    Pride čas, ko sistem vrže -110 v dmesg in znova zažene računalnik, domneva se, da je napaka posledica pomanjkanja energije v USB-ju, kjer je naprava priključena (USB3.0).

    Zdaj uporabljam lsusb -v za preverjanje ravni moči naprave, toda vrže 2 mA, kar je popolnoma absurdno ... le LED porabijo več kot to ...

    Priključim modem huawei E4 USB-8372G, vendar največja moč kaže 2 mA, kar je neverjetno, zdaj se je dvom spremenil in pojavili so se drugi:
    Ali je MaxPower atribut, ki je privzeto v napravi ali v operacijskem sistemu?
    Ali je to parameter največje moči, ki jo dovajajo vrata USB?
    V primeru, da je parameter
    Ali je mogoče ta parameter spremeniti in nastaviti na najvišjo vrednost, ki jo določajo vrata USB (900mAh- 3.0 / 500mAh- 2.0)?
    V primeru, da ni parameter,
    Ali gre za merilno vrednost porabe USB v realnem času (malo verjetno)?
    Če gre za drugo možnost, mi razložite, ker dvomim o referenčnih informacijah.

    V zvezi s to vrednostjo MaxPower imam več dvomov. Če imate dodatne informacije, bi bil zelo hvaležen.

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

    Bus 002 Naprava 006: ID 1a86: 7523 QinHeng Electronics HL-340 USB-serijski adapter
    bDeviceClass 255 Določeni razred prodajalca
    iProduct 2 USB2.0-Serial
    MaxPower 96mA
    Bus 002 Naprava 008: ID 12d1: 14db Huawei Technologies Co., Ltd.
    bDeviceClass 2 komunikacije
    iProduct 2 HUAWEI_MOBILE
    MaxPower 2mA

  7.   Anonimo je dejal

    Ali ga je mogoče uporabiti za okna?

  8.   Chelo je dejal

    Najlepša hvala. Z izklopom udisksctl -b / dev / sdc na mojem zunanjem disku je bilo dovolj za rešitev glavobola. Ali ne bi bilo bolje, če bi demontaža to lahko storila sama?

  9.   Marisa je dejal

    Bog, kaj za vraga! Je kdo prebral celotno oporoko? In zgoraj po ploščici še vedno ne vemo, kako izklopiti zvočni vmesnik DAC / USB, tiskalnik, grafični tablični računalnik ... skratka nič, kar ni spike ali zunanji disk. Kakšna izguba časa ...