当前 Ubuntu 版本中的 usbserial 内核模块有什么问题?我无法安装任何依赖于 usbserial.ko 的驱动程序。
我如何得到这个结果:
当我将 CP2102 虚拟 COM 端口 (VCP) 适配器连接到 USB 时,我得到以下输出:
[ 1893.942663] usb 1-1.1.4.2: new full-speed USB device number 12 using ehci-pci
[ 1894.052823] usb 1-1.1.4.2: New USB device found, idVendor=10c4, idProduct=ea60
[ 1894.052826] usb 1-1.1.4.2: New USB device strings: Mfr=1, Product=2, SerialNumber=3
[ 1894.052828] usb 1-1.1.4.2: Product: CP2102 USB to UART Bridge Controller
[ 1894.052829] usb 1-1.1.4.2: Manufacturer: Silicon Labs
[ 1894.052831] usb 1-1.1.4.2: SerialNumber: 0001
[ 1895.067552] cp210x: Unknown symbol usb_serial_generic_open (err 0)
[ 1895.067565] cp210x: Unknown symbol usb_serial_generic_close (err 0)
[ 1895.067579] cp210x: Unknown symbol usb_serial_deregister_drivers (err 0)
[ 1895.067595] cp210x: Unknown symbol usb_serial_register_drivers (err 0)
$ lsmod | grep 210x
并且$ lsmod | grep usbserial
不输出任何内容
然后我尝试重建驱动程序。从http://www.silabs.com/products/development-tools/software/usb-to-uart-bridge-vcp-drivers
$ make
$ cp ./cp210x.ko /lib/modules/4.8.0-58-generic/kernel/drivers/usb/serial/cp210x.ko
$ insmod /lib/modules/4.8.0-58-generic/kernel/drivers/usb/serial/cp210x.ko
insmod: ERROR: could not insert module /lib/modules/4.8.0-58-generic/kernel/drivers/usb/serial/cp210x.ko: Unknown symbol in module
还$ modinfo usbserial
输出
filename: /lib/modules/4.8.0-58-generic/kernel/drivers/usb/serial/usbserial.ko
modinfo: ERROR: could not get modinfo from 'usbserial': No such file or directory
我的系统信息:4.8.0-58-generic #63~16.04.1-Ubuntu SMP Mon Jun 26 18:08:51 UTC 2017 x86_64 x86_64 x86_64 GNU/Linux
这是怎么回事?如何修复?如何启动并运行驱动程序?
先感谢您!!
答案1
我在使用 Espressif 的基于 SiLabs CP2102 的 ESP32-DevKitC 开发板时遇到了与您提到的完全相同的问题。您没有提到您使用的环境,但我以 VirtualBox VM 的形式运行 Ubuntu,结果发现这是我的问题的根源。
问题是默认情况下未安装 USB 串行驱动程序在专为虚拟机和云使用而设计的 Ubuntu 图像中。
要解决该问题,请linux-image-extra-virtual
通过运行以下命令安装该包:
sudo apt-get install linux-image-extra-virtual
安装该软件包后,我/dev/ttyUSB0
将 USB 设备连接到我的(主机)Mac 后不久就得到了一个串行设备。
答案2
我也遇到了同样的问题。你只需要安装linux-modules-extra
包含适用于你的内核的驱动程序即可。
使用以下命令:
sudo apt install linux-modules-extra-$(uname -r)