![](/img/trans.png)
[英]how to determine USB storage (USB flash drive) 'device path' in C under Linux
[英]How do I determine if a connected USB device is a USB flash drive?
你如何確定哪種媒體附加到系統?
我有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
這是非常少的信息。
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
運行這樣的命令可能很有用:
$ 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
。
如何確定USB設備是否是USB記憶棒
SCNR。 USB設備通常不會宣傳其形狀。 考慮到:
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.