479 字
2 分钟
通过自由驱动在 Debian GNU/Linux 上使用 HP LaserJet P1008 打印机

惠普打印机在 GNU/Linux 上的官方支持是通过 hplip 实现的,但是绝大多数打印机都需要一个专有的扩展来实现其功能,这对于像我这样对于专有软件深恶痛绝的人是怎么都没有办法接受的。所以我手里的这台 HP LaserJet P1008 也躺在床底下吃灰很久了。

然而最近这件事情有了转机——在网上了解到一个叫做 foo2zjs 的项目。这个项目支持了惠普的一些打印机,虽然这些打印机都发布有些年纪了,但是我的打印机足够老,以至于居然受到了 foo2zjs 的支持。所以我决定拿来试试。

首先,获取 foo2zjs#

$ git clone https://github.com/OpenPrinting/foo2zjs foo2zjs1
$ git clone https://github.com/koenkooi/foo2zjs foo2zjs2

两个都用得上,前边那个实测打印机不工作,后边那个 ./getweb 不好用。

后边那个的 icc2ps/cmsio1.c 有点问题编译过不去,找到第 74 行 #define xswab swab 换成下边这个函数:

static void xswab(void *from, void *to, int n)
{
unsigned char *src = (unsigned char *)from;
unsigned char *dst = (unsigned char *)to;
for (int i = 0; i + 1 < n; i += 2) {
unsigned char a = src[i];
unsigned char b = src[i + 1];
dst[i] = b;
dst[i + 1] = a;
}
}

或者如果懒得改也可以直接用我改完的:

$ git clone https://codeberg.org/zxs24719/foo2zjs foo2zjs2

两边都编译一遍:

$ cd foo2zjs1
$ make -j$(nproc)
$ cd ../foo2zjs2
$ make -j$(nproc)
$ cd ..

获取固件#

到前边那个跑一遍 getweb 下载固件。在这之前需要解决两个小 bug。

$ cd foo2zjs1
# cp arm2hpdl /usr/bin/
# mkdir /lib/firmware/hp/
# ./getweb P1008
# rm /usr/bin/arm2hpdl

安装#

可以安装了:

# make install

安装热插拔之前需要移走一个 udev 规则,安装好之后移回来:

# mv /lib/udev/rules.d/70-printers.rules .
# make install-hotplug
# mv 70-printers.rules /lib/udev/rules.d/

重启 CUPS:

# systemctl restart cups

大功告成!#

插上打印机之后应该就可以检测到了。打印一个测试页吧。😁

Perfect。😝

通过自由驱动在 Debian GNU/Linux 上使用 HP LaserJet P1008 打印机
https://zxs24719.codeberg.page/blog/posts/hp-printer-on-debian-with-free-drivers/
作者
爱吃可比克的鲸鱼
发布于
2026-07-17
许可协议
CC BY-SA 4.0