无法找到SEGGER J-Link PLUS对应的USB串口设备(/dev/tty*)的排查求助
无法找到SEGGER J-Link PLUS对应的USB串口设备(/dev/tty*)的排查求助
我现在遇到个棘手的问题:我想找到通过USB连接到电脑的SEGGER J-Link PLUS调试器,打开它对应的串口端口,但在/dev/tty*目录下完全找不到这个设备的影子,想请大家帮忙排查下原因。
下面是我已经做的排查步骤和收集到的信息:
1. 用lsusb确认设备已被识别
运行lsusb后,能看到目标设备的条目:
Bus 006 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub Bus 005 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub Bus 004 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub Bus 003 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub Bus 001 Device 007: ID 0557:2419 ATEN International Co., Ltd Virtual mouse/keyboard device Bus 001 Device 006: ID 0557:7000 ATEN International Co., Ltd Hub Bus 001 Device 005: ID 1366:0101 SEGGER J-Link PLUS <-- 这就是我要找的设备 Bus 001 Device 004: ID 0a5c:21e8 Broadcom Corp. BCM20702A0 Bluetooth 4.0 Bus 001 Device 003: ID 046d:c08b Logitech, Inc. G502 SE HERO Gaming Mouse Bus 001 Device 002: ID 046d:c335 Logitech, Inc. G910 Orion Spectrum Mechanical Keyboard Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
2. 查看系统启动时的USB识别日志
运行sudo dmesg | grep usb,能看到设备被系统识别的完整日志:
[ 3.569824] usb 1-4: new full-speed USB device number 5 using xhci_hcd [ 3.723556] usb 1-4: New USB device found, idVendor=1366, idProduct=0101, bcdDevice= 1.00 [ 3.723569] usb 1-4: New USB device strings: Mfr=1, Product=2, SerialNumber=3 [ 3.723576] usb 1-4: Product: J-Link [ 3.723581] usb 1-4: Manufacturer: SEGGER [ 3.723586] usb 1-4: SerialNumber: 000660015877
3. 尝试配置udev规则但未生效
我根据上面的设备信息写了一条udev规则,想给设备创建一个易识别的符号链接,但规则完全没起作用:
SUBSYSTEM=="tty", ATTRS{idVendor}=="1366", ATTRS{idProduct}=="0101", ATTRS{serial}=="000660015877", SYMLINK+="segger"
4. 用udevadm monitor观察设备插拔事件
拔掉再重新插上设备时,udevadm monitor的输出如下,看起来系统只识别了USB设备本身,没有触发串口相关的事件:
KERNEL[896.791227] add /devices/pci0000:00/0000:00:14.0/usb1/1-4 (usb) KERNEL[896.792767] add /devices/pci0000:00/0000:00:14.0/usb1/1-4/1-4:1.0 (usb) KERNEL[896.792897] bind /devices/pci0000:00/0000:00:14.0/usb1/1-4 (usb) UDEV [896.800175] add /devices/pci0000:00/0000:00:14.0/usb1/1-4 (usb) UDEV [896.803020] add /devices/pci0000:00/0000:00:14.0/usb1/1-4/1-4:1.0 (usb) UDEV [896.811772] bind /devices/pci0000:00/0000:00:14.0/usb1/1-4 (usb)
5. 查看设备的详细udev信息
我找到了设备在/dev/bus/usb/001/008,运行udevadm info /dev/bus/usb/001/008得到以下详细信息:
P: /devices/pci0000:00/0000:00:14.0/usb1/1-4 N: bus/usb/001/008 L: 0 E: DEVPATH=/devices/pci0000:00/0000:00:14.0/usb1/1-4 E: DEVNAME=/dev/bus/usb/001/008 E: DEVTYPE=usb_device E: DRIVER=usb E: PRODUCT=1366/101/100 E: TYPE=0/0/0 E: BUSNUM=001 E: DEVNUM=008 E: MAJOR=189 E: MINOR=7 E: SUBSYSTEM=usb E: USEC_INITIALIZED=896799819 E: ID_VENDOR=SEGGER E: ID_VENDOR_ENC=SEGGER E: ID_VENDOR_ID=1366 E: ID_MODEL=J-Link E: ID_MODEL_ENC=J-Link E: ID_MODEL_ID=0101 E: ID_REVISION=0100 E: ID_SERIAL=SEGGER_J-Link_000660015877 E: ID_SERIAL_SHORT=000660015877 E: ID_BUS=usb E: ID_USB_INTERFACES=:ffffff: E: ID_VENDOR_FROM_DATABASE=SEGGER E: ID_MODEL_FROM_DATABASE=J-Link PLUS E: ID_PATH=pci-0000:00:14.0-usb-0:4 E: ID_PATH_TAG=pci-0000_00_14_0-usb-0_4 E: ID_FOR_SEAT=usb-pci-0000_00_14_0-usb-0_4 E: TAGS=:seat: E: CURRENT_TAGS=:seat:
6. 当前系统中的tty设备列表
我列出了所有/dev/tty*设备,本来以为会出现ttyUSB0之类的串口设备,但完全找不到相关条目:
tty tty10 tty13 tty16 tty19 tty21 tty24 tty27 tty3 tty32 tty35 tty38 tty40 tty43 tty46 tty49 tty51 tty54 tty57 tty6 tty62 tty8 ttyS0 ttyS11 ttyS14 ttyS17 ttyS2 ttyS22 ttyS25 ttyS28 ttyS30 ttyS5 ttyS8 tty0 tty11 tty14 tty17 tty2 tty22 tty25 tty28 tty30 tty33 tty36 tty39 tty41 tty44 tty47 tty5 tty52 tty55 tty58 tty60 tty63 tty9 ttyS1 ttyS12 ttyS15 ttyS18 ttyS20 ttyS23 ttyS26 ttyS29 ttyS31 ttyS6 ttyS9 tty1 tty12 tty15 tty18 tty20 tty23 tty26 tty29 tty31 tty34 tty37 tty4 tty42 tty45 tty48 tty50 tty53 tty56 tty59 tty61 tty7 ttyprintk ttyS10 ttyS13 ttyS16 ttyS19 ttyS21 ttyS24 ttyS27 ttyS3 ttyS4 ttyS7
现在我完全不知道该往哪个方向排查了,有没有大佬能给点指引?非常感谢!
备注:内容来源于stack exchange,提问作者PatTheTrickster




