在家庭办公或小型工作室网络搭建中,如何在 OpenWrt/iStoreOS 安装 CUPS 服务? 是许多希望将旧款 USB 打印机变身为无线网络共享打印机(甚至支持苹果手机 AirPrint 打印)的软路由玩家重点关注的技术难题。
在 OpenWrt/iStoreOS 系统上部署 CUPS 打印服务器的标准步骤为:
第一步,SSH 登录路由器,运行 opkg update && opkg install cups cups-bjnp cups-filters kmod-usb-printer 以打好底层内核打印驱动;
第二步,将打印机通电并连接至路由器 USB 接口,确认 /dev/usb/lp0 设备节点已生成;
第三步,登录 CUPS 后台(http://ip:631),在 Administration 中添加打印机并勾选 Share This Printer,在 Make(品牌)处务必选择 Raw,在 Model(驱动)处选择 Raw Queue(以防路由器因解析渲染任务导致 CPU 占满而死机变砖);
第四步,在 Windows 等客户端上手动添加打印机地址(格式为 http://ip:631/printers/打印机名称)并导入本地客户端驱动即可。对于 HP LaserJet 1020 等需每次上传冷启动固件的 GDI 打印机,则需额外在 /etc/hotplug.d/usb/ 目录下编写热插拔自动灌入固件脚本以确保开机立用。

一、为什么选择 CUPS?它与 p910nd 有什么区别?
在 OpenWrt 共享 USB 打印机,通常有两种主流方案:
- p910nd 极轻量服务:它是一个超小型的打印机数据转发守护进程,只占用几十 KB 内存,不进行任何协议解析,单纯监听 9100 端口并把数据转发给 USB 口。
- CUPS 网页管理服务:它是一个功能完整的打印系统,自带 Web UI 管理界面,原生支持 IPP/AirPrint 协议,能够让 iOS、Android、macOS 设备直接在局域网内免驱发现打印机,具有更高级的安全控制和队列管理能力。
💡 选型建议:如果您的路由器内存小于 128MB 且不需要手机 AirPrint 打印,建议使用 p910nd。如果您的路由器内存充足(256MB 或以上)且希望获得完善的多端无线打印体验,CUPS 是无可争议的最佳选择。
二、OpenWrt/iStoreOS 手动部署 CUPS 流程
第一步:安装系统内核打印支持
使用 SSH 工具(如 PuTTY、Termius)或者网页自带终端登录路由器,运行以下命令安装基础组件:
opkg update
opkg install cups cups-client cups-filters kmod-usb-printer cups-backend-usb usbutils第二步:物理连接与检测
- 用 USB 打印机线连接打印机与路由器的 USB 接口,并确保打印机电源已经打开。
- 在 SSH 终端中输入以下命令进行检测:
如果显示BASH
# 查看 USB 设备列表,确认您的打印机芯片已被识别 lsusb # 查看是否已成功生成打印机字符设备节点 ls -la /dev/usb/lp0# 查看 USB 设备列表,确认您的打印机芯片已被识别 lsusb # 查看是否已成功生成打印机字符设备节点 ls -la /dev/usb/lp0crw-rw---- 1 root lpt ... /dev/usb/lp0,说明内核已成功捕捉到打印机设备。
第三步:在 iStoreOS 中一键安装(备选)
如果您使用的是 iStoreOS,则无需在命令行手动跑 opkg 命令。只需登录 Web 后台,在 「iStore 软件商城」 搜索 CUPS打印服务,点击一键安装,并在「服务 -> CUPS打印服务」中勾选启用即可。
三、CUPS Web 界面详细配置 (避坑重点)
- 进入控制台:
在浏览器输入
http://您的路由器IP:631。 - 进入管理页面:
点击顶部导航栏的 「Administration」。此时浏览器会弹出账密登录提示,请输入您的路由器超级管理员账号
root和对应的登录密码。 - 添加打印机:
点击 「Add Printer」 按钮,系统会扫描 USB 口。在 Local Printers 中会显示检测到的打印机名称(例如
HP LaserJet 1020),选中它并点击 「Continue」。 - 设置共享选项: 自定义打印机的 Name、Description,并在下方勾选 「Sharing: Share This Printer」,点击 Continue。
- 🔥 避坑:配置 Raw 队列模式(核心操作):
在接下来的驱动匹配页面中:
- 在 Make 列表中选择 Raw,点击 Continue。
- 在 Model 列表中选择 Raw Queue (en)。
- 点击 「Add Printer」 确认。
- 最后在选项设置中点击 「Set Default Options」 确认。
⚠️ 为什么必须选择 Raw 模式? 普通路由器的 MIPS 或 ARM 芯片算力非常弱,内存也极其有限。如果我们在 CUPS 中为打印机安装了复杂的 PostScript 或 PPD 渲染驱动,当客户端发送一个包含几十兆图片的 PDF 打印任务时,路由器会在本地尝试对图像进行重渲染和栅格化处理,这会瞬间把 CPU 占满到 100%,内存爆满,进而导致路由器由于 OOM 崩溃无限重启。 选择 Raw (原始模式) 之后,软路由只做一个纯粹的管道转发,把客户端(电脑/手机)本地渲染好的打印数据原封不动丢给打印机,省电省资源,且速度极快。
四、针对 GDI / 宿主式打印机冷启动变砖避坑 (EEAT 特色)
很多经典且保有量极高的老打印机(如 HP LaserJet 1020 / 1005 / 1007 / P1008,以及 Canon LBP2900 / 3000 等)采用的是 GDI (Host-based) 协议。这些打印机为了压低生产成本,内部没有集成昂贵的固件 ROM 芯片。它们在每次断电开机时,内存中是一片空白的,必须由连接它的主机向它注入一段驱动固件(通常是 .dl 后缀文件),打印机才能正常初始化并开始工作。
如果您把 HP 1020 插上 OpenWrt 却怎么发指令都不打印,就是因为没有给它喂入固件。
【自动热插拔固件脚本配置方案】
- 获取固件文件:
以 HP 1020 为例,其官方固件文件为
sihp1020.dl。您可以在安装了 HPLIP 插件的 Linux 主机或网上搜索下载到该文件。 - 上传到路由器:
使用 SCP 或 WinSCP 等工具,将
sihp1020.dl文件上传到路由器的/lib/firmware/目录下。 - 编写 Hotplug 触发脚本:
为了在打印机每次开启电源或重新插拔 USB 线时自动发送固件,需要在软路由中配置热拔插脚本。在终端中运行:
粘贴以下脚本内容:BASH
vi /etc/hotplug.d/usb/30-hplj1020vi /etc/hotplug.d/usb/30-hplj1020BASH#!/bin/sh # 这里的 3f0/2b17/100 是 HP 1020 的 USB 产品标识符,可以通过 lsusb 命令查看并替换 if [ "$PRODUCT" = "3f0/2b17/100" ]; then if [ "$ACTION" = "add" ]; then # 等待系统lp0设备节点稳定生成 sleep 3 if [ -c /dev/usb/lp0 ]; then # 往 lp0 灌入固件 cat /lib/firmware/sihp1020.dl > /dev/usb/lp0 logger -t "CUPS-Hotplug" "Firmware loaded successfully to HP 1020" fi fi fi#!/bin/sh # 这里的 3f0/2b17/100 是 HP 1020 的 USB 产品标识符,可以通过 lsusb 命令查看并替换 if [ "$PRODUCT" = "3f0/2b17/100" ]; then if [ "$ACTION" = "add" ]; then # 等待系统lp0设备节点稳定生成 sleep 3 if [ -c /dev/usb/lp0 ]; then # 往 lp0 灌入固件 cat /lib/firmware/sihp1020.dl > /dev/usb/lp0 logger -t "CUPS-Hotplug" "Firmware loaded successfully to HP 1020" fi fi fi - 赋予执行权限:
配置好后,每次打开打印机电源,打印机内部指示灯会闪烁几秒,表示固件加载成功,即可开始打印。BASH
chmod +x /etc/hotplug.d/usb/30-hplj1020chmod +x /etc/hotplug.d/usb/30-hplj1020
五、客户端如何连接共享打印机?
1. Windows 系统连接配置
- 打开 Windows 设置 -> 蓝牙和其他设备 -> 打印机和扫描仪。
- 点击 「添加设备」,等待几秒后点击最下方的 「我需要的打印机不在列表中 (手动添加)」。
- 选中 「按名称选择共享打印机」,在文本框中输入您在 CUPS 复制的打印机 HTTP 地址,例如:
http://192.168.1.1:631/printers/hp1020(请替换为您的软路由 IP 和实际打印机队列名称)。 - 点击下一步,系统会要求您选择驱动程序。在此步骤中,选择您的打印机官方 Windows 驱动安装即可(因为软路由使用了 Raw 转发,真实的驱动渲染完全在您的 Windows 本地进行)。
2. Apple iOS / macOS 的 AirPrint 配置
为了让苹果设备在不装驱动的情况下实现一键无线打印,我们需要在 OpenWrt 上部署 Avahi 广播服务:
opkg install avahi-dbus-daemon
/etc/init.d/avahi-daemon enable
/etc/init.d/avahi-daemon start并在 CUPS 配置文件 /etc/cups/cupsd.conf 中,确保以下两行被正确配置并开启:
Port 631
BrowseWebIF Yes
BrowseLocalProtocols dnssd随后重启 cups 服务(/etc/init.d/cupsd restart)。此时,您用 iPhone 连接家庭 Wi-Fi 并点击文档的“共享->打印”,就能自动发现这台连接在软路由上的老旧 USB 打印机,实现完美的移动端无缝打印。
六、总结
在 OpenWrt 或 iStoreOS 上利用 CUPS 搭载打印机服务器,可以低成本地实现局域网甚至外网(配合 VPN / 异地组网)无线打印。配置过程中的关键在于避开高算力的本地驱动,果断选择 Raw 队列模式,并通过 Hotplug 自动脚本为 GDI 打印机载入冷启动固件。
如果您想深入了解软路由的系统美化与核心插件的运行稳定性,强烈推荐参考以下精品教程:
- 如何在 OpenWrt 官方固件安装 iStore 软件中心?2026最新包管理器安装与闪存避坑指南 —— 详细指导如何将 iStore 软件中心完美移植到官方 OpenWrt 原厂纯净固件中,为一键安装 CUPS 打好基础。
- 如何在 OpenWrt 安装 TTYD 网页终端?2026最新包管理配置与安全避坑指南 —— 在网页后台装载命令行终端,摆脱 SSH 客户端,直接在浏览器中完成本文所有的 hotplug 脚本编写。
- 如何在 iStoreOS 安装 PassWall 与 OpenClash 插件?2026最新智能路由系统配置与避坑指南 —— 智能旁路由应用安装的最佳免编译
.run部署实践。 - 如何进行 RouterOS (ROS) 软路由基本配置?2026最新初始化设置与避坑指南 —— 企业级 ROS 作为主路由、OpenWrt (内置 CUPS 服务) 作为旁路网关的最佳协同配置拓扑。