5 módszer az USB-eszköz leválasztására és csatlakoztatására anélkül, hogy levenné a kezét a billentyűzetről

Számos alkalommal, amikor a számítógépünket használjuk, leválasztjuk az USB-eszközt (biztonságosan, ahogy lennie kell), és azonnal utána rájövünk, hogy elfelejtettünk másolni egy fájlt, vagy meg kellett győződnünk arról, hogy az adatok egységünk. Ezekben az esetekben általában nagyon hasznos az USB-meghajtók virtuális leválasztása, ha távolról dolgozunk.

Miután kidobta az eszközt, már nem látjuk az eszközlistánkon, de a merevlemezt vagy a pendrive-ot továbbra is az USB port köti össze, és manapság sok disztribúcióban, biztonságosan kiadva a meghajtót, mi sem látjuk az eszközt, és Nem tehetjük felmászik terminálunkról. A leggyorsabb megoldás a kábel kihúzása és újracsatlakoztatása, bizonyos esetekben, akár a lustálkodás miatt, hogy fel kell kelnünk, akár azért, mert olyan számítógéphez férünk hozzá, amely előtt még nem állunk, és nincs senki a közelben, ezért nem tudjuk megtenni .

Információ az USB-eszközökről

Mielőtt elkezdenénk, nézzük meg, hogyan szerezhetünk információkat a rendszerhez csatlakoztatott USB-eszközökről. Ehhez használhatjuk lsusb, amely felsorolja a csatlakoztatott eszközöket. Példákat tettem arra, hogy mit kapok most a számítógépemen, de talán nagyon különbözik attól, amit kapsz:

$ lsusb 002-es busz 001-es eszköz: ID 1d6b: 0003 Linux Foundation 3.0 gyökér-hub-001-es busz 006-os eszköz: ID 8087: 0a2a Intel Corp.-os busz 001-es eszköz 007-es eszköz: ID 046d: c52b Logitech, Inc. 001-es vevő-busz egyesítése : 005 Terminus Technology Inc. 1-es hub busz 40: ID 0101f: c001a A-DATA Technology Co., Ltd. : 010 Linux Foundation 125 root hub

Ha további információra van szükségünk, használhatjuk a -t módosítót, amely egy fa formátumú kimenetet jelenít meg a modulokkal kapcsolatos információkkal:

$ lsusb -t /: 02-es busz. 1. port: Dev 1, Class = root_hub, Driver = xhci_hcd / 8p, 5000M /: 01-es busz. 1. port: 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 | __ 5. port: Dev 10, If 0, Class = Tárhely, Illesztőprogram = USB-háttértár, 480M | __ 6. port: Dev 5, Ha 0, Osztály = Hub, Illesztőprogram = hub / 4p, 12M | __ 4. port: Dev 7, Ha 0, Osztály = Emberi interfész eszköz, Illesztőprogram = usbhid, 12M | __ Port 4: Dev 7, If 1, Class = Emberi interfész eszköz, Driver = usbhid, 12M | __ Port 4: Dev 7, If 2, Class = Emberi interfész eszköz, Driver = usbhid, 12M | __ 9. port: Dev 6, Ha 0, Osztály = Vezeték nélküli, Illesztőprogram = btusb, 12M | __ 9. Port: Dev 6, Ha 1, Osztály = Vezeték nélküli, Illesztőprogram = btusb, 12M

Ha sokkal több információra van szükségünk, felhasználhatjuk lsusb -v (a kimenet nagyon nagy), például megtudhatnánk a készülékre leadott maximális teljesítményt is, az alábbiak szerint:

$ lsusb -v 2> / dev / null | egrep "^ Bus | MaxPower" 002-es busz 001 eszköz: ID 1d6b: 0003 Linux Foundation 3.0 gyökér hub MaxPower 0mA Bus 001 eszköz 006: ID 8087: 0a2a Intel Corp. MaxPower 100mA busz 001 007-es eszköz: ID 046d: c52b Logitech, Inc. Vevő egyesítése MaxPower 98mA busz 001 005-ös eszköz: ID 1a40: 0101 Terminus Technology Inc. Hub MaxPower 100mA-busz 001 010-es eszköz: ID 125f: c93a A-DATA Technology Co., Ltd. 4 GB Pen Drive MaxPower 480mA 001 busz 003 eszköz: ID 04f2: b424 Chicony Electronics Co., Ltd. MaxPower 500 mA busz 001 001 eszköz: ID 1d6b: 0002 Linux Foundation 2.0 gyökér hub MaxPower 0mA

Más nagyon hasznos parancsok usb-eszközök, hwinfo, vagy például, ha megvan az eszköz útvonala (belsejében / dev /), akkor kérhetünk a rendszertől minden lehetséges információt róla és az alrendszerektől, amelyeken keresztül kell haladnia. Például, ha USB merevlemezt csatlakoztatunk, ahhoz, hogy lássuk, hogyan használjuk az eszközt, szükségünk van egy SCSI illesztőprogramra (a / dev / sdX létezéséhez), szükségünk van egy USB tároló illesztőprogramra is, amely a USB-port, amely egy hubhoz tartozik, amely a többi köztes rendszer mellett egy PCI-porthoz csatlakozik. Mindazt, amivel láthattuk

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

o

$ udevadm info -a -n / dev / sdX

Ha meg akarunk merészkedni, akkor be is léphetünk / sys / busz / usb és mindent megnézünk, rengeteg információt fogunk látni, de szerencsére a fenti parancsok osztályozzák ezeket az információkat.

Jogosultságok és eszközök

Ennek a feladatnak a végrehajtásához tudnunk kell, hogy melyik készüléket fogjuk használni csatlakozzon újra. Ehhez futtathatjuk:

$ dmesg | tail [Thu Nov 24 19:50:04 2016] sd 7: 0: 0: 0: Csatolt scsi generic sg3 type 0 [798339.431677] sd 7: 0: 0: 0: [sdc] 15806464 512 bájtos logikai blokkok: ( 8.09 GB / 7.54 GiB) [798339.431840] sd 7: 0: 0: 0: [sdc] Az írásvédelem ki van kapcsolva [798339.431848] sd 7: 0: 0: 0: [sdc] Mód érzék: 00 00 00 00 [798339.431988] sd 7: 0: 0: 0: [sdc] A gyorsítótár adatainak kérése sikertelen : 798339.431996: 7: 0: [sdc] Csatolt SCSI cserélhető lemez [0] ISO 0 kiterjesztések: Microsoft Joliet 798339.434157. szint [1] ISO 2 kiterjesztések: RRIP_798339.446812A

Ebben a kimenetben látni fogjuk, hogy az az eszköz, amellyel dolgozunk, az sdc (Az sdc1 és az sdc2 partíciók lennének a lemezen). Példákként ezt az eszközt fogom használni, az Ön esetében meg kell jelenítenie, hogy melyik fiókja van.

Az alábbi példákban használni fogom sudo parancsok végrehajtására a gyökér. Bár elég lenne egy felhasználó, akinek elegendő engedélye van. Ha meg akarjuk látni a szükséges privilégiumokat, tegye meg ls az eszközre:

$ ls -latr / dev / sdc brw-rw ---- 1 gyökérlemez, 8. november 32., 24:19 / dev / sdc

Ott látjuk, hogy a tulajdonos a root és a csoport korong. Elég lenne, ha a csoportlemezhez tartozik egy felhasználó.

1. módszer CD / DVD-ként kezelje

Ez az összes közül a legegyszerűbb. Természetesen, ha évek óta használja a GNU / Linux rendszert, amikor CD-ROM vagy DVD-vel dolgozott, akkor az eject parancsot használta. Nos, az eject segítségével nyitották meg a CDROM-ot, az eject -t pedig a tálca bezárásához. Nos, ha ezt az USB-eszköz előtt tesszük:

$ sudo eject -t / dev / sdc

Az eszköznek úgy kell megjelennie, mintha újra csatlakoztattuk volna.

2. módszer: Leválasztva és virtuálisan bedugva

Egyes rendszereken (mindaddig, amíg a hardver támogatja), amikor biztonságosan eltávolítja az USB-eszközt, az eszköz leállítja az áramellátást, és az eszköz már nem jelenik meg. Ugyanaz, mint amikor:

udisksctl kikapcsolás -b / dev / sdc

Ebben az esetben, / Dev / sdc ez az én készülékem, és ezzel a paranccsal egy virtuális áramkimaradást szimulált.

A probléma az, hogy most / dev / sdc nem létezik, mi több, ha a dmesg-t nézzük, akkor valami ilyesmit kapunk:

$ dmesg | farok [281954.693298] usb 1-5: USB-leválasztás, 3. eszköz száma

Tehát ha megpróbáljuk a módszerrel katapult ez nem fog működni. Megjegyzés: Kiemeltem usb 1-5 és hamarosan meglátjuk miért.

Ha távolról dolgozik, ez jó ötlet lehet. Képzelje el, hogy USB-meghajtók vannak csatlakoztatva a biztonsági mentéshez. A másolatok készítésekor jó, hogy a rendszer tudja, hogy vannak lemezek csatlakoztatva, de amikor nem használjuk őket, egyrészt meg kell energiát takarít meg és kerülje a lemezek kopását, ezért jobb, ha levágja az áramot, nem akarjuk, hogy a rosszindulatú alkalmazások látják, hogy léteznek ezeket a lemezeket, hogy ne fertõzõdjenek meg. (Igen, vannak vírusok a GNU / Linux rendszerben).

Hogyan kapcsoljuk most össze az áramot?

Hívnunk kell az USB portot, ehhez van egy projekt agyerõ (Az eredeti projekt egy villájához linkelem, mert itt javítottak egy hibát, amely eltávolíthatja az áramot több eszközről, és nem csak azt, amelyet szeretnénk). További projektek vannak (pl uhubctl), de ennek nincsenek függőségei attól, hogy mikor megyünk lefordítani, ez is csak egy hubpower.c fájl.
Először összeállítjuk,

$ gcc -o hubpower hubpower.c

Most emlékszik a félkövéren szedett számokra a dmesg? Nos, használni fogjuk őket, le kell választanunk az eszközt és újra csatlakoztatnunk, így:

$ 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

Ha az eszköz nem észlel minket, megpróbálhatjuk:

$ sudo ./hubpower 1: 1 bind Bind-driver kérés elküldve a kernelnek

Ily módon újra láthatjuk a csatlakoztatott USB-eszközt.

Ha nem akarunk C programot ... akkor van benne perl

A C programot nehéz összeállítani és tesztelni, hogy nagyon egyszerűek-e a feladataink, ezért kipróbálhatjuk ezt a kis portot 10 sorban, perl-ben:

A #! / bin / perl "sys / ioctl.ph" fájlt igényel; $ device = "05"; open (a $ usbdev,"> "," / dev / bus / usb/ 001/001 "); $ data = pack ("H *", "23010800". $ device. "000000FFFFFF8813"); ioctl ($ usbdev, 0xC0185500, $ data); $ data = pack ("H *", "23030800". $ device. "000000FFFFFF8813"); ioctl ($ usbdev, 0xC0185500, $ data); bezár ($ usbdev);

Tisztelnünk kell $ eszköz, a portszám (esetemben 5 volt), ez hexadecimális érték, ezért 10 A, 11 B, 15 F, 16 lesz 10 ... Figyelemmel kell kísérnünk az eszközt is és a busz, amelyhez / dev / bus / usb /001/001, a számoknak kezdő nullákkal kell lenniük, mivel ezt a fájlt hívjuk.

Mint láthatjuk, a kulcs az ioctl () fájlban található, ez egy olyan funkció, amely egy eszköz paramétereit manipulálja a fájlrendszer egy speciális fájljából. A felhasznált hexadecimális értékek között megtaláljuk 0xC0185500, az USBDEVFS_CONTROL nevű konstans, amellyel vezérlőparancsot küldünk az USB-eszközre, A többi kód a lekapcsolási és csatlakozási kérelemhez tartozik (további információt a C-ben készített programban találhat).

3. módszer Az eszköz elrejtése és bemutatása

Az eszköz leválasztásának másik módja lehet:

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

És helyrehozhatjuk azáltal, hogy:

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

Ez a módszer nem okozza az eszköz teljes leválasztását. Csak arra készteti az operációs rendszert, hogy ne beszéljen vele, és sok eszköz, amikor a számítógép semmit sem akar tudni róluk, alacsony fogyasztású üzemmódba kerül, mivel nem fogunk semmit kérni.

4. módszer. Az eszköz hitelesítése

Ennek a módszernek az a hátránya, hogy sok rendszerben több eszközt lehet ideiglenesen kikapcsolni, amire nemcsak szükségünk van, hanem egy teljes USB hubot is megtámadunk. Például:

$ visszhang 0 | sudo tee / sys / busz / usb / devices / usb1 / engedélyezett $ echo 1 | sudo tee / sys / bus / usb / devices / usb1 / engedéllyel

Ami természetesen mindent futtathatunk egymás után:

$ visszhang 0 | sudo tee / sys / bus / usb / devices / usb1 / engedéllyel; visszhang 1 | sudo tee / sys / bus / usb / devices / usb1 / engedéllyel

Óvatosnak kell lennünk, ha több lemez van csatlakoztatva ugyanahhoz az USB-porthoz (és szinte mindig a számítógépeinknél, akkor több USB-port is csatlakozik egy hubhoz, mint amilyet látunk, tehát vannak olyan portcsoportok, amelyek ugyanazzal az USB-porttal rendelkeznek apa, valamilyen módon fogalmazzon.

5. módszer. Indítsa újra az USB alrendszert

Ha újra akarjuk indítani az USB alrendszert. Vagyis frissítse az összes USB-eszközt, például az összes kihúzását és csatlakoztatását, egyrészt letölthetjük és újratölthetjük az USB-kernelmodult:

$ sudo modprobe -r ehci_hcd; sudo modprobe ehci_hcd # USB2 esetén $ sudo modprobe -r xhci_hcd; sudo modprobe xhci_hcd # USB3 esetén

Bár néhány disztribúció, az Ubuntu legújabb verziói és a származékai is, rendelkeznek a beépített USB modulok és nem lehet letölteni. Másrészt előfordulhat, hogy a rendszer nem teszi lehetővé számunkra a letöltést, mert más modulok (nyomtatók, tárolók, interfész eszközök stb.) Miatt vannak használatban, és ha elkezdünk modulokat letölteni és megtörni a dolgokat, akkor előfordulhat, hogy indítsa újra a számítógépet a végén. Tehát más módon tehetjük:

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

Az eszközünk megtalálásához megtehetjük a / sys / bus / pci / drivers / xhci_hcd fájlokat, számos dolog megjelenik, meg kell keresnünk egy ilyet aaaa: bb: cc: dd.e. Az USB-port nem biztos, hogy xhci_hcd (USB3), inkább ehci_hcd (USB2)


Hagyja megjegyzését

E-mail címed nem kerül nyilvánosságra. Kötelező mezők vannak jelölve *

*

*

  1. Az adatokért felelős: Miguel Ángel Gatón
  2. Az adatok célja: A SPAM ellenőrzése, a megjegyzések kezelése.
  3. Legitimáció: Az Ön beleegyezése
  4. Az adatok közlése: Az adatokat csak jogi kötelezettség alapján továbbítjuk harmadik felekkel.
  5. Adattárolás: Az Occentus Networks (EU) által üzemeltetett adatbázis
  6. Jogok: Bármikor korlátozhatja, helyreállíthatja és törölheti adatait.

  1.   Cristian dijo

    Kiváló cikk!

    1.    gasparfm dijo

      Nagyon köszönöm Cristian! Remélem hasznosnak találta.

  2.   Antonio juan dijo

    Ebben a cikkben nem azt mondják, hogy bármikor, amikor azt fogod tenni, az a másik szemközti oldalon áll, és meg kell fordítanod ... hehehe. Remek cikk.

    1.    gasparfm dijo

      Köszönöm Antonio Juan! Nos, nézd, nem tudod, hányszor történt ez velem, miközben mindent megpróbáltam, amit a posztba tettem! 🙂

  3.   ROMSAT dijo

    Nagy. Kiválóbb elem. A címe: "Ismerje meg a Linux rendszert azáltal, hogy egyszerűen kihúzza és bedugja az USB-meghajtót." Gratulálunk.
    Üdvözlet Malagából.

    1.    gasparfm dijo

      Nos, igen, nem tudom, hogy valaki elkezd-e C-ben programozni és ehhez az üzenethez hozzáférni az eszközökhöz! Malagából is !! Mindenhol vagyunk

  4.   HO2Gi dijo

    Lenyűgöző cikk. Túlzásba esett egy ilyen anyaggal.

    1.    gasparfm dijo

      Köszi HO2Gi !! A személyes blogomon ( http://totaki.com/poesiabinaria ) sok oktatóanyag is található a stílusról 🙂

  5.   atahualpa dijo

    nagyon szépen köszönöm, barátom. A linuxban kezdem, konkrétan a linux mintában, és a következő problémám van: a konzolban látom, hogy a telefonom csatlakozik a géphez, de nem a fájlkezelőben. Ezért nem tudom modemként használni az internethez való csatlakozáshoz. Mit tudok tenni?

    1.    Gaspar Fernandez dijo

      Vannak olyan telefonok, amelyek nem engedik, hogy modemként csatlakozzon, de megteheti a Tethering funkciót

  6.   Milazzo dijo

    Kiváló dokumentáció!
    Köszönjük, hogy időt szánt a tapasztalatok megosztására.
    Hivatkozásként használom egy másik típusú problémámra: Az USB-portok leválasztása az Ubuntu-ban (# 42 ~ precíz1-Ubuntu SMP Wed Aug 14 15:31:16 UTC 2013)
    Eljön az idő, amikor a rendszer -110-et dob ​​a dmesg-be, és újraindítja a számítógépet. Feltételezzük, hogy a meghibásodás oka az áramellátás hiánya az USB-n, ahová az eszköz csatlakozik (USB3.0).

    Most az lsusb -v-t használom az eszköz teljesítményszintjének ellenőrzésére, de 2mA-t mutat, ami teljesen abszurd ... csak a LED-ek fogyasztanak ennél többet ...

    Csatlakoztattam egy huawei E4 USB-8372G modemet, azonban a maximális teljesítmény 2mA-t jelez, ami hihetetlen, most a kétség megváltozott, és mások felmerültek:
    A MaxPower olyan attribútum, amely alapértelmezés szerint az eszközön vagy az operációs rendszeren érkezik?
    A maximális teljesítmény paramétere, amelyet az usb port szolgáltat?
    Paraméter létezése esetén
    Módosítható és paraméterezhető-e az USB port által megadott maximális értékre (900mAh- 3.0 / 500mAh- 2.0)?
    Abban az esetben, ha nem paraméter,
    Az USB-fogyasztás valós idejű mérési értéke (valószínűtlen)?
    Ha ez egy másik lehetőség, kérjük, magyarázza el nekem, mivel kétségeim vannak a referenciaadatokkal kapcsolatban.

    Több kétségem van a MaxPower értékkel kapcsolatban. Ha bármilyen további információval rendelkezik, nagyon hálás lennék.

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

    002-es busz 006-os eszköz: ID 1a86: 7523 QinHeng Electronics HL-340 USB-soros adapter
    bDeviceClass 255 Szállítóspecifikus osztály
    iProduct 2 USB2.0-soros
    MaxPower 96mA
    002-es busz 008-as eszköz: ID 12d1: 14db Huawei Technologies Co., Ltd.
    bDeviceClass 2 kommunikáció
    iProduct 2 HUAWEI_MOBILE
    MaxPower 2mA

  7.   Névtelen dijo

    Alkalmazható Windows-ra?

  8.   Chelo dijo

    Nagyon köszönöm. Az udisksctl power-off -b / dev / sdc használatával a külső lemezemen elég volt megoldani a fejfájást. Nem lenne jobb, ha a szerelvénynek van lehetősége erre?

  9.   Marisa dijo

    Istenem mi a franc! Olvasta valaki ezt az egész végrendeletet? És fent a lemez után még mindig nem tudjuk, hogyan lehet kikapcsolni egy DAC / USB hangfelületet, egy nyomtatót, egy grafikus táblagépet ... egyszóval semmi, ami nem tüske vagy külső lemez. Micsoda időpocsékolás ...