2026的技术现状
背景
家中常有一些老掉牙的机器,还没换新,又或者是新机器,却没有无线功能,也许吧,这有一个可以实现无线打印的技术路线。分享给大家
路线
好像2026年的手机都支持分现网络中的共享打印机,并且可以直接发送打印任务过去。
只要家中有电脑这样的设备,打开打印共享以后,他的打印机就可以被手机直接发现。这里要说是的那些手机自身的打印功能对于打印机不具备无线功能,经过了电脑设备的共享,手机是可以直接使用的。**
*
不要冒险去充值一些手机三方打印软件或者看来看去全广告,而做无用功,而没有去调整家里的共享设置。这在三方手机软件是解决不了后台服务问题。
**
大多数的,文档处理,和图片,在共享的打印机上是可以直接打的。而手机的分享菜单中是直接有打印图标,也是可以找到本地网络上可用的打印机的。
一些持久化的细节
毕竟在家中,打印机和电脑同时打开,且24小时在线有点难为人。所以我用家中openwrt无线路由,担当起了一定的角色。如果家是有软路由,且是openwrt也很好。分为两个方案,
一。 p910nd+ 单独虚拟机cups
因为路由硬件无法运行cups这样的应用,所以只是用来做转接把9100端口,在网上打开,它用来接收来自本网络打印请求,让其具有无线能力,,然后需要像电脑主机一样的设备安装对应的打印机驱动,让其具有打印解析功能。完成这两步打印机真正变成了手机无线直联打印机。
现在800块的打印机都具备了这样的功能,我只是把这个核心拆开成分部公共网络算力上。然后投放到古早设备上。

为了达到的手机可访问,24小时共享找印,
但是HP在1年前左右还没有支持P1008这样的机器,在2013的时候,foo2zjs中的foo2xqx已经失效了。没有网站了。

- 启用无线openwrt投放固件开端口
hplp-data 中的这些firmware. 这些类型的打印机通过这些文件来实现GP语法,是对主机交互的一些基本功能,但没有在打印机固件中保存,也就是需要在每次掉电启动后,从对端也就是联线驱动中,下载到打印机内部。这是厂家专用的一些数据块。用来解析打印作务。
所以目前的方式,需要在openwrt中,传入对应型号的,fm.当然看出来了,这是从,hplp中找到的。
然实现USB,掉线,也就是打印机重联后,上传打印机。
bash
cat /usr/bin/hp-p1008-fw.sh
#!/bin/bash
# 指定固件路径(如果文件是 .gz 结尾,请先解压或使用 zcat)
FIRMWARE="/www/hp_laserjet_p1008.fw.gz"
DEVICE="/dev/usb/lp0"
# 检查固件文件是否存在
if [ ! -f "$FIRMWARE" ]; then
echo "Firmware file not found: $FIRMWARE" >> /tmp/hp-p1008-fw.log
exit 1
fi
# 等待设备节点就绪(最多等待5秒)
for i in {1..5}; do
if [ -c "$DEVICE" ]; then
# 将固件写入打印机
gunzip -c "$FIRMWARE" > "$DEVICE"
echo "Firmware sent to $DEVICE at $(date)" >> /tmp/hp-p1008-fw.log
exit 0
fi
sleep 1
done
echo "Device $DEVICE not found within timeout" >> /tmp/hp-p1008-fw.log
exit 1
对于openwrt 来说,需要加入hotplub的脚本
bash
nano /etc/hotplug.d/usbmisc/10-hp-p1008
[ "$ACTION" = "add" ] || exit 0
# i e设 g j^b bM-9就绪
for i in $(seq 1 10); do
[ -c /dev/usb/lp0 ] && break
sleep 1
done
[ -c /dev/usb/lp0 ] || exit 0
if [ -x /usr/bin/hp-p1008-fw.sh ]; then
echo "=== $(date) ===" > /tmp/hp-p1008-fw.log
/usr/bin/hp-p1008-fw.sh >> /tmp/hp-p1008-fw.log 2>&1
fi
我随后会把,所有这些机型的,firmware上传上来。这是经过我验证的。也就是说,对于轻量级的,这些打印机,转成网络打印的,P910nd的一个实现。这个固件上传是关键。
- 打印一个容器装驱动
在群晖或是软路由中可开一个DOCKER或是跑一个VMM,KVM,PVE,LXC等这样的虐拟环境,我用的Debian,也可以是ubuntu,或其它,然后安装,hplp驱动,或其他厂的驱动程序,能在linux下跑起来的就行,
在cups中找到这个,socket://ip:9100,然后在驱动中找到刚才安装的hplp一大群打印机中自已的型号。分享到网上。
然后在手机中,找到一个图片,点分享,找到其中的打印,选一个打印机,会在网上去查找并更新其状态。
变成了可用,就能发送测试了。手机是最后一步,
注意:需要先在电脑分步进行,先对9100这个无线路由公布的端口进行测试,无问题后,再在CUPS安装完成后进行测试页打印。前两步都通顺了。手机自然能打印了,最后这是几百块就能解决的问题 。感觉又一个不必要,但折腾人。
二、一个内核做所有
对于可使用USB口的容器,就不需要openwrt这些复杂处理。主要过程就是,安装cups ,hplp,用hp-setup 本配置一台打印机。
其中有几点
- ,hplp在安装本地,这类的1008打印机时,会有一个,hp-plugin的安装过程,而这个过程要跑去HP官网下载,一个run,角本,名叫hplip-3.22.10-plugin.run。这类的,其中,hp-plugin -i会显示下载不进行,这可能是 wget无法通过安全验证。所以需要手 工 下载,再传输到本地。然后再在, 安装过程中手工指定,放在哪里。这个是,固件数据下载和脚本定制的过程。 其中hplp -g图形化安装也会遇到这样的问题。
如果一切顺利。就能出测试页了。 - cups 的配置文件有两个需要放开权限,端口号从本地转为网络。子网,管理权也可在子肉内允许。系统可不运行于root下。
bash
# Only listen for connections from the local machine.
Listen 0.0.0.0:631
Listen /run/cups/cups.sock
<Location />
Allow from 192.168.1.0/24
Order allow,deny
</Location>
这是核心的两处。
关于驱动
上面说到了firmwawe中在主机中存的,hplp的核心任务可以是放入了一个PPD文件。有网友说在cups中手建打印机可以自已上传ppd在我这样一个重量操作后它在这里。
这些代码是AI生成的。
ls -l /etc/cups/ppd/
-rw-r----- 1 root lp 14530 Sep 27 15:58 HP_LaserJet_P1008.ppd
打了ppd
这是从hplp驱动,用于linux 的hp打印程序,提取到的 plug-in中的固件文件。
对于部分型号,现在HP的官方驱动已经集成了这个功能,所以以前的foo2xqx已经失效了。
所以现在,apt install hplp
最后
这个文章的操作是从,把,1008挂上openwrt开始的,着手于一台,MACbook ,10.12的,x86平台。一开始,我不知道,9100能不能直通到它。发现,添加打印机选,hp socket但软件选,原来就内置的1008是可行,因为发起了共享,发现手机也能直接打印。于是就有了转去,docker的cups的想法。 手头正好有,debian12的群晖,VMM。所以没有从docker 做起而是在主机环境的测试,这样docker中可能有的坑就走了一遍。
所以轻量级的办法,是USB,去一个主机,并且USB,在加载后,写一次fimware到usb端口.然后,cups驱动,上传ppd, 这可能是最轻量的做法。
我也只能提供,这两类文件,对于不想从头弄的人。
这个提取来的。也许,可以直接打包成一个docker,但是我是做不运了。