【发布时间】:2016-11-14 18:29:58
【问题描述】:
在我的 Raspberry Pi 上运行“uname -a”将产生以下结果: Linux tm-gw 4.4.14-v7+ #896 SMP Sat Jul 2 15:09:43 BST 2016 armv7l GNU/Linux
我的问题是我有一个 USB 设备,其供应商和产品 ID 未在 CP210x.c 文件中注册,这再次意味着即使可以找到它,覆盆子也不允许与之通信(/ dev/ttyUSB0 不存在)。
我已尝试下载内核,将 ID 对添加到 cp210x.c 文件中,重新构建并安装,它可以工作。 (dmesg 将显示“usb 1-1.4:cp210x 转换器现在连接到 ttyUSB0”)
由于我必须在多个树莓上安装这个程序,所以需要很长时间,所以我想知道是否可以在不重新编译内核的情况下注入 USB ID??
我确实尝试从我构建的内核中获取 cp210x.ko 文件,然后通过键入“sudo insmod cp210x.ko”将其安装到新的树莓派中,但没有奏效。
/卡斯滕
【问题讨论】:
-
内核模块只有在模块版本号完全匹配时才能加载。如果您使用您构建的内核启动树莓派,那么 insmod cp210x.ko 应该可以工作。如果您想保留旧内核但加载针对您进行更改的内核源构建的模块,它将无法工作。
-
我没试过,但你应该可以
echo VEND PROD > /sys/bus/usb-serial/cp210x/new_id,其中VEND和PROD是新设备的4位十六进制供应商和产品ID。在此之前,您可能必须执行modprobe cp210x。如果可行,请将命令放入本地启动脚本中。 -
@Sanchayan:我试图在旧内核中加载新的 .ko 模块,你是对的:它不起作用:-D
-
@Ian Abbott:我尝试了您的解决方案,但是当我运行“sudo echo 10c4 84cc > /sys/bus/usb/cp210x/new_id”时出现错误“-bash: /sys/bus /usb/cp210x/new_id:没有这样的文件或目录”。 (我先运行“sudo modprobe cp210x”)。我做错什么了吗?
-
@KarstenL 这是
/sys/bus/usb-serial/cp210x/new_id,而不是/sys/bus/usb/cp210x/new_id。此外,>重定向无法按您对sudo的预期工作,因为重定向的输出文件是由 shell 作为当前用户打开的。您可以在运行命令之前运行sudo -s以使用超级用户权限打开交互式 shell,或者执行类似sudo sh -c 'echo 10c4 84cc > /sys/bus/usb-serial/cp210x/new_id'的操作以在具有超级用户权限的非交互式 shell 中运行带有重定向的命令。
标签: linux linux-kernel raspberry-pi usb raspbian