CP1025打印机+飞牛/Unraid – 更优雅的打印机局域网共享方案

NatureChan 发布于 15 小时前 10 次阅读


AI 摘要

老款打印机如何实现完美的局域网共享?在踩遍了CUPS功能缺失、p910nd不稳定等坑后,我终于找到了基于NAS+VirtualHere的“优雅”解法。无需牺牲原厂驱动,实现USB远程透传,让你的旧设备秒变无线神器,体验近乎原生的丝滑打印!

购买了一台CP1025【1】放家里用作远程办公,CP1025好处是作为入门激光机器支持彩色打印,虽然速度慢,还是挺适合低印量低维护的家用场景的。

不过我在家里也有PC和笔记本电脑,有时候用PC打印,有时候用笔记本电脑打印,这里简单分享下多设备切换的方案和对应的坑。

下面分为两个部分,第一个部分是我用过的方案,作为记录和启发后续用。第二个部分是我现在用的方案,也就是VitualHere【2】

Windows打印机共享

这个是最稳的方案,不过缺点是必须有一个Windows机器开着当服务器,家里没有适合做这个的设备,PASS。

KVM切换

这个方案是最稳的,通过KVM把打印机在两台设备之间做切换,本质上和手动接线是一样的。不过我自己的KVM切换【3】在显示器换成300hz的高刷后就吃灰了,还是得换基于网络的方案。


接下来的方案思路是把打印服务放在NAS【4】上,打印机连接到NAS上,NAS再把打印服务通过网络share出去。这样的好处是都不一定要走有线,WIFI也可以。

CUPS

提到“共享”是不得不提到CUPS【5】的,CUPS的优势是对果子支持很好,配置好后果子手机什么的也能一键打印。但缺点也很清楚:尤其是CP1025这种单面机,驱动原生的手动双面打印功能CUPS是实现不了的

既然CUPS这种在应用层【6】封装的不可行,那么直接从传输层【7】入手行不行呢?于是接下来两个方案我也试过了。

P910nd

这个方案的核心思想是:让 NAS 只做“无脑”的数据转发,把渲染和高级设置全部交还给 Windows 电脑上的 HP 官方驱动。

简单地说就是把9100端口【8】直接映射到打印机的usb端口上,不过这个方案在我这里不稳定,所以仅作记录

完成USB连接后,我们可以执行lsusb【9】指令检查是否正确识别到打印机。

nature@NatureNas:/$ sudo lsusb
Bus 002 Device 003: ID 0bda:8156 Realtek Semiconductor Corp. USB 10/100/1G/2.5G LAN
Bus 002 Device 002: ID 152d:0901 JMicron Technology Corp. / JMicron USA Technology Corp. TOPMORE
Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 001 Device 002: ID 03f0:112a HP, Inc HP LaserJet CP 1025
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub

好,接下来ls 以下/dev/usb,如果发现没设备,就需要加载usblp【10】这个模块。

sudo modprobe usblp
echo "usblp" | sudo tee -a /etc/modules

Docker【11】库:https://hub.docker.com/r/justinhimself/p910nd

docker run -d \
  --name=p910nd \
  --privileged \
  -p 9100:9100 \
  -v /dev/usb/lp0:/dev/usb/lp0 \
  -v /var/lock/p910nd:/var/lock/p910nd \
  justinhimself/p910nd:latest '-b' '-d' '-f' '/dev/usb/lp0'

接下来到Windows环境下操作。

打开 Windows 的 设置 > 蓝牙和其他设备 > 打印机和扫描仪,点击 添加设备

等待几秒钟,点击 手动添加(或“我需要的打印机不在列表中”)。

选择 “使用 IP 地址或主机名添加打印机”,点击下一页。

  • 设备类型:选择 TCP/IP【12】 设备
  • 主机名或 IP 地址:填写你 飞牛 NAS【13】 的 IP 地址(例如 192.168.1.100)。
  • 端口名称:随意,它会自动生成。
  • 取消勾选 “查询打印机并自动选择要使用的驱动程序”。

点击下一页后,Windows 会尝试检测网络端口,可能会提示需要更多端口信息。

  • 在“设备类型”中选择 自定义,点击 设置
  • 确认协议是 Raw,端口是 9100,点击确定并继续。

安装原厂驱动: 在弹出的驱动选择窗口中:

  • 如果你的电脑以前装过这台打印机,直接在左侧选 HP,右侧选 HP LaserJet Pro CP1025
  • 如果没有,点击 “从磁盘安装”,选择你提前下载解压好的 HP 官方驱动包路径,找到 .inf 文件进行安装。

一直点击下一步,直到完成安装。

现在在用的方案 - VitualHere

VitualHere好处是不用管乱七八糟的,NAS端部署一个docker容器,客户端下载一个绿色小软件就实现了打印机使用。

这里给出这个工具的官网:https://www.virtualhere.com/usb_client_software

这里给出一个Docker-compose【14】用于部署

version: '3.8'
services:
  virtualhere:
    image: meeresgott/virtualhere-server:latest
    container_name: vh_server
    network_mode: "host"
    privileged: true      # 必须开启特权模式,否则无法直接读取底层 USB 总线
    volumes:
      - /dev/bus/usb:/dev/bus/usb  # 将整个 USB 总线映射进容器
    restart: unless-stopped

完成后启动容器即可,随后在Windows系统下下载客户端,Link:https://www.virtualhere.com/sites/default/files/usbclient/vhui64.exe

下载好打开即可,它会自动的搜索到NAS上的服务端,并展示能连接上的USB设备,这里需要特别注意不要连到你的USB网口、外置硬盘。当然这个可以在docker-compose文件中约束,完事了就和你电脑上连USB一样(这也是Vitualhere这个软件本身的用途)。

此作者没有提供个人介绍。
最后更新于 2026-03-12