背景:一台小主机切换成了ESXI,无法连USB打印机共享到局域网了,书房路由换了免费薅的K2P,没有USB口。
3215U小主机安了Ubuntu,编译Android成功,耗时也还可以,昨天LEDE也编译成功了,看样子可以长期Ubuntu下去了。
既然这样,一直听说CUPS比Openwrt的打印机共享好使,正好试试
1. 安装CUPS
sudo apt-get install cups
2. 安装打印机驱动
闲鱼薅的HP1112找了一圈,也没有合适的驱动,敲了lpstat -p后,发现已经识别了,打开网址127.0.0.1:631/printers发现的确识别出来了,省事,便宜有便宜的好处
3. 配置CUPS
打开http://127.0.0.1:631/printers,最好用chrome,打开Administration 那个TAB页,把server下面的勾都选上。
局域网另外一个电脑或者手机访问http://xxxx:631/printers,如果能正常访问,说明配置OK
4. Windows就比较简单了,win10笔记本上,控制面板,添加打印机,选择“安名称共享打印机”,输入http://xxxx:631/printers/xxxx,一路Next,驱动选Win10系统自带得,没有的化,局域网有备份
\\192.168.x.3\hdd400g\apk&Tools
5. Android需要安装CUPS,得上Play市场,局域网也备份了一个
\\192.168.x.3\hdd400g\apk&Tools
安装后在图库里选一张图片选择打印,在选pdf or 打印机得界面等一会,就能自动搜索出xxxx@3215u,选择就可以打印
6. Iphone更简单了,选择一张图片分享,其中有个打印得选项,打印机选xxxx@3215u即可
2021-01-25刷新
上面写了这么多,其实从20年开始,一直就是用个703N安装luci-app-printer,用910d共享打印机的方式,原来的HP1112也退休了,换了个Epson L360,自带连供,用的很爽,把孩子上网课打作业这块支撑的很出色。
最近入手了MBP,发现打印成了问题,按网上教程可以识别打印机,但是打印乱码,咨询了淘宝专业卖打印服务器的,也说搞不定910d方式,基本就判了死刑。
不得已,想起了CUPS,因为有之前的经验,在ubuntu上很快就成功了。
以下教程主要说明openwrt上安装cups,因为闲置了一个16M flash的720N,双面胶粘到打印机上,打印机就可以随便塞哪个角落了。
首先,720N刷个可以用的最新版本
Index of /releases/17.01.7/targets/ar71xx/generic/
CUPS的ipk默认没有编译,幸亏有大神编译了,参考GitHub - lexxai/openwrt-musl-cups
720N的cpu架构是mips 24kc
按照教程,openwrt上安装过程很顺利,按上述github说明敲命令即可,打开172.0.0.1:631熟悉的界面,添加打印机,自动识别exsi添加的USB口的L360打印机。
注意,在Make选项里面,openwrt只有raw选项,而ubuntu的列表很全,可以选L210(Epson L210 - CUPS+Gutenprint v5.2.11 (color)),是兼容L360的。估计这个过程就是把驱动打到了ubuntu里,openwrt没有这个步骤。
编辑 cups 配置:sudo vim /etc/cups/cupsd.conf
注释 Listen localhost:631,并添加 Port 631
在 , , 三个块中添加 Allow all
然后进入网页设置,把Administration下面server里的勾都打上,选择保存设置,会自动重启服务
到这,windows上就可以手动添加CUPS打印机了,手动添加“按名称选择共享打印机(s)”,选http://192.168.1.5:631/printers/EPSON_L360,选择本地的L360驱动,安装即可。
如果要在MAC OS 10.15,iphone,ipad上自动发现打印机,继续往下
首先,iphone,ipad上不能选择驱动,貌似仅支持airprint,那么,需要把驱动安装到openwrt上,这个没有找到任何线索,先搁置
MAC上没有办法手动输入网址,仅支持自动发现,所以就依赖avahi
opkg install avahi-daemon
然后就是编辑你自己的vi /etc/avahi/services/AirPrint-YOUR_PRINTER.service
这个过程走了不少弯路,编辑好后,mac和iphone均发现不了,反复尝试,最终是通过avahi-browse --terminate --resolve _ipp._tcp 命令,对比ubuntu的消息,修改自己的AirPrint-EPSON_L360.service,才让mac和iphone发现打印机。
不贴xxxx.service具体内容了,方法就是安装ubuntu(虚拟机安装),连打印机,装cups,mac就自动发现打印机,敲avahi-browse --terminate --resolve _ipp._tcp 命令,根据内容生成AirPrint-xxxxx.service,注意xxxx要和cups里的一致。
还有一个方法是用python脚本,airprint-generate.py,应该也行,但依赖python3,openwrt够呛,还是需要ubuntu,centos之类,就没有尝试了。具体参考
airprint-generate/airprint-generate.py at master · tjfontaine/airprint-generate · GitHub
至此,MAC OS(我用的10.15),iphone,ipad都可以自动发现打印机了,只是iPhone,ipad打印都是乱码,只有MAC上安装驱动后(epson网站下载)可以正常打印
回到openwrt上,对比了安装前的空间,大约消耗2M,可以接受。
后面看看,能否把驱动安装到openwrt上,gutenprint-5.3.4移植到openwrt,支持真正的airprint
所有二进制,上传至baidu盘 我的资源>打印>L360-CUPS
参考文献:
关于驱动,参考,server侧可以安装raw驱动,甚至pdd文件都不要,关键是client要安驱动
CUPS上使用的爱普生打印机PPD文件-OPENWRT专版-恩山无线论坛 - Powered by Discuz!
2023-04-15刷新
22年底折腾了openwrt编译cups,没有成功,最近正好有时间,加上N1的无线wifi真是拉跨,经常无线断连,加上N1不支持AP+Client并存,断连后只能有线接电脑重新配置WIFI,忍无可忍,打算把这玩意踢下来,用720N代替,毕竟WIFI非常稳定。
编译并不复杂
1.下载github上的feed 更新源
https://github.com/obanat/openwrt-printing-packages
2.
./scripts/feeds update -a
./scripts/feeds install -a
3. 然后就可以编译了,注意把print相关的包选上,路径是Network > Printing
4. enjoy!
添加打印机可以选择驱动,我的是Epson L360,实测选L210即可
详细的操作步骤可以参考github上的说明,包含编译错误的解决
GitHub - obanat/openwrt-printing-packages: Printing packages for OpenWrt-mod
按上述操作,windows打印的问题解决了,但强迫症发作起来,发现还有两个缺陷
1)苹果的手机,pad无法搜索到打印机
2)windows的打印机自动搜索后(需要安装Bonjour),发现的打印机,无法打印
先解决第一个问题:
按github的说法,需要运行一个python脚本,实际有些弯弯绕,记录步骤如下:
1)ubuntu上安装python3,步骤不详细展开了,搜教程吧,包括下载代码编译,最后做个软连接,替换掉ubuntu系统中原本的python2.7
2)pip install pycups,中间会报编译错误,依赖安装cups的dev库
sudo apt-get install libcups2-dev
这个库在usr/include目录增加了cups目录,里面是一堆头文件,保证能编译通过
3)执行如下脚本
./airprint-generate.py -H 192.168.5.5 -d ./ -v
4)把ubuntu下生成的.service文件,例如(AirPrint-EPSON_L360.service),拷贝到openwrt的/etc/avahi/services/目录下,重启openwrt的avahi服务
/etc/init.d/avahi-daemon restart
为了省去上述麻烦,贴了一个service文件如下,就是普通的xml文件,把其中的(rp=printers/EPSON_L360_CUPS)字段改成跟真正的打印机匹配即可
AirPrint EPSON_L360 @ %h
_ipp._tcp
_universal._sub._ipp._tcp
631
txtvers=1
qtotal=1
rp=printers/EPSON_L360_CUPS
ty=Epson L210 - CUPS+Gutenprint v5.2.11
Color=T
product=(Epson L210)
printer-state=3
printer-type=0x80900E
priority=0
URF=DM3
pdl=application/octet-stream,application/pdf,application/postscript,image/jpeg,image/png,image/pwg-raster,image/urf
经过上述步骤后,ios和windows都可以发现打印机了,IOS也不需要安装驱动,但打印失败,进入cups的web节目查看打印机状态,发现显示如下错误消息:
Processing - "Can't feed job data into Ghostscript" |
安装ghostscript.ipk,或者编译openwrt的时候,把ghostscript加上即可
到此,windows和IOS的打印已经完美解决。
上述步骤应该是最小ROM的方式支持windows和IOS ariprint的了,一个16M flash的arm cpu的嵌入式系统即可搞定,相比N1,硬件依赖小多了,实际测试手机上5M的图片打印,相应延迟在5秒以内,应该可以接受。但考虑到720N的内存魔改后也只有64M,估计大的文件打印会比较吃力,还是要搞个内存大些的设备支持,普通家用应该够了。
所有中间文件,备份在
\\xxxxx\share8t\10_一些折腾记录\202304-720N-编译带cups的openwrt
openwrt安装cups,参考,要有离线ipk
LEDE/Openwrt 打印机插件 CUPS,在WIN10下添加打印机(打印机连接路由器进行远程打印)_openwrt打印服务器插件_Reven_L的博客-CSDN博客
https://aisoa.cn/post-2678.html
廉价打印机也能玩AirPrint 廉价安装cups打印机
GitHub - TheMMcOfficial/cups-for-openwrt: If you want to install cups on your openwrt router to share a usb printer or to enable airprint on your old usb/network printer follow these steps.