PCIe转打印口芯片CH382/CH384以及PCI转打印口芯片CH351/CH352/CH353/CH356CH358 打印口转接方案支持Windows和Linux操作系统,在系统下会生成独立的打印口,本文主要介绍Linux操作系统如何为设备加载打印口驱动。
确认系统是否默认支持
Linux系统是自带并口驱动的,因此只需确认系统默认有没有支持该并口设备即可,Linux下的并口设备节点:/dev/lp*,可以进行如下确认:
1、执行:ls /dev/lp*,在卡插入前后对比是否有新的节点产生;
2、执行:lpinfo -v,查看是否有如下信息:
direct parallel /dev/lp0
确认硬件工作状态
当默认没有打印机节点时,可通过lspci命令确认当前硬件的工作状态以及驱动匹配情况。CH35x和CH38x芯片使用的VID有2种:0x1C00和0x4348,命令为:
lspci -vd 1c00:* lspci -vd 4348:*
运行如上命令后,若设备存在,则会显示如下设备信息:
07:00.0 Serial controller: Device 1c00:3470 (rev 10) (prog-if 05 [16850]) Subsystem: Device 1c00:3470 Flags: fast devsel, IRQ 41 I/O ports at 1000 [size=256] Memory at 58700000 (32-bit, prefetchable) [size=32K] I/O ports at 1100 [size=4] Expansion ROM at 58700000 [size=32K] Capabilities: [60] Power Management version 3 Capabilities: [68] MSI: Enable- Count=1/32 Maskable+ 64bit+ Capabilities: [80] Express Legacy Endpoint, MSI 00 Capabilities: [100] Advanced Error Reporting Kernel driver in use: serial Kernel modules: 8250_pci
如上所示,在“Kernel modules”信息中会显示当前已经为该设备加载的驱动。
手动加载并口驱动
1、卸载驱动
sudo rmmod lp sudo rmmod parport_pc
2、确认系统给设备分配的打印口IO基地址和中断资源
07:00.0 Serial controller: Device 1c00:3470 (rev 10) (prog-if 05 [16850]) Subsystem: Device 1c00:3470 Flags: fast devsel, IRQ 41 I/O ports at 1000 [size=256] Memory at 58700000 (32-bit, prefetchable) [size=32K] I/O ports at 1100 [size=4] Expansion ROM at 58700000 [size=32K] Capabilities: [60] Power Management version 3 Capabilities: [68] MSI: Enable- Count=1/32 Maskable+ 64bit+ Capabilities: [80] Express Legacy Endpoint, MSI 00 Capabilities: [100] Advanced Error Reporting Kernel driver in use: serial Kernel modules: 8250_pci
如以上设备信息,可确认:
并口地址: I/O ports at 1100 [size=4] IRQ中断号: 41
3、加载parport_pc驱动
sudo insmod /usr/lib/modules/$(shell uname -r)/kernel/drivers/parport/parport_pc io=0x1100 irq=41 或者 sudo modprobe parport_pc io=0x1100 irq=41
如果执行成功,会生成设备节点 /dev/parport*;
4、加载lp驱动
sudo modprobe lp
如果执行成功,会生成设备节点/dev/lp*;
出错可能原因
1、系统当前未发现任何CH35x和CH38x并口卡。
2、系统默认为CH35x和CH38x并口卡分配的IO地址不可用,导致驱动无法成功访问硬件,甚至造成系统Crash。原因:CH35x和CH38x并口卡的相关串口寄存器均位于IO空间内,部分非X86和X64的架构不支持独立编址或者支持分配地址但地址无法通过原生IO地址操作直接访问,此时可联系相应CPU或系统厂商咨询解决方法。
此外,WCH的CH38x和CH35x的全系列串口并口卡已经提交给国内主流OS厂商做了生态适配(UOS/Kylin等),可以直接和OS厂商联系获取适配的驱动补丁包或者操作系统。