打印机在Linux下罢工?免费开源foo2zjs 3步复活100+款老机型
【免费下载链接】foo2zjsA linux printer driver for QPDL protocol - copy of http://foo2zjs.rkkda.com/项目地址: https://gitcode.com/gh_mirrors/fo/foo2zjs
周六下午,你从储物间翻出一台布满灰尘的HP LaserJet 1020,插上装了Linux的电脑,系统像没看见它一样,打印队列瞬间躺满"卡住"的任务。先别急着给它判死刑——这正是foo2zjs的主场:一款免费开源的Linux打印机驱动,专门破解ZJ-Stream、QPDL这类厂商不愿公开的专有协议,让上百款"系统认不出"的老机型在Linux下重新出纸。
先说你能得到什么
对普通用户来说,foo2zjs带来的好处就三句话:完全免费、装上就能用、覆盖上百款型号。为什么Linux认不出这些机器?说白了,它们用的是ZJ-Stream、QPDL、LAVAFLOW这类专有协议,相当于厂商给Windows和macOS各发了一本密码本,唯独没给Linux发。foo2zjs靠逆向工程把密码本一页页还原出来,再翻译成Linux听得懂的格式,于是"官方不支持"的机器也能正常出纸。
它不需要你懂底层原理,也不需要你花一分钱。咱们就以"从插上电源到打出第一张纸"为主线,一步步来。
第一步:花一分钟确认机型在不在支持名单里
动手前先做个快速体检,避免白忙活。源码里的PPD/目录躺着每个支持型号的"说明书"文件,格式是厂商-型号.ppd。找找有没有你的机器,比如:
- HP LaserJet 1020 →
PPD/HP-LaserJet_1020.ppd - Samsung CLP-300 →
PPD/Samsung-CLP-300.ppd - Oki C301dn →
PPD/Oki-C301dn.ppd - Kyocera KM-1635 →
PPD/Kyocera-KM-1635.ppd
找到对应文件,说明驱动认识它,可以放心往下走;没找到也别急,可以先看看同系列型号是否在列。
第二步:三条命令完成安装
先在终端里把源码拉下来,进入一个你方便操作的目录:
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"新驱动上岗了",让它在设置里能搜到这些机型。装完顺手重启一次CUPS服务,让它彻底刷新:
sudo systemctl restart cups第三步:添加打印机,打出第一张纸
打开系统设置里的"打印机",点"添加打印机",稍等片刻,你的型号就会出现在列表里。选好它、设成默认打印机,然后马上打印一张测试页验证成果。项目根目录自带testpage.ps测试页文件,命令行里这样用:
lp -d 你的打印机名 testpage.ps听到"咔嚓"一声、纸从出纸口缓缓吐出来,这一步你就赢了:这台机器在Linux下正式复活。
插曲:HP老将必须知道的"开机喂固件"规矩
如果你用的是HP LaserJet 1000/1005/1018/1020这一代,有个绕不开的特殊规则:固件存在电脑里,打印机每次开机都得"喂"一次固件才肯干活,否则只亮灯不出纸。项目自带小工具帮你取固件:
./getweb 1020它会下载对应型号的固件,放进/usr/share/foo2zjs/firmware/目录。手动加载就一条命令:
cat /usr/share/foo2zjs/firmware/sihp1020.dl > /dev/usb/lp0意思就是"把固件灌进打印机"。不想每次开机都手动来一遍,项目还提供了热插拔方案:
sudo make install-hotplug装上之后,打印机一插USB就自动补固件,彻底告别"开机先喂药"的麻烦。
彩色机偏色?来一轮正经的色彩校准
用彩色激光机的朋友可能遇到偏色,比如Samsung CLP-300打出来的红不像红。这通常是色彩配置文件没配对。项目仓库里躺着一大批厂商提供的ICC/ICM色彩文件,比如CLP-300的samclp300-0.icm、Oki C3200的OK3200L1.icm、Konica Minolta 2430的km2430_0.icm。
用./getweb 300这类命令把对应型号的配置拉下来,配合项目自带的icc2ps色彩管理工具做转换,再打一张测试页看效果,偏一点就微调参数,通常两三轮就能调到舒服的状态。
打印失败别慌:自带工具能"解剖"数据流
万一打印还是失败,别两眼一抹黑。foo2zjs自带一批解码器,比如zjsdecode、qpdldecode、hipercdecode,能把发给打印机的数据流拆开检查,判断是格式问题还是传输问题。识别设备则用usb_printerid:
usb_printerid /dev/usb/lp0它会读出打印机的ID和型号,帮你确认驱动匹配对不对。再配合tail -f /var/log/cups/error_log盯着CUPS日志,大多数故障都能定位。
两个老玩家才知道的小技巧
网络打印机照着填就行:LPD用lpd://IP地址/lp,JetDirect用socket://IP地址:9100,IPP用ipp://IP地址/ipp,照着填准没错。
手动双面打印:先打奇数页,翻面后再打偶数页,记得加上-o outputorder=reverse让顺序正确。
Ghostscript版本有讲究:如果你自编译过Ghostscript,8.54到8.71是公认稳妥的区间,某些版本可能会有颜色或横向打印的小毛病,升级前最好先备份。
写在最后
说到底,foo2zjs最打动人的地方在于诚意:厂商懒得做的活,它用开源的方式补全了,还分文不取。你不需要懂编译原理,不需要会逆向工程,只要照着上面的流程走一遍,就能让手头的旧机器重新吐纸。如果你家里恰好有一台"系统认不出"的打印机,别急着雪藏它——给它一个下午,也给自己一个惊喜。
【免费下载链接】foo2zjsA linux printer driver for QPDL protocol - copy of http://foo2zjs.rkkda.com/项目地址: https://gitcode.com/gh_mirrors/fo/foo2zjs
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考