免费开源驱动foo2zjs:100多款官方不支持的打印机,靠它在Linux复活
【免费下载链接】foo2zjsA linux printer driver for QPDL protocol - copy of http://foo2zjs.rkkda.com/项目地址: https://gitcode.com/gh_mirrors/fo/foo2zjs
把一台HP LaserJet 1020插上Linux电脑,第一个打印任务就卡在队列里一动不动,系统仿佛根本没见过这台机器。这不是你的错,而是厂商只给Windows写了驱动。开源项目foo2zjs正是为破解这个困局而生:一套完全免费的Linux打印机驱动,靠逆向工程覆盖100多款官方不支持的机型,从编译到出纸,全程不到十分钟。
一张速览表看懂:八个驱动组件分别承包哪些机型
foo2zjs不是单个程序,而是一整套驱动家族的统称。每种打印机协议都像一门独有的"方言",家族里的每个成员专精一种,负责把通用文档"同声传译"成打印机听得懂的格式:
| 驱动组件 | 破解的协议 | 代表机型 |
|---|---|---|
| foo2zjs / foo2hp | ZJ-Stream | HP LaserJet 1000/1005/1018/1020、Color LaserJet CP1215/1600/2600n |
| foo2qpdl | QPDL | Samsung CLP-300/315/325/365、CLX-2160、Xerox Phaser 6110 |
| foo2xqx | XQX | HP LaserJet M1005 MFP、P1005/P1006/P1007/P1008、P1505 |
| foo2lava | LAVAFLOW | Konica Minolta magicolor 1600W/1680MF/2480 MF/2530 DL |
| foo2hiperc | HIPERC | Oki C301dn、C310dn、C511dn、C810dn、C3200/C3300/C3400 |
| foo2oak | OAKT | HP LaserJet 1500、Kyocera KM-1635/2035 |
| foo2slx | SLX | Lexmark C500n |
| foo2hbpl2 | HBPL2 | Dell 1355、Epson AcuLaser M1400、Fuji Xerox DocuPrint P205/CM205 |
安装时系统会自动为你的型号挑对组件,你只负责确认机型在不在清单里。
为什么厂商对Linux"装聋作哑"?打印机各自说着"方言"
很多老激光打印机走的是ZJ-Stream、QPDL、HIPERC、LAVAFLOW这类专有通信协议,官方只给Windows和macOS配好了"翻译",Linux用户自然只能干瞪眼。CUPS虽然是Linux打印的顶梁柱,但对这些加密的"私房话"同样没辙。foo2zjs的做法很硬核:把协议一条条逆向啃下来,再翻译成CUPS听得懂的格式——这就是"官方不支持"的机器也能在Linux下正常出纸的根本原因。
四步跑通foo2zjs安装:拉代码、编译、装驱动、重启CUPS
准备一台能上网的机器,确认装好gcc和make,然后依次执行:
git clone https://gitcode.com/gh_mirrors/fo/foo2zjs cd foo2zjs make sudo make install sudo make cups第一行把源码拉回本地;make把C源码编译成可执行文件;make install把驱动、PPD文件(打印机的"说明书")和色彩文件放进系统目录;最后的make cups重启CUPS让新驱动生效。到这一步,绝大多数型号已经能在系统打印设置里被搜到,剩下就是添加打印机、选型号、打一张测试页的事。
这几款HP有隐藏关卡:开机要先"喂"固件
如果你用的是HP LaserJet 1000/1005/1018/1020或P1005到P1505这一系,规矩就特殊了:它们的固件存在电脑里,打印机每次开机都需要"喂"一次,否则机器只亮灯不出活。项目自带小工具帮你把固件取回来:
./getweb 1020这条命令会下载对应型号的固件并转换好格式,make install时自动放进/usr/share/foo2zjs/firmware/。想省去每次手动加载的麻烦,再跑一条:
sudo make install-hotplug之后一插USB就自动喂固件。想确认是否成功,用usb_printerid /dev/usb/lp0看一眼返回的设备ID里有没有FWVER:字段——有,就说明固件已经就位。
彩色打印偏色?拉一份官方色彩文件就能调
打印彩色激光机如果偏色,通常是色彩配置文件没配对。仓库里躺着一大堆厂商提供的ICC/ICM文件,比如Samsung CLP-300的samclp300-0.icm、Oki C3200的OK3200L1.icm,用./getweb 300这样的命令就能把对应型号的配置拉下来,配合项目内置的icc2ps色彩管理工具做转换,再打一张测试页对比,偏一点就换个配置微调,一般两三轮就能调准。
打印失败别盲猜:用内置解码器解剖数据流
不出纸时最怕两眼一抹黑。foo2zjs自带一票解码器,比如zjsdecode、qpdldecode、hipercdecode,能把发给打印机的数据流拆开逐段查看,判断是格式问题还是传输问题。做法很简单:先用wrapper把PostScript转成打印流,再用对应解码器检查:
foo2zjs-wrapper testpage.ps > testpage.zm zjsdecode < testpage.zm配合tail -f /var/log/cups/error_log盯CUPS日志,绝大多数故障都能定位。还有几句老玩家的口诀:Ghostscript 8.54到8.71是公认的稳妥区间,9.x对颜色支持有坑;网络打印机LPD填lpd://IP/lp、JetDirect填socket://IP:9100;手动双面打印就先打奇数页,翻面后打偶数页并勾上逆序输出。
写在最后
foo2zjs最打动人的地方,在于它把厂商懒得做的活,用开源的方式补全了:没有官方驱动的机器,社区照样让它跑起来,而且免费、可复制、可改进。如果你手上正躺着这样一台"官方不支持"的老打印机,不妨按上面的步骤试一次——插上、装好、出纸,就这么简单。
【免费下载链接】foo2zjsA linux printer driver for QPDL protocol - copy of http://foo2zjs.rkkda.com/项目地址: https://gitcode.com/gh_mirrors/fo/foo2zjs
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考