5 mga paraan upang idiskonekta at ikonekta ang isang USB aparato nang hindi inaalis ang iyong mga kamay sa keyboard

Sa maraming mga okasyon, kapag gumagamit kami ng aming computer ay nag-disconnect kami ng isang USB device (ligtas, na dapat) at, kaagad pagkatapos, napagtanto namin na nakalimutan naming kumopya ng isang file o kailangan naming tiyakin na ang isang data ay sa aming unit. Para sa mga kasong ito, karaniwang kapaki-pakinabang na halos idiskonekta ang mga USB drive kapag nagtatrabaho nang malayuan.

Na-ejected ang aparato, hindi na namin ito nakikita sa aming listahan ng mga aparato, ngunit ang hard drive o pendrive ay konektado pa rin sa pamamagitan ng USB port, at sa maraming mga pamamahagi ngayon, na ligtas na naalis ang drive, hindi rin namin nakita ang aparato at Hindi namin magawa Mount galing sa terminal namin. Ang pinakamabilis na solusyon ay upang idiskonekta ang cable at ikonekta muli ito, sa ilang mga kaso, alinman dahil sa katamaran na bumangon o dahil nag-a-access kami ng isang computer na wala tayo sa harap at walang sinuman sa paligid, hindi namin ito magawa.

Impormasyon tungkol sa mga USB device

Bago tayo magsimula, tingnan natin kung paano makakuha ng impormasyon tungkol sa mga USB device na nakakonekta sa system. Para sa mga ito, maaari naming gamitin lsusb, na maglilista ng mga nakakonektang aparato ngayon. Naglalagay ako ng mga halimbawa ng nakukuha ko sa aking computer ngayon, ngunit marahil ito ay ibang-iba sa nakukuha mo:

$ 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. Pinag-iisa ang Tagatanggap ng 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 Linux Foundation 2.0 root hub

Kung nais namin ng karagdagang impormasyon, maaari naming gamitin ang -t modifier na magpapakita sa amin ng isang output sa anyo ng isang puno na may impormasyon tungkol sa mga module.

$ 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, Kung 0, Class = Video, Driver = uvcvideo, 480M | __ Port 4: Dev 3, Kung 1, Class = Video, Driver = uvcvideo, 480M | __ Port 5: Dev 10, Kung 0, Class = Mass Storage, Driver = usb-storage, 480M | __ Port 6: Dev 5, Kung 0, Class = Hub, Driver = hub / 4p, 12M | __ Port 4: Dev 7, Kung 0, Class = Human Interface Device, Driver = usbhid, 12M | __ Port 4: Dev 7, Kung 1, Class = Human Interface Device, Driver = usbhid, 12M | __ Port 4: Dev 7, Kung 2, Class = Human Interface Device, Driver = usbhid, 12M | __ Port 9: Dev 6, Kung 0, Class = Wireless, Driver = btusb, 12M | __ Port 9: Dev 6, Kung 1, Class = Wireless, Driver = btusb, 12M

Kung nais natin ng higit pang impormasyon, maaari naming gamitin lsusb -v (ang output ay napakalaki), bilang karagdagan maaari naming, halimbawa, malaman ang maximum na lakas na naihatid sa aparato, tulad ng sumusunod:

$ 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 Device 007: ID 046d: c52b Logitech, Inc. Unifying Receiver MaxPower 98mA Bus 001 Device 005: ID 1a40: 0101 Terminus Technology Inc. Hub MaxPower 100mA Bus 001 Device 010: ID 125f: c93a A-DATA Technology Co., Ltd. 4GB 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

Iba pang mga lubhang kapaki-pakinabang na utos ay mga usb-aparato, hwinfo, o, halimbawa, kung mayroon kaming landas ng isang aparato (sa loob / dev /), maaari naming hilingin sa system ang lahat ng posibleng impormasyon tungkol dito at mga subsystem na dapat dumaan dito. Halimbawa, kung kumokonekta kami ng isang USB hard disk, upang makita namin kung paano gamitin ang aparato, kailangan namin ng isang driver ng SCSI (para sa pagiging / dev / sdX), kailangan din namin ng isang USB storage driver, na gumagana sa pamamagitan ng USB port, na kabilang sa isang hub, na kung saan ay naka-plug sa isang port ng PCI, bukod sa iba pang mga intermediate system. Lahat ng nakikita namin

Impormasyon sa $ udevadm --query = path --name = / dev / sdX --attribut-walk

o

Impormasyon sa $ udevadm -a -n / dev / sdX

Kung nais nating mag-venture, maaari din tayong makapasok / sys / bus / usb at tingnan ang lahat ng mayroon, makakakita kami ng maraming impormasyon, ngunit sa kabutihang palad sa itaas na utos ay inuri ang uri ng impormasyong ito.

Mga pribilehiyo at aparato

Upang maisakatuparan ang gawaing ito kakailanganin nating malaman kung aling aparato ang pupuntahan natin kumonekta muli. Upang magawa ito, maaari tayong tumakbo:

$ dmesg | buntot [Thu Nov 24 19:50:04 2016] sd 7: 0: 0: 0: Nakalakip na scsi generic sg3 type 0 [798339.431677] sd 7: 0: 0: 0: [sdc] 15806464 512-byte lohikal na mga bloke: ( 8.09 GB / 7.54 GiB) [798339.431840] sd 7: 0: 0: 0: [sdc] Isulat ang Protect [798339.431848] sd 7: 0: 0: 0: [sdc] Mode Sense: 00 00 00 00 [798339.431988] sd 7: 0: 0: 0: [sdc] Hindi nagtagumpay ang paghiling ng data ng cache [798339.431996] sd 7: 0: 0: 0: [sdc] Ipagpalagay na drive cache: sumulat sa [798339.434157] sdc: sdc1 sdc2 [798339.446812] sd 7 : 0: 0: 0: [sdc] Nakalakip na naaalis na SCSI disk [798360.808588] Mga Extension ng ISO 9660: Microsoft Joliet Antas 3 [798360.809353] Mga Extension ng ISO 9660: RRIP_1991A

Sa output na ito, makikita natin na ang aparato na pinagtatrabaho namin ay sdc (Ang sdc1 at sdc2 ay magiging mga partisyon sa loob ng disk na iyon). Para sa mga halimbawang gagamitin ko ang aparatong ito, sa iyong kaso kakailanganin mong mailarawan kung aling account ang mayroon ka.

Sa mga halimbawa sa ibaba ay gagamitin ko sudo upang maisagawa ang mga utos na may mga pribilehiyo ng ugat. Kahit na magiging sapat ito upang magkaroon ng isang gumagamit na may sapat na pahintulot. Kung nais nating makita ang mga kinakailangang pribilehiyo, gawin lamang ls sa aparato:

$ ls -latr / dev / sdc brw-rw ---- 1 root disk 8, 32 Nov 24 19:50 / dev / sdc

Doon nakikita natin na ang may-ari ay ugat at ang pangkat disk. Sapat na ang magkaroon ng isang gumagamit na kabilang sa disk ng pangkat.

Pamamaraan 1. Tratuhin ito tulad ng isang CD / DVD

Ito ang pinakasimpleng sa lahat. Tiyak na kung gumagamit ka ng GNU / Linux sa loob ng maraming taon, nang nagtrabaho ka sa CD-ROM o DVD ginamit mo ang eject command. Sa gayon, ginamit ang eject upang buksan ang CDROM at ang eject -t ay ginamit upang isara ang tray. Kaya, kung gagawin natin ito bago ang USB aparato:

$ sudo eject -t / dev / sdc

Ang aparato ay dapat na lilitaw na kung ikinonekta namin ito muli.

Paraan 2. Hindi naka-plug at Virtual na Naka-plug In

Sa ilang mga system (basta sinusuportahan ito ng hardware), kapag ligtas mong naalis ang USB device, hihinto sa pag-power ang aparato at hindi na lumitaw ang aparato. Ito ay katulad ng kapag ginawa mo:

udisksctl power-off -b / dev / sdc

Sa kasong ito, / dev / sdc ito ang aking aparato, at sa utos na ito ay na-simulate ang isang virtual power disconnect.

Ang problema ay wala ngayon / dev / sdc, ano pa, kung titingnan natin ang dmesg, makakakuha tayo ng tulad nito:

$ dmesg | buntot [281954.693298] usb 1-5: USB disconnect, numero ng aparato 3

Kaya't kung susubukan natin sa pamamaraan ng palabasin ito ay hindi gagana. Tandaan: Na-highlight ko usb 1-5 at makikita natin kung bakit sa ilang sandali.

Kung nagtatrabaho ka nang malayuan, maaaring ito ay isang magandang ideya. Isipin na mayroon kang mga USB drive na nakakabit sa backup. Kapag gumagawa ka ng mga kopya, mabuti para sa system na malaman na may mga disk na konektado ngunit, kapag hindi namin ginagamit ang mga ito sa isang banda dapat nating i-save ang enerhiya at iwasan ang pagsusuot ng disc, kaya mas mabuti na putulin ang kasalukuyang, sa kabilang banda, hindi namin nais na makita ng mga nakakahamak na app na mayroon sila ang mga disk na ito upang hindi sila mahawahan. (Oo, may mga virus sa GNU / Linux).

Paano natin ikonekta ang kasalukuyang ngayon?

Dapat kaming tumawag sa USB port, para dito mayroong isang proyekto na tinawag kapangyarihan ng hub (Nag-link ako sa isang tinidor ng orihinal na proyekto dahil dito ay naayos ang isang bug na maaaring alisin ang kasalukuyang mula sa higit pang mga aparato at hindi lamang ang nais namin). Mayroong higit pang mga proyekto (tulad ng uhubctl), ngunit wala itong mga dependency para sa pag-compile namin, isa rin itong file na hubpower.c.
Una, pinagsasama namin ito,

$ gcc -o hubpower hubpower.c

Ngayon, naaalala mo ba ang mga numero sa naka-bold mula sa dmesg? Sa gayon, gagamitin namin ang mga ito, kakailanganin naming idiskonekta ang aparato at ikonekta muli ito, tulad nito:

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

Kung hindi kami nakita ng aparato, maaari naming subukang gawin:

$ sudo ./hubpower 1: 1 magbigkis ng kahilingan sa Bind-driver na ipinadala sa kernel

Sa ganitong paraan, makikita namin muli ang aming nakakonektang USB aparato.

Kung hindi namin nais ang isang C program ... Mayroon ako sa perl

Ang isang C program ay mahirap ipagsama at subukan kung ang gagawin natin ay napaka-simple, upang masubukan namin ang maliit na port na ito sa 10 linya na ginawa sa perl:

Ang #! / bin / perl ay nangangailangan ng "sys / ioctl.ph"; $ aparato = "05"; buksan (ang aking $ usbdev,"> "," / dev / bus / usb/ 001/001 "); $ data = pack ("H *", "23010800". $ aparato. "000000FFFFFF8813"); ioctl ($ usbdev, 0xC0185500, $ data); $ data = pack ("H *", "23030800". $ aparato. "000000FFFFFF8813"); ioctl ($ usbdev, 0xC0185500, $ data); isara ($ usbdev);

Dapat nating igalang $ aparato, ang numero ng port (sa aking kaso ito ay 5), ito ay isang halaga sa hexadecimal, samakatuwid ang 10 ay magiging A, 11 ay magiging B, 15 ay magiging F, 16 ay magiging 10 ... Kailangan din naming subaybayan ang aparato at ang bus, na ina-access natin mula sa / dev / bus / usb /001/001, ang mga numero ay dapat na sumama sa mga nangungunang zero dahil tinawag namin ang file na iyon.

Tulad ng nakikita natin, ang susi ay nasa ioctl (), ito ay isang pagpapaandar na nagmamanipula ng mga parameter ng isang aparato mula sa isang espesyal na file sa file system. Kabilang sa mga hexadecimal na halaga na ginamit, nakita namin 0xC0185500, isang pare-pareho na tinatawag na USBDEVFS_CONTROL kung saan magpapadala kami ng isang utos ng kontrol sa USB aparato, Ang iba pang mga code ay nabibilang sa kahilingan sa pag-disconnect at koneksyon (maaari kang makahanap ng karagdagang impormasyon sa programang ginawa sa C).

Pamamaraan 3. Pagtago at pagpapakita ng aparato

Ang isa pang paraan upang idiskonekta ang aparato ay maaaring:

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

At mababawi natin ito sa pamamagitan ng paggawa:

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

Ang pamamaraang ito ay hindi sanhi ng isang kumpletong pagkakakonekta ng aparato. Ginagawa lamang nito ang operating system na hindi ito kausapin at maraming mga aparato, kapag ang isang computer ay hindi nais malaman ang anuman tungkol sa kanila, ay inilalagay sa mababang mode ng kuryente, dahil hindi kami hihingi ng anuman.

Paraan 4. Pahintulot sa aparato

Ang kabiguan ng pamamaraang ito ay sa maraming mga sistema ng mas maraming mga aparato ay maaaring pansamantalang na-deactivate, na hindi lamang kung ano ang kailangan namin, ngunit inaatake din namin ang isang buong hub ng USB. Halimbawa:

$ echo 0 | sudo tee / sys / bus / usb / device / usb1 / awtorisadong $ echo 1 | pinahintulutan ang sudo tee / sys / bus / usb / device / usb1 /

Alin, syempre, maaari nating patakbuhin ang lahat sa isang hilera:

$ echo 0 | sudo tee / sys / bus / usb / device / usb1 / pinahintulutan; echo 1 | pinahintulutan ang sudo tee / sys / bus / usb / device / usb1 /

Dapat kaming mag-ingat, kung maraming mga disk na konektado sa parehong USB port (at halos palaging sa aming mga computer, maraming mga USB port kaysa sa nakikita natin ang panloob na konektado sa isang hub, kaya may mga pangkat ng mga port na may parehong USB ama, ilagay ito sa ilang paraan.

Paraan 5. I-reboot ang USB subsystem

Kung nais naming i-restart ang USB subsystem. Iyon ay, i-refresh ang lahat ng mga aparatong USB, tulad ng pag-unplug at pag-plug ng lahat ng mga ito, sa isang banda maaari naming i-download at i-reload ang module ng USB kernel:

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

Bagaman ang ilang mga pamamahagi, ang pinakabagong mga bersyon ng Ubuntu at mga derivatives na kasama, mayroon ang pinagsamang mga module ng USB at hindi sila maaaring ma-download. Sa kabilang banda, maaaring hindi tayo pahintulutan ng system na i-download ang mga ito dahil ginagamit ang mga ito dahil sa iba pang mga module (mga printer, imbakan, mga interface device, atbp.), At kung magsisimula kaming mag-download ng mga module at masira ang mga bagay, maaaring kailanganin nating i-restart ang computer. sa dulo. Kaya, sa ibang paraan magagawa natin:

$ echo '0000:00:14.5'| sudo tee / sys / bus / pci / driver / xhci_hcd / pag-alis ng $ echo '0000:00:14.5'| sudo tee / sys / bus / pci / driver / xhci_hcd / bind

Upang mahanap ang aming aparato, maaari naming gawin ls sa loob / sys / bus / pci / driver / xhci_hcd, maraming mga bagay ang lilitaw, kailangan naming maghanap para sa isa na ganito ang hitsura aaaa: bb: cc: dd.e. Ang iyong USB port ay maaaring hindi dumating bilang xhci_hcd (USB3), ngunit sa halip ehci_hcd (USB2)


Iwanan ang iyong puna

Ang iyong email address ay hindi nai-publish. Mga kinakailangang patlang ay minarkahan ng *

*

*

  1. Responsable para sa data: Miguel Ángel Gatón
  2. Layunin ng data: Kontrolin ang SPAM, pamamahala ng komento.
  3. Legitimation: Ang iyong pahintulot
  4. Komunikasyon ng data: Ang data ay hindi maiparating sa mga third party maliban sa ligal na obligasyon.
  5. Imbakan ng data: Ang database na naka-host ng Occentus Networks (EU)
  6. Mga Karapatan: Sa anumang oras maaari mong limitahan, mabawi at tanggalin ang iyong impormasyon.

  1.   Cristian dijo

    Mahusay na artikulo!

    1.    gasparfm dijo

      Maraming salamat Cristian! Inaasahan kong nahanap mo itong kapaki-pakinabang.

  2.   Antonio juan dijo

    Sa artikulong ito ay hindi sinabi na sa tuwing ilalagay mo ito, ito ay nasa tapat na bahagi sa tama at kailangan mo itong paikutin ... hehehe. Mahusay na artikulo

    1.    gasparfm dijo

      Salamat Antonio Juan! Kaya tingnan mo, hindi mo alam kung gaano karaming beses nangyari sa akin habang sinusubukan ko ang lahat ng inilagay ko sa post! 🙂

  3.   ROMSAT dijo

    Malaki. Isang superior item. Dapat itong pamagat: "Alamin ang tungkol sa sistema ng Linux sa pamamagitan lamang ng pag-plug at pag-plug sa iyong USB stick." Binabati kita
    Pagbati mula sa Malaga.

    1.    gasparfm dijo

      Sa gayon oo, hindi ko alam kung may magsisimulang mag-program sa C at mag-access ng mga aparato mula sa post na ito! Galing din sa Malaga !! Nasa kung saan man tayo 🙂

  4.   HO2Gi dijo

    Kahanga-hangang artikulo. Sumobra ka na sa nasabing materyal.

    1.    gasparfm dijo

      Salamat HO2Gi !! Sa aking personal na blog ( http://totaki.com/poesiabinaria ) mayroon ding maraming mga tutorial ng estilo 🙂

  5.   Atahualpa dijo

    Salamat sa inyo kaibigan. Nagsisimula ako sa linux, partikular sa linux mint, at mayroon akong sumusunod na problema: sa console nakikita ko na ang aking telepono ay konektado sa makina ngunit hindi sa file manager. At samakatuwid hindi ko ito magagamit bilang isang modem upang kumonekta sa internet. Ano ang magagawa ko?

    1.    Gaspar Fernandez dijo

      Mayroong mga telepono na hindi pinapayagan kang kumonekta bilang isang modem, ngunit maaari mong gawin ang Pag-tether

  6.   Milazzo dijo

    Mahusay na dokumentasyon!
    Salamat sa paglalaan ng oras upang ibahagi ang karanasan.
    Ginagamit ko ito bilang isang sanggunian para sa isa pang uri ng problema na mayroon ako: Pagdiskonekta ng mga USB port sa ubuntu (# 42 ~ precise1-Ubuntu SMP Wed Aug 14 15:31:16 UTC 2013)
    Dumarating ang isang oras kung saan ang System ay nagtatapon ng isang -110 sa dmesg at i-restart ang PC, ipinapalagay na ang kabiguan ay dahil sa kakulangan ng lakas sa USB kung saan nakakonekta ang aparato (USB3.0).

    Ngayon ginagamit ko ang lsusb -v upang mapatunayan ang antas ng kuryente ng aparato ngunit nagtatapon ito ng 2mA, na ganap na walang katotohanan ... ang mga LED lamang ang kumakain ng higit sa ...

    Ikonekta ko ang isang huawei E4 USB-8372G modem, subalit ang maxpower ay nagpapahiwatig ng 2mA, na kung saan ay hindi kapani-paniwala, ngayon ang pagduda ay nagbago at ang iba ay lumitaw:
    Ang MaxPower ba ay isang katangian na darating bilang default sa aparato o sa OS?
    Ito ba ay isang parameter ng maximum na lakas na ihahatid ng usb port?
    Sa kaso ng pagiging isang parameter
    Maaari bang mabago ang parameter na ito at maitakda sa maximum na ipinagkaloob ng USB port (900mAh- 3.0 / 500mAh- 2.0)?
    Kung sakaling hindi ito isang parameter,
    Ito ba ay isang real-time na halaga ng pagsukat ng pagkonsumo ng USB (malamang)?
    Kung ito ay isa pang pagpipilian mangyaring ipaliwanag sa akin dahil may pag-aalinlangan ako tungkol sa impormasyon na sanggunian.

    Mayroon akong maraming pag-aalinlangan tungkol sa halagang MaxPower na ito, kung mayroon kang anumang karagdagang impormasyon, labis akong nagpapasalamat.

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

    Bus 002 Device 006: ID 1a86: 7523 QinHeng Electronics HL-340 USB-Serial adapter
    bDeviceClass 255 Tukoy na Klase ng Vendor
    iProduct 2 USB2.0-Serial
    MaxPower 96mA
    Bus 002 Device 008: ID 12d1: 14db Huawei Technologies Co., Ltd.
    bDeviceClass 2 Komunikasyon
    iProduct 2 HUAWEI_MOBILE
    MaxPower 2mA

  7.   anonimo dijo

    Maaari ba itong ilapat sa mga bintana?

  8.   Chelo dijo

    Maraming salamat. Sa pamamagitan ng udisksctl power-off -b / dev / sdc sa aking panlabas na disk sapat na upang malutas ang sakit ng ulo. Hindi ba mas mahusay kung ang unmount ay may isang pagpipilian upang gawin ito mismo?

  9.   Marisa dijo

    Diyos kung ano ang fuck! Mayroon bang nagbasa ng buong kalooban na ito? At sa itaas pagkatapos ng plato hindi pa rin namin alam kung paano i-off ang isang interface ng tunog ng DAC / USB, isang printer, isang graphics tablet ... sa madaling salita, wala na hindi isang pako o isang panlabas na disk. Sayang sa oras ...