news 2026/8/14 14:02:51

没有官方驱动的 Linux 打印机,foo2zjs 免费搞定 100+ 型号兼容

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
没有官方驱动的 Linux 打印机,foo2zjs 免费搞定 100+ 型号兼容

没有官方驱动的 Linux 打印机,foo2zjs 免费搞定 100+ 型号兼容

【免费下载链接】foo2zjsA linux printer driver for QPDL protocol - copy of http://foo2zjs.rkkda.com/项目地址: https://gitcode.com/gh_mirrors/fo/foo2zjs

朋友送了我一台退役的 HP LaserJet 1020。Windows 里插上就打印,可换到 Linux 桌面,系统只报一句"打印机未连接"。不是机器坏了,也不是系统装错了,而是厂商压根没给 Linux 写驱动。相信你也遇到过类似情况:官网翻遍只有 .exe 安装包,打印队列永远灰着,最后一叠资料只能抱着 U 盘去楼下文印店。

foo2zjs 就是来填这个坑的。这是一款免费开源的 Linux 打印机驱动套件,通过逆向工程支持 ZJ-Stream、QPDL、HIPERC 等 8 种专有打印协议,覆盖 HP、Samsung、Oki、Konica Minolta 等品牌的 100 多款激光打印机,还一并打包了 PPD 配置、ICC 色彩文件和固件加载方案。装一次,往后就能安心打印。

🎯 先搞懂:打印机在 Linux 上"哑火"的根源

Linux 下所有打印任务都归 CUPS(通用 Unix 打印系统)管,但 CUPS 只擅长和"说标准话"的设备沟通。不少激光打印机为了压缩数据、提升速度,用了厂商自研的专有协议,比如 HP 早期的 ZJ-Stream、Samsung 的 QPDL。厂商一看 Linux 用户少,干脆不出驱动,于是设备明明连在 USB 上,系统却"听不懂"它。

foo2zjs 的思路很朴素:把这些协议的编码规则一条条逆向出来,写成转换引擎。你发出打印任务,它先把 PostScript/PDF 数据翻译成打印机听得懂的语言,再交给设备执行——相当于在 CUPS 和打印机之间,安了一位尽职的同声传译。

下面这张对比表,能直观看出"装没装"的差别:

对比项没装 foo2zjs 时装好之后
设备识别系统报"未连接"正常入队、按型号识别
打印效果无法测试testpage 可正常出纸
色彩管理按 ICC 文件精确还原
日常维护反复折腾无解固件自动加载、即插即用

🔧 核心能力:8 个驱动模块 + 一整套配套资源

foo2zjs 的驱动按协议"分家",一个协议一个引擎,互相独立、互不干扰:

  • foo2zjs→ ZJ-Stream,主攻 HP 黑白激光,1020/1005/1018 都是它管的
  • foo2hp→ 同一协议的彩色变体,服务 HP Color LaserJet 系列
  • foo2qpdl→ QPDL,Samsung CLP 系列以及部分 Xerox Phaser
  • foo2lava→ LAVAFLOW,Konica Minolta magicolor 机型
  • foo2hiperc→ HIPERC,Oki 新一代网络彩色激光机
  • foo2oak→ OAKT,HP LaserJet 1500 与 Kyocera KM 系列
  • foo2slx→ SLX,对应 Lexmark C500n
  • foo2xqx→ XQX,覆盖 HP LaserJet M1005/P1005 等机型

光有引擎还不够,项目把配套资源也备齐了:

  • PPD 文件库PPD/目录下上百个配置文件,定义了纸张尺寸、分辨率、纸盒、色彩模式等选项,装驱动时自动匹配
  • 色彩管理工具icc2ps/目录包含 CIECAM02/CIECAM97 色彩模型和转换核心,配合仓库根目录的厂商 ICC 文件(如samclp300-0.icmkm2430_0.icm)可做专业校色
  • 固件与解码工具:内置sihp*.img固件镜像,以及 zjsdecode、qpdldecode、hipercdecode 等逆向调试工具

🚀 快速上手:三步把驱动跑起来

整个过程不用改系统配置,跟着做就行。

第一步:取源码

git clone https://gitcode.com/gh_mirrors/fo/foo2zjs cd foo2zjs

第二步:编译安装

make sudo make install

第三步:按型号拉固件并重启 CUPS

以 HP LaserJet 1020 为例,getweb会自动下载对应的固件和配置文件;HP 机型建议再配一下热插拔支持,之后插上 USB 就能自动加载固件:

./getweb 1020 sudo make install-hotplug sudo make cups

完成后在系统打印设置里添加打印机,选到对应型号的 PPD,就可以打印测试页了。

🙋 新手必看的 5 个踩坑问答

Q1:HP 1020 的固件为什么"每次都丢"?

这类老机器内存太小,固件平时存放在电脑端,关机重启后就没了。make install-hotplug会写好 udev 规则,让系统在你插入 USB 时自动把固件下发到打印机,属于一次性配置、长期省心。

Q2:打印出来有条纹或者偏色怎么办?

先查 Ghostscript 版本,部分版本在渲染上存在已知问题,官方推荐的区间是 8.54~8.71。其次确认选用的 PPD 和 ICC 文件与机型严格对应,不要混用。

Q3:系统压根认不出打印机?

先用lsusb确认设备在线,再用usb_printerid /dev/usb/lp0读取打印机的型号 ID。如果一直没有响应,多半是 usblp 内核模块状态异常,重新加载一下即可:

sudo modprobe -r usblp && sudo modprobe usblp

Q4:想打印 4×6 英寸照片这类非标尺寸?

在打印参数里直接指定即可,例如-o media=Custom.4x6in -o PageSize=Custom.4x6in,多数机型都支持自定义纸张。

Q5:需要双面打印但没有双面器?

foo2zjs 支持手动双面:先打奇数页,翻面后按逆序补偶数页:

lp -o page-set=odd document.pdf lp -o page-set=even -o outputorder=reverse document.pdf

💡 进阶玩法:校色、网络打印与排障三板斧

色彩不满足于"能打出来"?可以走完整校色流程:用printer-profile.sh结合仓库内的 ICC 文件生成设备配置文件,再通过 icc2ps 做色彩空间转换,最后打印测试页微调参数,直到输出接近屏幕所见。

公司里打印机不插 USB、只连网线?可以直接把驱动用起来,设备 URI 按你的网络协议填:

  • LPD:lpd://192.168.1.100/lp
  • JetDirect:socket://192.168.1.100:9100
  • IPP:ipp://192.168.1.100/ipp

真出问题也别慌,项目自带"病历本":zjsdecode等工具能解码打印数据流,regress.txt记录了回归测试用例,对照着查,多半能找到问题出在渲染阶段还是传输阶段。

🏠 什么场景最值得用上 foo2zjs

  • 家庭用户:二手市场淘来的 LaserJet 1020/1005,几十块的成本换一个能打多年的"钉子户"
  • 中小企业:带网卡的 Color LaserJet 2600n、magicolor 2530 DL、Oki C5100n 等,一条网线搞定全办公室打印
  • 学校机房:P1005/P1006 这类低功耗单色机,加一台 M1005 MFP,讲义、试卷需求基本全覆盖

📚 收尾之前,再给你指条路

Linux 打印的兼容性问题,看似是硬件玄学,其实只差一个肯较真的逆向工程。foo2zjs 把这件事做到了开源、免费、可持续:想了解协议细节,可以翻源码目录里的foo2zjs.czjs.h;想研究色彩管理,icc2ps/就是现成的教材;安装过程中遇到任何疑问,INSTALL文档写得比大多数商业软件还详细。下次再有人抱怨"Linux 打不了印",把这篇指南转给他就够了。

【免费下载链接】foo2zjsA linux printer driver for QPDL protocol - copy of http://foo2zjs.rkkda.com/项目地址: https://gitcode.com/gh_mirrors/fo/foo2zjs

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

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

STM32学习笔记——GPIO输出与输入

2.1GPIO输出常见的四个GPIO输出函数分析1.GPIO_ResetBits GPIO_ResetBits 的作用是将指定引脚输出低电平,而不影响同一端口上其他未指定引脚的状态void GPIO_ResetBits(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin);GPIOx:指向 GPIO 端口的指针,…

作者头像 李华
网站建设 2026/8/14 13:59:25

Windows系统文件sqlite3.dll丢失找不到问题解决

在使用电脑系统时经常会出现丢失找不到某些文件的情况,由于很多常用软件都是采用 Microsoft Visual Studio 编写的,所以这类软件的运行需要依赖微软Visual C运行库,比如像 QQ、迅雷、Adobe 软件等等,如果没有安装VC运行库或者安装…

作者头像 李华
网站建设 2026/8/14 13:59:19

Windows系统文件SqlServerSpatial120.dll丢失找不到问题解决

在使用电脑系统时经常会出现丢失找不到某些文件的情况,由于很多常用软件都是采用 Microsoft Visual Studio 编写的,所以这类软件的运行需要依赖微软Visual C运行库,比如像 QQ、迅雷、Adobe 软件等等,如果没有安装VC运行库或者安装…

作者头像 李华
网站建设 2026/8/14 13:56:51

大模型应用技巧:当检索无果时,如何设计完美的兜底策略(收藏版)

做过智能客服的同学,还有做过企业知识库助手的同学,大概率都碰到过这么一个场景。 就是用户兴致勃勃地问了一个问题,然后系统去检索了一圈,结果啥也没搜到。那这个时候该怎么办呢? 如果说放任模型在那里自由发挥的话&a…

作者头像 李华