news 2026/8/20 16:36:29

打印机接上 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

把一台在 Windows 下兢兢业业干了十年的 HP LaserJet 1020 插进 Linux 电脑,打印队列瞬间变成一长串"已停止"的红字——这种尴尬,几乎每个转投 Linux 的人都会撞上。foo2zjs 就是专门收拾这个烂摊子的免费开源打印机驱动:它靠逆向工程解读厂商的私有协议,让一百多款"官方不支持 Linux"的老激光机重新吐纸。全程不用花一分钱,也不用懂底层技术,照着本文一步步来就行。

为什么打印机一接 Linux 就集体"失语"

先澄清一个误会:打印机并没坏,硬件好得很,是你的系统听不懂它说话。

多数家用、办公激光机不使用通用的打印语言,而是内置了厂商私有的数据格式——ZJ-Stream、QPDL、LAVAFLOW、HIPERC、OAKT、SLX、XQX、HBPL2,这些词对普通用户很陌生,却是打印机真正的"母语"。厂商只给 Windows 和 macOS 发布配套驱动,Linux 这块被有意无意地遗忘了。

CUPS 虽是 Linux 打印体系的中枢,但它只负责调度与排队,面对这些加密的私有协议同样没辙。于是打印任务发出去了,机器毫无反应,任务卡在队列里,直到超时报错。

每台打印机都是一把锁,foo2zjs 则是一串万能钥匙

foo2zjs 的思路很朴素:厂商不肯配钥匙,那就自己开锁。开发者把各家协议逐条逆向、吃透,再用 C 语言把它们翻译成 CUPS 能理解的数据流,让打印机终于"听"得懂 Linux 的话。

这套驱动实际是一整个钥匙串,每把钥匙对应一种协议、接管一类机型:

驱动组件攻克的协议代表性机型
foo2zjs / foo2hpZJ-StreamHP LaserJet 1000/1018/1020/1022、CP1215、1600、2600n
foo2qpdlQPDLSamsung CLP-300/315/600、Xerox Phaser 6110
foo2lavaLAVAFLOWKonica Minolta magicolor 2530 DL、2480 MF
foo2hipercHIPERCOki C301dn、C310dn、C511dn、C810dn
foo2oakOAKTHP LaserJet 1500、Kyocera KM-1635/2035
foo2slxSLXLexmark C500n
foo2xqxXQXHP LaserJet M1005 MFP、P1005、P1505
foo2hbpl2HBPL2Dell 1355、Epson AcuLaser CX17NF、Fuji Xerox DocuPrint 系列

这张表你完全不用背——安装时系统会自动按打印机型号挑选合适的钥匙,你只需确认自己的机型在支持名单里。

foo2zjs 的安装:四条命令打通全流程

安装不涉及复杂的依赖处理,把源码拉下来直接编译:

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

进入目录后依次执行两条:

make sudo make install

make负责把 C 源码编译成可执行文件,make install则把驱动、PPD 打印说明文件和色彩配置统一放进系统目录。最后让 CUPS 认识新驱动:

sudo make cups

这一步会生成并注册各机型的打印配置。重启 CUPS 服务后,到系统打印设置里搜你的型号,就能看到它了。

HP 老机型开机前必须"喂固件"

用 HP LaserJet 1000/1005/1018/1020 这类老打印机的朋友要注意:它们的固件不放在机器里,而是保存在电脑端,每次通电都得先接收一次固件,否则只有指示灯亮,怎么点打印都不出纸。

项目自带的 getweb 脚本,一行命令就能取回固件:

./getweb 1020

下载好的固件会放进/usr/share/foo2zjs/firmware/目录,手动加载只需把它直接灌进打印口:

cat /usr/share/foo2zjs/firmware/sihp1020.dl > /dev/usb/lp0

每次都手动喂太麻烦?项目提供了热插拔方案:

sudo make install-hotplug

装上之后,USB 一插上就自动喂固件,往后即插即打,彻底告别"开机先喂药"的日常。

彩色打印偏色?做一次正经的色彩校准

彩色激光机打出来的颜色偶尔偏红、偏绿,别急着怪打印机,多半是色彩配置文件没配对。项目仓库里躺着大量厂商提供的 ICC/ICM 文件,比如 Samsung CLP-300 的samclp300-0.icm、Oki C3200 的OK3200L1.icm、Konica Minolta 2430 的km2430_0.icm

也可以用 getweb 直接拉取对应型号的配置:

./getweb 300

拿到配置后,配合项目内置的 icc2ps 色彩管理工具做转换,再打印一张测试页对比。偏一点就微调参数重打,一般两三轮就能调准。

打印失败时的排查工具箱

打印不成功最怕两眼一抹黑,好在 foo2zjs 自带一套"数据流体检"工具。zjsdecode、qpdldecode、hipercdecode 这类解码器,能把你发给打印机的数据流逐段拆开,判断问题出在格式转换还是传输环节。

识别设备则用 usb_printerid:

usb_printerid /dev/usb/lp0

它能读出打印机的设备 ID 和型号,帮你确认驱动匹配是否正确。再配合这条命令盯 CUPS 日志:

tail -f /var/log/cups/error_log

大部分打印故障,都能借此一步步定位到具体环节。

老手划重点:三个容易踩的坑

  • Ghostscript 版本别乱升:8.54 到 8.71 是公认的稳妥区间,部分新版本会出现颜色偏差或横向打印异常,升级前记得先备份当前版本;
  • 网络打印机按协议填地址:LPD 用lpd://IP地址/lp,JetDirect 用socket://IP地址:9100,IPP 用ipp://IP地址/ipp,照着填基本不会错;
  • 手动双面打印有技巧:先打奇数页,翻面后再打偶数页,并给打印命令加上-o outputorder=reverse,保证页码顺序正确。

说到底,foo2zjs 最打动人的地方,是把厂商不愿做的脏活累活,用开源协作的方式补齐了。无论是角落里吃灰十年的二手激光机,还是办公室那台总被说"Linux 不支持"的彩色一体机,只要型号在名单里,插上、装好、出纸,就这么简单。免费、开源、逆向工程——这正是开源社区送给 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/20 16:30:06

面向银行业的通行密钥控制平面构建研究

摘要 传统静态密码与手动输入式一次性验证码(OTP)长期作为银行业身份核验的主要手段,但该类技术无法抵御钓鱼中继攻击,攻击者借助仿冒站点诱导用户提交验证码即可完成账号接管。通行密钥(Passkey)依托 WebA…

作者头像 李华
网站建设 2026/8/20 16:28:38

大企业采购哪个平台好?2026年主流平台深度解析

大企业采购的复杂度远超中小型企业,当集团采购清单横跨办公行政、MRO工业品、员工福利与营销物资等多个品类,并涉及数十个分支机构的差异化需求时,管理的难度呈指数级上升。2025年国内企业物资采购总额已达196.3万亿元,而数字化采…

作者头像 李华
网站建设 2026/8/20 16:17:21

0011.imx6ull(ZLG IoT-6G2C-L)通过SD卡对256M的nand进行分区升级

ZLG IoT-6G2C-L通过SD卡对256M的nand进行分区:---------------------------------------------------------------------------------------- 一、配置uboot下环境变量的方法,加载tftp下的zImage、imx6g2c-256m.dtb,加载nfs 文件系统 -------------------------------------…

作者头像 李华