2012-04-03 8 views
9

Как вы определяете, какие носители были подключены к системе?Как определить, является ли подключенное устройство USB USB-накопителем?

У меня есть Ubuntu, и когда я вставил SD-карту, он замечает, что это действительно SD-карта. То же самое касается USB-накопителей.

Но как я могу определить на низком уровне, когда вставлено новое устройство, какой тип он есть?

По всей видимости, информации об этом нет.

Редактировать: просто чтобы быть более полным: я сказал, что это среда Linux, но на самом деле это Android в среде Embedded. Я отметил его Linux, потому что я действительно пытаюсь проверить из командной строки.

Команда udevadm не доступна, и lsusb -vv показывает:

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 

что очень мало информации.

+0

Что вы подразумеваете под «какой тип» в точности? какой тип медиа? (т. е. CD, DVD, жесткий диск и т. д.) – Hasturkun

+0

это принадлежит Serverfault или суперпользователю – KurzedMetal

+0

да, с типом I точно означает CD, DVD, жесткий диск и т. д. Мне нужно знать, вставил ли пользователь USB-накопитель. – Boy

ответ

9

Команда lsusb перечисляет устройства USB, зарегистрированные в системе. Для получения более подробной информации попробуйте lsusb -vv. Вы можете использовать флаг -s для целевого устройства.

UPDATE: Это зависит от разрешений вашей учетной записи, некоторые детали требуют более высоких привилегий. Например, вот выход для моей мыши:

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

Это может быть полезно, чтобы запустить такую ​​команду:

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

Выходной сигнал может, как выглядит следующим образом:

[...] 
    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" 
[...] 

Вы можете увидеть некоторые ATTRS, которые описывают устройство.

+1

Но откуда вы знаете, что это USB-накопитель, а не SD-карта? – Boy

-2

как определить, если устройство USB является USB палку

SCNR. Устройства USB обычно не рекламируют свою форму. Подумайте:

  • рукояти на основе CD-ROM устройств там - как правило, в виде мобильного соединения устройства отгружать свои собственные драйверы окна
  • палочки для беспроводной клавиатуры/мыши/HIDs/и т.д., или для аудиоразъемов
  • этот толстый MP3-плеер, который блокирует все остальные порты USB поблизости
+3

они явно ищут флэш-накопитель (который часто называют палочками), а не физический внешний корпус. –

Смежные вопросы