在麒麟系统中安装PCIe转串口卡驱动需先识别芯片型号、解绑8250_pci驱动并屏蔽自动加载,再编译安装沁恒CH38X官方Linux驱动,最后验证/ttyCH*设备通信正常。

在麒麟操作系统(Kylin OS)中安装PCIe转串口卡驱动,不是简单复制Windows下的安装流程,而是要绕过内核模块冲突、识别CH38x/CH35x芯片真实ID、手动解绑系统内置8250_pci驱动,并加载南京沁恒官方适配的Linux驱动——否则设备会被识别为/ttyS0~/ttyS3却无法稳定通信,高波特率下丢包、RS485方向控制失效等问题会立刻暴露。
确认硬件芯片型号与内核识别状态
打开终端,执行以下命令查看PCIe串口卡是否被系统物理识别:
lspci -vd 1c00:*
lspci -vd 4348:*
若输出中出现类似“Serial controller: Device 1c00:3470”或“Subsystem: Device 4348:3820”,说明硬件已上电且PCIe链路正常;重点看“Kernel driver in use”字段——如果显示serial或8250_pci,说明系统正用内置驱动接管,必须解绑才能加载厂商驱动;如果显示“none”,则跳过解绑步骤,直接进入驱动编译。
【关键前提】必须使用root权限操作,后续所有命令均需sudo或已切换至root shell
卸载系统默认8250_pci驱动并禁用自动绑定
执行以下命令临时解绑当前已加载的驱动:
echo "0000:$(lspci | grep -i "serial.*controller" | head -n1 | awk '{print $1}') 0" > /sys/bus/pci/drivers/8250_pci/unbind
为防止重启后系统再次自动加载8250_pci,需屏蔽该驱动模块:
echo "blacklist 8250_pci" >> /etc/modprobe.d/blacklist-serial.conf
echo "install 8250_pci /bin/true" >> /etc/modprobe.d/blacklist-serial.conf
这一步不做,每次开机都会抢走设备控制权,厂商驱动加载后/dev/ttyCH*设备虽存在,但实际通信由8250_pci接管,导致波特率不准、RTS/CTS异常、RS485收发方向失控——这是麒麟用户最常踩的坑。
编译并安装沁恒CH38X官方Linux驱动
第一步:从南京沁恒官网或GitHub仓库下载最新驱动源码包CH38XDRV.ZIP,解压到任意目录;
第二步:进入解压后的linux目录,检查Makefile是否适配麒麟所用内核版本(Kylin V10 SP1+多基于Linux 4.19/5.4/5.10);
第三步:修改源码中内核API兼容性代码——重点修改drivers/serial/ch38x.c中xmit和tty指针引用方式,按实际内核版本套用LINUX_VERSION_CODE宏判断;
第四步:执行make && sudo make install;
第五步:加载模块:
modprobe ch38x
驱动加载成功后,执行ls /dev/ttyCH*应列出ttyCH0、ttyCH1等设备节点。此时串口已脱离8250_pci管理,支持最高6Mbps波特率、硬件流控、RS485自动收发切换(需外接方向控制电路)。
验证串口通信功能
使用minicom或picocom测试:
picocom -b 115200 /dev/ttyCH0
若能正常收发ASCII字符,无乱码、无超时、无中断丢失,说明驱动安装完成;如提示“Permission denied”,需将当前用户加入dialout组:
sudo usermod -a -G dialout $USER
注销当前会话并重新登录,权限立即生效。


















