解决Ubuntu22.04.1上安装ch34x串口驱动报 Key was rejected by service 需要签名的问题
问题
Ubuntu22.04.1
Linux版本5.19.0-32-generic
运行Qt串口通信 m_serialPort->open(QIODevice::ReadWrite) 时,总是失败。
负责硬件的同事说可能是需要安装ch340驱动。
官网下载
WCH官网下载驱动 CH341SER_LINUX.ZIP
解压驱动包
ncyf@NCYF:~/Downloads$ unzip -O GBK CH341SER_LINUX.ZIP
Archive: CH341SER_LINUX.ZIP
creating: CH341SER_LINUX/
inflating: CH341SER_LINUX/ch34x.c
inflating: CH341SER_LINUX/Makefile
inflating: CH341SER_LINUX/readme.txt
ncyf@NCYF:~/Downloads$
编译安装
如果直接编译,会报错
ncyf@NCYF:~/Downloads$ cd CH341SER_LINUX/
ncyf@NCYF:~/Downloads/CH341SER_LINUX$ ls
ch34x.c Makefile readme.txt
ncyf@NCYF:~/Downloads/CH341SER_LINUX$ make
make -C /lib/modules/5.19.0-32-generic/build M=/home/ncyf/Downloads/CH341SER_LINUX
make[1]: 进入目录“/usr/src/linux-headers-5.19.0-32-generic”
warning: the compiler differs from the one used to build the kernel
The kernel was built by: x86_64-linux-gnu-gcc (Ubuntu 11.3.0-1ubuntu1~22.04) 11.3.0
You are using: gcc (Ubuntu 11.3.0-1ubuntu1~22.04) 11.3.0
CC [M] /home/ncyf/Downloads/CH341SER_LINUX/ch34x.o
/home/ncyf/Downloads/CH341SER_LINUX/ch34x.c: In function ‘ch34x_close’:
/home/ncyf/Downloads/CH341SER_LINUX/ch34x.c:591:9: error: unknown type name ‘wait_queue_t’; did you mean ‘wait_event’?
591 | wait_queue_t wait;
| ^~~~~~~~~~~~
| wait_event
/home/ncyf/Downloads/CH341SER_LINUX/ch34x.c:591:22: warning: unused variable ‘wait’ [-Wunused-variable]
591 | wait_queue_t wait;
| ^~~~
/home/ncyf/Downloads/CH341SER_LINUX/ch34x.c:590:14: warning: unused variable ‘timeout’ [-Wunused-variable]
590 | long timeout;
| ^~~~~~~
/home/ncyf/Downloads/CH341SER_LINUX/ch34x.c:589:13: warning: unused variable ‘bps’ [-Wunused-variable]
589 | int bps;
| ^~~
/home/ncyf/Downloads/CH341SER_LINUX/ch34x.c: At top level:
/home/ncyf/Downloads/CH341SER_LINUX/ch34x.c:1297:27: error: initialization of ‘unsigned int (*)(struct tty_struct *)’ from incompatible pointer type ‘int (*)(struct tty_struct *)’ [-Werror=incompatible-pointer-types]
1297 | .write_room = ch34x_write_room

本文详细描述了在Ubuntu22.04.1上安装CH34x串口驱动遇到的Keywasrejectedbyservice问题,包括驱动编译、内核版本不兼容、驱动签名等步骤,最终成功加载驱动模块。

2267

被折叠的 条评论
为什么被折叠?



