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 接上 Ubuntu 电脑,结果系统弹出的不是打印机图标,而是一句冷冰冰的"缺少 Linux打印机驱动"。厂商官网翻了个遍,只有 Windows 和 macOS 的安装包,求助帖底下的回复全是十年前的考古内容。打印机指示灯亮得理直气壮,你却连一张测试页都打不出来——这种窘境,正是 foo2zjs 这个开源项目存在的意义。
为什么 Linux 下的打印机这么难伺候
其实原理说穿了一点都不玄。Linux 里的打印任务统一由 CUPS 分发,但它只负责"传话",真正把文档翻译成打印机听得懂的"方言",得靠驱动来完成。麻烦恰恰出在"方言"上:市面上大量激光打印机用的是厂商私有的打印协议,相当于每个品牌都自带一套暗号;厂商懒得为 Linux 单独做驱动,这些协议就成了公开的秘密。于是你看到的现象是——设备能被系统正常识别,却始终打不出一个字。
一句话认识 foo2zjs:专治"认得了硬件、打不出字"
foo2zjs 干的事,就是把这些私有协议一个个"破译"出来。项目通过逆向工程,啃下了 ZJ-Stream、QPDL、HIPERC、LAVAFLOW、OAKT、SLX、XQX、HBPL2 共八种打印协议,整理成一套完整的 Linux 打印机驱动套件,覆盖的型号超过 100 款。HP 的 LaserJet 1000/1020/1022、彩色机型 Color LaserJet CP1215/2600n,Samsung 的 CLP-300/600 和 CLX 系列,Oki 的 C310dn/C5100n,再加上 Konica Minolta magicolor、Xerox、Lexmark、Kyocera 等品牌,都在它的射程之内。更难得的是,整套驱动免费开源——驱动不用掏一分钱,也犯不着跟售后斗智斗勇。
Linux打印机驱动安装三步走:克隆、编译、喂固件
整个流程走下来,跟装一个普通软件差不多,按"拿到手→跑起来→用起来"的节奏来就行 🎉
第一步:把源码拿到手
打开终端,克隆项目仓库并进入目录:
git clone https://gitcode.com/gh_mirrors/fo/foo2zjs cd foo2zjs第二步:编译安装驱动
依次执行编译和安装两条命令,期间可能需要输入你的用户密码:
make sudo make install装完之后,驱动模块和 PPD 配置文件会自动各就各位,这部分不用你操心。
第三步:下载固件、刷新 CUPS 打印机配置
不少 HP 机型(比如 1020、1005)每次开机都要重新加载固件,先用脚本把对应固件抓下来,也就是把 HP 1020 Linux 驱动配套的固件文件拉回本地:
./getweb 1020接着配置热插拔支持,再刷新 CUPS 服务,两条命令收尾:
sudo make install-hotplug sudo make cups到这一步,打开系统打印设置(或浏览器访问 CUPS 管理页)添加打印机,就能看到对应型号的 PPD 了。选好型号、提交一张测试页——听到进纸的声响那一刻,成就感直接拉满。
避坑锦囊:你大概率会遇到的三个坎
打印机 USB 无法识别怎么办?先用lsusb | grep Printer确认硬件有没有被系统看到,再用usb_printerid /dev/usb/lp0读出打印机的 ID 信息对照型号。如果之前加载过 usblp 模块,试着sudo modprobe -r usblp之后再sudo modprobe usblp重新加载一次,很多"灵异事件"就这么解开了。
每次开机都要手动喂固件?别慌,这是 HP 这类机型的固有脾气。只要前面跑过make install-hotplug,系统会在打印机插上的瞬间自动加载固件,你只管开机、插线,剩下的交给系统就好。
打印出来颜色不对、偏色严重?先核对 Ghostscript 版本,项目推荐 8.54–8.71 区间,避开 8.64 和 9.0 以上的问题版本;再检查是否选对了配套的 ICC/ICM 色彩配置文件。大多数偏色,根源都在这两处。
进阶玩法:让打印体验再丝滑一点
对颜色要求高的话,项目内置了 icc2ps 色彩管理工具,支持 CIECAM02 这类专业色彩模型,配合附带的各品牌 ICC 配置文件,可以手动调出接近官方驱动的色彩表现。
打印机是联网的?CUPS 里填设备 URI 时记住几个套路就行:LPD 协议写lpd://IP地址/lp,JetDirect 写socket://IP地址:9100,IPP 协议写ipp://IP地址/ipp。填完就能当本地打印机一样用。
想双面打印却没有自动双面单元?先用lp -o page-set=odd打奇数页,翻面再打lp -o page-set=even,省纸也省心。
写给谁,以及为什么值得一试
这套方案适合三类人:买了 HP、Samsung、Oki 激光打印机却在 Linux 下干瞪眼的新手;不想为驱动掏钱、信奉开源精神的家庭用户;以及需要批量部署打印机的中小企业——编译一次、全公司复用,运维成本几乎为零。
它的价值不只是省下一笔驱动费,更在于把"厂商不维护 Linux"这件事,变成了一个能被社区合力解决的技术问题。如果你也正被一台"打不出字"的打印机折磨,不妨花十分钟照着上面的流程试一次。去 gitcode 搜一下 foo2zjs,clone 下来,说不定下一张测试页,就是你跟这台打印机和解的开始 😉
【免费下载链接】foo2zjsA linux printer driver for QPDL protocol - copy of http://foo2zjs.rkkda.com/项目地址: https://gitcode.com/gh_mirrors/fo/foo2zjs
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考