解决Ubuntu22.04.1上安装ch34x串口驱动报 Key was rejected by service 需要签名的问题

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

解决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
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小言W

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值