namai - Atsigavimas
„Linux“ kriminalistika, stebinti USB įrenginių ryšio istoriją. „Linux“ kriminalistika, sekanti USB įrenginių prisijungimo istoriją. Prijungti USB linux įrenginiai

USB – universali nuoseklioji magistralė serijinė magistralė) sukūrė įmonių konsorciumas, kurio tikslas buvo sukurti vieną paprastą magistralę periferiniams įrenginiams sujungti.

USB konstrukcija leidžia įrenginius prijungti skrydžio metu naudojant standartinius prijungimo lizdus. USB įrenginiai: klaviatūros, pelės, spausdintuvai, skaitytuvai, kietieji diskai, „flash drives“, fotoaparatai, modemai, tinklo adapteriai ir stulpelių, o jų sąrašas nuolat pildomas.

„Linux“ USB įrenginių palaikymas yra gana išsamus, tačiau kai kuriems įrenginiams reikalingos specialios tvarkyklės, o kiti, daugiausia spausdintuvai ir skaitytuvai, gali būti nepalaikomi arba palaikomi tik iš dalies.

Kompiuterinėse sistemose gali būti vienas ar daugiau valdiklių arba šakotuvų, skirtų prijungti USB įrenginius ar kitą (išorinį) šakotuvą. Centras gali palaikyti iki 7 įrenginių, kurie savo ruožtu gali turėti papildomų šakotuvų. Stebulė viduje Sistemos vienetas vadinamas šaknies centru. Kiekviena žvaigždžių topologija gali palaikyti iki 127 šakotuvų arba įrenginių.

Kai sakome USB prievadą, turime omenyje kompiuterio USB palaikymą ir prijungimo prievadą, o ne įrenginio naudojamą vidinio prievado adresą.

USB sistemos sluoksniavimas leidžia pagrindiniam kompiuteriui nustatyti USB įrenginio charakteristikas, įskaitant klasę, gamintojo pavadinimą, įrenginio pavadinimą, įtampos reikalavimus, greitį, USB palaikymo lygį ir kitas funkcijas.

Linux USB įrenginio palaikymo modulis

USB įrenginiai šiuo metu visiškai palaikomi „Linux“. Dauguma pakeitimų atsirado 2.6 branduolio šakoje, nors buvo tam tikras palaikymas net 2.2 branduolyje. Linux palaiko ir USB 2.0, ir ankstesnes specifikacijas. Dėl USB karštojo prijungimo pobūdžio, palaikymas paprastai teikiamas per branduolio modulius, kuriuos galima įkelti arba išimti, jei reikia.

lspci komanda leidžia rodyti USB įrenginius:

Root@localhost:~:# lspci | grep -i usb 00:03.0 USB valdiklis: Silicon Integrated Systems USB 1.1 Controller (rev 0f) 00:03.1 USB Controller: Silicon Integrated Systems USB 1.1 Controller (rev 0f) 00:03.3 USB Controller: Silicon Integrated Systems Controller USB 2.0.

Komandos išvestis rodo, kad sistemoje yra 3 USB valdikliai.

Naudodami komandą lsmod galite rodyti įkeltus USB modulius:

Root@localhost:~:# lsmod | egrep "usb|hci|hid|mouse|Modulis" Modulio dydis Naudojamas hid_microsoft 3232 0 usbhid 32992 0 hid 39040 2 hid_microsoft,usbhid ohci_hcd 24332 0 psmouse 24332 0 psmouse 416hc1 416hc0_4s6hc1 CD 34152 0

Rodomi prijungti USB įrenginiai

Šiuo metu prijungtų USB įrenginių suvestinė yra /proc/bus/usb/devices faile. Galite jį parodyti naudodami šią komandą:

Root@localhost:~:# cat /proc/bus/usb/devices T: Bus=03 Lev=00 Prnt=00 Port=00 Cnt=00 Dev#= 1 Spd=12 MxCh= 3 B: Alloc= 0/900 JAV (0 %), #Int= 0, #Iso= 0 D: Ver= 1.10 Cls=09(stebulė) Sub=00 Prot=00 MxPS=64 #Cfgs= 1 P: Tiekėjas=1d6b ProdID=0001 Rev= 2.06 S: Gamintojas = Linux 2.6.29.6 ohci_hcd S: Produktas = OHCI pagrindinio kompiuterio valdiklis S: SerialNumber = 0000:00:03.1 C:* #Ifs= 1 Cfg#= 1 Atr=e0 MxPwr= 0mA Al:* If#= 0 = 0 #EPs = 1 Cls = 09 (stebulė) Sub = 00 Prot = 00 Vairuotojas = koncentratorius E: Ad = 81 (I) Atr = 03 (Tarp.) MxPS = 2 Ivl = 255 ms T: Magistralė = 02 Lev = 00 Prnt = 00 Prievadas = 00 Cnt = 00 Dev # = 1 Spd = 12 MxCh = 3 B: Alloc = 28/900 us (3%), #Int = 2, #Iso = 0 D: Ver = 1,10 Cls = 09( šakotuvas) Sub=00 Prot=00 MxPS=64 #Cfgs= 1 P: Pardavėjas=1d6b ProdID=0001 Rev= 2.06 S: Gamintojas=Linux 2.6.29.6 ohci_hcd S: Produktas=OHCI pagrindinio kompiuterio valdiklis S: SerialNumber0:0=0:0 03.0 C:* #Ifs= 1 Cfg#= 1 Atr=e0 MxPwr= 0mA I:* If#= 0 Alt= 0 #EPs= 1 Cls=09(stebulė) Sub=00 Prot=00 Vairuotojas=stebulė E: skelbimas =81(I) Atr=03(Int.) MxPS= 2 Ivl=255ms T: Magistralė=02 Lev=01 Prnt=01 Prievadas=00 Cnt=01 Dev#= 2 Spd=1.5 MxCh= 0 D: Ver= 2.00 Cls=00(>ifc) Sub=00 Prot=00 MxPS= 8 #Cfgs= 1 P: Tiekėjas=045e ProdID=00db Rev= 1.73 S: Gamintojas=Microsoft S: Produktas=Natural� Ergonominė klaviatūra 4000 C:* #Ifs = 2 Cfg#= 1 Atr=a0 MxPwr=100mA I:* Jei#= 0 Alt= 0 #EPs= 1 Cls=03(HID) Sub=01 Prot=01 Vairuotojas=usbhid E: Ad=81(I) Atr =03(Int.) MxPS= 8 Ivl=10ms I:* If#= 1 Alt= 0 #EPs= 1 Cls=03(HID) Sub=00 Prot=00 Vairuotojas=usbhid E: Ad=82(I) Atr =03 (Int.) MxPS = 8 Ivl = 10 ms T: Magistralė = 01 Lev = 00 Prnt = 00 Prievadas = 00 Cnt = 00 Dev # = 1 Spd = 480 MxCh = 6 B: Alloc = 0/800 us (0 % ), #Int= 0, #Iso= 0 D: Ver= 2.00 Cls=09(hub) Sub=00 Prot=00 MxPS=64 #Cfgs= 1 P: Pardavėjas=1d6b ProdID=0002 Rev= 2.06 S: Gamintojas= Linux 2.6.29.6 ehci_hcd S: Produktas=EHCI Host Controller S: SerialNumber=0000:00:03.3 C:* #Ifs= 1 Cfg#= 1 Atr=e0 MxPwr= 0mA I:* If#= 0 Alt= 0 #EPs = 1 Cls = 09 (stebulė) Sub = 00 Prot = 00 Tvarkyklės = stebulė E: Ad = 81 (I) Atr = 03 (Int.) MxPS = 4 Ivl = 256 ms

Sąraše Spd=480 atitinka USB magistralė 2.0, o Spd=12 – USB 1.1 įrenginiams. Toliau sąraše matosi, kad šiuo metu prie sistemos yra prijungtas 1 USB įrenginys – Microsoft Natural Ergonomic Keyboard 400 (Spd=1.5).

Žinoma, šį tekstą įvedu šia klaviatūra.

USB įrenginių jungčių hierarchiją galima pamatyti naudojant komandą lsusb su parinktimi -t:

Root@localhost:~:# lsusb -t Bus# 3 `-Dev# 1 Pardavėjas 0x1d6b Produktas 0x0001 Bus# 2 `-Dev# 1 Pardavėjas 0x1d6b Produktas 0x0001 `-Kūrėjas# 2 Pardavėjas 0x045e `b Bus 0xev#01d 1 Pardavėjas 0x1d6b produktas 0x0002

Informaciją apie konkretų USB įrenginį galima gauti naudojant šią komandą:

Root@localhost:~:# lsusb -vd 0x045e:0x00db Magistralė 002 Įrenginys 002: ID 045e:00db Microsoft Corp. Natural Ergonomic Keyboard 4000 V1.0 Įrenginio aprašas: bLength 18 bDescriptorType 1 bcdUSB 2.00 bDeviceClass 0 (apibrėžta sąsajos lygiu) bDeviceSubClass 0 bDeviceProtocol 0 bMaxPacketSizedore 80xp4endore Microsoft Corp. idProduct 0x00db Natural Ergonomic Keyboard 4000 V1.0 bcdDevice 1.73 iManufacturer 1 Microsoft iProduct 2 Natural Ergonomic Keyboard 4000 iSerial 0 bNumConfigurations 1 Configuration Descriptor: bLengthTotaly 9 bnthumtersscriptor bConfigurationV 1 Sąsajos aprašas: bLength 9 bDescriptorType 4 bInterfaceNumber 0 bAlternateSetting 0 bNumEndpoints 1 bInterfaceClass 3 Human Interface Device bInterface SubClass 1 Įkrovos sąsajos poklasis bInterfaceProtocol 1 Klaviatūra iInterfaceProtocol 1 Keyboard iInterface ECO01N **IZED 101000 01 22 3c 00 Galinio taško aprašas arba: bLength 7 bDescriptorType 5 b EndpointAddress 3 SąsajaSubClass 0 Nėra subclass bInterfaceProto col 0 Nėra iInterface 0 ** NEATPAŽINTAS: 09 21 11 01 00 01 22 56 00 Galinio taško aprašas: bLength 7 bDescriptorType 5 bEndpointAddress 0x82 EP 2 IN bmAtributai 3 Perdavimo tipas Pertraukimas Sinchronizavimo tipas Nėra Naudojimo tipas0 Duomenys wMaxter0 10 Įrenginio būsena: 0x0000 (maitinama magistrale )

USB įrenginio prijungimas skrendant

Naujose sistemose palaikomas USB įrenginių prijungimas skrydžio metu (karštas prijungimas), o tai reiškia įrenginio prijungimą prie veikiančios sistemos, kuri turi:

  • nustatykite USB įrenginio tipą, suraskite tvarkyklę ir paleiskite ją;
  • susieti vairuotoją su įrenginiu;
  • informuoti kitas posistemes apie USB įrenginį.

Pasinėręs į vieną iš disciplinų (studijuodamas kompiuterių saugos specialybę), dirbau su vienu linksmu projektu, kurio nenorėčiau tiesiog laidoti išoriniame kietajame diske esančio aplanko „Univer“ gilumoje.

Šis projektas vadinamas usbrip ir yra nedidelė atvirojo kodo konsolės programa, skirta „Linux“ ekspertizei, būtent darbui su USB įrenginių jungčių istorija. Programa parašyta gryna Python 3 (naudojant kai kuriuos trečiųjų šalių modulius) ir jai nereikia kitų priklausomybių, išskyrus Python 3.x interpretatorių ir keletą eilučių iš reikalavimai.txt, išspręsta vienoje eilutėje naudojant pip.

Šiame įraše aprašysiu kai kurias šios programinės įrangos galimybes ir paliksiu trumpą vadovą su nuoroda į atsisiuntimo šaltinį.

Iškirpti! (...turiu galvoje Iškirpti!)

Pastaba. Straipsnyje aprašytos funkcijos yra svarbios programos versijai. Už nugaros Naujausia versija Su daugybe naujų gėrybių siūlau nueiti į saugyklą.

Ekrano nuotraukos

Nuimamų USB įrenginių ryšio istorijos gavimas:


Papildomos informacijos apie USB įrenginį radimas pagal modelio identifikatorių (PID):

apibūdinimas

Kaip žinote, operacinės sistemos, pagrįstos GNU/Linux, yra labai jautrios įvairių įvykių registravimui, o USB įrenginių prijungimas/atjungimas nėra išimtis. Kartu su vienu iš UNIX filosofijos „teksto srautų kaip universalių sąsajų“ informaciją apie tokių įvykių artefaktus (skirtingu detalumo laipsniu), priklausomai nuo platinimo, galima rasti viename ar keliuose iš šių tekstinių failų:
  • /var/log/kern.log*;
  • /var/log/syslog*;
  • /var/log/messages*;
  • /var/log/dmesg*;
  • /var/log/daemon.log*.
TEISMO MEDŽIAGAS ĮRODYMAS netgi parodo mums šį paveikslėlį šiuo klausimu (šiek tiek neišsamus, bet nesvarbu):

Savo darbui usbrip randa žurnalo failus, kurie yra universalūs visoms Linux versijoms, pagrįstoms Debian (Ubuntu, Linux Mint ir kt.) ir RPM (CentOS, Fedora, openSUSE ir kt.), būtent: /var/log/syslog* arba /var/log/messages* , analizuoja juos ieškodami reikalinga informacija ir rastus USB įrenginių jungčių pėdsakus paverčia gražiomis plokštelėmis (arba sąrašais – kaip tik nori).

USBrip taip pat gali:

  • sukurti įgaliotų (patikimų) įrenginių sąrašus JSON failų pavidalu;
  • ieškoti „pažeidžiančių įvykių“ pagal patikimų įrenginių sąrašą: įvykiai (USB prijungimas / atjungimas), susiję su USB įrenginiais, kurie nebuvo pažymėti kaip patikimi;
  • Paieška Papildoma informacija apie USB įrenginį pagal jo VID (tiekėjo ID) ir (arba) PID (produkto ID).

Nuoroda

Gaukite galimų modulių sąrašą:

$ python3 usbrip.py -h
Gaukite galimų konkretaus modulio submodulių sąrašą:

$python3 usbrip.py<модуль>-h
Gaukite galimų konkretaus submodulio parinkčių sąrašą:

$python3 usbrip.py<модуль> <подмодуль>-h

Sintaksė

$ python3 usbrip.py reklamjuostė Ekrane rodoma paslaugų reklamjuostė. $ python3 usbrip.py įvykių istorija [-q] [-t | -l] [-e] [-n ĮVYKIŲ SKAIČIUS] [-d DATA [DATE...]] [-c Stulpelis [Stulpelis...]] [-f LOGFILE [LOGFILE...]] Peržiūrėti USB ryšį istorija . $ python3 usbrip.py renginiai gen_auth<ВЫХОДНОЙ_ФАЙЛ.JSON>[-a ŽENKLAS [SIGN...]] [-q] [-e] [-n NUMBER_EVENTS] [-d DATA [DATE...]] [-f LOG_FILE [LOG_FILE...]] Sąrašo sudarymas įgaliotųjų (patikimų) USB įrenginių. $ python3 usbrip.py įvykių pažeidimai<ВХОДНОЙ_ФАЙЛ.JSON>[-a CHARAKTERIS [CHARGET...]] [-q] [-t | -l] [-e] [-n ĮVYKIŲ SKAIČIUS] [-d DATA [DATE...]] [-c COLUMN [COLUMN...]] [-f LOGFILE [LOGFILE...]] Ieškoti " pažeidžiantys įvykiai" " remiantis patikimų įrenginių sąrašu. $ python3 usbrip.py ID paieška [-q] [ --vid VID] [--pid PID] [--offline] Ieškokite papildomos informacijos apie įrenginį pagal jo VID ir (arba) PID identifikatorių duomenų bazėje. $ python3 usbrip.py ids atsisiuntimas [-q] Atnaujinkite (atsisiųskite) vietinę USB įrenginio identifikatorių duomenų bazę.

Galimybės

Parinktys, kurias palaiko „įvykių istorija“, „įvykių gen_auth“, „įvykių pažeidimai“, „ids paieška“, „ids atsisiuntimas“: -q, --quiet, praleiskite reklamjuosčių, informacinių (žaliųjų) pranešimų rodymą ir atlikite vykdymo metu neužduokite klausimų ############################################ ## ###################################### Parinktys, kurias palaiko "įvykių istorija", " įvykiai gen_auth" submodules ", "įvykių pažeidimai": -e, --išorinė paieška tik išimamiems USB įrenginiams (kurie turi atjungimo informaciją) -n ĮVYKIŲ SKAIČIUS, --numeris ĮVYKIŲ SKAIČIUS naujausių įvykių skaičius pagal datą, kuris bus bus rodomas -d DATE [DATE. ..], --date DATE [DATE...] sąrašas datų, pagal kurias įvykiai bus filtruojami ieškant -f LOG_FILE [LOG_FILE...], --file LOG_FILE [LOG_FILE. ..] žurnalo failų sąrašas (jei nenurodyta, įvykių istorijoje bus ieškoma naudojant numatytuosius žurnalo failus: /var/log/syslog* arba /var/log/messages*, priklausomai nuo OS versijos) ##### ######## ########################################## ######## ###################### Parinktys, palaikomos submodulių "Įvykių istorija", "Įvykių pažeidimai": -t, -- lentelė generuoja išvestį lentelės pavidalu (jei terminalo lango dydžio nepakanka norint teisingai atvaizduoti lentelę, išvestis bus automatiškai sugeneruota sąrašo pavidalu; nurodant vėliavėlę -t, išvestis bus generuojama lentelės forma priverstinai) -l, --list generuoja išvestį kaip sąrašą -c COLUMN [COLUMN...], --column COLUMN [COLUMN.. .] sąrašas stulpelių, kurie bus naudojami kuriant lentelę (turi įtakos tik generuojant išvestį lentelės pavidalu); leidžiami raktai: „conn“, „user“, „vid“, „pid“, „prod“, „manufact“, „serial“, „port“, „disconn“. ################################################# ################################## Parinktys, palaikomos submodulių "events gen_auth", "įvykių pažeidimai": - a SIGN [SIGN...], --attribute SIGN [SIGN...] atributų sąrašas, kuris bus naudojamas kuriant įgaliotų įrenginių sąrašą (taip pat ieškant „pažeidžiančių įvykių“, jei submodulis „Įvykių pažeidimai“); leidžiami raktai: „vid“, „pid“, „prod“, „manufact“, „serial“. ################################################# ################################### Parinktys, palaikomos "ids paieškos", "ids atsisiuntimo" submodulių: - -vid VID pardavėjo ID arba USB įrenginio gamintojo ID (paprastai 4 šešioliktainiai skaitmenys) -vid PID produkto ID arba USB įrenginio modelio ID (paprastai 4 šešioliktainiai skaitmenys) - neprisijungus, jei nurodyta, ieškokite papildomos informacijos apie USB įrenginį duomenų bazėje identifikavimo duomenys bus sukurti prieš tai neatnaujinus (duomenų bazės)

Naudojimo pavyzdžiai

Rodyti visų USB įrenginių prisijungimo istoriją, praleidžiant reklamjuostę, informacinius (žalius) pranešimus, taip pat neužduodami klausimų vykdymo metu (-q, - gana), generuojant išvestį sąrašo pavidalu (-l, -- sąrašą), įskaitant 100 paskutinių rastų įvykių (-n ĮVYKIŲ SKAIČIUS, --numeris ĮVYKIŲ SKAIČIUS):
$ python3 usbrip.py įvykių istorija -ql -n 100
Rodyti nuimamų USB įrenginių (-e, --external) prisijungimo istoriją, generuojant išvestį lentelės pavidalu su laukais (stulpeliais) „Connected“, „VID“, „PID“, „Disconnected“ ir „Serial Number“ ” (-c COLUMN [COLUMN...], --column COLUMN [COLUMN...]), filtruojant paiešką pagal datas (-d DATE [DATE...], --date DATE [DATE...] ), paimant informaciją iš išorinių žurnalo failų (-f LOG_FILE [LOG_FILE...], --file LOG_FILE [LOG_FILE...]):
$ python3 usbrip.py įvykių istorija -et -c conn vid pid disconn serial -d "Gruodžio 9 d." "Gruodžio 10 d." -f /var/log/syslog.1 /var/log/syslog.2.gz
Sukurkite visų USB įrenginių prisijungimo istorijos lentelę ir nukreipkite išvestį į failą tolesnei analizei. Tuo atveju, jei išvesties srautas nėra standartinis stdout (pvz., „|“ arba ">), specialiųjų išvesties duomenyse nebus. simbolių, atsakingų už šrifto spalvą terminale, todėl tekstinis failas nebus nukrautas neįskaitomais simboliais. Taip pat reikia pažymėti, kad usbrip naudoja kai kurias UNICODE konstantas, todėl būtų gera idėja nedelsiant konvertuoti kodavimą sukurtas failas UTF-8, kad jie būtų rodomi teisingai (pavyzdžiui, naudojant encov), taip pat naudokite simbolius nauja linija„Windows“ stiliumi, kad būtų lengviau perkelti (pavyzdžiui, naudojant awk):
$ python3 usbrip.py istorijos įvykių -t | awk "( sub("$", "\r"); print )" > usbrip.txt && enconv -x UTF8 usbrip.txt
Pastaba: atsikratyti specialių už spalvą atsakingi simboliai taip pat galimi, jei išvestis jau išsiųsta į stdout. Norėdami tai padaryti, turite nukopijuoti gautus duomenis į naują failą usbrip.txt ir pridėti kitą awk instrukciją:
$ awk "( sub("$", "\r"); gsub("\\x1B\\[*[ -/]*[@-~]", ""); print )" usbrip.txt && enconv -x UTF8 usbrip.txt
Sukurkite patikimų įrenginių sąrašą JSON failo pavidalu (trusted/auth.json), kuriame yra pirmojo laukeliai „VID“ ir „PID“. trys rugsėjo 26 d. prijungti įrenginiai:
$ python3 usbrip.py įvykiai gen_auth trusted/auth.json -a vid pid -n 3 -d "Rugsėjo 26 d."
Raskite „nusikaltėlio įvykius“ tarp išimamų USB įrenginių jungčių istorijos pagal patikimų įrenginių sąrašą (trusted/auth.json) naudodami lauką „PID“ ir sugeneruokite išvestį lentelės pavidalu su „Connected“, Laukai „VID“ ir „PID“:
$ python3 usbrip.py įvykių pažeidimai trusted/auth.json -a pid -et -c conn vid pid
Raskite papildomos informacijos apie USB įrenginį pagal jo VID ir PID:
$ python3 usbrip.py ID paieška --vid 0781 --pid 5580
Atsisiųskite / atnaujinkite USB įrenginio ID duomenų bazę (šaltinis):
$ python3 usbrip.py ID atsisiuntimas

Nuorodos ir postscript

Priemonę galite gauti iš „Github“, išvardytos visos paleidimo ir tinkamo veikimo priklausomybės reikalavimai.txt.

Ačiū, už dėmesį!

P.S. taip, reklamjuostės stilius ir informacinius pranešimusįkvėptas projekto sqlmap (*^.^*)

UPD 2018-06-13. Buvo atliktas tikros (?) bylos, susijusios su mano įmone, tyrimas iš asmens, turinčio Codeby (esu šokiruotas, tiesą pasakius).

Pasinėręs į vieną iš disciplinų (studijuodamas Compeza specialybę), dirbau prie vieno įdomaus projekto, kurio nenorėčiau tiesiog laidoti aplanko „Univer“ gilumoje ant išorinio kietojo įrenginio. vairuoti.

Šis projektas vadinamas

usbrip

ir yra nedidelė atvirojo kodo konsolės programa, skirta „Linux“ ekspertizei, būtent darbui su USB įrenginių jungčių istorija. Programa parašyta gryna Python 3 (naudojant kai kuriuos trečiųjų šalių modulius) ir jai nereikia kitų priklausomybių, išskyrus Python 3.x interpretatorių ir kelias eilutes iš

reikalavimai.txt

Išspręsta vienoje eilutėje naudojant pip3.

Šiame įraše aprašysiu kai kurias šios programinės įrangos galimybes ir paliksiu trumpą vadovą su nuoroda į atsisiuntimo šaltinį.

$ python3 usbrip.py ID atsisiuntimas

Nuorodos ir postscript

Priemonę galite gauti iš

GitHub

Visos paleidimo ir tinkamo veikimo priklausomybės yra išvardytos

reikalavimai.txt

Ačiū, už dėmesį!

P.S.

taip, banerio ir informacinių pranešimų stilius įkvėptas projekto

sqlmap

Prie Linux kompiuterio prijungėte USB atmintinę arba klaviatūrą arba pelę. Bet nieko nevyksta.

Kas nutiko? Kodėl jūsų „Linux“ kompiuteris neaptinka įrenginio? Ar tai Linux, ar jūsų USB įrenginys nustojo veikti?

USB neveikia Ubuntu?

Diskiniai įrenginiai, atminties kortelių skaitytuvai, telefonai, medijos leistuvai ir periferiniai įrenginiai multimedija...visi jie naudingi, bet jei kyla problemų dėl USB prievado ar sistemos tvarkyklių, jos neveiks. Tai gali būti ypač varginanti, jei naudojate „Bluetooth“ klaviatūrą arba pelę (su USB raktu), nes tai reiškia, kad reikia ieškoti laidinio USB alternatyvų.

Tačiau tai gali būti ne miręs uostas. Naudojamas USB įrenginys gali būti sugedęs ir jo negalima aptikti.

Išspręsti USB problemas gali būti sudėtinga, tačiau šių problemų neįmanoma diagnozuoti ir atlikti reikiamus pataisymus.

Yra penki žingsniai, kaip išspręsti USB problemas Linux sistemoje:

  1. Įsitikinkite, kad aptiktas USB prievadas
  2. Uoste atlikti reikiamus remonto darbus
  3. Pataisykite arba taisykite USB įrenginius
  4. Perkraukite Operacinė sistema Linux
  5. Patvirtinkite įrenginio tvarkyklių prieinamumą

Pažvelkime į kiekvieną iš jų ir sužinokime, kaip dirbti su sudėtingais USB įrenginiais Linux sistemoje.

1. Ar jūsų įrenginį aptiko „Linux“?

Pirmas dalykas, kurį reikia patikrinti įdėjus USB įrenginį į „Linux“ kompiuterį, yra tai, ar jis aptiktas. USB įrenginio aptikimas paprastai nėra žodinis ar girdimas („Linux Deepin“ taip nėra), kaip „Windows“ ar „MacOS“, o tai reiškia, kad dažnai turite patikrinti, ar įrenginį užfiksavo operacinė sistema.

Laimei, tai paprasta.

Pirmiausia atjunkite USB įrenginius, kurių prašote. Tada atidarykite terminalo langą ir įveskite komandą » list USB:

Komanda dmesg pateiks jūsų sistemos prijungtų USB įrenginių sąrašą. Jame taip pat bus ne USB aparatinė įranga ir, deja, pateikiama daug informacijos. Norėdami to išvengti, galite pabandyti:

Tai atrodo kaip dmesg ir lsusb komandų kryžminimas, kuriame pateikiama prijungtos USB aparatinės įrangos sąrašas su pakankamai informacijos joms identifikuoti.

Taigi, ar prijungtas USB yra nurodytas čia? Jei ne, prievadas gali būti pažeistas arba iškilo įrenginio problema. Taip pat įrenginys gali būti nesuderinamas su Linux.

2. Kaip patikrinti USB prievadą

Jei USB įrenginys nerodomas, tai gali būti dėl USB prievado problemos.

Geriausias būdas tai patikrinti – tiesiog naudoti kitą kompiuterio USB prievadą. Jei dabar aptinkama USB aparatinė įranga, žinote, kad turite problemų dėl vieno iš USB prievadų.

Jei kito USB prievado nėra, turite išbandyti USB įrenginį kitame kompiuteryje arba nešiojamajame kompiuteryje. Tačiau tai gali būti ne idealu, nes galite naudoti „Windows“ arba „MacOS“ kompiuterį ir tokiu atveju kai kurių USB įrenginių negalima naudoti „Linux“. Taigi bus sunku nustatyti, kas tiksliai sukelia problemą, nesvarbu, ar tai USB įrenginys, ar USB prievadas.

Siekdami geriausių rezultatų šalindami USB įrenginių triktis, kai tik įmanoma, laikykitės su Linux suderinamos aparatinės įrangos.

3. Sugadintos USB aparatinės įrangos taisymas

Jei USB aparatinė įranga yra sugedusi, turite dvi galimybes: pataisyti arba grąžinti.

Pataisymas paprastai apima patikrinimą USB jungtis, taip pat įrenginius, kurie šiuo metu neveikia. Pataisymai beveik visada bus sutelkti į aplinką USB kabelis ir prievadą kompiuteryje. USB kabelius paprastai galima pakeisti, tačiau USB prievadus galima pataisyti.

Fizinis patikrinimas USB įranga- gera idėja. Kabeliai turi būti tvirti, be jokių pertrūkių, o metalinė dalis turi būti tvirtai pritvirtinta.

Tuo tarpu USB prievadai turėtų būti išbandyti, kai kompiuteris yra išjungtas ir atjungtas. Patikrinkite, ar prievadai yra saugūs, svyruoja USB prievadai yra įrangos nusidėvėjimo ženklas.

Jei USB prievadas atsilaisvins, galite jį lituoti atgal į vietą. Žinoma, jau turėtumėte žinoti, kaip lituoti, niekada nemėginkite dirbti „pasidaryk pats“ be ankstesnės patirties.

Taip pat patikrinkite, ar USB prievaduose nėra dulkių ir nešvarumų, ypač kompiuterio gale, kur reguliariai kaupiasi dulkės. Dulkės yra kompiuterio priešas, todėl verta savo sistemą laikyti aplinkoje be dulkių. Dulkės gali patekti į jūsų kompiuterį per USB prievadus. Skirkite laiko, kad šie prievadai būtų švarūs. Dulkėms ir nešvarumams išsklaidyti naudokite suslėgtą orą.

Ar galite grąžinti USB įrenginį? Jei tai nauja, tikėtina. Problema ta, kad jei nėra aiškiai pažymėta, kad veikia Linux, parduotuvė greičiausiai nepriims grąžinimų.

4. Iš naujo paleiskite „Linux“, kad pataisytumėte USB prievadą

Kai kuriais atvejais, pavyzdžiui, jei naudojate nešiojamąjį kompiuterį, maitinimo problemos gali turėti įtakos jo gebėjimui aptikti USB įrenginius. Automatinio sustabdymo parinktis skirta sumažinti „Linux“ nešiojamųjų kompiuterių energijos sąnaudas, tačiau tai gali būti priešinga.

Taigi ką tu gali padaryti?

Pirmiausia patikrinkite, ar problemą sukelia automatinis sustabdymas. Tai galite padaryti iš naujo paleisdami kompiuterį. Jei USB įrenginys veikia, tas USB prievadas gauna maitinimą.

Kitas žingsnis – užtikrinti, kad tai nepasikartotų. Kiti triukai komandinė eilutė yra skirtos Ubuntu 18.10, todėl patikrinkite teisingą pageidaujamo Linux platinimo procedūrą.

Atidarykite terminalo langą ir įveskite:

cat /sys/module/usbcore/parameters/autosuspend

Paziurek cia:

GRUB_CMDLINE_LINUX_DEFAULT="tylus purslas"

GRUB_CMDLINE_LINUX_DEFAULT = "tylus purslas"

USB palaikymas į branduolį įtrauktas nuo 2.2.7 versijos ir galime teigti, kad ši technologija jau išbandyta ir jungiant tokius įrenginius problemų neturėtų kilti. Jums tereikia prijungti fotoaparatą, „flash drive“, spausdintuvą ar bet kurį kitą įrenginį, ir jis bus automatiškai atpažintas. Pavyzdžiui, ar spausdintuvas veiks, priklauso nuo tvarkyklių prieinamumo.

Kad būtų galima įvertinti situaciją, pažiūrėkime, kaip įdiegtas USB palaikymas ir kur ieškoti informacijos apie prijungtus įrenginius, nors viskas, kas pasakyta apie USB, iš dalies tinka. USB palaikymo įdiegimas Linux sistemoje Linux USB Projektas (www.linux-usb.org) yra ta vieta, kur turėtumėte ieškoti informacijos. Šiuolaikiniuose kompiuteriuose galite rasti trijų tipų valdiklius, kurie skiriasi sąveikos su įrenginiais sąsaja. Tai yra OHCI (Open Host Controller Interface), UHCI (Universal Host Controller Interface) ir EHCI (Enhanced Host Controller Interface). Pirmieji du palaiko USB 1.1 versiją, o paskutinis 2.0 suteikia perdavimo greitį iki 480 Mbit/s. UHCI valdikliai yra šiek tiek paprastesni ir pigesni, tačiau reikalauja sudėtingų tvarkyklių ir apkrauna daugiau procesorius. Sužinoti savo valdiklio tipą vis dar labai paprasta:

$lspci -v
00:02.0 USB valdiklis: nVidia Corporation MCP55 USB valdiklis (rev a1) (prog-if 10)

Vėliavos: magistralinis magistralė, 66MHz, greitas vystymas, delsa 0, IRQ 11
Fe02f000 atmintis (32 bitų, negalima iš anksto gauti)
Galimybės:

00:02.1 USB valdiklis: nVidia Corporation MCP55 USB valdiklis (rev a2) (prog-if 20)
Posistemis: Biostar Microtech Int'l Corp Nežinomas įrenginys 3405
Vėliavos: magistralės pagrindinis, 66MHz, greitas vystymas, delsa 0, IRQ 5
Fe02e000 atmintis (32 bitų, iš anksto negalima gauti)
Galimybės:

Kaip matote, turiu abiejų tipų valdiklius: OHCI ir EHCI. Jei naudojate savarankiškai surinktą branduolį, įjunkite reikalingas vairuotojas elemente „USB Host Controller Drivers“. Neapkraunu jūsų visomis parinktimis; visus branduolyje esančius parametrus galite peržiūrėti įvedę „cat /usr/src/linux/.config | grep -i usb".

Taip pat turėtumėte atsiminti, kad darbas su USB atliekamas naudojant SCSI emuliaciją, todėl reikia suaktyvinti parametrus, susijusius su SCSI palaikymu.
Norint tiesiogiai dirbti su USB įrenginiais, virtualioje failų sistemoje /proc sukuriamas katalogas /proc/bus/usb, kuris yra prijungtas per /etc/fstab:

nėra /proc/bus/usb usbfs noauto 0 0
Jei faile tokios eilutės nėra, tai gali reikšti, kad kūrėjai išgelbėjo jus nuo nereikalingų minčių ir į paleisties scenarijus montuoja usbfs. Kuriame konkrečiame scenarijuje tai daroma, sužinosite įvesdami „ sudo grep -iR "usbfs" /etc/*“. Pavyzdžiui, KUbuntu scenarijus yra atsakingas už USB montavimą /etc/init.d/mountdevsubfs.sh. Galite rankiniu būdu prijungti USB failų sistemą prie /proc/bus/usb taip:

$ sudo mount -t usbdevfs none /proc/bus/usb

Po to komanda " kalnas | grep usbfs" turėtų parodyti eilutės buvimą:

procbususb /proc/bus/usb tipo usbfs (rw)

Ir išvada" lsmod» įkelti moduliai usbcore, vairuotojo modulis ohci_hcd, ehci_hcd, uhci_hcs, taip pat modulis, atitinkantis prijungto įrenginio tvarkyklę, pvz scanner.o, printer.o, usb_storage.
Informacija apie USB jungtis prietaisus galima įsigyti iš /var/log/dmesg ir tiesiai iš /proc. Jei katalogas /proc/bus/usb tuščias tai reiškia, kad virtualus failas USB sistema nesumontuotas. Kataloge turėtų būti keli failai pavadinimais, tokiais kaip 001, 002, atsižvelgiant į valdiklių skaičių, ir įrenginių failas, kuris „žino“ apie visus įrenginius:

$ cat /proc/bus/usb/devices

T: magistralė = 02 Lev = 00 Prnt = 00 Prievadas = 00 Cnt = 00 Dev # = 1 Spd = 480 MxCh = 10
B: Alloc = 0/800 us (0%), #Int = 0, #Iso = 0
D: Ver = 2,00 Cls = 09 (stebulė) Sub = 00 Prot = 01 MxPS = 64 #Cfgs = 1

S: Gamintojas = Linux 2.6.20-15-generic ehci_hcd
S: Produktas = EHCI pagrindinio kompiuterio valdiklis
S: SerialNumber=0000:00:02.1


E: Ad = 81 (I) Atr = 03 (tarp.) MxPS = 4 Ivl = 256 ms

T: magistralė = 01 Lev = 00 Prnt = 00 Prievadas = 00 Cnt = 00 Dev # = 1 Spd = 12 MxCh = 10
B: Alloc = 0/900 us (0%), #Int = 0, #Iso = 0
D: Ver = 1,10 Cls = 09 (stebulė) Sub = 00 Prot = 00 MxPS = 64 #Cfgs = 1
P: Pardavėjas=0000 ProdID=0000 Rev= 2.06
S: Gamintojas = Linux 2.6.20-15-generic ohci_hcd
S: Produktas = OHCI pagrindinio kompiuterio valdiklis
S: SerialNumber=0000:00:02.0
C:* #Jei = 1 Cfg# = 1 Atr = e0 MxPwr = 0 mA
I: Jei # = 0 Alt = 0 #EPs = 1 Cls = 09 (koncentratorius) Sub = 00 Prot = 00 Vairuotojas = koncentratorius
E: Ad = 81 (I) Atr = 03 (tarp.) MxPS = 2 Ivl = 255 ms

T: magistralė = 01 Lev = 01 Prnt = 01 Prievadas = 07 Cnt = 01 Dev # = 2 Spd = 480 MxCh = 0
D: Ver= 2,00 Cls=00(>ifc) Sub=00 Prot=00 MxPS=64 #Cfgs=1
P: Tiekėjas = 1307 ProdID = 0163 Rev = 1,00
S: Gamintojas=????????y
S: Produktas = USB talpiosios atminties įrenginys
S: SerialNumber=9fe1ad57805553
C:* #Jei = 1 Cfg# = 1 Atr = 80 MxPwr = 80 mA
I: Jei # = 0 Alt = 0 #EPs = 3 Cls = 08 (stor.) Sub = 06 Prot = 50 Tvarkyklės = USB atmintis
E: Ad=01(O) Atr=02(Bulk) MxPS= 512 Ivl=125us
E: Ad = 82 (I) Atr = 02 (masinis) MxPS = 512 Ivl = 0 ms
E: Ad=83(I) Atr=03(Int.) MxPS=64 Ivl=16ms

Nesunku iššifruoti išvestį, ieškokite informacijos dokumentacijoje ( /usr/src//Documentation/usb/proc_usb_info.txt). Leiskite man pasakyti, kad laiškas T nurodo topologiją, Autobusas Ir Lygis parodyti prie kurios magistralės prijungtas įrenginys ir lygį, Spd rodo greitį, MxCh- kiek kitų įrenginių galima prijungti prie jo, Vairuotojas- vairuotojas. Pavyzdžiui, Driver=hub rodo, kad tai yra šakotuvas, o Driver=usb-storage yra USB įrenginys, skirtas informacijai saugoti.
KUbuntu saugykloje galite rasti keletą paslaugų, kurios padės suprasti USB. Taigi, naudodami lsusb gausite dar daugiau informacijos apie USB įrenginius, o jei jums nepatinka konsolė, naudokite usbview.

Tai iš esmės viskas, ką norėjau pasakyti apie karštų įrenginių prijungimą prie kompiuterio su „Linux“, tikiuosi, kad nuo šiandien su tuo nebeturėsite problemų.



 


Skaityti:



Geriausių belaidžių ausinių įvertinimas

Geriausių belaidžių ausinių įvertinimas

Ar galima nebrangiai įsigyti universalių ausų? 3000 rublių – ar už tokius pinigus galima nusipirkti kokybiškų ausinių? Kaip paaiškėjo, taip. Ir kalba...

Pagrindinė mobiliojo įrenginio kamera dažniausiai yra užpakalinėje korpuso dalyje ir naudojama fotografuoti bei filmuoti

Pagrindinė mobiliojo įrenginio kamera dažniausiai yra užpakalinėje korpuso dalyje ir naudojama fotografuoti bei filmuoti

Atnaujinta planšetės versija su patobulintomis charakteristikomis ir dideliu autonomiškumu.Acer išmanieji telefonai retai lankomi...

Kaip persijungti į kitą operatorių išsaugant savo numerį

Kaip persijungti į kitą operatorių išsaugant savo numerį

Įstatymas dėl telefono numerio išsaugojimo, kai abonentas pereina prie kito mobiliojo ryšio operatoriaus, Rusijoje įsigaliojo gruodžio 1 d. Tačiau paaiškėjo, kad...

phableto apžvalga, brangi, bet labai kompetentinga

phableto apžvalga, brangi, bet labai kompetentinga

Apžvalga apie phablet, brangus, bet labai kompetentingas 2015-03-20 Esu vienintelis batsiuvys pasaulyje be batų, išmaniųjų telefonų apžvalgininkas be savo išmaniojo telefono....

tiekimo vaizdas RSS