Administrator
发布于 2025-10-09 / 90 阅读
0
0

immortalwrt共享USB打印机

前言

利用linux小主机实现USB打印机共享大致有两种方案:CUPSP910ND。前者功能强大,完整实现了打印服务器功能,但是linux中打印机驱动质量普遍很差,打印效果很不理想。后者不管理打印驱动和打印队列,只是简单将打印数据流转发给打印机,实现 USB - TCP/IP 转换,这正是我所需要的。当然CUPS也可以用Raw Queue实现类似功能,不过配置上相对麻烦一些,本文还是基于P910ND方案进行配置。

P910ND vs CUPS Raw Queue 对比

特性 P910ND CUPS Raw Queue
架构 简单的TCP→USB转发 完整的打印系统+Raw队列
资源占用 极低(几十KB内存) 较高(需要运行完整的CUPS服务)
协议支持 仅Raw TCP 9100端口 支持IPP, HTTP, HTTPS等多种协议
队列管理 无状态,无队列管理 完整的队列管理功能
客户端支持 需要TCP/IP打印机驱动 支持IPP自动发现和驱动安装
认证安全 支持用户认证和权限控制
适用场景 嵌入式设备,简单共享 需要完整打印服务器功能的场景

安装

root@ImmortalWrt:~# opkg install luci-i18n-usb-printer-zh-cn
Installing luci-i18n-usb-printer-zh-cn (25.267.23331~f2e50e2) to root...
Downloading https://mirrors.vsean.net/openwrt/releases/24.10.3/packages/x86_64/luci/luci-i18n-usb-printer-zh-cn_25.267.23331~f2e50e2_all.ipk
Installing p910nd (0.97-r14) to root...
Downloading https://mirrors.vsean.net/openwrt/releases/24.10.3/packages/x86_64/packages/p910nd_0.97-r14_x86_64.ipk
Installing kmod-usb-printer (6.6.104-r1) to root...
Downloading https://mirrors.vsean.net/openwrt/releases/24.10.3/targets/x86/64/kmods/6.6.104-1-615f744fa1708941b4ef00bdfd1271a9/kmod-usb-printer_6.6.104-r1_x86_64.ipk
Installing luci-app-usb-printer (1.0-r2) to root...
Downloading https://mirrors.vsean.net/openwrt/releases/24.10.3/packages/x86_64/luci/luci-app-usb-printer_1.0-r2_all.ipk
Configuring kmod-usb-printer.
Configuring p910nd.
Configuring luci-app-usb-printer.
cat: can't open '/sys/class/usbmisc/hiddev0/device/ieee1284_id': No such file or directory
cat: can't open '/sys/class/usbmisc/hiddev0/device/ieee1284_id': No such file or directory
cat: can't open '/sys/class/usbmisc/hiddev0/device/ieee1284_id': No such file or directory
cat: can't open '/sys/class/usbmisc/hiddev0/device/ieee1284_id': No such file or directory
Configuring luci-i18n-usb-printer-zh-cn.

程序把我的UPS也当成了打印机,所以最后几行提示找不到设备,可以安全忽略。

连接打印机

将一台HP P2055D打印机通过USB连接到immortalwrt主机,刷新页面后应该就能看到了:

image-HuMo.png

配置

在LUCI中进入USB打印服务器 配置页,依次设置 设备接口端口,选中双向模式,最后点启用。启用双向模式后,打印机可以向发起打印的客户端反馈打印机状态以及作业状态等信息,没有特殊情况请保持开启。这里推荐安装 usbutils,它提供了 lsusb 命令,用来查看USB设备名很方便。

image-pjUJ.png

这里保存并应用后,还需要重启一次服务:

service usb_printer restart

现在P910ND已经开始监听9100端口了:(ss 也需要用opkg自行安装)

root@ImmortalWrt:~# ss -tulpn | grep 9100
tcp   LISTEN 0      5                                      10.89.2.1:9100       0.0.0.0:*    users:(("p910nd",pid=3027,fd=4))

在Windows中添加打印机

手动添加网络打印机即可,添加过程中选择从磁盘安装打印机驱动。HP打印机驱动程序就是一个压缩包,提前解压缩后便可以手动安装。我下载的是

https://ftp.hp.com/pub/softlib/software12/COL33806/lj-84316-2/P2050-full-solution-AP-v6.1.exe

image-hNpv.png

选择IP地址或主机名添加打印机

image-jYYY.png

IP地址就是路由器地址

image-GkYE.png

程序无法自动发现打印机,需要额外配置。点自定义-设置

image-NdqQ.png

协议选择Raw,端口号9100,和openwrt中监听地址保持一致

image-bCyJ.png

我之前已经添加过HP P2055D打印机,所以列表里有现成驱动。首次添加需要准备好驱动程序,从磁盘安装。

image-fNTs.png

稍等片刻打印机就添加完成。

image-OLTU.png


评论