11

システムに接続されているメディアの種類をどのように判断しますか?

私はUbuntuを持っていますが、SDカードを挿入すると、実際にはSDカードであることがわかります。USBスティックについても同じことが言えます。

しかし、新しいデバイスが挿入されたときに、それがどのようなタイプであるかを低レベルでどのように判断できますか?

これに関する情報はまったくないようです。

編集:より完全にするために:私はそれがLinux環境であると言いました、しかし実際にはそれは組み込み環境のAndroidです。私は実際にコマンドラインからチェックしようとしているので、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

これはほとんど情報ではありません。

4

3 に答える 3

9

このlsusbコマンドは、システムに登録されているUSBデバイスを一覧表示します。lsusb -vvより詳細な情報をお試しください。-sフラグを使用して、特定のデバイスをターゲットにすることができます。

更新:それはあなたのアカウントの許可に依存します、いくつかの詳細はより高い特権を必要とします。たとえば、私のマウスの出力は次のとおりです。

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
于 2012-04-03T12:25:15.787 に答える
5

このようなコマンドを実行すると便利な場合があります。

$ 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あなたはデバイスを説明するいくつかを見ることができます。

于 2012-04-03T13:04:13.227 に答える
-2

USBデバイスがUSBスティックであるかどうかを判断する方法

SCNR。USBデバイスは通常、その形状を宣伝しません。のことを考える:

  • スティックベースのCDROMデバイス—通常は独自のWindowsドライバーを出荷するためのモバイル接続デバイスの形式
  • ワイヤレスキーボード/マウス/HIDなど、またはオーディオジャック用のスティック
  • 近くにある他のすべてのUSBポートをブロックするファットMP3プレーヤー
于 2012-04-03T14:36:35.740 に答える