USB CC2531 在 Linux 4.9 aarch64 上不受支持的设备

USB CC2531 在 Linux 4.9 aarch64 上不受支持的设备

我尝试使用zigbee2mqtt使用 CC2531 USB 棒。我在两台计算机上尝试过:

  • 在我的笔记本电脑上运行 ArchLinux (x86_64) (内核 5.2)。一切工作正常 (设备在 上被识别dmesg,zigbee2mqtt 工作正常:zigbee 设备出现在日志中)
  • 在我的 odroid-n2(单板计算机)上运行 Ubuntu 18.04.2 LTS 或 ArchLinuxARM(内核 4.9)(aarch64)。zigbee2mqtt启动后,但在 Ubuntu 和 ArchLinuxARM 上均未检测到 zigbee 设备。

从现在开始,每个命令都在 odroid 上执行。

sudo dmesg | grep -i usb
[  115.960507] usb 1-1.1.1: new full-speed USB device number 8 using xhci-hcd
[  116.064565] usb 1-1.1.1: New USB device found, idVendor=0451, idProduct=16a8
[  116.064578] usb 1-1.1.1: New USB device strings: Mfr=1, Product=2, SerialNumber=3
[  116.064585] usb 1-1.1.1: Product: TI CC2531 USB CDC
[  116.064593] usb 1-1.1.1: Manufacturer: Texas Instruments
[  116.064600] usb 1-1.1.1: SerialNumber: __0X00124B001938A33F
[  116.087026] usb 1-1.1.1: Unsupported device
[  116.087333] usb 1-1.1.1: Unsupported device
[  116.125408] cdc_acm 1-1.1.1:1.0: ttyACM0: USB ACM device
[  116.126816] usbcore: registered new interface driver cdc_acm
[  116.126822] cdc_acm: USB Abstract Control Model driver for USB modems and ISDN adapters

不支持的设备让我怀疑是驱动程序问题,但当我拔下并重新插入 cc2531 时,我不再有不支持的设备dmesg我必须重新启动才能再次收到此错误)。

ls -l /dev/ttyACM0                                                                                                                                   odroid@odroid 0s 
crw-rw---- 1 root dialout 166, 0 juil. 16 11:58 /dev/ttyACM0
groups odroid
odroid : odroid adm dialout cdrom sudo dip plugdev lpadmin lightdm nopasswdlogin pulse-access docker

在 odroid 上,zigbee2mqtt没有记录任何错误(我甚至可以用参数关闭 cc2531 的 led zigbee2mqtt-参见此帖查看完整zigbee2mqtt日志),但是它没有检测到任何设备。

我尝试将记忆棒直接插入主板的 USB 端口,或使用外部供电集线器。每个端口都是 USB3 端口。cc2531 在集线器和板载集线器上的行为相同。

我不太确定这是否是驱动程序问题,但我不知道还有什么可能导致此问题。

答案1

谢谢观看此视频,我能够识别丢失的驱动程序。我需要USB_SERIAL_TImake menuconfig编译 Linux 内核之前启用该选项。


找到正确选项的步骤:

  1. 使用识别idVendorUSB 驱动器dmesg。在我的例子中0451
  2. 在 Linux 内核中查找此驱动程序文件idVendor。我的 USB 棒由德州仪器 (TI dmesg)制造
$ git clone --depth 1 --branch master https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git linux
...
$ cd linux
$ grep -i 0x0451 -r --include='*.c' drivers/
...
drivers/usb/serial/ti_usb_3410_5052.c:#define TI_VENDOR_ID          0x0451
...
  1. 驱动程序文件可能是ti_usb_3410_5052.c。现在我需要找到在 Linux 内核编译期间包含此文件的选项。我需要在与ti_usb_3410_5052.c
$ cat drivers/usb/serial/Makefile | grep -i ti_usb_3410_5052
obj-$(CONFIG_USB_SERIAL_TI)         += ti_usb_3410_5052.o
  1. 该选项是USB_SERIAL_TI。我可以使用make menuconfig来启用它。

相关内容