我的 ScanSnap IX500 最近停止工作,可能是从 Debian jessie 升级到stretch 时。
根据文档http://www.sane-project.org/man/sane-fujitsu.5.html我设置了环境变量SANE_DEBUG_FUJITSU=5
然后运行xsane
,我得到:
fujitsu] sane_init: fujitsu backend 1.0.127, from sane-backends 1.0.25
[fujitsu] sane_get_devices: config option "buffer-size" (262144) is > 65536, warning!
[fujitsu] stat: return error 'Error during device I/O'
[fujitsu] WARNING: Brain-dead scanner. Hitting with stick
[fujitsu] stat: return error 'Error during device I/O'
[fujitsu] WARNING: Brain-dead scanner. Hitting with stick again
[fujitsu] stat: return error 'Error during device I/O'
[fujitsu] wait_scanner: error 'Error during device I/O'
[fujitsu] connect_fd: could not wait_scanner
它显示lsusb
为
Bus 004 Device 002: ID 04c5:132b Fujitsu, Ltd
它间歇性地出现在 中scanimage -L
,但目前显示:
SANE_DEBUG_FUJITSU=15 scanimage -L
[fujitsu] attach_one: start
[fujitsu] attach_one: looking for 'libusb:003:015'
[fujitsu] connect_fd: start
[fujitsu] connect_fd: opening USB device
[fujitsu] connect_fd: could not open device: 3
[fujitsu] connect_fd: finish
为什么它不起作用?我如何解决它?
注意:扫描仪插入 USB 2 插槽。我之前将其插入 USB 3 插槽。我尝试将其切换到 USB 2 插槽,因为一些报告称 USB 3 是问题所在,但它仍然无法正常工作。
例如,请参阅错误报告:https://bugzilla.redhat.com/show_bug.cgi?id=1297169 和 http://sane-devel.alioth.debian.narkive.com/kLQc0Aik/fujitsu-ix500-no-scanners-were-identified
无论如何,无论 USB 设备是插入 USB 2 还是 USB 3 插槽,它都应该可以工作。
感谢 Anthony (@derobert) 帮助调试此问题。
看起来这很可能就是sane-backends
问题所在,降级或升级将使问题消失。拉伸正在使用1.0.25-4.1
,而杰西正在使用1.0.24-8+deb8u2
,并且是实验性的1.0.27-1~experimental2
。
另外,拔掉插头然后重新插入似乎会再次显示一段时间。这表明问题可能不在于 USB sane-backends
,而可能是 USB 问题。
答案1
我在从 Raspbian(基于 Debian)Stretch 迁移到 Buster 时也遇到了这个问题,并且使用了之前可用的 scanbd 设置。
编辑:有人想将我的答案编辑为scandb
,但确实如此scanbd
。
到目前为止,我发现了一些问题。
scanbm.socket
其中一个问题似乎与出现“端口已在使用”错误有关,该错误似乎是因为saned.socket
正在使用相同的端口;使用 systemctl stop
,disable
后者似乎可以解决这个问题(服务文件实际上是相同的)。
另一个问题是权限问题 - 没有找到任何设备scanimage -L
,但可以正确检测到扫描仪sudo scanimage -L
。使用sudo lsusb
后跟ls -l /dev/bus/usb/BUSNUM/DEVNUM
,我可以看到扫描仪由 拥有root:saned
,但grep saned /etc/group
显示该saned
组没有成员。然而,有一个scanner
包含该saned
用户的组。这与scanbd.conf
文件中询问删除特定用户和组权限的选项相匹配(扫描仪是建议之一)。
我发现一个udev
服务文件/lib/udev/rules.d/99-saned.rules
正在更改匹配的 USB 设备上的权限以拥有该组saned
。我将其复制到/etc/udev/rules.d/99-saned.rules
并修改为使用组scanner
而不是saned
.我不知道这个udev规则在stretch和buster之间是否改变了,但是改变它并重新启动似乎恢复了我使用scanbd的能力。
答案2
我刚刚从stretch (9.8) 升级到Debian buster/testing 时遇到了完全相同的问题,具有完全相同的症状。
我碰到这个线程,其中提到 scandb 守护进程保留扫描仪的可能性。引用线程中的内容:
Found the culprit....
SANE DID work..... but I had scanbd installed too, so scanbd had the usb
connection with sane and kept the device locked.....
I disabled scanbd, as I remembered installing that and that it might
interfere with SANE... and so it did!
但该帖子没有提出任何方法来验证这一假设。我花了一段时间试图弄清楚是否可以使用fuser
与 ScanSnap 相对应的某个设备来查看 scandb 是否确实保留了它,但无法弄清楚应该是什么设备。所以最后我决定尝试删除scandb
我正在使用的,据我所知,所以我什至不知道为什么安装它。做完之后
apt-get purge scandb
扫描仪神奇地开始响应。所以,如果这不是问题所在,那这就是一个巧合。所以如果你也有类似的问题,不妨尝试一下。
看起来我确实在stretch中安装了scandb。作为 4 月 16 日从拉伸到破坏者升级的一部分,我发现我已经term.log
Unpacking scanbd (1.5.1-4) over (1.4.4-1+b2) ...
顺便说一下,当我清除时,我收到一条消息,询问是否应删除对应的scanbd
行。默认值是“否”,所以我就这么做了。但我不太清楚这些线的用途,所以如果你知道,请评论。/etc/inetd.conf
sane-port
#:OTHER: Other services
sane-port stream tcp nowait saned /usr/sbin/scanbm scanbm
sane-port stream tcp nowait saned:saned /usr/sbin/saned saned
此外,另一个表明可能发生问题的迹象scandb
是 中有关它的消息journalctl
。journalctl
追溯到3月31日,我在4月15日下午/晚上开始安装。但第一次提到scanbd
injournalctl
是在 4 月 17 日凌晨,大约在我apt-get upgrade
完成的时候:
journalctl --unit=scanbd
Apr 17 00:52:18 orwell systemd[1]: Started Scanner button polling Service.
Apr 17 00:52:18 orwell scanbd[4942]: /usr/sbin/scanbd: dbus match type='signal',interface='org.freedesktop.Hal.Manager'
Apr 17 00:52:19 orwell scanbd[4942]: Created directory: /var/lib/snmp/mib_indexes
Apr 17 00:52:30 orwell scanbd[4942]: /usr/sbin/scanbd: no devices, not starting any polling thread
Apr 17 01:40:38 orwell scanbd[4942]: /usr/sbin/scanbd: dbus match type='signal',interface='org.freedesktop.Hal.Manager'
Apr 17 01:40:38 orwell scanbd[4942]: /usr/sbin/scanbd: no devices, not starting any polling thread
Apr 17 01:40:38 orwell systemd[1]: Stopping Scanner button polling Service...
Apr 17 01:40:39 orwell systemd[1]: scanbd.service: Succeeded.
Apr 17 01:40:39 orwell systemd[1]: Stopped Scanner button polling Service.
最后,有谁知道如何确定某个进程是否正在占用 USB 扫描仪,如果是,是哪一个进程?我想知道。