news 2026/10/1 9:20:22

Linux下Brother打印机驱动安装全指南:从CUPS到brlaser的实践排错

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Linux下Brother打印机驱动安装全指南:从CUPS到brlaser的实践排错

1. 为什么Linux下装Brother打印机驱动特别容易翻车

先聊点真实的。我自己在Ubuntu和Debian上装Brother打印机驱动踩过的坑,比任何其他品牌的打印机加起来都多。不是Brother故意难为人,而是它家的驱动分发方式和HP、Canon这些品牌完全不是一个路子,加上Linux的发行版碎片化,导致网上教程大多过时或者只针对特定版本。

大多数人在Linux下装Brother驱动失败,根源通常出在三件事上。第一,从官网下载驱动的时候选错了架构包,32位和64位搞混;第二,安装了驱动却不知道Brother的驱动体系是分层的——负责通信的后台服务、负责CUPS接口的wrapper、负责扫描的brscan,这三层必须各自就位才能正常工作;第三,USB连接和网络连接两种模式下,驱动的工作方式和对系统的要求完全不同,很多人照着USB的教程去配网络打印机,自然会卡住。

所以这篇我不打算只给你一条命令敲到底的"速通版",而是把Brother驱动在Linux下的工作逻辑、安装细节、常见故障的排查路径都拆开讲清楚。不管你是Ubuntu、Debian、Fedora还是国产Linux发行版,理解这套逻辑之后,遇到问题都能自己定位,而不是换一个教程再踩一遍坑。

Linux下打印机驱动的基础协议是CUPS(Common UNIX Printing System),几乎所有发行版都内置了。CUPS本身不认Brother的私有协议,它需要一套"翻译层"来把标准的打印作业转换成Brother打印机听得懂的指令。Brother官方提供的驱动就是这个翻译层,但它不是单一文件,而是由几个组件拼起来的。先搞清楚这层逻辑,后面安装才不会含糊。

2. 动手之前必须确认的三件事:型号、系统架构、连接方式

2.1 精确到具体型号,别用系列名乱猜

Brother的驱动下载页面是按照"型号+操作系统"来匹配文件的,而且它家很多型号的名称非常接近,比如HL-1218W和HL-1218WB、DCP-L2550DW和MFC-L2710DW,差几个字母,驱动就完全不同。去官网之前,一定先把机器背面铭牌上的完整型号记下来,或者用打印机的操作面板打印一张设置页,上面有完整型号和固件版本。

连上机器之后还可以用lsusb命令看一眼USB设备ID,确认系统层面能否识别到打印机:

lsusb

正常会输出类似Bus 001 Device 004: ID 04f9:0030 Brother Industries, Ltd这样的信息,04f9就是Brother的厂商ID,后面四位是产品ID。如果lsusb里压根看不到Brother设备,那说明USB线、接口或者打印机本身没进入正常待机状态,这时候先别折腾驱动,把硬件连接问题解决了再说。

2.2 确认系统架构:是amd64还是arm64还是i386

这是翻车率最高的一个环节。很多老型号的Brother打印机为了兼容性,驱动同时提供32位和64位两个版本,但有些型号只提供32位版。如果只看文件名带不带i386就下载,容易装错。

判断系统架构用一条命令:

dpkg --print-architecture uname -m

输出amd64就下载64位包,输出i386就下载32位包,输出arm64说明你是ARM平台的机器(树莓派、部分国产Linux终端等),需要确认Brother官网有没有对应的ARM驱动,很多老型号没有,只能通过CUPS的通用驱动或者第三方的brlaser开源驱动来支持,这个后面再细说。

另外还有一个容易忽略的点:如果是64位系统去装32位驱动包,需要确保dpkg支持i386体系架构,装之前要加一下:

sudo dpkg --add-architecture i386 sudo apt update

否则你会看到dpkg: error: package architecture (i386) does not match system (amd64)之类的报错。这个错误不是驱动坏了,是系统架构不匹配。

2.3 明确打印机的连接方式:USB还是网络

Brother打印机在Linux下的驱动配置,USB和网络两条路的流程、命令、调试方式都不同。

USB连接适合单机使用,驱动安装后需要确保打印机的USB设备权限正确,如果权限不对,即使驱动装好了,打印作业也会卡在队列里,显示"Unable to open device path"之类的错误。另外USB连接要求打印机不能自动进入休眠太深的状态,否则某些Brother型号在休眠后无法被唤醒。

网络连接(有线网口或者Wi-Fi)适合办公室多台电脑共用一台打印机,配置的核心在于确保Linux主机和打印机的IP网络互通,Brother的驱动使用LPD协议(Line Printer Daemon)或者专用的二进制端口来收发数据。如果你的打印机走Wi-Fi,还要注意Brother的Wi-Fi直连(Infrastructure模式)和无线局域网(Station模式)的区别,驱动里填的IP地址必须是打印机当前获取到的IP,而不是机器铭牌上的默认地址。

3. 从官网下载驱动:rpm和deb的系统对应关系

3.1 Brother官网的下载页面结构

从Brother的支持页面选择打印机型号后,切到Downloads标签页,会看到一组Linux相关的驱动列表。不同型号略有差异,但常见的包大致是这几个:

  • Linux Printer Driver(LPR)
  • Linux Cupswrapper Driver
  • Linux Scanner Driver(brscan4或brscan5)
  • Linux Scan-key-tool(部分机型,用于面板按键触发扫描)

每个包下面通常有rpm和deb两个分支。rpm给Fedora、RHEL、openSUSE这类用RPM包管理器的发行版,deb给Debian、Ubuntu、Linux Mint这类用Debian包管理器的发行版。国产Linux里,统信UOS和麒麟系统基于Debian体系,一般选deb包;如果用的是Fedora或者欧拉这类RPM体系,就选rpm包。

下载之前认真看一眼文件名的结尾:amd64.deb是64位Debian包,i386.deb是32位;x86_64.rpm是64位RPM包,i386.rpm是32位。

3.2 为什么Brother要分成LPR和cupswrapper两个包

这个问题是理解Brother驱动结构的关键。LPR驱动包提供的是底层打印协议的后台程序和Brother专用过滤器,它直接把打印数据转成Brother打印机可以识别的PCL或者BR-Script格式。cupswrapper包则是把LPR这一套封装成CUPS认识的打印队列,让Linux图形界面的打印设置里能直接选择这台打印机。

简单类比:LPR驱动是"发动机",cupswrapper是"方向盘和仪表盘"。没有LPR,cupswrapper装上了也没有意义,因为它调用的底层程序不存在;只装LPR不装cupswrapper,CUPS界面里找不到打印机队列,无法直接打印。所以这两个包必须配套安装。

实际安装顺序一般是先LPR后cupswrapper,官方脚本里也会做依赖检查。如果你用dpkg直接安装,建议把两个文件都下载好放在同一个目录,然后逐条安装,避免官网的脚本因为找不到依赖中断。

4. deb系发行版的完整安装流程(以Ubuntu/Debian/统信UOS为例)

4.1 安装依赖包

现代Brother驱动主要是给64位系统准备的,依赖项包括libc6、libcups2、libcupsimage2、libstdc++6等。Ubuntu 22.04以上版本基本都自带,但Debian的最小化安装或者一些服务器版系统可能需要手动装一下:

sudo apt update sudo apt install libcups2 libcupsimage2 libstdc++6

如果你用的是纯64位系统但下载了i386的驱动,还需要先把i386架构加进来,再装对应的32位依赖库:

sudo dpkg --add-architecture i386 sudo apt update sudo apt install libcups2:i386 libcupsimage2:i386 libstdc++6:i386

这一步很多人跳过,直到安装时报出dependency is not satisfiable: libcupsimage2才意识到漏了。事先把依赖装好,后面就顺很多。

4.2 安装LPR和cupswrapper包

打开终端,cd到驱动文件所在目录,先装LPR包:

sudo dpkg -i brother-lpr-driver-xxx-0.i386.deb

注意这里我写的文件名是示意,实际以你下载的文件名为准。如果你的系统是64位,而驱动只有i386版本,装完之后系统里会运行32位的后台程序,这是正常的,因为Brother部分老型号只发布了32位驱动。

然后装cupswrapper包:

sudo dpkg -i brother-cupswrapper-xxx-0.i386.deb

如果dpkg报依赖错误,用sudo apt --fix-broken install修复一下再继续。假如这个命令把依赖装好了,但Brother的包还是显示未配置状态,可以强制重新配置:

sudo dpkg --configure -a

4.3 验证打印机队列是否生成

安装成功后,CUPS会自动创建一个打印机队列,名字通常是Brother_XXX_series的形式。验证一下:

lpstat -p -d

能看到类似printer Brother_HL-L2350DW_series is idle. enabled since ...的输出,就说明队列已经创建好了。接着向队列发送一个测试页:

lp -d Brother_HL-L2350DW_series /etc/nsswitch.conf

这条命令会把/etc/nsswitch.conf文件当作文本打印出去。如果打印机吐出一页内容,说明驱动链路已经通了,可以进入图形界面的打印设置里把默认打印机调整成这台设备。

如果lpstat看不到队列,可以使用Brother自带的配置脚本重新配置:

sudo /usr/local/Brother/info/brsetup

这个脚本会交互式地让你选择连接方式(USB或网络),然后重新生成队列配置文件,在cupswrapper安装失败或者队列丢失时很管用。

4.4 把用户加入lp组解决USB权限问题

USB连接场景下,安装完驱动队列也建好了,但打印时可能提示Permission denied。这是因为/dev/usb/lp0这个设备节点的访问权限只对lp组的用户开放。解决办法是把当前用户加进lp组:

sudo usermod -aG lp $USER

注意:修改组之后需要重新登录一次终端会话才生效,或者直接注销再登录图形界面。别急着打印,先重新登录再测试。

另外有的发行版还会用到lpadmin组来管理打印队列,顺手一起加进去也不亏:

sudo usermod -aG lpadmin $USER

5. 网络打印机的驱动配置:从USB到无线/有线网络

5.1 先确认打印机IP可达

办公室场景通常是网络打印机。用Brother操作面板打印网络配置页,或者在路由器管理后台找到打印机分配的IP地址。然后在终端里测试连通性:

ping 192.168.1.100

能通就进行下一步。如果有防火墙,要确保Linux主机的outgoing方向对打印机的515端口(LPD)或9100端口(RAW打印)是放行的。Ubuntu默认防火墙不拦截出站连接,一般问题不大,但公司内网有统一防火墙策略的话,需要在防火墙上放行到打印机IP的这几个端口。

5.2 用brsetup脚本配置网络接口

刚才提到的brsetup脚本同样适用于网络模式。运行:

sudo /usr/local/Brother/info/brsetup

选择网络连接对应的选项,输入打印机的IP地址,脚本会自动在CUPS里创建基于LPD协议的队列。Brother的LPD队列名通常是binary_p1,这个值不是随便填的,它是Brother打印机固件里写死的LPD队列名。如果配置时填错了队列名(比如填成text_p1或者自定义名称),打印作业会一直卡在队列里。

配置完成后再次用lpstat -p -d确认队列状态,然后打印测试页。如果测试页出不来,先检查打印机面板有没有报错,再查看CUPS的日志:

sudo tail -f /var/log/cups/error_log

重点看日志里有没有Unable to connect to 192.168.1.100:515或者Connection refused之类的内容,这两种报错说明网络路径不通,问题大概率不在驱动而在网络。

5.3 双机共享打印机时驱动与CUPS的配合

如果办公室是"一台打印机+一台常开的Linux主机做打印服务器+其他电脑通过网络访问",那打印服务器上要开CUPS的远程访问功能。编辑/etc/cups/cupsd.conf,确保Listen配置允许局域网访问,并正确设置Allow规则。这个场景下,其他客户机不需要安装Brother官方驱动,只要在系统打印设置里添加一个"IPP网络打印机",填http://打印服务器IP:631/printers/队列名即可。

当然如果你用的是Windows客户机连接Linux打印服务器,Windows自带的通用驱动通常也能兼容,因为它走的是IPP或者LPD协议,Brother专有指令在服务器端已经被翻译成了打印机认识的格式。

6. 扫描功能:brscan4/brscan5驱动和常见问题

6.1 扫描和打印驱动是独立安装的

很多人在Linux下装完Brother打印机驱动发现只能打印不能扫描,这不是系统问题,而是扫描驱动没有单独安装。Brother的扫描驱动包叫brscan4(较新的机型是brscan5),同样在官网下载页面里。

安装方式也是dpkg:

sudo dpkg -i brother-brscan4-xxx-0.amd64.deb

装完以后,扫描驱动不会像打印驱动那样自动创建队列,它需要手动把扫描仪设备注册到驱动里。官方提供的命令是brsaneconfig4:

sudo brsaneconfig4 -a name=Brother_MFC model=MFC-L2710DW ip=192.168.1.100

参数解释:name是你在扫描软件里看到的名字,可以自己起;model必须是Brother官网对应型号支持的名称,一般与驱动页面上的型号完全一致;ip是打印机的IP地址。如果型号名填错,此后任何扫描软件都发现不了这台设备。

6.2 用SANE和simple-scan验证扫描链路

装完brscan4并添加设备后,用scanimage命令直接验证:

scanimage -L

输出里如果能看到类似device \brother4:net1;dev0` is a Brother MFC-L2710DW这样的条目,说明扫描仪已经被SANE(Scanner Access Now Easy)框架识别到了。之后打开simple-scan或者XSane`,就能直接扫描。

常见的USB连接扫描问题,是当前用户没有访问扫描设备节点的权限。SANE框架默认只允许scanner组访问,把用户加进去:

sudo usermod -aG scanner $USER

如果是网络扫描,SANE本身通过brscan4的socket与打印机通信,不需要扫描器设备节点,权限问题基本不存在。但要注意主机的出站防火墙要放行打印机IP的54925端口(brscan4默认使用)。

6.3 面板按键扫描(Scan-key-tool)要不要装

Brother部分一体机支持按打印机面板上的扫描键直接扫描到电脑,这需要额外安装brscan-skey包。安装方法与brscan4类似,装完后运行brscan-skey在后台监听打印机发来的扫描请求,设置接收目录:

brscan-skey -l

默认接收目录是/home/用户名/Brother,也可以在配置文件里修改。这个功能对办公室场景确实方便,但对单机用户来说意义不大,不装不影响SANE扫描。

7. 排查实录:从驱动安装到出纸的完整排错链路

下面这条链路是我自己在实际环境中用过的,按顺序一步步排查,能覆盖绝大多数Brother驱动安装后的"能识别但不能打印"的问题。

第一步,确定队列状态。运行lpstat -t,观察每个打印队列的状态是idle、disabled还是stopped。如果disabled,用cupsenable 队列名重新启用;如果stopped,多半是之前有报错任务卡住,用cupsreject 队列名然后cupsenable 队列名重置。

第二步,看CUPS日志。/var/log/cups/error_log是排查一切的钥匙,把它打开,把日志级别调到debug会给出更多细节(编辑/etc/cups/cupsd.conf,把LogLevel改成debug,重启cups服务):

sudo systemctl restart cups sudo tail -f /var/log/cups/error_log

第三步,根据日志内容判断问题类型。日志如果出现Unable to open device path "/dev/usb/lp0",基本就是USB设备节点权限问题,重新确认ls -la /dev/usb/lp0的属主和用户组,确保当前用户属于lp组。

日志如果出现Connection refused或者Host is down,那就是网络路径不通。检查打印机IP是否变了,Brother打印机默认开启DHCP,IP地址可能因为路由器重启而变化,需要重新用brsaneconfig4或brsetup更新IP。

第四步,留意Brother后台服务进程。LPR驱动安装后会注册一个brother_lpd服务,用systemctl status brother_lpd查看。如果服务没有运行,网络打印必然失败:

sudo systemctl enable --now brother_lpd

有些老型号的Brother LPR驱动在systemd下不能自动创建服务文件,需要手动写一个,或者用service brother_lpd start来临时启动。这个问题在Ubuntu 22.04之后特别常见,因为老驱动包里的init脚本已经不兼容纯systemd环境了。

第五步,检查打印作业祥细信息。lpstat -W not-completed能列出所有未完成的作业,cancel -a 队列名清除全部排队作业。很多时候作业卡在队列里不是驱动坏了,只是之前的失败任务一直占着队列不释放,清空之后就好了。

8. 直接换内核打印驱动的备选方案

如果你的Brother打印机型号很老,官网驱动已经不维护了,在64位新系统上装32位老驱动各种报错,还可以用开源的brlaser驱动替代。它直接在CUPS里提供Brother激光打印机的支持,安装方式比官方驱动简单得多:

sudo apt install brlaser

装完之后CUPS里会自动出现Brother分类下的对应型号,手动添加打印机时选择这个驱动创建队列就行。brlaser的效率对大多数家庭和办公打印场景完全够用,但它不支持扫描功能,扫描还是得靠官方brscan驱动。

另外还有一个通用方案是先把打印机配置成IPP Everywhere模式。部分新一代Brother机型支持AirPrint/IPP Everywhere,直接用CUPS的driverless功能自动发现和配置打印机:

sudo apt install cups-filters driverless driverless list

driverless list会列出局域网内支持IPP协议的打印机,显示类似i//192.168.1.100/ipp/print的地址,用这个地址在CUPS里添加打印机,完全不用安装任何厂商驱动。这个方案我实测对2018年后发布的Brother机型兼容性非常好,而且打印质量、双面打印等高级功能都能正常识别。

9. 我在多台机器上实测后的几点经验总结

先说一下我自己的环境背景:一台Ubuntu 24.04台式机,USB连接老款Brother HL-1208;一台Debian 12的小主机,局域网连接MFC-L2710DW;还有一台统信UOS的机器,装了DCP-L2550DW的扫描驱动。三种场景的坑我都踩过一遍,印象最深的是HL-1208这个老家伙,官网只提供i386驱动,在64位Ubuntu上装完,打印十个文件大概有一次会丢字,后来换了brlaser驱动,问题直接消失。

所以我的建议是:如果你机器型号在2020年之后发布的,直接用driverless或者官方deb包都行;如果是老机型,优先折腾brlaser,再考虑官方老年驱动。扫描则无论新旧都建议用官方brscan包,开源方案对扫描的支持远没有打印那么成熟。

另外两个单独想提醒的点。

第一,装驱动之前先把系统里自带的、之前手动装过的其他打印机驱动清理干净。CUPS里如果同时残留多个同型号的过期队列,添加新队列时容易踩到端口占用或者PPD冲突。用lpadmin -x 队列名删除旧队列,再装新驱动。

第二,Brother打印机的省电模式有时候会"坑"Linux驱动。部分机器在深度睡眠状态下会关闭LPD端口或者USB响应,导致Linux主机的打印任务一直尝试连接直到超时。如果打印机不是经常使用,建议在打印机设置里把省电模式调到"不自动关闭端口"或者关闭深度睡眠,必要时直接改用USB连接,USB连接不存在端口沉睡的问题。

驱动安装这件事,说到底就是"理解发行版、理解驱动包的层级结构、理解打印机的工作方式"这三件事。思路理顺了,任何一台Brother机器在Linux下都能搞定,无非是走官方包还是走开源驱动的问题。希望这篇能把你在安装时遇到的"差一步"给补上。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/10/1 9:19:50

Switch玩3DS和NDS宝可梦:模拟器安装与优化指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/10/1 9:19:49

游戏逆向与反作弊攻防实战:从内存扫描到行为建模

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/10/1 9:19:33

Termux 服务自启动:runit 与 Termux:Boot 实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/10/1 9:19:15

操作系统内存管理大题通关:分页、页面置换与有效访问时间

1. 先建一张题型地图:内存管理大题就这六类问法内存管理这一章,教材上理论铺得最开,但落到卷子上,大题的形状其实非常固定。你翻十套卷子,会发现它们反反复复就在问那六件事:地址怎么变、页表占多大、页面怎…

作者头像 李华
网站建设 2026/10/1 9:18:36

汽车电子开发全链路:ECU架构、测试验证与故障注入实践

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/10/1 9:18:18

火焰目标检测实战:YOLO数据集构建、模型训练与推理部署全攻略

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华