我整天都在努力完成这项工作。我快完成了,但还缺少一些东西。以下是目前为止的故事:
- Debian Jessie 8.3 无头家庭服务器
- SANE 通过 USB 全面支持 Canon MP140 MFP 扫描仪/打印机
- SANE dll.conf 已配置并正常运行(除以下内容外,所有内容均已注释掉网和皮克斯马)
scanimage -p --resolution 300 --format=tiff --mode Gray -x 210 -y 297 > test300.tiff
...以灰度扫描 A4 纸并将其保存为 tiff。
sudo service scanbd status
● scanbd.service - Scanner button polling Service
Loaded: loaded (/lib/systemd/system/scanbd.service; disabled)
Active: active (running) since Fri 2016-02-19 19:24:03 CET; 23min ago
Main PID: 1740 (scanbd)
CGroup: /system.slice/scanbd.service
└─1740 /usr/sbin/scanbd -f
Feb 19 19:24:03 server scanbd[1740]: /usr/sbin/scanbd: dbus match type='signal',interface='org.freedesktop.Hal.Manager'
它似乎正在运行,但对按钮没有任何反应。
我尝试停止服务并以 root 身份启动 scanbd -而且它有效!
sudo scanbd -f
scanbd: dbus match type='signal',interface='org.freedesktop.Hal.Manager'
scanbd: trigger action for button-1 for device pixma:04A9172B_ABCDEF with script example.script
所以,我猜这是某种权限问题。我尝试更改/etc/scanbd.conf并替换
user = scand
group = scanner
和
user = root
group = root
但是当我重新启动 scanbd 服务时,我得到了这样的结果,并且按钮不再起作用:
● scanbd.service - Scanner button polling Service
Loaded: loaded (/lib/systemd/system/scanbd.service; disabled)
Active: active (running) since Fri 2016-02-19 20:07:11 CET; 4s ago
Main PID: 2562 (scanbd)
CGroup: /system.slice/scanbd.service
└─2562 /usr/sbin/scanbd -f
Feb 19 20:07:11 server scanbd[2562]: /usr/sbin/scanbd: dbus match type='signal',interface='org.freedesktop.Hal.Manager'
Feb 19 20:07:11 server scanbd[2562]: /usr/sbin/scanbd: Not Primary Owner (-1)
Feb 19 20:07:11 server scanbd[2562]: /usr/sbin/scanbd: Name Error (Connection ":1.96" is not allowed to own the service "de.kmux.scanbd.server" due to security policies in the configuration file)
我可能忽略了一些明显的细节,但我真的不知道那是什么。如能得到任何帮助我将不胜感激。
答案1
我终于让一切运转起来了......
我的最终目标是让扫描按钮正常工作。等我弄明白后,我不仅让扫描按钮正常工作,还让网络扫描正常工作。
事实证明,我的看法是错误的,并且因此采取了错误的做法。
很抱歉,我无法写下完成这项工作的确切命令顺序,因为完成时我已经弄得一团糟了。但我希望至少能帮助大家了解它的一般逻辑。
因此,scanbd
(扫描仪按钮服务)或saned
(扫描仪网络服务器服务)都可以访问扫描仪,但不能同时访问。scanbd
通过不断刷新按钮状态来锁定扫描仪,并将saned
其锁定以用作网络扫描仪。
它的工作方式是仅使用scanbd
作为服务。
scanbd
然后可以不断监视按钮的状态,并在按下按钮时触发某些操作。但它也可以监听正常端口 6566 (tcp)。如果它检测到流量,它会停止监控按钮并启动saned
接管的服务。当它saned
完成作为网络扫描仪服务器时,scanbd
它会恢复等待按钮按下或 sane-port 上出现更多网络流量。
为了使其工作,saned
必须配置两次。
在同一台机器上同时配置为服务器和客户端。服务器部分在检测到网络流量时启动scanbd
,如上文所述。
当您通过 启动扫描时scanimage
,或scanbd
检测到按钮按下时,客户端部分会手动启动。saned
客户端应配置为连接到网络saned
服务器(同一台机器,因此 localhost、127.0.0.1 或主机名、后端'网') — 不是 USB — 因此避免与 发生冲突scanbd
。scanbd
然后检测到端口 6566 上的某些网络流量并作为服务器启动saned
,就像它真的是某些网络客户端一样。
客户端配置在 中,/etc/sane.d
而服务器配置在 中/etc/scanbd/sane.d
。必须从那里复制服务器配置/etc/sane.d
(只需复制整个文件夹),然后修改为充当服务器并通过 usb 与扫描仪通信,即扫描仪实际使用的任何后端。SANE_CONFIG_DIR/etc/scanbd/scanbd.conf
应指向saned
服务器部分:/etc/scanbd/sane.d
编辑:此外,如果机器有防火墙,请打开端口 6566 并加载内核模块 nf_conntrack_sane:
sudo ufw allow 6566/tcp
sudo modprobe nf_conntrack_sane
如果有效,则添加nf_conntrack_sane
至/etc/modules