老式打印机的现代化改造纪实

老式打印机的现代化改造纪实
LixdHappy前言
很久不见,甚是想念,也是许久未更新文章了,大部分时间去拓展其他的兴趣爱好了,那就来说说这一次我们所研究的打印机的一个情况吧。
夏普AR-A208,非常老的一台机子了,自打有印象起估计也有十多二十年了,一直是吃着灰的状态,也是因为最近U盘坏了要吃保修,需要打印一些发票(居然不给纸质发票!),所以就开始琢磨上了打印机,不折腾还不要紧,一上来就火大了,找资料,找驱动,这些都还好,说了这么多,其实目的就一个—实现无线打印
开始
最开始的思路是不走常规流派,也就是大家常说的直接对接Windows电脑,在此处这是比较简单的一个方法,因为官网给出的驱动是直接可以在Windows安装的,甚至还保持更新到了Win10系统的支持。(但是!!!没有Linux的驱动,在此有了些许不安)
经过实测,Win11是可以正常安装的,且没有BUG。
所以姑且先安装上保持可以使用的状态,那么下面为你介绍我手头所拥有的设备,以方便我进行划分过程,
小米R3G(已刷入Openwrt,设备自带一个USB3.0的口,其他信息可以自行寻找)
玩客云初代老母鸡(已刷入Armbian)
Win 7系统主机(作为保底方案)
一颗心灵手巧,不恼不怒的大脑🧠
当然,给大家省个流,方便大家直接跳转到成功的部分即可。
关于小米R3G与玩客云的部分:
死胡同一:p910nd 端口透传。 p910nd 只是单向传输数据。而 GDI 打印机需要高频的双向握手(查纸、查墨、查状态)。路由器底层芯片(如 MT7621)在处理复杂的 USB 双向中断时存在 Bug,直接导致硬件级死机(error -71)。
死胡同二:CUPS 打印服务。 受限于小米R3G羸弱的性能,在处理文件传输方面,5张测试页能出一张就是胜利,所以虽然我懒得实践了,我可以保证玩客云是可以实现的,但小米R3G是聊胜于无的打印机服务器。
所以,这个方案的最终一定是Windows电脑能达成目的(啊,那有人说了:博主博主,你就告诉我这个结论我还看你这篇文章干什么),有道理,可以退出文章了
小米R3G
没错,这玩意居然有USB口,非常令人震惊(对比同时期,二手价里最便宜的3.0路由器),甚至还是个3.0的接口,这玩意买十个都不心疼
到手后老步骤刷入Openwrt,由于几年没碰过这台路由器了,也不清楚咋又拉取不上软件源了,重新配置一下OKPG软件源
1 | src/gz openwrt_base https://mirror.nju.edu.cn/immortalwrt/releases/23.05.3/packages/mipsel_24kc/base |
由于比较懒得拉网线,打印机在厅里单独隔离了一个小空间,离主路由器也远,所以选择了无线中继的方式组网,这里有个细节,需要以5GHz频段以上的WIFI进行中继,因为早期接随身WIFI总是掉网速的缘故,才得知USB3.0的接口会严重扰乱2.5GHz频段的WIFI,这个结论可以在随身WIFI外接路由的线材外包锡纸相关内容可以得知,也拆开后才发现屏蔽手段也比较一般,可能受限于早期工艺。
像我比较怕麻烦,决定将它们先归为一个网段,全部合并到主路由下,不需要网段隔离,所以先安装luci-proto-relayd—中继桥插件,同时我的操作在上游路由器将Mac地址和192.168.10.26地址绑定,以免跑后台找不到地址
第一种思路
先进行老套路,比较出名的几个打印机插件—p910nd(本质是端口转发)和**CUPS**(功能完整,支持 AirPrint,但较臃肿)
考虑到路由器R3G的性能太捞了,只能先从p910nd入手,打开SSH终端工具,输入以下命令
- 打印机内核和
USB支持
1 | opkg install kmod-usb-core kmod-usb-printer kmod-usb2 kmod-usb3 kmod-usb-ohci kmod-usb-uhci |
p910nd和图形化管理界面
1 | opkg install p910nd luci-app-p910nd luci-i18n-p910nd-zh-cn |
重启路由器和打印机,将打印机的连接线(USB2.0公口B型转A型)插入到路由器的USB口
幸运的你过了第一关,
- 使用以下指令识别打印机是否读取到
1 | dmesg | grep printer |
如果顺利,你会看到类似 usblp0: USB Bidirectional printer dev... 的回显。
- 检查设备节点是否生成:
1 | ls /dev/usb/ |
正常能看到一个名为 lp0 的设备。如果没有看到,尝试重启路由器或重新插拔打印机。
如果以上均没有读取不到打印机的问题,那么就恭喜你顺利通过第一关,你可以进入Openwrt的后台去设置防火墙的放行了(实际上我在上一步卡了很久,经常掉驱动,再重新强制挂回去,原因见后)
- 防火墙放行
网络—防火墙—通信规则—添加
然后,你以为就会有然后了嘛,nonono,接下来就是无穷无尽的掉驱动(忘记截图报错了),但是最后不耐烦我直接去查看日志了(各位以后报错请保持先查日志的习惯)
1 | dmesg | tail -n 30 |
先查阅最近三十条报错,大致我的报错如下:
1 | [ 902.858065] usb 1-1: device not accepting address 14, error -71 |
虽然我对代码的解读并不是很懂,但是洋文还是能看懂的,其中有几项我估计是和打印机的不识别有关系的
1 | [ 2079.561987] usblp0: removed |
关于**new full-speed USB device ... using xhci-mtk和error -22**所附带的报错,大体上可以解释为打印机带的线协议太老了—USB1.1,同时,0x11的报错是兼容性问题。
usb 1-1: device not accepting address 14, error -71 和 error -22,关于-71的报错我见过一次可能是指线材被干扰了,不过Gemini给出的解释更偏向于指不识别芯片
总而言之呢,我做过一次挣扎,换了一个低协议(USB2.0)的拓展坞接入,仍然如此,至此我也不明白是线材的问题还是压根是硬件的兼容问题?
第二种思路
事实上,在没确定是硬件问题时,还试过一个比较野的方案,我先认定是软件的问题,那假如说我换成虚拟USB模拟共享呢,会不会有奇效?
Linux下安装VirtualHere
1 | cd /tmp |
Windows下安装
安装包非常简洁,只有一个可执行文件
因为忘记截图运行时的样子了,但是大致可以描述出会发生啥,
软件会自动在局域网内扫描(如果没扫到,右键
USB Hubs->Specify Hubs,输入你路由器的 IP192.168.10.26:7575)。扫描到之后,你会看到列表里出现了
SHARP AR-A208。右键点击这个打印机,选择“使用此设备” (Use this device)。
电脑随后会响一声设备自动接入提示声,效果上就是约等于将打印机接到另一台电脑上
当然,因为硬件的问题,这里仍然是不成立的,打印机的症状与p910nd接入的打印机症状相同—无任何反应
第三种思路
与路由器相爱相杀的最终方案—CUPS
到这一步,其实我已经有点心憔悴了,所以在安装的时候上没有敲终端,
启动服务
1
2/etc/init.d/cupsd start
/etc/init.d/cupsd enable编辑
/etc/cups/cupsd.conf,请务必修改到同一个局域网网段,比方我这里是192.168.10.x
- 赋权
1 | chmod 700 /usr/lib/cups/backend/usb |
- 重启**
CUPS**服务
1 | /etc/init.d/cupsd restart |
- 进入Web页面
浏览器输入http://192.168.10.26:631(修改为你的路由IP+端口631),点击 Administration 选项卡.输入Openwrt的用户名与密码
如果你能顺利的登录成功,将会无比的顺畅,点击**Add Printer**,跟着以下图片继续
添加完后会来到以下页面:
没错,没有想到,没有驱动的我们居然能走到这一步,剩下的事情就是非常简单了
- 在Windows电脑下添加网络打印机
回到这个页面下,我们需要复制一下这里的网址,
请务必记得带上打印机型号,回到Windows系统,按照名称添加共享打印机
当然就和我开头所说的结论一样,5张里能有一张打印出来就是成功,大部分情况是打印机有反应,但是被后端处理的性能卡住了,所以我断言玩客云的方案是可行的
在自我实践的同时,有三篇优秀的图文可以供大家解决,这些资料可以解决大家大部分的问题
受限于篇幅,更具体的优秀文我就不细细罗列出来了
玩客云
玩客云的方案也是很浅显的了,对于晶晨芯片的性能是怎么说也能拿下打印的处理,所以受限于篇幅,我绝对不写关于这方面的了,你可以参考以下这一篇内容
当然机子我是有的,haha,有点懒,迟早有一天会亲自实验的
Windows电脑作为打印服务器
Windows添加网络打印机的方式就不需要我多说了,主要在Windows上需要解决的是关于手机如何读取到打印机的问题
试过许多的方案,大部分并没有免费的服务,比如**Printshare,OPrint,AirPrint**
以上的方案都替你们试过了,我只能说在我的使用用途里(家用),能远离它们就远离它们。或许过几年后我再反思给他们付钱可能还来得及,下面隆重介绍—PaperCut Mobility Print,我已打包成压缩包,可以自取,不过并非所有时候都可以访问,等后续再补常规的网盘。
从左至右依次安装,并注册好此应用的本地账户,随后标记需要共享出去的打印机,从此刻开始,只要你在局域网内,不论你是iPhone还是Android均可以使用原生的打印发送打印请求到打印机,并且PaperCut Mobility Print个人使用是免费的,何乐而不为。
在客机这边还可以使用一个Github小工具来实现打印,不过我不知道为什么我这边不能使用扫描,搞得有点像摆设
总结
大体上,这一篇不足以作为一幅合格的教程文,另一方面并没有很仔细的写完所有的内容,这一篇以图充文的水分很高(有三层楼那么高),那么,下一次更新是什么时候呢,又想修博客的BUG又想重构好多东西,又想写点文章,当然我这水文就算了,总体上是既要又要,不知道是懒还是没空,今年反而没那么多时间更新内容了和修复博客的一些东西了。
那么,祝君好运与快乐健康吧!!!
下一次见,see you soon~



























