之前自己总结了打印机驱动以及打印连接协议等等,但对扫描仪一直没怎么注意,一是客户扫描仪用的少,二是遇到的客户扫描仪都能正常驱动,下载个扫描易就搞定了,尤其是很多一体机官网也带了驱动,但实际上现在的Linux平台都是采用SANE这个框架来进行扫描了,扫描本身比较简单,不像打印各种历史协议,打印设备也是五花八门。
SANE框架里面,前段应用软件和后端的驱动分开,扫描易,Xsane界面,命令行scanimage,都是扫描前端,驱动这些是后端,后端除了实际的驱动也包括网络以及特殊后端 元(meta)backend
SANE配置目录 /etc/sane.d/
dll.conf 决定了要加载哪些后端模块(这些模块在官网也有对应的描述及man手册)后端可以理解为驱动,特殊的后端包括网络,网络上其他saned服务也可以是后端,可以配置/etc/sane.d/net.conf文件,输入网络上saned服务的机器IP,这样可以通过添加扫描别人的机器上的扫描仪了。
dll.conf 里定义的后端在同样的目录会存在 模块名.conf的配置文件,扫描仪测试过程中最主要的问题就是查看后端驱动是否支持,可以用
export SANE_DEBUG_DLL=255
xsane
这样的方法来启动xsane这个前段,启动的时候会列出他加载了哪些后端,然后去寻找了哪些backend的so.这样就知道你的物理打印机驱动是不是被添加上了。
添加驱动理论上就是加后端或者在后端的配置文件添加VID PID 或者设备文件名
然后对应的后端的so文件所在的包是libsane:amd64 和libsane:i386两个包。
摘取canon_dr.conf配置文件中的一段
# DR-C120
usb 0x1083 0x1651
# P-201
usb 0x1083 0x1652
# DR-F120
option duplex-offset 1640
usb 0x1083 0x1654
可以看到,canon_dr.conf 配置文件里面是配置了很多型号的打印机,摘取的部分是usb连接的,写入了usb设备的 VID PID
SANE先通过 /etc/sane.d/dll.conf 和dll.d目录里面的配置文件查看要加载哪些后端,然后在 /etc/sane.d下加载对应的.conf配置文件以及对应的后端so驱动
比如 dll.conf里配置了canon_dr ,他会读取canon_dr.conf 以及
/usr/lib/x86_64-linux-gnu/sane/libsane-canon_dr.so.1或者
/usr/lib/i386-linux-gnu/sane/libsane-canon_dr.so.1
这样就完成了驱动的加载。这时候通过前端程序就可以查看到连接到系统的扫描设备了。
实际测试64位的xsane无法调用到32位的so文件,所以如果安装的
佳能驱动是32为的后端,就得安装32位的xsane sudo apt install xsane:i386
另外发现佳能的私有驱动和现有标准SANE后端有一些不同,需要添加的时候单独对待。这个有时间单独再记录。
当然,扫描驱动的协议除了SANE ,还有TWAIN等其他集中,可以参考
文件扫描-TWAIN,WIA,ISIS,SANE这个地址的介绍。