阿坤玩存储

不只是存储

惠普老款GDI打印机(如HP LaserJet 1020)liunx 自动识别并自动上传固件

2025-08-03

我在浏览 CUPS 相关的视频评论时注意到,很多朋友都遇到了一个共同的问题:配置好后可以打印,打印机重启后无法正常打印。

这类情况在许多老款惠普 GDI 打印机(如 HP LaserJet 1020)上尤为常见——每次重启后都需要手动上传固件才能正常工作。
Windows会自动上传固件,而 Linux 系统默认不会自动完成这一过程,使用体验非常不便。

为了解决这个问题,我编写了一个小脚本:它可以自动识别打印机并上传当前目录下的固件,实现“插电即用、打印机重启也会自动上传固件”,大大简化了使用流程。


一、准备工作

  1. 适用环境

    • Linux 操作系统(Debian、Ubuntu、Fedora、飞牛NAS、等均可)

    • 具有 sudo 权限的用户或 root 权限

  2. 所需文件

    • 脚本文件 setup-hp-firmware-kuntech.sh(点击连接可以下载)

    • 固件 hp相关固件.7z (里面包含了)

      固件文件名

      对应打印机型号或系列

      sihp1000.dl

      HP LaserJet 1000

      sihp1005.dl

      HP LaserJet 1005

      sihp1018.dl

      HP LaserJet 1018

      sihp1020.dl

      HP LaserJet 1020/1020plus

      sihpP1005.dl

      HP LaserJet P1005

      sihpP1006.dl

      HP LaserJet P1006

      sihpP1505.dl

      HP LaserJet P1505


二、脚本功能介绍

  • 自动检测连接的 HP 打印机 USB 设备

  • 列出系统中存在的 .dl 固件文件,供用户选择上传

  • 自动生成固件上传脚本 /usr/local/bin/hp-fw-upload.sh

  • 自动写入对应的 udev 规则,实现插入打印机时自动上传固件

  • 重载 udev 规则,立即生效


三、部署步骤

1. 下载并上传脚本

将脚本 setup-hp-firmware-kuntech.sh 和下载的.dl上传至设备,放置在家目录或任意位置。

2. 设置脚本执行权限

chmod +x setup-hp-firmware-kuntech.sh

3. 运行脚本

sudo ./setup-hp-firmware-kuntech.sh

注意: 如果你已是 root 用户,则不需加 sudo

4. 选择固件文件

脚本会自动检测当前目录 .dl 固件,默认选第一个。

5. 脚本自动完成部署

脚本会生成上传脚本和 udev 规则文件,并自动重载规则。


四、测试

  1. 拔掉并重新插入打印机 USB 端口,打印机应自动完成固件上传,无需手动操作。

  2. 也可手动运行上传脚本测试:

sudo /usr/local/bin/hp-fw-upload.sh

如果打印机正常工作,表示配置成功。


五、常见问题

  • 未检测到打印机设备
    请确认打印机已正确连接并开机,且 USB 线正常。可用命令 lsusb 检查设备列表。

  • 找不到固件文件
    请先下载对应打印机型号的 .dl 固件文件并放入 /lib/firmware/hp 目录。

  • 权限问题
    脚本涉及写入系统目录和重载规则,需要使用 root 或带 sudo 权限的用户执行。


六、脚本源码简要说明

  • 利用 lsusb 获取打印机 USB idVendoridProduct

  • 利用 Bash select 命令交互选择固件。

  • 生成上传脚本,使用 cat 固件 > /dev/usb/lp0 方式上传固件。

  • 写入 udev 规则,实现打印机插入时自动运行上传脚本。

  • 使用 udevadm control --reload-rules 使规则立即生效。