我设置了一台运行El Capitan的新机器,并像往常一样通过 macports 为扫描仪安装了xsane 。xsane 无法识别设备,出现以下症状:
sane-find-scanner
在 libusb:020:026 找到 USB 扫描仪(供应商=0x04b8 [EPSON],产品=0x0128 [EPSON Scanner])
scanimage -L
没有识别出扫描仪。
即使作为根我得到了
# /opt/local/bin/scanimage -T -d epson2:libusb:020:026
scanimage:打开设备 epson2:libusb:020:026 失败:对资源的访问已被拒绝
该扫描仪的 MacOS 工具有效,所以我观察到当我连接 USB 电缆时,有一些过程开始:
tail /var/log/system.log
11 月 23 日 23:01:47 主机内核 [0]:348238.593685 EPSON Scanner@14200000:AppleUSBDevice::waitForInterfacesGated:等待 _interfacesMatched 超时
11 月 23 日 23:01:47 主机 EPSON Scanner[86324]: --> HandleMessageFromICDD
11 月 23 日 23:01:47 主机 EPSON Scanner[86322]: --> HandleMessageFromICDD
11 月 23 日 23:01:47 主机 EPSON Scanner[86323]: --> HandleMessageFromICDD
原来这个进程是蹲在 USB 设备上的,所以 libusb 无法访问。(在某些情况下,该进程甚至是以后台用户的名义启动的,在快速用户交换时不活跃):
ps aux | grep EPSON
用户名 86323 0.1 0.1 2582644 22072 ?? S 11:01pm 0:00.21 /Library/Image Capture/Devices/EPSON Scanner.app/Contents/MacOS/EPSON Scanner
现在一旦我Image Capture
终止进程,sane 运行良好,我可以再次使用 xsane:
scanimage -L
设备 `epson2:libusb:020:026' 是 Epson GT-X700 平板扫描仪
虽然我有我的解决方法,但问题仍然是什么会阻止 Image Capture 在不询问的情况下占用 USB 设备?
对于其他 libusb 问题,有一些提示可以卸载内核扩展,但是对于这个问题,kextstat显示插入扫描仪之前和之后的扩展没有区别。