Viis viisi USB-seadme lahtiühendamiseks ja ühendamiseks ilma käsi klaviatuurilt eemaldamata

Paljudel juhtudel, kui kasutame arvutit, ühendame USB-seadme lahti (ohutult, nagu see olema peab) ja kohe pärast seda mõistame, et unustasime faili kopeerida või pidime veenduma, et andmed olid meie üksuses. Nendel juhtudel on kaugtööd tehes tavaliselt väga kasulik USB-draivid praktiliselt lahti ühendada.

Kui oleme seadme välja visanud, ei näe me seda enam oma seadmete loendis, kuid kõvaketas või pendrive on endiselt ühendatud USB-pordiga ja paljudes tänapäevastes seadmetes, olles draivi ohutult väljutanud, ei näe me ka seadet ja Me ei saa hakkama paigaldada meie terminalist. Kiireim lahendus on kaabli lahtiühendamine ja uuesti ühendamine, seda mõnel juhul kas laiskuse tõttu, et peame üles tõusma, või seetõttu, et pääseme juurde arvutisse, mille ees me ei ole ja kedagi läheduses pole, me ei saa seda teha.

Teave USB-seadmete kohta

Enne alustamist vaatame, kuidas saada teavet süsteemiga ühendatud USB-seadmete kohta. Selleks saame kasutada lsusb, mis loetleb ühendatud seadmed kohe. Panin näiteid selle kohta, mida ma praegu arvutisse saan, kuid võib-olla erineb see teie saadust:

$ 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. Rummu buss 001 Seade 010: ID 125f: c93a A-DATA Technology Co., Ltd. 4 GB Pen Drive Bus 001 seade 003: ID 04f2: b424 Chicony Electronics Co., Ltd siin 001 Seade 001: ID 1d6b : 0002 Linux Foundation 2.0 juurte jaotur

Kui soovime lisateavet, võime kasutada modifikaatorit -t, mis näitab meile puu kujul väljundit, mis sisaldab teavet moodulite kohta:

$ lsusb -t /: buss 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, kui 0, Class = Video, Driver = uvcvideo, 480M | __ Port 4: Dev 3, If 1, Class = Video, Driver = uvcvideo, 480M | __ Port 5: Dev 10, If 0, Class = Massmälu, draiver = usb-mälumaht, 480M | __ port 6: Dev 5, kui 0, klass = jaotur, draiver = jaotur / 4p, 12M | __ port 4: Dev 7, kui 0, klass = inimese liideseseade, Draiver = usbhid, 12M | __ port 4: Dev 7, kui 1, klass = inimese liideseseade, draiver = usbhid, 12M | __ port 4: Dev 7, kui 2, klass = inimese liideseseade, draiver = usbhid, 12M | __ port 9: Dev 6, kui 0, klass = traadita, draiver = btusb, 12M | __ port 9: Dev 6, kui 1, klass = traadita, draiver = btusb, 12M

Kui tahame palju rohkem teavet, saame seda kasutada lsusb -v (väljund on väga suur), lisaks võiksime näiteks teada seadmele tarnitava maksimaalse võimsuse järgmiselt:

$ 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 Seade 007: ID 046d: c52b Logitech, Inc. Vastuvõtja ühendamine MaxPower 98mA siin 001 Seade 005: ID 1a40: 0101 Terminus Technology Inc. Hub MaxPower 100mA siin 001 Seade 010: ID 125f: c93a A-DATA Technology Co., Ltd. 4GB Pen Drive MaxPower 480mA siin 001 seade 003: ID 04f2: b424 Chicony Electronics Co., Ltd MaxPower 500 mA buss 001 seade 001: ID 1d6b: 0002 Linux Foundation 2.0 juurte jaotur MaxPower 0mA

Teised väga kasulikud käsud on usb-seadmed, hwinfovõi näiteks kui meil on seadme tee (sees / dev /), võime süsteemilt küsida kogu võimalikku teavet selle ja allsüsteemide kohta, mida see peab läbima. Näiteks kui ühendame USB-kõvaketta, vajame SCSI draiverit (olemise / dev / sdX jaoks), et saaksime näha seadme kasutamist, vajame ka USB-mäludraiverit, mis töötab läbi USB-port, mis kuulub jaoturisse, mis on ühendatud PCI-porti muude vahesüsteemide hulgas. Kõik see, millega nägime

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

o

$ udevadm info -a -n / dev / sdX

Kui tahame seigelda, võime ka sisse astuda / sys / buss / usb ja vaadake kõike, mis seal on, näeme palju teavet, kuid õnneks klassifitseerivad ülaltoodud käsud kogu selle teabe.

Privileegid ja seadmed

Selle ülesande täitmiseks peame teadma, millisele seadmele me läheme uuesti ühendada. Selleks saame käivitada:

$ dmesg | saba [teisipäev, 24. november 19:50:04 2016] sd 7: 0: 0: 0: Lisatud scsi generic sg3 type 0 [798339.431677] sd 7: 0: 0: 0: [sdc] 15806464 512-baidised loogilised plokid: ( 8.09 GB / 7.54 GiB) [798339.431840] sd 7: 0: 0: 0: [sdc] Kirjutuskaitse on välja lülitatud [798339.431848] sd 7: 0: 0: 0: [sdc] Režiimitaju: 00 00 00 00 [798339.431988] sd 7: 0: 0: 0: [sdc] Vahemälu andmete küsimine ebaõnnestus [798339.431996] sd 7: 0: 0: 0: [sdc] Eeldades draivi vahemälu: kirjutage läbi [798339.434157] sdc: sdc1 sdc2 [798339.446812] sd 7 : 0: 0: 0: [sdc] Manustatud SCSI eemaldatav ketas [798360.808588] ISO 9660 laiendused: Microsoft Joliet Level 3 [798360.809353] ISO 9660 laiendused: RRIP_1991A

Selles väljundis näeme, et seade, millega me töötame, on SDK (sdc1 ja sdc2 oleksid selle ketta partitsioonid). Näidete jaoks, mida ma seda seadet kasutan, peate teie puhul visualiseerima, milline konto teil on.

Allpool toodud näidetes kasutan sudo käskude täitmiseks õigustega juur. Kuigi piisaks piisava loaga kasutaja omamisest. Kui tahame näha vajalikke privileege, siis lihtsalt tehke seda ls seadmesse:

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

Seal näeme, et omanik on juur ja rühm ketas. Piisaks grupikettale kuuluva kasutaja omamisest.

Meetod 1. Käsitlege seda nagu CD / DVD-d

See on kõige lihtsam. Kindlasti, kui olete juba aastaid kasutanud GNU / Linuxi, kasutasite CD-ROM-i või DVD-ga töötades käsku eject. Noh, CDROMi avamiseks kasutati ejecti ja salve sulgemiseks kasutati eject -t. Noh, kui me teeme seda enne USB-seadet:

$ sudo eject -t / dev / sdc

Seade peaks ilmuma nii, nagu oleksime selle uuesti ühendanud.

Meetod 2. Pistikupesa ja virtuaalne pistikühendus

Mõnes süsteemis (seni, kuni riistvara seda toetab), kui USB-seadme ohutult eemaldate, lõpetab seade toite ja seda ei kuvata enam. See on sama mis siis, kui teete:

udisksctl väljalülitus -b / dev / sdc

Sellisel juhul / dev / sdc see on minu seade ja selle käsuga simuleeris see virtuaalse toite katkestamist.

Probleem on selles, et nüüd / dev / sdc pole olemas, veelgi enam, kui vaatame dmesgi, saame midagi sellist:

$ dmesg | saba [281954.693298] usb 1–5: USB-ühenduse katkestamine, seadme number 3

Nii et kui proovime meetodiga ejektor see ei tööta. Märkus: olen esile tõstnud usb 1–5 ja varsti näeme, miks.

Kui töötate eemalt, võib see olla hea mõte. Kujutage ette, et teil on varundamiseks ühendatud USB-draivid. Koopiate tegemisel on hea, et süsteem teab, et kettad on ühendatud, kuid kui me neid ei kasuta, peame ühelt poolt säästa energiat ja vältige ketaste kulumist, seepärast on parem voolu lõigata, me ei taha, et pahatahtlikud rakendused näeksid nende olemasolu need kettad, et nad ei nakatuks. (Jah, GNU / Linuxis on viirused).

Kuidas me praegu voolu ühendame?

Peame helistama USB-porti, selleks on olemas projekt nimega keskjõud (Lingin esialgse projekti kahvliga, kuna siin on parandatud viga, mis võib voolu eemaldada rohkematest seadmetest ja mitte ainult soovitud seadmest). Projekte (nagu uhubctl), kuid sellel pole sõltuvusi kompileerimisel käimisest, see on ka lihtsalt hubpower.c fail.
Esiteks koostame selle,

$ gcc -o hubpower hubpower.c

Kas mäletate nüüd rasvases kirjas olevaid numbreid dmesg? Noh, me hakkame neid kasutama, peame seadme lahti ühendama ja uuesti ühendama, näiteks:

$ 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

Kui seade meid ei tuvasta, võime proovida teha järgmist.

$ sudo ./hubpower 1: 1 bind Bind-draiveri taotlus saadeti kernelile

Sel viisil näeme oma ühendatud USB-seadet uuesti.

Kui me ei soovi C-programmi ... on mul see perl

C-programmi on raske kompileerida ja testida, kas see, mida teeme, on väga lihtne, siis võime proovida seda väikest porti kümnes perlis tehtud reas:

#! / bin / perl nõuab "sys / ioctl.ph"; $ device = "05"; avatud (minu $ usbdev,"> "," / dev / bus / usb/ 001/001 "); $ data = pakk ("H *", "23010800". $ seade. "000000FFFFFF8813"); ioctl ($ usbdev, 0xC0185500, $ data); $ data = pakk ("H *", "23030800". $ seade. "000000FFFFFF8813"); ioctl ($ usbdev, 0xC0185500, $ data); sulge ($ usbdev);

Peame austama $ seade, pordi number (minu puhul oli see 5), see on väärtus kuueteistkümnendsüsteemis, seega 10 on A, 11 on B, 15 on F, 16 on 10 ... Samuti peame seadet jälgima ja buss, millele pääseme juurde / dev / bus / usb /001/001, numbrid peavad minema nullidega, kuna me helistame sellele failile.

Nagu näeme, on võti ioctl () -is, see on funktsioon, mis manipuleerib seadme parameetritega failisüsteemi spetsiaalsest failist. Kasutatud kuueteistkümnendsüsteemis leiame 0xC0185500, konstant nimega USBDEVFS_CONTROL, millega saadame juhtimiskäsu USB-seadmele. Teised koodid kuuluvad ühenduse katkestamise ja ühendamise päringule (lisateavet leiate C-s tehtud programmist).

Meetod 3. Seadme peitmine ja näitamine

Teine võimalus seadme lahtiühendamiseks võib olla:

kaja '1-5' | sudo tee / sys / buss / usb / draiverid / usb / lahti siduma

Ja me saame selle taastada, tehes järgmist:

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

See meetod ei põhjusta seadme täielikku lahtiühendamist. See paneb operatsioonisüsteemi ainult sellega mitte rääkima ja paljud seadmed, kui arvuti ei soovi neist midagi teada, lülitatakse madala energiatarbega režiimi, kuna me ei kavatse midagi küsida.

Meetod 4. Seadme autoriseerimine

Selle meetodi negatiivne külg on see, et paljudes süsteemides saab ajutiselt keelata rohkem seadmeid, mis pole mitte ainult vajalikud, vaid ründame ka tervet USB-jaoturit. Näiteks:

$ kaja 0 | sudo tee / sys / bus / usb / devices / usb1 / lubatud $ echo 1 | sudo tee / sys / buss / usb / devices / usb1 / volitatud

Mis on muidugi see, mida saame käivitada järjest:

$ kaja 0 | sudo tee / sys / bus / usb / devices / usb1 / volitatud; kaja 1 | sudo tee / sys / buss / usb / devices / usb1 / volitatud

Peame olema ettevaatlikud, kui samasse USB-porti on ühendatud rohkem kettaid (ja peaaegu alati meie arvutites, on mitu USB-porti kui need, mida näeme, sisemiselt ühendatud jaoturiga, seega on sama USB-ga porti isa, pane see kuidagi.

Meetod 5. Taaskäivitage USB-alamsüsteem

Kui tahame USB-alamsüsteemi taaskäivitada. See tähendab, et värskendage kõiki USB-seadmeid, näiteks kõigi nende pistikupesast eemaldamine ja ühendamine, ühelt poolt saame USB-tuuma mooduli alla laadida ja uuesti laadida:

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

Kuigi mõnel distributsioonil, sealhulgas Ubuntu uusimatel versioonidel ja nende derivaatidel, on integreeritud USB-moodulid ja neid ei saa alla laadida. Teisest küljest ei pruugi süsteem lubada meil neid alla laadida, kuna neid kasutatakse teiste moodulite (printerid, salvestusruum, liideseseadmed jne) tõttu ning kui hakkame mooduleid alla laadima ja asju lõhkuma, peame võib-olla taaskäivitama arvuti lõpus. Niisiis, muul viisil saame teha:

$ kaja '0000:00:14.5'| sudo tee / sys / buss / pci / draiverid / xhci_hcd / unbind $ echo "0000:00:14.5'| sudo tee / sys / bus / pci / draiverid / xhci_hcd / bind

Oma seadme leidmiseks saame teha ls sees / sys / bus / pci / drivers / xhci_hcd, ilmub mitu asja, peame otsima sellist, mis näeb välja selline aaaa: bb: cc: dd.e. Teie USB-port ei pruugi olla xhci_hcd (USB3), pigem ehci_hcd (USB2)


Jäta oma kommentaar

Sinu e-postiaadressi ei avaldata. Kohustuslikud väljad on tähistatud *

*

*

  1. Andmete eest vastutab: Miguel Ángel Gatón
  2. Andmete eesmärk: Rämpsposti kontrollimine, kommentaaride haldamine.
  3. Seadustamine: teie nõusolek
  4. Andmete edastamine: andmeid ei edastata kolmandatele isikutele, välja arvatud juriidilise kohustuse alusel.
  5. Andmete salvestamine: andmebaas, mida haldab Occentus Networks (EL)
  6. Õigused: igal ajal saate oma teavet piirata, taastada ja kustutada.

  1.   Cristian DIJO

    Suurepärane artikkel!

    1.    gasparfm DIJO

      Suur aitäh Cristian! Loodan, et olete leidnud, et see on kasulik.

  2.   Antonio juan DIJO

    Selles artiklis pole öeldud, et alati, kui kavatsete selle panna, on see õige vastasküljel ja peate selle ümber pöörama ... hehehe. Suurepärane artikkel.

    1.    gasparfm DIJO

      Aitäh Antonio Juan! Noh, vaata, sa ei tea, mitu korda on see minuga juhtunud, kui proovisin kõike, mida postitusse panin! 🙂

  3.   ROMSAT DIJO

    Suurepärane. Ülim ese. Selle pealkiri peaks olema: "Lisateavet Linuxi süsteemi kohta saate lihtsalt USB-mälupulga ühendamisest ja ühendamisest." Palju õnne.
    Tervitused Malagast.

    1.    gasparfm DIJO

      No jah, ma ei tea, kas keegi hakkab sellest postitusest C-s programmeerima ja seadmetele juurde pääsema! Ka Malagast !! Oleme igal pool 🙂

  4.   HO2Gi DIJO

    Muljetavaldav artikkel. Olete sellise materjaliga üle parda läinud.

    1.    gasparfm DIJO

      Aitäh HO2Gi !! Minu isiklikus ajaveebis ( http://totaki.com/poesiabinaria ) on ka palju stiili õpetusi 🙂

  5.   atahualpa DIJO

    suur aitäh sõber. Alustan linuxist, täpsemalt linux mint'ist ja mul on järgmine probleem: konsoolis näen, et mu telefon on masinaga ühendatud, kuid mitte failihalduris. Seetõttu ei saa ma seda Interneti-ühenduse loomiseks modemina kasutada. Mida ma teha saan?

    1.    Gaspar Fernandez DIJO

      On telefone, mis ei lase teil modemina ühenduda, kuid saate teha lõastamist

  6.   Milazzo DIJO

    Suurepärane dokumentatsioon!
    Täname, et leidsite aega kogemuste jagamiseks.
    Kasutan seda viitena teist tüüpi probleemidele, mis mul on: USB-pordide lahtiühendamine Ubuntus (# 42 ~ tarkka1-Ubuntu SMP K 14. aug. 15:31:16 UTC 2013)
    Saabub aeg, mil süsteem viskab dmesg-i -110 ja taaskäivitab arvuti. Eeldatakse, et rike on tingitud USB-i toite puudumisest, kuhu seade on ühendatud (USB3.0).

    Nüüd kasutan seadme võimsustaseme kontrollimiseks lsusb -v, kuid see viskab 2mA, mis on täiesti absurdne ... ainult LED-id tarbivad seda rohkem ...

    Ühendan huawei E4 USB-8372G modemi, kuid maksimaalne võimsus näitab 2mA, mis on uskumatu, nüüd on kahtlus muutunud ja teised on tekkinud:
    Kas MaxPower on atribuut, mis tuleb vaikimisi seadmes või operatsioonisüsteemis?
    Kas see on maksimaalse võimsuse parameeter, mille USB-port edastab?
    Parameetriks olemise korral
    Kas seda parameetrit saab muuta ja seada maksimaalselt USB-pordi antud väärtusele (900mAh- 3.0 / 500mAh- 2.0)?
    Kui see pole parameeter,
    Kas see on USB-tarbimise reaalajas mõõtmise väärtus (ebatõenäoline)?
    Kui see on mõni muu võimalus, selgitage mulle, kuna mul on viiteinfos kahtlusi.

    Mul on selle MaxPoweri väärtuse suhtes mitu kahtlust. Kui teil on lisateavet, oleksin väga tänulik.

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

    Buss 002 Seade 006: ID 1a86: 7523 QinHeng Electronics HL-340 USB-jadadapter
    bDeviceClass 255 hankija spetsiifiline klass
    iProduct 2 USB2.0-seeria
    MaxPower 96mA
    Buss 002 Seade 008: ID 12d1: 14db Huawei Technologies Co., Ltd.
    bDeviceClass 2 side
    iProduct 2 HUAWEI_MOBILE
    MaxPower 2mA

  7.   Anonüümne DIJO

    Kas seda saab aknadele rakendada?

  8.   Chelo DIJO

    Tänud. Kui minu välisel kettal oli udisksctl power-off -b / dev / sdc, piisas peavalu lahendamiseks. Kas poleks parem, kui monteerijal oleks võimalus seda ise teha?

  9.   Marisa DIJO

    Jumal, mida kuradit! Kas keegi on kogu selle testamendi läbi lugenud? Ja ülalpool plaati ei tea me endiselt, kuidas DAC / USB heliliides, printer, graafikatahvel välja lülitada ... ühesõnaga midagi, mis pole teravik või väline ketas. Milline ajaraisk ...