如果您问“我如何判断 /dev/ttyUSB0 是 huawei dongle 还是 zigbee”,那么您可以对每个设备执行以下操作:
udevadm info --name /dev/ttyUSB0 --query property --export
例如,我有一个 ftdi 串口,命令的输出是:
DEVLINKS='/dev/serial/by-id/usb-FTDI_USB__-__Serial-if00-port0 /dev/serial/by-path/platform-bcm2708_usb-usb-0:1.2:1.0-port0'
DEVNAME='/dev/ttyUSB0'
DEVPATH='/devices/platform/bcm2708_usb/usb1/1-1/1-1.2/1-1.2:1.0/ttyUSB0/tty/ttyUSB0'
ID_BUS='usb'
ID_MODEL='USB__-__Serial'
ID_MODEL_ENC='USB\x20\x3c-\x3e\x20Serial'
ID_MODEL_FROM_DATABASE='FT232 USB-Serial (UART) IC'
ID_MODEL_ID='6001'
ID_PATH='platform-bcm2708_usb-usb-0:1.2:1.0'
ID_PATH_TAG='platform-bcm2708_usb-usb-0_1_2_1_0'
ID_REVISION='0400'
ID_SERIAL='FTDI_USB__-__Serial'
ID_TYPE='generic'
ID_USB_DRIVER='ftdi_sio'
ID_USB_INTERFACES=':ffffff:'
ID_USB_INTERFACE_NUM='00'
ID_VENDOR='FTDI'
ID_VENDOR_ENC='FTDI'
ID_VENDOR_FROM_DATABASE='Future Technology Devices International, Ltd'
ID_VENDOR_ID='0403'
MAJOR='188'
MINOR='0'
SUBSYSTEM='tty'
UDEV_LOG='3'
USEC_INITIALIZED='2247071814106'
您的两个设备的输出应该有足够的差异,以便能够决定哪个是哪个,例如在这种情况下是 FTDI 的 ID_VENDOR。 0403 和 6001 的 ID_VENDOR_ID 和 ID_MODEL_ID 对应的是你可以看到的:
$ lsusb
...
Bus 001 Device 006: ID 0403:6001 Future Technology Devices International, Ltd FT232 USB-Serial (UART) IC
如果您的设备可以通过 ID_SERIAL 进行区分,您可以在 /dev/serial/by-id/ 中找到它们作为相应 ttyUSB* 的符号链接,例如我的 ftdi:
/dev/serial/by-id/usb-FTDI_USB__-__Serial-if00-port0 -> ../../ttyUSB0
如果您每次都将设备插入同一个 USB 端口,您可以在/dev/serial/by-path/ 下找到相应的 ttyUSB 作为符号链接,例如:
/dev/serial/by-path/platform-bcm2708_usb-usb-0:1.2:1.0-port0 -> ../../ttyUSB0