SANE/特定于扫描仪的问题
本文档包含适用于 SANE 的特定于扫描仪或制造商的说明。
Agfa
Snapscan e40
需要固件 Snape40.bin,可在此处下载 处[死链 2024-10-12—HTTP 404]。
如果启用了 USB 自动挂起,则可能需要在每次扫描前将打印机关闭再重新打开。
BenQ/Acer
如果您拥有 Acer(现为 BenQ)的 USB 扫描仪,则需要下载合适的固件二进制文件并配置 /etc/sane.d/snapscan.conf。
- 找出您拥有的型号并记下 USB ID
$ lsusb
Bus 002 Device 010: ID 04a5:20b0 Acer Peripherals Inc. (now BenQ Corp.) S2W 3300U/4300U
- 访问 snapscan 主页,查看您的扫描仪是否受支持以及需要哪种固件(例如
u176v046.bin)。 - 在互联网上搜索固件映像,并将其下载到
/usr/share/sane/snapscan/。 - 编辑
/etc/sane.d/snapscan.conf的开头并配置以下两行
firmware /usr/share/sane/snapscan/u176v046.bin /dev/usb/scanner0 bus=usb
Brother
要安装 Brother 扫描仪或打印机/扫描仪组合,您需要正确的驱动程序。要找到正确的驱动程序,请参阅 Brother 支持 网站上的您型号的 FAQ,例如:*Home > Country > Your model > FAQs & Troubleshooting > Linux > Scanner / Scan Key Tool > Scan using XSane or GIMP*。您也可以在网上搜索。或查看下方有关更多扫描仪的信息。或提取下方每个 AUR 包。每个包似乎都包含适合其型号的详尽列表。
然后,安装相应的包
- brscan2AUR
- brscan3AUR
- brscan4AUR (MFC-J5620DW)
- brscan5AUR
- libsane-dsseriesAUR
现在,SANE 应该可以识别扫描仪了。
对于网络扫描仪,Brother 为每个 brscan 版本提供了不同的配置工具(例如,brsaneconfig2 用于 brscan2 兼容设备)
# brsaneconfig2 -a name=ScannerName model=ScannerModel ip=ScannerIP
示例
# brsaneconfig2 -a name=SCANNER_DCP770CW model=DCP-770CW ip=192.168.0.110
要获取扫描仪的 IP 和节点名,您可以使用 Nmap
$ nmap -sP 10.0.0.0/24
也可以通过节点名而不是 IP 地址添加扫描仪,例如
# brsaneconfig4 -a name=Brother_DCP-L3550CDW model=DCP-L3550CDW nodename=BRWC0B5D72A0B87
网络扫描
在网络扫描的情况下,例如通过 Wi-Fi,Sane 可能仍然无法找到扫描仪。如果出现这种情况,您需要将扫描仪的 IP 地址指定在 /etc/sane.d/net.conf 文件中。
现在使用 scanimage --list-devices 检查 sane 是否能够找到您的扫描仪。如果不行,请进一步检查 Sane 是否通过网络期望该设备(参见 [1][死链 2023-05-06—HTTP 401])。检查 /etc/sane.d/dll.conf 是否包含 brotherX,其中 X 代表上面的 brscan 版本。如果什么都没有找到,请在文件末尾添加 brotherX。
无效参数
如果所有必需的包都已安装,但您仍然收到“无效参数”错误,这可能意味着配置文件已损坏。运行以下命令(以 brscan4 为例)
# brsaneconfig4 -d
输出应该能缩小问题范围。最可能的情况是连接未正确设置。对于网络扫描仪,请通过编辑器打开 /etc/opt/brother/scanner/brscan4/brsanenetdevice4.cfg 来检查 IP 地址是否正确。对于 USB 连接,请检查配置文件中到扫描仪的路径是否设置正确。为此,请将 lsusb 命令的值与您的配置文件进行比较,并在必要时进行更改。您也可以尝试按照上面“网络扫描”中 brotherX 的建议进行操作,即使对于非网络扫描仪也是如此。
Scan-key-tool
Brother 发布了一个工具,用于通过扫描仪本身的用户交互(例如,在扫描仪的键盘上选择“扫描到电子邮件”、“扫描到图像”等)来触发扫描,而不是通过连接的计算机。这可以通过安装 brscan-skeyAUR 包并 使用 systemd 启动 brscan-skey.service 来实现。请注意,默认情况下,此服务以包创建的 brscan-skey 用户身份运行,其主目录位于 /srv/brscan-skey。
Brother 提供了一些默认脚本,当在键盘上选择扫描类型时会执行这些脚本。这可能需要安装 brscan-skeyAUR 包的一些可选依赖项。对于“扫描到电子邮件”以外的所有选项,结果输出可在 $HOME/brscan 中找到,其中 $HOME 是运行此工具的用户的家目录(如果通过 systemd 作为系统进程启动,则为 /srv/brscan-skey)。
可以更改在键盘上选择扫描类型时执行的操作。这可以通过编辑 /opt/brother/scanner/brscan-skey/brscan-skey.config 来完成。对于 IMAGE、OCR、EMAIL、FILE 中的每个变量 SCAN_COMMAND,当选择相应的扫描类型时,将执行该命令
$ $SCAN_COMMAND $SCANNER_DEVICE $SCANNER_FRIENDLY_NAME
$SCAN_COMMAND 不是引用的,因此在执行的最终命令中可能指定多个位置参数。$SCANNER_DEVICE 指的是应指定给 sane 前端的设备名称(例如,在使用 scanimage 时通过 --device-name 标志),例如 brother3:bus4;dev2。$SCANNER_FRIENDLY_NAME 是扫描仪的人可读名称。
xsane 崩溃
如果 xsane 崩溃并显示消息“=bugchk_free(ptr==(nil))@brother_modelinf.c(482)”,则需要创建符号链接 /usr/local/Brother -> /usr/share/brother。
Canon
通过网络扫描 Canon PIXMA 或 imageCLASS 多功能一体机/扫描仪
找出您的打印机/扫描仪的 IP 地址,并将其添加到 /etc/sane.d/pixma.conf 的新行中,格式为 bjnp://10.0.0.20。对于 imageCLASS 打印机,您可能需要使用 mfnp://10.0.0.20 格式。
Sane 现在应该可以找到您的设备了。有关更多详细信息,请参阅 sane-pixma(5)。
另外,对于某些未通过网络检测到的 Canon PIXMA 多功能一体机/扫描仪,可以使用 scangearmp2AUR。
通过 eSCL 协议为 Canon MAXIFY 多功能一体机/扫描仪进行网络扫描
正如 sane-pixma 文档 sane-pixma(5) 中所述,Canon 似乎正在放弃对近期扫描仪的 BJNP 和 MFNP 协议的支持。作为替代,您可以尝试使用 eSCL 协议通过网络进行扫描。为此,请找出您的打印机/扫描仪的 IP 地址,并将一行添加到 /etc/sane.d/escl.conf 配置文件中,格式为 device https://your-scanners-ip:443 "your-scanner-model"。扫描仪型号用作标识符,例如 scanimage -L 命令。
- 如果
device https://your-scanners-ip:443 "your-scanner-model"不起作用,请尝试device http://your-scanners-ip:80 "your-scanner-model"。 - 如果
scanimage -L的输出类似于device `escl:https://your-scanners-ip:443' is a ESCL your-scanner-model flatbed or ADF scanner,您可以使用scanimage --device-name "escl:https://your-scanners-ip:443" --mode Color --format png > test-scan.png进行测试扫描。
Epson
驱动程序后端
对于 Epson 扫描仪,您可以在两种不同的后端之间选择:“Image Scan v3”(imagescanAUR/utsushi)或“Image Scan! for Linux”(iscanAUR/epkowa)。imagescan/utsushi 和 iscan/epkowa 有支持的设备列表。
Image Scan v3
如果您必须使用 Image Scan v3 后端,则可以安装 imagescanAUR。它应该默认自动检测支持的 USB 扫描仪。如果未识别您的扫描仪,您可以直接编辑 /etc/utsushi/utsushi.conf 并添加以下行。
[devices] dev1.udi = esci:usb:vendor_id:product_id dev1.name = foo dev1.model = Model Name of the scanner
如果您想使用网络扫描仪,还必须安装 imagescan-plugin-networkscanAUR。然后编辑 /etc/utsushi/utsushi.conf 并将您的扫描仪的 IP 地址输入其中。
[devices] myscanner.udi = esci:networkscan://ip-address-here:1865 myscanner.vendor = Epson myscanner.model = Model-name
然后,通过键入命令启动 Image Scan v3
$ utsushi
扫描仪的名称应显示在左上角。如果发生连接问题,将显示错误对话框。
Image Scan! for Linux
- 安装 iscanAUR 包。
- 为您的扫描仪安装相应的 iscan-plugin 包(例如,Epson Perfection Photo V600 的 iscan-plugin-gt-x820AUR)。
- 运行
udevadm control --reload,以便 udev 能够识别设备为扫描仪并应用适当的权限。
对于网络(包括 Wi-Fi)扫描仪,请安装 iscan 和 iscan-plugin-networkAUR,然后编辑 /etc/sane.d/epkowa.conf 并添加以下格式的一行
net <IP-address|hostname> [port-number]
iscan 的上游版本不支持 16bpc 色彩深度扫描。选择除 8bpc 以外的任何位深度都会导致 iscan 在没有警告的情况下停止,使扫描仪处于锁定状态直到重新启动。要启用 16bpc 扫描,iscan 曾经需要打补丁。可能需要 此论坛帖子 中的旧补丁来启用 16bpc 深度模式。
Epson DS-6500
通常此设备可与 epsonds-backend 配合使用。但是,在扫描多页时可能会出现“设备 I/O 期间出错”的错误。如果出现此错误,可以使用 Image Scan v3 后端,并且需要安装 imagescanAUR。如果您想使用网络模块,则可以在安装 imagescan-plugin-networkscanAUR 后,在 /etc/utsushi/utsushi.conf 中配置扫描仪,如上所述。
Epson Perfection V39
此设备(供应商 ID:0x04b8,设备 ID:0x013d)已知得到 SANE 的 epkowa 后端支持。要使用此后端,请安装 iscan-dataAUR、iscanAUR 和 iscan-plugin-gt-s650AUR。
后者提供固件 /usr/share/iscan/esfw010c.bin,这对于使扫描仪正常工作是必需的。
在设备设置成功的情况下,运行 scanimage -L 的结果如下:
- 扫描仪唤醒并执行一些动作,
- 设备正面有持续闪烁的蓝色 LED,以及
- 输出类似于
device `epkowa:interpreter:001:007' is a Epson Perfection V39 flatbed scanner。
在某些情况下,上述操作会由于 iscan-plugin-gt-s650AUR 提供的固件不正确而失败。
- 蓝色设备 LED 无限闪烁,
scanimage -d device_name失败并显示scanimage: sane_start: Invalid argument。
如 此论坛帖子中所述,使用 epsonscan2-non-free-pluginAUR 提供的固件 esfw010c.bin 可以解决问题。似乎存在相同固件的不同不兼容版本。
Epson Perfection V39II
尽管名称如此,该型号与 Perfection V39 有很大不同。截至 2025 年 7 月,请避免使用 iscan,而是从 AUR 安装 epsonscan2AUR、bbeAUR 和 epsonscan2-non-free-pluginAUR。
Epson Perfection V550 Photo
安装 iscan-plugin-perfection-v550AUR
Epson Perfection 1270
对于 Epson Perfection 1270,您还需要一种名为 esfw3e.bin 的固件。可以通过安装 Windows 驱动程序获得。
修改 snapscan 后端的配置文件 /etc/sane.d/snapscan.conf。将固件路径行更改为您自己的路径
# Change to the fully qualified filename of your firmware file, if # firmware upload is needed by the scanner firmware /mnt/mydata/Backups/firmware/esfw3e.bin
并在末尾或任意位置添加以下行
# Epson Perfection 1270 usb 0x04b8 0x0120
您可以通过 sane-find-scanner 命令获取此类代码信息(usb 0x04b8 0x0120)。
还将此类信息行添加到 /etc/hotplug/usb/libsane.usermap 以设置您的权限,例如
# Epson Perfection 1270 libusbscanner 0x0003 0x04b8 0x0120 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
重新插入扫描仪,您现在就拥有了一个可用的 Epson Perfection 1270。
scanimage: sane_start: Error during device I/O,如果有人知道其他原因,请添加到此部分。为防止尝试使用 ADF(自动文档进纸器)扫描时出现 scanimage: sane_start: Error during device I/O 和扫描仪挂起,我不得不删除或注释掉 /etc/sane.d/dll.conf 中的所有后端,而是将此添加到文件中
snapscan
如果您仍然收到 Error during device I/O 消息,请检查扫描仪的传输锁(位于扫描仪底部)是否已打开。
Epson Perfection 1670/2480/2580/3490/3590
请确保下载适合您的 Epson 型号的固件。您可以在 此处和 此处获得一些型号及其驱动程序的概述。固件的下载链接已损坏,但您可以将 此链接作为替代。请确保更改链接中的固件文件名以匹配您的型号。如果您想自行从官方 Epson 网站下载并解压固件源,可以使用 此指南。
作为替代,您也可以安装 AUR 包 sane-epson-perfection-firmwareAUR,它将从官方源下载固件,解压二进制文件并将其安装到 /usr/share/sane/snapscan/。
修改 snapscan 后端的配置文件 /etc/sane.d/snapscan.conf。将固件路径行更改为您自己的路径
# Change to the fully qualified filename of your firmware file, if # firmware upload is needed by the scanner firmware /usr/share/sane/snapscan/esfw52.bin
Epson Perfection 3590 不需要其他修改,其他型号也可能不需要。如果您仍然遇到问题,删除(或注释掉)iscanAUR 包也可能有所帮助。请参阅 SANE#Multiple backends claim scanner。
EPSON WorkForce 多功能一体机/扫描仪通过网络扫描
安装 imagescanAUR 和 imagescan-plugin-networkscanAUR。
编辑配置文件 /etc/utsushi/utsushi.conf。找到 [devices] 部分并编辑 dev2 的模板。相应地替换 IP 地址。您可以在打印机屏幕上找到 IP 地址。例如,
... dev2.udi = esci:networkscan://192.168.1.123:1865 dev2.model = WF-2860 dev2.vendor = EPSON ...
同时,在 /etc/sane.d/dll.conf 中注释掉 epson2,因为它 与 ImageScan 冲突。
完成后,您可以使用任何 SANE 前端来访问此扫描仪。
Fujitsu
Fujitsu fi 系列
对于 Fujitsu fi 系列的某些文档扫描仪,pfufsAUR 专有驱动程序提供了比已成熟的 SANE 默认驱动程序更高级的功能,例如控制可选的打印机来打印扫描文档或从主机请求耗材的准确状态。
ScanSnap S300/S300M/S1100/S1300
ScanSnap 扫描仪的运行需要一个固件文件,该文件可从 此处下载或从 Windows 驱动程序中提取。获取您需要的文件并将它们放入 /usr/share/sane/epjitsu 目录,如果该目录不存在则应创建。例如,您应该得到一个名为 /usr/share/sane/epjitsu/1100_0B00.nal 的文件。这些文件应由 root 用户拥有。
为确保您在正确的位置拥有正确的文件,请记下设备 ID
# sane-find-scanner found possible USB scanner (vendor=0x04c5 [FUJITSU], product=0x1200 [ScanSnap S1100]) at libusb:003:011
/etc/sane.d/epjitsu.conf 中应该有一个相应的条目,例如 usb 0x04c5 0x1200,该条目应引用您刚刚添加的固件文件的路径。
对于 S300/S300M 扫描仪,300M_0C00.nal 和 300_0C00.nal 文件是可互换的;S300 设备可以使用 300M_0C00.nal 文件,S300M 设备可以使用 300_0C00.nal 文件。可以将文件重命名以匹配 /etc/sane.d/epjitsu.conf 中的条目,或者可以编辑该条目以匹配文件名。
获取和安装固件的命令
# git clone https://github.com/stevleibelt/scansnap-firmware.git # mkdir -p /usr/share/sane/epjitsu # cp scansnap-firmware/*.nal /usr/share/sane/epjitsu
HP
如果您的 HP 设备 受 hplip 支持,请安装 hplip 包。
它附带了几个工具
- hp-setup 用于添加和设置设备
- hp-check 用于检查成功运行所需的所有依赖项的安装情况(一个非常有用的工具)
- hp-plugin 是“HPLIP 插件下载和安装实用程序”(插件也可从 hplip-pluginAUR 获取)。
- hp-scan 是“HPLIP 扫描实用程序”。如果您需要该工具,则需要安装 python-pillow。
hp-setup 默认以 GUI 模式运行,这需要 python-pyqt5。您可以使用 -i 标志运行 CLI。
如果设备通过 USB 连接,请以 root 身份运行 hp-setup 并按照屏幕上的说明进行操作。
如果您的设备通过网络连接,请使用 hp-setup printer_ip。
使用网络 HP 扫描仪的替代扫描方法
- 找出您的网络 HP 扫描仪的 IP 地址,例如 192.168.1.8
- 使用 hp-makeuri 实用程序创建设备 URI
$ hp-makeuri 192.168.1.8
hpaio:/net/DeskJet_3630_series?ip=192.168.1.8
- 此 URI 可以提供给 xsane 或 scanimage 工具,例如
$ xsane "hpaio:/net/DeskJet_3630_series?ip=192.168.1.8" $ scanimage --device "hpaio:/net/DeskJet_3630_series?ip=10.12.129.6" --format=png --resolution 300 >scan01.png
Lexmark
有关 Lexmark 设备打印问题的说明,请阅读 CUPS/Printer-specific problems#Lexmark。
大多数 Lexmark 扫描仪(截至 2019 年)仍然不被 SANE 支持,因此 sane-find-scanner 或 scanimage -L 都无法检测到它们。Lexmark 为 GNU/Linux 提供了一个非免费驱动程序,该驱动程序声称支持其*所有*扫描仪。然而,该驱动程序仅为 Debian、OpenSUSE、Fedora 和 Red Hat 分发,不适用于 Arch。以下是安装方法。
警告
在遵循这些步骤之前,请注意:
- 此驱动程序是非免费的(Lexmark 版权所有)
- 这尚未得到广泛测试(但该驱动程序应该适用于所有 Lexmark 扫描仪)
- 该树不遵循 Arch 标准——即,所有内容都将安装在
/usr/local中;您将获得一个/usr/lexmark/的符号链接;并获得安装在/usr/local/lexmark中的文件的符号链接。 - 如果您已安装某些 Lexmark 驱动程序,此过程可能会产生冲突。
过程
选项 1:使用 DPKG
dpkg 是 Debian 发行版的标准包管理器。除非您非常清楚自己在做什么,否则不应使用它来替换 pacman。只需以 root 身份运行
# dpkg -i lexmark.deb
重启后,您的扫描仪应该会被检测到。
选项 2:手动安装
或者,如果您不想安装 dpkg 或想精确控制安装过程,您可以遵循以下说明(假设您在 ~ 中操作)。请注意,md5 校验和将不会被检查,这可能导致安全问题。
- 提取
~/lexmark.deb存档,运行ar x lexmark.deb。debian-binary文件可以丢弃。 - 提取
~/control.tar.gz和~/data.tar.gz存档。 data.tar.gz会生成一个~/usr/目录。以 root 身份,将~/usr/local/lexmark移动到/usr/local/lexmark。- 以 root 身份运行
~/control/postinst来执行安装。此脚本将自动设置所有文件的所有权和chmod,然后设置一些字体、驱动程序和文档技巧。它还将最终运行/usr/local/lexmark/network-scan.link,在您的 Arch 架构中创建几个符号链接。 - 重启后,您的扫描仪应该会被检测到。
选项 3:使用 AUR 包
安装 lexmark-network-scanAUR 包。
支持的设备
此过程已成功测试以下设备
- Lexmark MB2236(仅限 USB;网络未测试)。
- Lexmark MX517de(仅限网络;USB 未测试)。
- Lexmark X204n(仅限网络;USB 未测试)。
待办事项
为了改善 Lexmark 扫描仪的支持,您可以
- 检查此过程是否对您的计算机和设备有效
- 帮助定义此过程所需的依赖项列表
- 创建一个 AUR 包来包含此驱动程序,该包的安装不会破坏架构。即,这样的包不应创建
/usr/lexmark符号链接,并且应被容器化(例如在/opt/lexmark中)。
Medion
如果您拥有 Medion 的 USB 扫描仪 MD 9705,则需要下载合适的固件二进制文件。此固件文件包含在 Windows 驱动程序中。
找出您拥有的型号并记下 USB ID
$ lsusb
Bus 006 Device 007: ID 05d8:4003 Ultima Electronics Corp. Artec E+ 48U
从 https://download.medion.com/downloads/treiber/scamd9705w9xxp.exe 下载 Windows 驱动程序
然后输入以下命令来提取固件文件,并将其复制到 SANE 期望的位置
$ unzip scamd9705w9xxp.exe Win2000/Artec48.usb # cp Win2000/Artec48.usb /usr/share/sane/artec_eplus48u/Artec48.usb
Mustek
BearPaw 2400CU
可与 sane-gt68xx 配合使用(sane-gt68xx-firmware)
Samsung
对于一些 Samsung MFP 打印机,您可能需要编辑 /etc/sane.d/xerox_mfp.conf。
示例条目
#Samsung SCX-3200 usb 0x04e8 0x3441
根据需要更改打印机型号。您可以使用 lsusb 命令获取 idVendor 和 idProduct 代码。请参阅 此主题。
要通过网络而不是 USB 接口访问扫描仪,请在 /etc/sane.d/xerox_mfp.conf 中添加一行,例如
#Samsung scx4500w wireless IP network address tcp xx.xx.xx.xx
其中 xx.xx.xx.xx 是打印机的静态 IP 地址。