2012-04-03 19 views
9

Wie bestimmen Sie, welche Art von Medien an das System angeschlossen wurde?Wie kann ich feststellen, ob ein angeschlossenes USB-Gerät ein USB-Flash-Laufwerk ist?

Ich habe Ubuntu, und wenn ich eine SD-Karte einlegte, merkt es, dass es tatsächlich eine SD-Karte ist. Gleiches gilt für USB-Sticks.

Aber wie kann ich feststellen, auf niedriger Ebene, wenn ein neues Gerät eingefügt wird, welche Art von Typ ist es?

Es scheint überhaupt keine Informationen dazu zu geben.

edit: nur um vollständiger zu sein: Ich sagte, es ist eine Linux-Umgebung, aber eigentlich ist es Android in einer Embedded-Umgebung. Ich habe es Linux getaggt, weil ich tatsächlich versuche, von der Befehlszeile zu überprüfen.

Der udevadm Befehl ist nicht verfügbar, und lsusb -vv zeigt:

Bus 001 Device 001: ID 1d6b:0002 
Bus 001 Device 002: ID 0424:2640 
Bus 001 Device 003: ID 0424:4040 
Bus 002 Device 001: ID 1d6b:0001 

, die sehr wenig Informationen ist.

+0

Was meinst du mit "welcher Art" genau? welcher Medientyp? (z. B. CD, DVD, Festplatte, etc) – Hasturkun

+0

gehört dies zu Serverfault oder Superuser – KurzedMetal

+0

ja, mit Typ I meine ich genau CD, DVD, Festplatte usw. Ich muss wissen ob der Benutzer einen USB Stick eingesteckt hat. – Boy

Antwort

9

Der Befehl lsusb listet die im System registrierten USB-Geräte auf. Versuchen Sie lsusb -vv für detailliertere Informationen. Sie können das Flag -s als Ziel für ein bestimmtes Gerät verwenden.

UPDATE: Es hängt von den Berechtigungen Ihres Kontos ab, einige Details erfordern höhere Privilegien. Zum Beispiel hier ist der Ausgang für meine Maus:

Bus 003 Device 003: ID 04f3:0230 Elan Microelectronics Corp. 
Device Descriptor: 
    bLength    18 
    bDescriptorType   1 
    bcdUSB    1.10 
    bDeviceClass   0 (Defined at Interface level) 
    bDeviceSubClass   0 
    bDeviceProtocol   0 
    bMaxPacketSize0   8 
    idVendor   0x04f3 Elan Microelectronics Corp. 
    idProduct   0x0230 
    bcdDevice   24.58 
    iManufacturer   0 
    iProduct    2 USB+PS/2 Optical Mouse 
    iSerial     0 
    bNumConfigurations  1 
    Configuration Descriptor: 
    bLength     9 
    bDescriptorType   2 
    wTotalLength   34 
    bNumInterfaces   1 
    bConfigurationValue  1 
    iConfiguration   0 
    bmAttributes   0xa0 
     (Bus Powered) 
     Remote Wakeup 
    MaxPower    100mA 
    Interface Descriptor: 
     bLength     9 
     bDescriptorType   4 
     bInterfaceNumber  0 
     bAlternateSetting  0 
     bNumEndpoints   1 
     bInterfaceClass   3 Human Interface Device 
     bInterfaceSubClass  1 Boot Interface Subclass 
     bInterfaceProtocol  2 Mouse 
     iInterface    0 
     HID Device Descriptor: 
      bLength     9 
      bDescriptorType  33 
      bcdHID    1.11 
      bCountryCode   0 Not supported 
      bNumDescriptors   1 
      bDescriptorType  34 Report 
      wDescriptorLength  52 
     Report Descriptors: 
      ** UNAVAILABLE ** 
     Endpoint Descriptor: 
     bLength     7 
     bDescriptorType   5 
     bEndpointAddress  0x81 EP 1 IN 
     bmAttributes   3 
      Transfer Type   Interrupt 
      Synch Type    None 
      Usage Type    Data 
     wMaxPacketSize  0x0004 1x 4 bytes 
     bInterval    10 
Device Status:  0x0000 
4

Es kann sinnvoll sein, einen Befehl auszuführen:

$ udevadm info -a -p $(udevadm info -q path -n /dev/sdX) 

Die Ausgabe sieht mögen folgt:

[...] 
    looking at parent device '/devices/pci0000:00/0000:00:1a.0/usb1/1-1/1-1.5': 
    KERNELS=="1-1.5" 
    SUBSYSTEMS=="usb" 
    DRIVERS=="usb" 
    ATTRS{configuration}=="" 
    ATTRS{bNumInterfaces}==" 1" 
    ATTRS{bConfigurationValue}=="1" 
    ATTRS{bmAttributes}=="80" 
    ATTRS{bMaxPower}=="200mA" 
    ATTRS{urbnum}=="6519" 
    ATTRS{idVendor}=="13fe" 
    ATTRS{idProduct}=="1d00" 
    ATTRS{bcdDevice}=="0100" 
    ATTRS{bDeviceClass}=="00" 
    ATTRS{bDeviceSubClass}=="00" 
    ATTRS{bDeviceProtocol}=="00" 
    ATTRS{bNumConfigurations}=="1" 
    ATTRS{bMaxPacketSize0}=="64" 
    ATTRS{speed}=="480" 
    ATTRS{busnum}=="1" 
    ATTRS{devnum}=="3" 
    ATTRS{devpath}=="1.5" 
    ATTRS{version}==" 2.00" 
    ATTRS{maxchild}=="0" 
    ATTRS{quirks}=="0x0" 
    ATTRS{avoid_reset_quirk}=="0" 
    ATTRS{authorized}=="1" 
    ATTRS{manufacturer}=="Kingston" 
    ATTRS{product}=="DataTraveler 2.0" 
    ATTRS{serial}=="5B7A08A1010F" 
[...] 

Sie können sehen, einige ATTRS, die das Gerät beschreibt.

+1

Aber woher wissen Sie, das ist ein USB-Stick und keine SD-Karte? – Boy

-2

, wie Sie feststellen, ob USB-Gerät ein USB-Stick ist

SCNR. USB-Geräte werben normalerweise nicht für ihre Form. Denken Sie an:

  • Stick-basierte CD-ROM-Geräte gibt - in der Regel in Form eines mobilen Verbindungen Gerät seine eigene Windows-Treiber für die drahtlose Tastatur/Maus/HIDs/etc
  • Sticks zu versenden, oder für Audio-Buchsen
  • das Fett MP3-Player, der alle anderen USB-Anschlüsse in der Nähe blockiert
+3

sie sind eindeutig auf der Suche nach einem Flash-Laufwerk (die oft als Sticks bezeichnet werden) und nicht das physikalische externe Gehäuse. –