解决RDK X3安装USB转串口驱动hobot-sign-file ch341.ko报错sign-file: error while loading shared libraries: libcrypto.so.1.1: cannot open shared object file: No such file or director

在使用USB转串口时,明明插入了CH340串口USB设备,并且命令行输入:lsusb 显示出了你的USB设备,但是在输入命令:ls /dev/tty*时却找不到你的设备:

lsusb #查看USB设备
ls /dev/tty*  #查看USB转串口设备


解决办法如下:

1. 打开南京沁恒官网下载CH340驱动
Linux版本驱动
直接点击下载即可


下载完成后是这样的,记得把它拷到一个文件夹中再解压

输入命令直接解压:

unzip CH341SER_LINUX.ZIP

解压完成后有1个文件夹,进入文件夹 cd CH341SER_LINUX/driver

cd CH341SER_LINUX/driver/

image

2. 编译文件Makefile
直接输入

make  #进行编译

当你编译完成,想给 ch341.ko签名时却报错了

hobot-sign-file ch341.ko 

image
image

sunrise@ubuntu:~/Desktop/Serial/CH341SER_LINUX/driver$ hobot-sign-file ch341.ko
sign-file: error while loading shared libraries: libcrypto.so.1.1: cannot open shared object file: No such file or director

此时提示缺少驱动libcrypto.so.1.1
此时得去装一个,命令行下载方式如下:

wget http://ports.ubuntu.com/ubuntu-ports/pool/main/o/openssl/libcrypto1.1-udeb_1.1.1f-1ubuntu2.24_arm64.udeb

如果链接挂了可以去官网找
驱动官网


下载完了是这样的:

同样把他拷到你的X3上并输入命令:

ar x libcrypto1.1-udeb_1.1.1f-1ubuntu2.24_arm64.udeb  # 解包 .udeb(它是 ar 格式)
# 你会看到三个文件:debian-binary, control.tar.xz, data.tar.xz
# 我们要解压 data.tar.xz(包含实际文件)
tar -xf data.tar.xz

解压完成后,进入usr/lib文件夹:

cd usr/lib/

你会看到如下内容:

sunrise@ubuntu:~/Desktop/Serial/lib/usr/lib$ ls
libcrypto.so.1.1  ssl

libcrypto.so.1.1就是我们缺少的文件!

好了直接它拷到/usr/lib/aarch64-linux-gnu/中并刷新:

sudo cp libcrypto.so.1.1  /usr/lib/aarch64-linux-gnu/ #拷文件
sudo ldconfig #刷新
file /usr/lib/aarch64-linux-gnu/libcrypto.so.1.1 #看看刷出来没

如果你看到的内容和以下内容类似就没问题了

sunrise@ubuntu:~/Desktop/Serial/lib/usr/lib$ sudo cp libcrypto.so.1.1  /usr/lib/aarch64-linux-gnu/
sunrise@ubuntu:~/Desktop/Serial/lib/usr/lib$ sudo ldconfig
/sbin/ldconfig.real: file /usr/lib/libssl.so.10 is truncated

/sbin/ldconfig.real: file /usr/lib/libcrypto.so.10 is truncated

sunrise@ubuntu:~/Desktop/Serial/lib/usr/lib$ file /usr/lib/aarch64-linux-gnu/libcrypto.so.1.1
/usr/lib/aarch64-linux-gnu/libcrypto.so.1.1: ELF 64-bit LSB shared object, ARM aarch64, version 1 (SYSV), dynamically linked, BuildID[sha1]=3a7fe0be0d70d0a88c22f0f0352b0bf8a63cc094, stripped
sunrise@ubuntu:~/Desktop/Serial/lib/usr/lib$ ldconfig -p | grep libcrypto.so.1.1
        libcrypto.so.1.1 (libc6,AArch64) => /lib/aarch64-linux-gnu/libcrypto.so.1.1

3. 回到CH340的驱动文件夹重新编译驱动

/usr/bin/hobot-sign-file ch341.ko #重新签名ch341.ko
sudo make load #加载ch341
lsmod | grep ch341 #看看刷出来没

如果你看到类似以下页面,就是驱动安装成功了:

sunrise@ubuntu:~/Desktop/Serial/CH341SER_LINUX/driver$ /usr/bin/hobot-sign-file ch341.ko
Sign Kernel Module File Done.
sunrise@ubuntu:~/Desktop/Serial/CH341SER_LINUX/driver$ sudo make load
insmod ch341.ko
sunrise@ubuntu:~/Desktop/Serial/CH341SER_LINUX/driver$ lsmod | grep ch341
ch341                  28672  0

最后插拔一下USB

ls /dev/tty*


还没搞定!
这种方法安装一会重启会掉,所以你得将他安装到系统的模块目录,设置重启自动启动

sudo cp ch341.ko /lib/modules/$(uname -r)/kernel/drivers/usb/serial/
sudo depmod -a #更新依赖关系
echo 'ch341' | sudo tee -a /etc/modules #开机自启

可以了解决!