Openwrt编译CUPS,共享打印机给手机和PC-20230415更新

背景:一台小主机切换成了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
在 <Location />, <Location /admin>, <Location /admin/conf> 三个块中添加 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)字段改成跟真正的打印机匹配即可

<?xml version="1.0" encoding='UTF-8'?>
<!DOCTYPE service-group SYSTEM "avahi-service.dtd">
<service-group>
<name replace-wildcards="yes">AirPrint EPSON_L360 @ %h</name>
<service>
       <type>_ipp._tcp</type>
       <!-- This is key for AirPrint -->
       <subtype>_universal._sub._ipp._tcp</subtype>
       <port>631</port>
       <!-- These are copied from the txt portion of the above output -->
       <txt-record>txtvers=1</txt-record>
       <txt-record>qtotal=1</txt-record>
       <txt-record>rp=printers/EPSON_L360_CUPS</txt-record>
       <txt-record>ty=Epson L210 - CUPS+Gutenprint v5.2.11</txt-record>
       <!-- This is visible in iPhone UI -->
       <txt-record>Color=T</txt-record>
       <txt-record>product=(Epson L210)</txt-record>
       <txt-record>printer-state=3</txt-record>
       <txt-record>printer-type=0x80900E</txt-record>
       <txt-record>priority=0</txt-record>
       <txt-record>URF=DM3</txt-record>
       <txt-record>pdl=application/octet-stream,application/pdf,application/postscript,image/jpeg,image/png,image/pwg-raster,image/urf</txt-record>
</service>
</service-group>

经过上述步骤后,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.

    

  • 13
    点赞
  • 45
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
OpenWrt是一款开源的嵌入式操作系统,而CUPS是一种常用的打印机管理系统。如果您想在OpenWrt路由器上安装CUPS共享USB打印机或启用AirPrint功能,可以参考以下步骤。 首先,您可以通过引用中提供的路径访问一个带有CUPSOpenWrt编译记录进行参考。 其次,您可以在GitHub上找到一个名为"openwrt-printing-packages"的存储库,这个存储库提供了一些与打印机相关的软件包。您可以通过引用中提供的链接访问该存储库,以获取更多有关在OpenWrt上使用CUPS的信息。 另外,还有一个名为"TheMMcOfficial/cups-for-openwrt"的GitHub存储库,该存储库提供了一些安装CUPS并在OpenWrt路由器上共享USB打印机或启用AirPrint的步骤。您可以通过引用中提供的链接访问该存储库,以获取更详细的步骤说明。 综上所述,如果您想在OpenWrt上安装CUPS共享USB打印机或启用AirPrint功能,您可以参考中的编译记录、中的openwrt-printing-packages存储库以及中的TheMMcOfficial/cups-for-openwrt存储库,以获取更多有关配置和安装步骤的详细信息。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [Openwrt编译CUPS共享打印机手机PC-20230415更新](https://blog.csdn.net/obana/article/details/79336569)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值