ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

Linux下Brother打印机驱动安装与排坑指南:从CUPS到扫描配置

Linux下Brother打印机驱动安装与排坑指南:从CUPS到扫描配置 前阵子帮朋友在 Linux 上搞定了一台 Brother 打印机驱动过程比我预想的要曲折一些。因为这台打印机既要做打印又要跑扫描而且不同 Linux 发行版的处置方式还不一样踩了几个坑才彻底弄顺。今天把整个安装过程、原理和排坑经验整理出来希望能帮你少走弯路。1. 安装之前先想清楚三件事Linux 装打印机驱动和 Windows 双击 exe 完全是两回事。很多人上来就到官网下驱动结果发现是个 .deb 或 .rpm装完还是不能用卡在排错上大半天。所以动手之前先把下面这几点确认好。1.1 确认打印机型号和连接方式Brother 的打印机产品线覆盖了激光、喷墨、热转印等多个系列常见的有 HL激光打印、DCP打印扫描传真、MFC多功能一体机等。不同型号的驱动完全不能混用型号后面带不带字母、数字结尾是什么都必须准确。连接方式也决定了驱动安装的路径可以走 USB 连接或网络连接。USB 最简单插上线系统基本能识别安装驱动后即可使用。网络连接需要打印机有网口或 Wi-Fi并且最好给打印机设置一个固定 IP否则之后配置不稳定。还有一点容易被忽略的是系统架构。在命令行输入uname -m如果输出是x86_64就是 64 位aarch64就是 ARM64。下载驱动时选错架构装上也会直接报错这是最常见的一个低级错误。1.2 搞清楚 CUPS 在驱动安装里的角色Linux 下打印机管理几乎都依赖 CUPS。它本质上就是一种打印服务程序负责接收打印任务、解析驱动、把数据交给打印机。不过Debian/Ubuntu 与 RHEL/CentOS 系发行版的包管理方式不同但 CUPS 的配置套路是通用的。安装驱动后需要在 CUPS 里添加打印机。如果用命令行操作需要熟悉lpadmin、lpstat等命令。平时用图形界面的话浏览器打开http://localhost:631就能进 CUPS 管理页操作方式比较直观。1.3 驱动来源选择官方包和通用驱动Brother 官方为大多数型号提供了 Linux 驱动这些驱动通常被打包为 .deb 或 .rpm 文件。官方驱动的优点是稳定、功能官方保证缺点是根据型号和发行版可能需要手动下载对应版本。另一种方案是使用通用驱动比如printer-driver-brlaser或hplip项目里对部分 Brother 型号的支持。这些开源驱动的优点是安装简单、适配性好但某些特殊功能可能支持不完整采用前最好查一下你的型号是否在支持列表里。我的建议是优先用官方驱动。如果官方驱动装不上再尝试用brlaser这类开源驱动兜底。因为官方驱动的安装包内通常包含了配置脚本能帮你完成打印机端口检测、驱动安装、队列创建等全套操作省时省力。2. 核心准备工作依赖、工具与驱动包在安装驱动前需要把系统基础环境准备好。这一步做扎实后面能省掉大量排查问题的时间。2.1 更新系统和安装必要依赖无论你用的是 Ubuntu、Debian、Fedora 还是 Arch第一件事是先更新软件源并安装好编译和配置工具。以 Ubuntu/Debian 系为例sudo apt update sudo apt upgrade -y sudo apt install -y task-lpr ppd libc6-i386task-lpr是 Brother 驱动包运行时需要的依赖工具如果不安装会在配置过程中报错。ppd是 PostScript Printer Description 的缩写里面包含了打印机的参数描述信息。另外如果你的系统是 64 位的需要安装 32 位兼容库libc6-i386因为 Brother 的部分工具链是 32 位的缺少这个库会导致二进制文件无法运行。对于 Fedora/RHEL 系使用sudo dnf install -y lpr ghostscript如果你是 Manjaro/Arch 用户直接使用 AUR 源中的brother-mfc-xxx驱动包往往比自己手动安装还要省心。2.2 下载匹配型号的驱动文件打开 Brother 官网下载页面输入型号进行搜索。搜索时注意区分“Linux 驱动”“扫描驱动”和“打印驱动”。很多一体机有单独的打印驱动和扫描驱动你不能只装一个就完事。以我的那台 DCP 系列一体机为例下载下来的是类似这样的文件brother-dcp-xxxx-lpr-1.1.1-1.i386.debbrother-dcp-xxxx-cupswrapper-1.1.1-1.i386.debbrother-dcp-xxxx-scanner-1.1.1-1.i386.deb打印驱动通常由lpr包和cupswrapper包两部分组成lpr负责最底层的打印语言解析cupswrapper负责把 CUPS 和 lpr 对接起来二者缺一不可。扫描驱动则独立存在有些一体机的扫描驱动就叫brscan4或者brscan5具体根据型号来。2.3 驱动包解包与安装顺序拿到 .deb 文件后很多人直接双击安装然后重启结果驱动还是没出现。正确做法是先解包查看一下里面包含的文件和安装脚本了解它到底要做什么。dpkg-deb -I brother-dcp-xxxx-lpr-1.1.1-1.i386.deb dpkg-deb -I brother-dcp-xxxx-cupswrapper-1.1.1-1.i386.deb这样可以预览 deb 包里的control信息确认依赖要求。然后按顺序安装先装 lpr 包再装 cupswrapper 包sudo dpkg -i brother-dcp-xxxx-lpr-1.1.1-1.i386.deb sudo dpkg -i brother-dcp-xxxx-cupswrapper-1.1.1-1.i386.deb如果提示依赖缺失运行sudo apt -f install自动修复。安装过程中 cupswrapper 包通常会自动调用配置脚本检测打印机连接类型。如果此时打印机还没开机或者没插 USB配置可能不会自动完成需要后面手动补。3. 分场景实操USB 连接和网络连接不同连接方式下的驱动配置过程不太一样。我分别把 USB 和网络两种方式的完整操作步骤写出来你可以根据自己的实际情况对应操作。3.1 USB 连接方式插上就认配置要细心USB 连接是最简单的方式也是新手最容易出问题的方式。很多人把打印机插上电、连上 USB 线然后发现系统已经自动识别了打印机认为自己不需要装驱动了。实际上系统识别出来的是一个 USB 设备但如果没有正确的驱动你去打印的时候还是会提示“printer not found”或者任务卡在队列里不动。具体操作步骤如下先把打印机的 USB 线连接到电脑然后开机。运行lsusb如果输出中包含 Brother说明 USB 设备已经被内核识别。打开 CUPS 管理页浏览器访问http://localhost:631。点击“Administration”选项卡选择“Add Printer”。系统会要求输入账号密码这里输入你 Linux 系统里有 sudo 权限的账号密码即可。在设备列表中选择类似Brother DCP-xxxx series的条目注意别选成“raw socket”或者“usb://... 以外的其他选项。如果列表里没有你的打印机先检查lsusb是否能看到能看到但列表没有大概率是cupswrapper没装好需要重新安装 cupswrapper 包。选择驱动程序。如果cupswrapper安装成功驱动列表里会出现 Brother 对应的 PPD 文件选择它即可。设置打印机名称建议用简单的名字比如Brother_DCP方便后续命令行操作。打印测试页确认。在命令行中添加打印机时也可以直接用lpadminsudo lpadmin -p Brother_DCP -E -v usb://dev/usb/lp0 -m brother_dcp_xxxx_ppd.ppd上面命令的含义是添加一个名为Brother_DCP的打印机队列启用它设备地址是usb://dev/usb/lp0使用指定的 PPD 驱动文件。如果设备地址不对可以通过lsusb或者lpinfo -v查看准确的 URI。注意lpinfo -v会列出所有可识别的设备 URI这是排查打印机无法被 CUPS 识别时的关键命令。3.2 网络连接方式固定 IP 是稳定打印的前提网络连接的打印机在办公场景里用得比较多毕竟不可能每台电脑都拉一根 USB 线到打印机上。网络连接的配置比 USB 稍微复杂但逻辑很清晰。首先确保打印机和电脑在同一个局域网内。最稳妥的做法是通过打印机面板查看当前 IP 地址然后在路由器的 DHCP 设置里把这个 IP 设为固定保留或者直接在打印机网络设置里手动指定静态 IP。这样打印机的 IP 地址不会因为重新启动而变化否则之后 CUPS 里配置的地址失效又得重新配置。然后在终端里测试打印机和电脑的连通性ping 192.168.1.100假设打印机 IP 是192.168.1.100能 ping 通说明基本网络层面没问题。接着在 CUPS 里添加打印机。本次在设备列表里不会直接看到网络上的打印机而是需要选择AppSocket/HP JetDirect这个连接类型。这个协议是打印领域通用的网络打印协议Brother 打印机完全支持。填入socket://192.168.1.100:9100作为连接地址。9100 是通用的网络打印端口。如果你的打印机同时开启了 IPP 协议也可以使用ipp://192.168.1.100:631/ipp/print两者区别在于IPP 协议能提供更多的状态信息比如墨水余量、故障状态等而 JetDirect 更简单直接。用哪个都行我的经验是 JetDirect 兼容性最好几乎不会出问题。命令行添加网络打印机的方式如下sudo lpadmin -p Brother_DCP -E -v socket://192.168.1.100:9100 -m brother_dcp_xxxx_ppd.ppd如果安装过 cupswrapper 包PPD 文件一般已经被拷贝到了/usr/share/ppd/或者/usr/local/Brother/Printer/目录下可以直接引用路径。3.3 配置完成后的必要检查项无论哪种连接方式配置完成后都要用下面几条命令验证一下lpstat -p -d lpstat -tlpstat -p -d会列出所有打印机及其默认打印机lpstat -t输出所有状态。如果状态显示idle说明打印机空闲可以接收任务如果是disabled你需要去 CUPS 管理页把打印机启用。发送测试打印任务也有命令行方式lp -d Brother_DCP /etc/hosts上面这条命令会把/etc/hosts文件内容打印出来。如果打印机能输出这一页内容说明整个链路已经打通。4. 扫描驱动安装一体机不能只会打印很多 Brother 一体机用户在用 Linux 时只装好了打印驱动扫描功能却一直闲置。其实 Brother 官方提供了专门的扫描驱动安装好之后就可以用simple-scan或者xsane等工具进行扫描。4.1 brscan4 与 brscan5 的选择依据Brother 扫描驱动有两个主要版本brscan4和brscan5。具体选哪个需要看清楚你的打印机型号支持哪个版本。一般来说较新的机型使用brscan5而前几年的机型多用brscan4。官网驱动页面会有明确的说明。下载下来的文件一般是brother-common-xxx.deb、brother-libs-xxx.deb和brscan4-xxx.deb或brscan5-xxx.deb。这几个包要按顺序安装sudo dpkg -i brother-common-*.deb sudo dpkg -i brother-libs-*.deb sudo dpkg -i brscan4-*.deb安装完后需要把扫描仪注册到系统里。以 brscan4 为例注册命令类似于sudo brsaneconfig4 -a nameDCP-xxxx modelDCP-xxxx ip192.168.1.100brsaneconfig4参数说明如下-a表示添加一个扫描设备name自定义名称方便识别model必须是驱动支持的型号标识不能随意填这个值一定要从驱动文档或包内配置里查证ip打印机的 IP 地址注册完成后运行brsaneconfig4 -q可以列出已经注册的扫描设备确认是否出现你的打印机。4.2 USB 扫描仪的注册方式如果扫描仪是通过 USB 连接的注册命令略有不同sudo brsaneconfig4 -a nameDCP-xxxx modelDCP-xxxx注意此时不需要写ip参数。USB 连接情况下驱动会自动检测 USB 总线上是否有 Brother 设备。然后使用扫描软件验证。Ubuntu 自带的Document Scanner也就是 simple-scan就能直接调用 Brother 驱动。打开软件点击“扫描”如果能预览到画面说明扫描链路已经打通。我遇到的一个典型坑是安装完扫描驱动后simple-scan 仍然报错“no scanners found”。这个问题的原因通常是brother-libs依赖没有正确安装或者扫描仪设备的权限不足。检查一下当前用户是否属于lp或scanner用户组sudo usermod -a -G scanner,lp $USER重启系统后生效。很多系统默认用户并不在这些附加组里扫描仪设备权限受限就会无法访问。4.3 扫描驱动的卸载与重装技巧如果扫描驱动安装失败了或者换了一个型号的扫描仪先干净卸载旧驱动再装新的否则残留配置会影响后续使用。卸载命令参考sudo dpkg -r brscan4 sudo dpkg -P brscan4-r是移除软件包但保留配置文件-P是完全清除。彻底卸载时用-P更稳妥。同时检查一下/opt/brother/scanner/目录下是否有残留配置。如果之前注册过设备配置文件可能残留在那里重装前最好手动清理一下。5. 实际安装中的坑与解决实录这个部分我整理了实际安装中最常遇到的几个问题不管你是装 Brother 还是其他品牌打印机这些思路都有参考价值。5.1 32 位驱动在 64 位系统下的兼容问题一般情况下 64 位系统是可以运行 32 位程序的前提是安装了多架构支持库。Ubuntu 上要启用 i386 架构sudo dpkg --add-architecture i386 sudo apt update sudo apt install -y libc6:i386 libstdc6:i386让我印象深刻的是有一次明明装了 libc6:i386运行 Brother 的配置脚本时依然报No such file or directory。这个报错在 Linux 下其实非常误导人并不是文件不存在而是 32 位动态链接器没找到对应的 32 位库。排查方法是使用ldd命令查看可执行文件的库依赖ldd /usr/local/Brother/Printer/xxx/lpr/lpr如果输出里有“not found”的项就去把对应的 32 位库装上。装上之后再运行一次ldd确认所有依赖都指向“found”状态再执行后续配置脚本。5.2 网络打印机添加成功但打印任务排队失败这种情况的表现是CUPS 里能看到打印机点击打印后任务状态变成“stopped”或者“pending”打印机完全没有反应。排查步骤先走这三步先看网络连通性ping 打印机IP如果 ping 不通排查打印机是否休眠、IP 是否更换。再查端口连通性nc -zv 192.168.1.100 9100如果 9100 端口不通说明打印机防火策略或网络配置有问题。最后看 CUPS 日志/var/log/cups/error_log文件重点看最后几行是否有“Unable to connect”相关字样。有一次我把目标打印机的型号选错了用的是同系列但功能不同的 PPD 文件。打印任务进入队列后打印机虽然能接到数据但解析不出来表现为任务卡住不动。这种情况重点检查 PPD 文件是否和型号匹配。5.3 驱动安装好打印机名称为空打印机装完之后用lpstat -p -d查看发现列出来的打印机名称是空的或者显示为乱码。这个问题多数是 cupswrapper 的自动检测功能没有正确抓到打印机型号。解决方法很简单手动添加打印机队列。删掉有问题的队列sudo lpadmin -x Brother_DCP然后重新手动创建。在 CUPS 管理页添加打印机时手动输入名称选择正确的 PPD 文件最后启用打印机。实测下来这个操作比依赖自动检测要可靠得多。5.4 权限问题导致无法打印有些用户不是 root 权限也没有把普通用户加入lpadmin组这样在 CUPS 里添加打印机时会被拒绝。Ubuntu/Debian 系统里执行sudo usermod -a -G lpadmin $USER注销并重新登录后生效。除此之外如果打印机是通过 USB 连接还需要检查当前用户是否有设备访问权限ls -l /dev/usb/lp0如果所有者是 root 且权限是 660当前用户不在lp组里就无法访问。添加到lp组即可。5.5 扫描正常但彩色扫描偏色的调整思路扫描偏色这个问题严格来说不算驱动安装范畴但很影响日常使用感受。Brother 扫描驱动提供了一些参数设置可以在扫描软件的设置界面调整亮度、对比度、饱和度等参数。如果偏色严重可以检查扫描仪的分辨率设置。有的型号在驱动默认设置下使用较低的色彩深度导致扫描出来的颜色偏淡。把扫描分辨率调到 300 dpi 以上色彩深度选择 24 位彩色一般能解决大部分偏色问题。另外注意扫描软件和驱动对颜色配置文件的支持情况。Linux 下颜色管理的支持确实不如 Windows 完善但对于一般办公需求只要调整好基本参数效果完全可接受。6. 命令行日常管理与批量部署思路打印机驱动装好只是一次性的工作日常的运维和批量部署才是真正考验。掌握几个命令行管理技巧可能会对你后续工作有帮助。6.1 打印机队列的备份和恢复打印机配置好之后可以把它的配置文件备份下来。CUPS 的配置文件存储在/etc/cups/printers.conf里面记录了所有打印机队列的配置。备份sudo cp /etc/cups/printers.conf ~/printers.conf.bak恢复sudo cp ~/printers.conf.bak /etc/cups/printers.conf sudo systemctl restart cups这个方法在系统重装或者迁移到新电脑时特别有用。当然如果打印机 IP 变了恢复后还需要在 CUPS 管理页里修改打印机的连接地址。6.2 多台电脑批量部署驱动的技巧如果你需要给实验室或者办公室里的多台 Linux 电脑安装 Brother 打印机驱动一台一台手动下载安装效率很低。一个可行的思路是先在一台机器上把驱动下载好然后通过局域网分发安装。以 Ubuntu 为例可以先把三个 deb 包放到一个目录下然后在目标机器上依次执行。如果你想更自动化可以把安装命令写成一个 shell 脚本#!/bin/bash sudo dpkg -i brother-*.deb sudo apt -f install -y sudo lpadmin -p Brother_DCP -E -v socket://192.168.1.100:9100 -m brother_dcp_xxxx_ppd.ppd sudo lpadmin -d Brother_DCP把所有 deb 包和脚本放在同一目录下执行chmod x install.sh然后./install.sh即可。如果有大量机器需要部署还可以配合 Ansible 等自动化运维工具下发任务原理是一样的只是把手工执行命令变成了自动化执行。6.3 常用排查命令速查表这里整理一份我平时经常用的排查命令按需取用即可。命令用途lsusb检查 USB 设备是否被识别lpinfo -v列出 CUPS 能识别的所有设备 URIlpstat -p -d查看打印机状态和默认打印机lpstat -t打印服务整体状态lp -d 名称 文件发送打印任务cancel 任务号取消打印任务brsaneconfig4 -q查询已注册的扫描设备tail -f /var/log/cups/error_log实时跟踪 CUPS 日志nc -zv IP 9100检查打印机 9100 端口连通性6.4 打印机固件更新的影响有时候打印机固件会自动更新更新之后可能会出现 Linux 驱动突然不可用的情况。大部分原因都是固件更新后打印机网络接口的变化或者是通讯协议有所调整。遇到这种情况先到 Brother 官网查看该型号是否有新的 Linux 驱动版本。如果有就下载更新如果没有尝试把打印机的固件降级回旧版本。降级操作可以在打印机面板上或者通过 Web 管理页面执行具体步骤根据型号略有不同建议参考打印机官方手册。总的来说Linux 下安装 Brother 打印机驱动核心思路就是型号要对、依赖要全、连接要稳、权限要给够。官方驱动 CUPS 合理的排查手段基本能解决绝大多数问题。如果你用的是其他品牌打印机这套排查思路其实也是通用的只需要把驱动包换成对应品牌即可。
返回列表