Pieci veidi, kā atvienot un pievienot USB ierīci, nenoņemot rokas no tastatūras

Daudzos gadījumos, kad mēs izmantojam datoru, mēs atvienojam USB ierīci (droši, kā tam jābūt) un tūlīt pēc tam saprotam, ka esam aizmirsuši nokopēt failu vai mums jāpārliecinās, vai dati ir mūsu vienībā. Šādos gadījumos parasti ir ļoti noderīgi faktiski atvienot USB diskus, kad strādājam attālināti.

Izgrūduši ierīci, mēs to vairs neredzam savā ierīču sarakstā, bet cieto disku vai pendrive joprojām savieno USB ports, un mūsdienās daudzos izplatījumos, droši izstumjot disku, mēs arī neredzam ierīci un Mēs to nevaram izdarīt mount no mūsu termināla. Ātrākais risinājums ir kabeļa atvienošana un atkārtota pievienošana, dažos gadījumos vai nu slinkuma dēļ, kad jāceļas, vai arī tāpēc, ka mēs piekļūstam datoram, kura priekšā vēl neesam un neviena nav, mēs to nevaram izdarīt.

Informācija par USB ierīcēm

Pirms sākam, apskatīsim, kā iegūt informāciju par sistēmai pievienotajām USB ierīcēm. Šim nolūkam mēs varam izmantot lsusb, kurā tūlīt tiks uzskaitītas pievienotās ierīces. Es ievietoju piemērus tam, ko šobrīd saņemu datorā, bet varbūt tas ļoti atšķiras no tā, ko saņemat:

$ lsusb kopne 002 Ierīce 001: ID 1d6b: 0003 Linux Foundation 3.0 saknes centrmezgla 001 ierīce 006: ID 8087: 0a2a Intel Corp. kopne 001 Ierīce 007: ID 046d: c52b Logitech, Inc. Vienojošā uztvērēja kopne 001 Ierīce 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 Device: ID 04f2: b424 Chicony Electronics Co., Ltd Bus 001 Device 001: ID 1d6b : 0002 Linux Foundation 2.0 saknes centrmezgls

Ja mēs vēlamies iegūt vairāk informācijas, mēs varam izmantot -t modifikatoru, kas mums parādīs izvadi koka formā ar informāciju par moduļiem:

$ lsusb -t /: 02. autobuss. 1. ports: Dev 1, Class = root_hub, Driver = xhci_hcd / 8p, 5000M /: Bus 01. 1. ports: Dev 1, Class = root_hub, Driver = xhci_hcd / 16p, 480M | __ 4. ports: Dev 3, ja 0, klase = video, draiveris = uvcvideo, 480M | __ ports 4: Dev 3, ja 1, klase = video, draiveris = uvcvideo, 480M | __ 5. ports: Dev 10, ja 0, klase = Lielapjoma atmiņa, draiveris = USB atmiņa, 480M | __ 6. ports: Dev 5, ja 0, klase = centrmezgls, draiveris = centrmezgls / centrmezgls / 4p, 12M | __ 4. pieslēgvieta: Dev 7, ja 0, klase = cilvēka saskarnes ierīce, Draiveris = usbhid, 12M | __ 4. ports: Dev 7, ja 1, klase = cilvēka saskarnes ierīce, draiveris = usbhid, 12M | __ 4. ports: Dev 7, ja 2, klase = cilvēka saskarnes ierīce, draiveris = usbhid, 12 miljoni | __ ports 9: Dev 6, ja 0, klase = bezvadu, draiveris = btusb, 12M | __ ports 9: Dev 6, ja 1, klase = bezvadu, draiveris = btusb, 12M

Ja mēs vēlamies daudz vairāk informācijas, mēs varam to izmantot lsusb -v (izeja ir ļoti liela), turklāt mēs, piemēram, varētu uzzināt ierīces maksimālo jaudu šādā veidā:

$ lsusb -v 2> / dev / null | egrep "^ Autobuss | MaxPower" Autobuss 002 Ierīce 001: ID 1d6b: 0003 Linux Foundation 3.0 saknes centrmezgls MaxPower 0mA Autobuss 001 Ierīce 006: ID 8087: 0a2a Intel Corp. MaxPower 100mA Autobuss 001 Ierīce 007: ID 046d: c52b Logitech, Inc. Uztvērēja apvienošana MaxPower 98mA kopne 001 Ierīce 005: ID 1a40: 0101 Terminus Technology Inc. Hub MaxPower 100mA kopne 001 Ierīce 010: ID 125f: c93a A-DATA Technology Co., Ltd. Pen Drive MaxPower 4mA kopne 480 Ierīce 001: ID 003f04: b2 Chicony Electronics Co., Ltd MaxPower 424mA kopne 500 Ierīce 001: ID 001d1b: 6 Linux Foundation 0002 saknes centrmezgls MaxPower 2.0mA

Citas ļoti noderīgas komandas ir USB ierīces, hwinfo, vai, piemēram, ja mums ir ierīces ceļš (iekšpusē / dev /), mēs varam lūgt sistēmai visu iespējamo informāciju par to un apakšsistēmām, kurām tai jāiet cauri. Piemēram, ja mēs pievienojam USB cieto disku, lai mēs varētu redzēt, kā lietot ierīci, mums ir nepieciešams SCSI draiveris (lai būtu / dev / sdX), mums ir nepieciešams arī USB atmiņas draiveris, kas darbojas caur USB portu, kas pieder centrmezgls, kas ir pievienots PCI portam, starp citām starpsistēmām. Viss, ko mēs varējām redzēt

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

o

$ udevadm info -a -n / dev / sdX

Ja gribam uzdrīkstēties, varam arī ienākt / sys / autobuss / usb un apskatīt visu, kas ir, mēs redzēsim daudz informācijas, bet par laimi iepriekš minētās komandas klasificē visu šo informāciju.

Privilēģijas un ierīces

Lai veiktu šo uzdevumu, mums būs jāzina, kuru ierīci mēs izmantosim atjaunojiet savienojumu. Lai to izdarītu, mēs varam palaist:

$ dmesg | astes [ceturtdien 24. novembrī 19:50:04 2016] sd 7: 0: 0: 0: Pielikumā esošais scsi generic sg3 type 0 [798339.431677] sd 7: 0: 0: 0: [sdc] 15806464 512 baitu loģiskie bloki: ( 8.09 GB / 7.54 GiB) [798339.431840] sd 7: 0: 0: 0: [sdc] Rakstīšanas aizsardzība ir izslēgta [798339.431848] sd 7: 0: 0: 0: [sdc] Režīma izjūta: 00 00 00 00 [798339.431988] sd 7: 0: 0: 0: [sdc] Neizdevās pieprasīt kešatmiņas datus [798339.431996] sd 7: 0: 0: 0: [sdc] Pieņemot diska kešatmiņu: rakstīt caur [798339.434157] sdc: sdc1 sdc2 [798339.446812] sd 7 : 0: 0: 0: [sdc] Pievienots SCSI noņemams disks [798360.808588] ISO 9660 paplašinājumi: Microsoft Joliet 3. līmenis [798360.809353] ISO 9660 paplašinājumi: RRIP_1991A

Šajā izvadē mēs redzēsim, ka ierīce, ar kuru mēs strādājam, ir sdc (sdc1 un sdc2 būtu šī diska nodalījumi). Piemēriem, kurus es izmantošu šo ierīci, jūsu gadījumā jums būs vizualizēt, kurš konts jums ir.

Tālāk sniegtajos piemēros es izmantošu sudo izpildīt komandas ar. privilēģijām sakne. Lai gan būtu pietiekami, ja ir lietotājs ar pietiekamu atļauju. Ja mēs vēlamies redzēt nepieciešamās privilēģijas, vienkārši dariet to ls uz ierīci:

$ ls -latr / dev / sdc brw-rw ---- 1 saknes disks 8., 32. novembrī 24 19:50 / dev / sdc

Tur mēs redzam, ka īpašnieks ir sakne un grupa disks. Pietiktu ar lietotāju, kas pieder grupas diskam.

1. metode. Apstrādājiet to kā CD / DVD

Tas ir vienkāršākais no visiem. Protams, ja jūs gadiem ilgi izmantojat GNU / Linux, strādājot ar CD-ROM vai DVD, izmantojāt komandu eject. Nu, izspiešana tika izmantota, lai atvērtu CDROM, un eject -t tika izmantota, lai aizvērtu paplāti. Nu, ja mēs to darām pirms USB ierīces:

$ sudo izgrūst -t / dev / sdc

Ierīcei vajadzētu parādīties tā, it kā mēs to atkal būtu savienojuši.

2. metode. Atvienots un virtuāli pievienots

Dažās sistēmās (ja vien aparatūra to atbalsta), droši noņemot USB ierīci, ierīce pārtrauc darboties un vairs neparādās. Tas ir tāds pats kā tad, kad jūs to darāt:

udisksctl izslēgšanās -b / dev / sdc

Šajā gadījumā, / dev / sdc tā ir mana ierīce, un ar šo komandu tā simulēja virtuālās strāvas atvienošanu.

Problēma ir tāda, ka tagad / dev / sdc neeksistē, turklāt, ja paskatāmies uz dmesg, mēs iegūsim kaut ko līdzīgu:

$ dmesg | aste [281954.693298] usb 1-5: USB atvienošana, ierīces numurs 3

Tātad, ja mēs mēģinām ar metodi izmest tas nestrādās. Piezīme: Es esmu izcēlis usb 1-5 un mēs drīz redzēsim, kāpēc.

Ja strādājat attālināti, tā var būt laba ideja. Iedomājieties, ka dublējumam ir pievienoti USB diski. Veidojot kopijas, sistēmai ir labi zināt, ka ir pievienoti diski, bet, no vienas puses, ja mēs tos neizmantojam, ietaupīt enerģiju un izvairieties no disku nodiluma, tāpēc labāk ir samazināt strāvu, no otras puses, mēs nevēlamies, lai ļaunprātīgas lietotnes redzētu, ka tās pastāv šie diski, lai tie netiktu inficēti. (Jā, GNU / Linux ir vīrusi).

Kā mēs tagad savienojam strāvu?

Mums ir jāzvana uz USB pieslēgvietu, tāpēc ir projekts ar nosaukumu centrālais spēks (Es saistu ar sākotnējā projekta dakšiņu, jo šeit ir novērsta kļūda, kas var noņemt strāvu no vairākām ierīcēm, nevis tikai no tās, kuru mēs vēlamies). Ir vairāk projektu (piemēram, uhubctl), taču tam nav atkarības, kad mēs ejam apkopot, tas ir arī tikai hubpower.c fails.
Pirmkārt, mēs to apkopojam,

$ gcc -o centrālais spēks. c

Vai tagad atceraties treknrakstā esošos skaitļus no dmesg? Nu, mēs tos izmantosim, mums būs jāatvieno ierīce un jāpievieno tā, piemēram:

$ 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

Ja ierīce mūs nenosaka, mēs varam mēģināt:

$ sudo ./hubpower 1: 1 bind Bind-draivera pieprasījums nosūtīts kodolam

Tādā veidā mēs atkal redzēsim mūsu pievienoto USB ierīci.

Ja mēs nevēlamies C programmu ... man tas ir perl

C programmu ir grūti sastādīt un pārbaudīt, vai tas, ko mēs darīsim, ir ļoti vienkāršs, tāpēc mēs varam izmēģināt šo mazo portu 10 rindās, kas izveidotas perl:

#! / bin / perl nepieciešama "sys / ioctl.ph"; $ device = "05"; atvērts (mans $ usbdev,"> "," / dev / bus / usb/ 001/001 "); $ data = pack ("H *", "23010800". $ device. "000000FFFFFF8813"); ioctl ($ usbdev, 0xC0185500, $ dati); $ data = pack ("H *", "23030800". $ ierīce. "000000FFFFFF8813"); ioctl ($ usbdev, 0xC0185500, $ dati); aizvērt ($ usbdev);

Mums ir jāciena $ ierīce, porta numurs (manā gadījumā tas bija 5), ​​tā ir vērtība heksadecimālā, tāpēc 10 būs A, 11 būs B, 15 būs F, 16 būs 10 ... Mums arī jāuzrauga ierīce un kopne, kurai mēs piekļūstam no / dev / bus / usb /001/001, numuriem ir jābūt ar nulles sākumu, jo mēs izsaucam šo failu.

Kā redzam, atslēga atrodas ioctl (), tā ir funkcija, kas manipulē ar ierīces parametriem no īpaša failu sistēmas faila. Starp izmantotajām heksadecimālajām vērtībām mēs atrodam 0xC0185500, konstante, ko sauc par USBDEVFS_CONTROL, ar kuru mēs nosūtīsim vadības komandu uz USB ierīci. Pārējie kodi pieder atvienošanas un savienojuma pieprasījumam (vairāk informācijas varat atrast programmā C, kas izveidota C).

3. metode. Ierīces paslēpšana un parādīšana

Cits ierīces atvienošanas veids varētu būt:

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

Un mēs to varam atgūt, rīkojoties šādi:

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

Šī metode neizraisa pilnīgu ierīces atvienošanu. Tas tikai liek operētājsistēmai ar to nerunāt, un daudzas ierīces, kad dators nevēlas par tām neko zināt, tiek ieslēgts mazjaudas režīmā, jo mēs neko neprasīsim.

4. metode. Ierīces autorizācija

Šīs metodes negatīvie aspekti ir tādi, ka daudzās sistēmās var īslaicīgi deaktivizēt vairāk ierīču, kas ir ne tikai tas, kas mums nepieciešams, bet arī uzbrūkam visam USB centrmezglam. Piemēram:

$ atbalss 0 | sudo tee / sys / bus / usb / devices / usb1 / atļautais $ echo 1 | sudo tee / sys / bus / usb / devices / usb1 / autorizēts

Ko, protams, mēs varam vadīt visu pēc kārtas:

$ atbalss 0 | sudo tee / sys / bus / usb / devices / usb1 / atļauts; atbalss 1 | sudo tee / sys / bus / usb / devices / usb1 / autorizēts

Mums jābūt uzmanīgiem, ja vienam un tam pašam USB portam ir pievienots vairāk disku (un gandrīz vienmēr mūsu datoros vairāki USB porti, nekā mēs redzam, ir iekšēji savienoti ar centrmezglu, tāpēc ir ostu grupas ar tādu pašu USB tēvs, kaut kā sakot.

5. metode. Pārstartējiet USB apakšsistēmu

Ja mēs vēlamies restartēt USB apakšsistēmu. Tas ir, atsvaidziniet visas USB ierīces, piemēram, visu to atvienošanu un pievienošanu, no vienas puses, mēs varam lejupielādēt un atkārtoti ielādēt USB kodola moduli:

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

Kaut arī dažos izplatījumos, ieskaitot jaunākās Ubuntu versijas un atvasinājumus, ir integrēti USB moduļi un tos nevar lejupielādēt. No otras puses, sistēma var neļaut mums tos lejupielādēt, jo tie tiek izmantoti citu moduļu dēļ (printeri, atmiņa, saskarnes ierīces utt.), Un, ja mēs sākam lejupielādēt moduļus un salauzt lietas, mums, iespējams, būs jārestartē dators beigās. Tātad citā veidā mēs varam darīt:

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

Lai atrastu mūsu ierīci, mēs varam to izdarīt iekšpusē / sys / bus / pci / drivers / xhci_hcd, parādīsies vairākas lietas, mums ir jāmeklē tāda, kas izskatās šādi aaaa: bb: cc: dd.e. Jūsu USB ports var nebūt norādīts kā xhci_hcd (USB3), bet drīzāk ehci_hcd (USB2)


Raksta saturs atbilst mūsu principiem redakcijas ētika. Lai ziņotu par kļūdu, noklikšķiniet uz šeit.

14 komentāri, atstājiet savus

Atstājiet savu komentāru

Jūsu e-pasta adrese netiks publicēta.

*

*

  1. Atbildīgais par datiem: Migels Ángels Gatóns
  2. Datu mērķis: SPAM kontrole, komentāru pārvaldība.
  3. Legitimācija: jūsu piekrišana
  4. Datu paziņošana: Dati netiks paziņoti trešām personām, izņemot juridiskus pienākumus.
  5. Datu glabāšana: datu bāze, ko mitina Occentus Networks (ES)
  6. Tiesības: jebkurā laikā varat ierobežot, atjaunot un dzēst savu informāciju.

  1.   Cristian teica

    Izcils raksts!

    1.    gasparfm teica

      Liels paldies Cristian! Es ceru, ka jums tas ir noderējis.

  2.   Antonio Huans teica

    Šajā rakstā nav teikts, ka vienmēr, kad jūs to plānojat ievietot, tas atrodas pretējā pusē pareizajam un jums tas ir jāpagriež ... hehehe. Lielisks raksts.

    1.    gasparfm teica

      Paldies Antonio Huanam! Nu paskatieties, jūs nezināt, cik reizes ar mani tas ir noticis, kamēr es izmēģināju visu, ko esmu ievietojis ziņā! 🙂

  3.   ROMSAT teica

    Lieliski. Izcils priekšmets. Tam vajadzētu būt nosaukumam: "Uzziniet par Linux sistēmu, vienkārši atvienojot un pievienojot USB atmiņu." Apsveicu.
    Sveiciens no Malagas.

    1.    gasparfm teica

      Nu jā, es nezinu, vai kāds sāks programmēt C un piekļūt ierīcēm no šī ieraksta! Arī no Malagas !! Mēs esam visur 🙂

  4.   HO2Gi teica

    Iespaidīgs raksts. Ar šādu materiālu jūs esat aizgājis aiz borta.

    1.    gasparfm teica

      Paldies HO2Gi !! Manā personīgajā emuārā ( http://totaki.com/poesiabinaria ) ir arī daudz stila apmācību 🙂

  5.   Atahualpa teica

    liels paldies draugs. Es sāku ar Linux, īpaši ar Linux mint, un man ir šāda problēma: konsolē es redzu, ka mans tālrunis ir savienots ar mašīnu, bet nav failu pārvaldniekā. Tāpēc es nevaru to izmantot kā modemu, lai izveidotu savienojumu ar internetu. Ko es varu darīt?

    1.    Gaspars Fernandess teica

      Ir tālruņi, kas neļauj jums izveidot savienojumu kā modemu, bet jūs varat veikt piesiešanu

  6.   Milazzo teica

    Izcila dokumentācija!
    Paldies, ka veltījāt laiku, lai dalītos pieredzē.
    Es to izmantoju kā atsauci uz cita veida problēmu, kas man ir: USB portu atvienošana Ubuntu (# 42 ~ precīzi1-Ubuntu SMP Wed Aug 14 15:31:16 UTC 2013)
    Pienāk laiks, kad sistēma iemet -110 dmesg un restartē datoru, tiek pieņemts, ka kļūme ir saistīta ar strāvas trūkumu USB, kurā ierīce ir pievienota (USB3.0).

    Tagad es izmantoju lsusb -v, lai pārbaudītu ierīces jaudas līmeni, bet tas izmet 2mA, kas ir pilnīgi absurds ... vairāk nekā tikai LED patērē ...

    Es savienoju huawei E4 USB-8372G modemu, tomēr maxpower norāda 2mA, kas ir neticami, tagad šaubas ir mainījušās un radušās citas:
    Vai MaxPower ir atribūts, kas pēc noklusējuma tiek parādīts ierīcē vai OS?
    Vai tas ir maksimālās jaudas parametrs, ko piegādās USB ports?
    Parametra gadījumā
    Vai šo parametru var mainīt un iestatīt uz maksimālo, ko piešķir USB ports (900mAh- 3.0 / 500mAh- 2.0)?
    Ja tas nav parametrs,
    Vai tā ir reālā laika USB patēriņa mērījumu vērtība (maz ticams)?
    Ja tā ir cita iespēja, lūdzu, paskaidrojiet man, jo es šaubos par atsauces informāciju.

    Man ir vairākas šaubas par šo MaxPower vērtību. Ja jums ir kāda papildu informācija, es būtu ļoti pateicīgs.

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

    002. kopne. Ierīce 006: ID 1a86: 7523 QinHeng Electronics HL-340 USB sērijas adapteris
    bDeviceClass 255 Pārdevējam raksturīgā klase
    iProduct 2 USB2.0-sērijas
    MaxPower 96mA
    002. kopne Ierīce 008: ID 12d1: 14db Huawei Technologies Co., Ltd.
    bDeviceClass 2 sakari
    iProduct 2 HUAWEI_MOBILE
    MaxPower 2mA

  7.   Anonīms teica

    Vai to var piemērot logiem?

  8.   Čelo teica

    Liels paldies. Ar ārējā diskā esošo udisksctl strāvas izslēgšanu -b / dev / sdc bija pietiekami, lai atrisinātu galvassāpes. Vai nebūtu labāk, ja atvienotājam būtu iespēja to izdarīt pats?

  9.   Marisa teica

    Dievs, kas pie velna! Vai kāds ir izlasījis visu šo testamentu? Un virs plāksnes mēs joprojām nezinām, kā izslēgt DAC / USB skaņas saskarni, printeri, grafisko planšetdatoru ... īsi sakot, nekas, kas nav smaile vai ārējs disks. Kāda laika izšķiešana ...

bool (patiess)