Deepin Linux下配置富士施乐M115b打印机驱动:CUPS与foo2zjs实战指南
1. 项目缘起当国产Linux遇上老牌打印机最近在把家里的老笔记本换成Deepin Linux图的就是它界面漂亮、对中文友好用起来跟Windows差不多顺手。一切都挺顺利直到我需要打印一份文件麻烦就来了。我手头这台富士施乐DocuPrint M115b激光打印机还是几年前图它便宜皮实买的在Windows下即插即用从没出过问题。结果插上Deepin系统倒是能识别出有个USB打印设备但尝试打印时要么队列直接显示“已停止”要么就是吐出来一张满是乱码的纸。这其实是个非常典型的场景很多家用或小型办公环境里都会有一两台像M115b这样的经典款激光打印机它们性能稳定、耗材便宜完全能满足日常文档打印需求。但当用户转向Deepin这类优秀的国产Linux发行版时这些在Windows/macOS下被厂商“保姆级”照顾的设备往往就成了拦路虎。驱动是横在硬件与操作系统之间的一道鸿沟。打印机厂商通常不会为Linux尤其是较老的型号提供官方的、易用的驱动支持。这就得靠我们用户自己或者更准确地说是依靠开源社区的力量去“折腾”出一个可用的解决方案。所以这篇记录就是关于如何在Deepin Linux上为富士施乐DocuPrint M115b这台“老将”寻找、配置并最终搞定打印驱动的全过程。这个过程不仅适用于这台特定型号其思路和方法对于解决大多数Linux下的老旧打印机驱动问题都有很大的参考价值。无论你是刚接触Linux的新手还是有一定基础但被外设问题困扰的用户希望这篇详尽的踩坑和填坑记录能帮到你。2. 驱动方案选型与核心思路拆解面对Linux下无官方驱动的硬件我们的核心思路不是“安装”一个现成的驱动而是“配置”一个能让系统与打印机正确通信的桥梁。这个桥梁在Linux打印体系中通常是PPD文件。2.1 Linux打印体系CUPS与PPD文件首先得理解Linux是怎么处理打印的。核心是一个叫做CUPS的服务全称是Common Unix Printing System。你可以把它想象成一个智能的打印调度中心。当你在WPS或浏览器里点击“打印”应用程序会把打印任务交给CUPS。CUPS则负责与具体的打印机硬件对话把通用的打印指令转换成打印机听得懂的“语言”。这里的关键就是“打印机语言”。不同品牌、甚至同品牌不同型号的打印机使用的“语言”即页面描述语言可能不同常见的有PCL、PostScript等。PPD文件就是一本“翻译词典”它详细描述了某款打印机支持的语言、分辨率、纸张尺寸、双面打印等所有功能特性。CUPS拿到PPD文件就知道该如何与这台打印机正确沟通了。对于富士施乐DocuPrint M115b我们的目标就是为它找到一个能用的PPD文件并正确配置到CUPS中。2.2 方案选择开源驱动 vs. 厂商驱动 vs. 通用驱动通常有三种路径开源驱动首选Linux社区大神们反向工程或根据公开协议制作的驱动集成在发行版仓库或OpenPrinting项目中。优点是开源、免费、与系统集成好。厂商驱动次选打印机厂商提供的Linux驱动包。对于老型号往往很难找到或者只提供源代码需要自己编译过程复杂。通用驱动备选如foo2zjs、gutenprint等支持非常广泛的打印机型号通过模拟一个通用的打印机语言如PCL来工作。兼容性好但可能无法发挥打印机的全部特性。针对M115b经过搜索和测试最可靠的方案是使用foo2zjs驱动套件。这是一套非常著名的开源驱动专门用于支持那些使用ZjStream语言常见于国产和日系打印机或类似语言的打印机。富士施乐的很多型号包括M115b都在其支持列表中。它的原理是为这些打印机提供一个通用的、高质量的PPD文件让CUPS能够驱动它们。注意在尝试任何驱动前务必先通过lsusb命令确认系统已识别打印机硬件。将打印机通过USB连接并开机在终端输入lsusb你应该能看到类似“Bus 001 Device 005: ID 0924:3b6f Fuji Xerox Co., Ltd”的信息。这是所有后续操作的基础。3. 详细实操步骤从零配置M115b驱动下面是在Deepin V23基于Debian 12上的完整操作流程。其他基于Debian/Ubuntu的发行版如Ubuntu、Linux Mint步骤几乎完全相同。3.1 第一步系统更新与CUPS服务确认首先确保系统是最新的并且CUPS服务已经安装并运行。打开终端执行以下命令# 更新软件包列表 sudo apt update # 升级所有已安装的软件包可选但推荐 sudo apt upgrade -y # 安装CUPS打印服务Deepin通常已预装此命令用于确认 sudo apt install cups -y # 启动CUPS服务并设置开机自启 sudo systemctl start cups sudo systemctl enable cups # 检查CUPS服务状态确认是“active (running)” sudo systemctl status cups如果CUPS服务状态正常我们就可以通过Web界面http://localhost:631或命令行来管理打印机。对于新手Web界面更直观。3.2 第二步安装foo2zjs驱动foo2zjs驱动包在Deepin/Debian的默认仓库里就有安装非常方便。# 安装foo2zjs驱动包及其相关组件 sudo apt install printer-driver-foo2zjs -y这个命令会安装核心的驱动文件、工具以及一大批打印机型号的PPD文件。安装完成后PPD文件通常存放在/usr/share/ppd/目录下其中就包含我们需要的M115b的PPD文件。3.3 第三步通过CUPS Web界面添加打印机这是最关键的一步。确保打印机已开机并连接到电脑。打开浏览器访问http://localhost:631。这是CUPS的本地管理页面。点击顶部导航栏的“Administration”。在“Printers”部分点击“Add Printer”。系统可能会要求你输入用户名和密码。这里需要输入具有sudo权限的Linux系统用户名和密码不是Deepin的图形登录密码除非你设置了root密码并用root登录。选择连接方式在“Local Printers”列表中你应该能看到你的打印机名称可能类似“Fuji_Xerox_DocuPrint_M115b”或“USB Printer #1”。选择它点击“Continue”。命名打印机给打印机起个名字如M115b可以填写描述和位置方便识别。点击“Continue”。选择驱动最关键的一步在“Make”制造商列表中向下滚动找到并选择“Foo2ZJS”。点击“Continue”后在“Model”型号列表中寻找与M115b匹配的选项。经过测试最合适的PPD是Foo2ZJS - Fuji Xerox DocuPrint M115b Foomatic/foo2zjs-z2 (recommended)。如果列表中没有精确匹配的“M115b”可以尝试选择Foo2ZJS - Fuji Xerox DocuPrint P115 w (recommended)或Foo2ZJS - Fuji Xerox DocuPrint M115 w (recommended)。M115b/M115w/P115w这几款机器的打印引擎和语言非常相似驱动通常是通用的。完成设置选择好驱动后一路“Continue”最后点击“Set Default Options”和“Print Test Page”。如果一切顺利CUPS会向打印机发送一张测试页。请务必检查这张测试页的打印质量确保文字清晰、没有乱码或缺失。3.4 第四步在Deepin桌面环境中配置CUPS添加成功后通常Deepin的系统设置 - 打印机里会自动出现这台打印机。为了确保万无一失我们可以手动检查一下。打开Deepin的“控制中心”。找到“打印机”设置。点击“添加打印机”系统会自动搜索。你应该能看到我们刚刚在CUPS里添加的M115b。选中它点击“添加”。Deepin会从CUPS中同步配置并将其设为可用的系统打印机。至此你就可以在WPS、LibreOffice、浏览器等任何应用程序中选择“M115b”进行打印了。4. 疑难杂症排查与进阶技巧实际操作中很少一帆风顺。下面是我在折腾过程中遇到的一些典型问题及解决方法。4.1 常见问题速查表问题现象可能原因排查与解决方法CUPS页面无法打开 (localhost:631)CUPS服务未运行或防火墙阻止1.sudo systemctl status cups检查状态。2. 运行sudo systemctl start cups。3. Deepin默认防火墙宽松一般无需处理。添加打印机时找不到USB设备1. USB线或接口问题2. 权限问题3. 内核未识别1. 换线、换USB口重启打印机。2. 将用户加入lp和lpadmin组sudo usermod -aG lp,lpadmin $USER注销并重新登录生效。3. 执行lsusb命令确认是否有富士施乐设备。打印测试页失败任务“已停止”1. PPD文件选择错误2. 驱动过滤器问题1. 在CUPS管理页面进入该打印机设置删除后重新添加尝试不同的PPD如M115 w或P115 w。2. 检查CUPS错误日志sudo tail -f /var/log/cups/error_log根据错误信息搜索。打印出乱码或空白页页面描述语言不匹配这是最核心的问题。几乎可以确定是PPD文件不对。必须确保选择的是foo2zjs-z2推荐的PPD。如果选成了PostScript或PCL相关的PPD必然乱码。Deepin桌面找不到已添加的打印机CUPS与桌面环境通信问题1. 重启CUPS服务sudo systemctl restart cups。2. 在Deepin打印机设置中手动添加地址选择“其他”输入ipp://localhost/printers/M115b(替换为你的打印机名)。打印速度慢或卡顿驱动处理模式问题在CUPS打印机属性中找到“Printer State”下的“Configure Printer”尝试将“Resolution”从高分辨率如1200x600dpi调整为600x600dpi可以显著提升处理速度。4.2 实操心得与独家技巧“推荐”字样是黄金标准在CUPS选择PPD时认准后面带有“(recommended)”的选项。这是驱动维护者经过测试标记的最佳选择成功率远高于自己胡乱尝试。优先使用CUPS Web界面虽然Deepin提供了图形化的打印机设置工具但在处理这类“疑难杂症”打印机时CUPS的Web界面更底层、更强大选项也更全面。很多高级调试和设置只能在Web界面完成。善用日志排错/var/log/cups/目录下的error_log和page_log是宝藏。打印失败时第一时间用sudo tail -f /var/log/cups/error_log命令实时查看日志错误信息会直接指向问题根源比如“Unable to convert file 0 to printable format”往往就是PPD不对。驱动安装的“干净”原则如果你之前尝试过其他方法比如从富士施乐官网下载.deb包安装导致系统混乱可以先尝试彻底清理。命令如下# 删除所有已配置的打印机 sudo lpadmin -x ALL # 清除CUPS缓存谨慎操作会删除所有打印机 sudo systemctl stop cups sudo rm -rf /etc/cups/ppd/ sudo rm -f /etc/cups/printers.conf* sudo systemctl start cups然后从头开始按照本文步骤操作。这能避免旧配置的干扰。网络打印的可能性如果你的M115b支持有线网络需要额外模块配置起来其实更简单稳定。在CUPS添加打印机时选择“Internet Printing Protocol (ipp)”或“AppSocket/HP JetDirect”输入打印机的IP地址如ipp://192.168.1.100后续驱动选择步骤与USB方式完全相同。网络连接避免了USB的权限和热插拔问题。5. 驱动原理浅析与方案对比为什么foo2zjs能驱动M115b这涉及到一点打印机语言的知识。M115b这类经济型激光打印机通常不使用昂贵的、需要授权费的PostScript或PCL6语言而是使用厂商自己定义的、更轻量的语言。富士施乐很多型号使用的是基于ZjStream的变种。foo2zjs驱动的作用就是接收CUPS传来的、标准的、格式化的打印数据通常是PDF或光栅图像然后通过其内置的算法将这些数据**转换渲染**成打印机芯片能直接执行的ZjStream指令流。它提供的PPD文件则告诉CUPS“我能处理这种转换并且我知道M115b这台机器支持哪些纸张、哪些分辨率”。我们可以对比一下几种方案的优劣方案优点缺点适用场景foo2zjs (本文方案)开源免费社区支持好与CUPS集成无缝打印质量高功能完整。需要手动选择PPD对新手稍有门槛。绝大多数情况下的首选适用于M115b及同类兄弟型号。官方Linux驱动理论上最匹配可能包含特殊工具。1. 对于M115b官网很难找到。2. 即使找到可能是源代码包需要编译依赖复杂。3. 可能只支持旧版内核。仅在官方明确提供且易于安装如.deb/rpm包时考虑。Gutenprint通用驱动支持型号极广图形界面选择方便。对某些特定型号如M115b的支持可能是“模拟模式”打印质量或速度可能不如专用驱动。当foo2zjs不包含你的打印机型号时的备选方案。Windows驱动 cups-pdf完全不依赖Linux驱动。1. 需要安装cups-pdf虚拟打印机。2. 打印流程复杂先打印到PDF再手动处理效率极低。3. 无法实现后台自动打印。极不推荐仅作为理论上的“最后手段”。显然从可靠性、易用性和性能综合考虑foo2zjs方案是最优解。它本质上是在开源社区的努力下为一大批“非主流”打印机型号建立了与Linux标准打印体系CUPS的可靠连接。6. 长期使用维护与性能优化驱动装好只是开始要让打印机在Linux下稳定高效地工作还需要一些维护和优化。6.1 耗材状态监控在Windows下厂商软件通常会弹窗提醒碳粉不足。在Linux下我们可以通过命令行工具foo2zjs包自带的工具来查询。首先确保打印机通过USB连接然后尝试# 查询打印机状态不同型号支持的命令可能不同 sudo /usr/lib/cups/filter/command2foo2zjs -p /dev/usb/lp0 status或者更通用的方法是安装snmp工具来查询网络打印机的信息如果打印机支持网络并开启了SNMP。对于USB打印机Deepin的打印机状态窗口有时也能从驱动反馈中获取粗略的墨粉余量信息但这取决于驱动对具体型号的支持程度。对于M115b更实际的方法是记住大概的打印页数或者直接观察打印质量变淡时更换硒鼓。6.2 打印队列管理与故障恢复打印机偶尔卡住是常有的事。学会管理打印队列非常有用。# 查看所有打印任务 lpstat -o # 取消所有打印任务 cancel -a # 取消指定任务ID例如M115b-12 cancel M115b-12 # 禁用/启用打印机 cupsdisable M115b cupsenable M115b如果打印机无响应一个标准的故障恢复流程是1) 在CUPS Web界面或命令行cupsdisable禁用该打印机2) 物理关闭打印机电源3) 等待10秒后重新开机4)cupsenable启用打印机。这能清除打印机内存中的缓存错误。6.3 性能调优设置在CUPS Web界面中进入你的M115b打印机设置点击“Administration” - “Modify Printer”找到“Configure Printer”或“Default Options”可以调整以下关键参数以提升体验分辨率 (Resolution)将默认的“1200x600 dpi”或“1200x1200 dpi”改为“600x600 dpi”。对于日常文档打印600dpi清晰度完全足够但能大幅减少需要处理的数据量提升打印速度特别是对于复杂页面或老旧电脑。打印质量 (Print Quality)选择“Normal”而非“High”。原理同上。双面打印 (Duplex)如果打印机硬件支持双面打印M115b不支持这里可以设置默认双面。省墨模式 (Economy Mode)如果选项中有开启后能节省碳粉适合内部草稿打印。经过这样一番从原理到实操从安装到排错再到优化维护的完整折腾这台富士施乐DocuPrint M115b终于在Deepin Linux上重获新生。整个过程的核心其实就是理解Linux下“驱动即配置”的理念并借助开源社区成熟的解决方案foo2zjs来填补厂商支持的空白。现在它就像在Windows下一样安静地待在打印机列表里随时等待工作指令。这种通过自己动手解决问题让老旧硬件在新平台上继续发挥价值的成就感或许就是使用Linux的乐趣之一吧。