找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
广告投放联系QQ68610888
查看: 16593|回复: 10

Openwrt+cups+airprint有条件可以试下管用否

[复制链接]
发表于 2021-5-29 09:57 | 显示全部楼层 |阅读模式
本帖最后由 龙哥驾驶员 于 2021-5-29 10:32 编辑

转载自 https://eko.one.pl/?p=openwrt-cupsOpenWrt - CUPS
Printserwer - CUPS 打印系统
最后更改:2020-12-30 21:26
CUPS 是 Linux 和 MacOS 中使用的打印系统(Apple 一直是该项目的所有者)。该系统支持创建打印服务器、网络打印机和其他与打印相关的元素的巨大可能性。可以创建RAW打印机(没有驱动程序,所有以相同形式出现的内容都发送到打印机)或以ppd文件的形式安装驱动程序并创建一个普通的网络打印机。在 OpenWrt 中,如果你想使用后一个选项,可能会出现一些问题,因为缺少在某些模型上打印所需的附加文件(例如特殊过滤器将打印格式更改为打印机可以理解的形式),但在许多情况下这应该不是问题。CUPS在控制、排队和打印监督机制方面也比[color=rgb(108, 138, 63) !important]p910nd有优势。它还有一个图形配置面板。

我们假设路由器有一个 USB 连接器并安装了它的支持(例如kmod-usb2包)。您还需要在系统上为root用户设置密码。以下指南介绍了 RAW 打印机的安装。下面的教程是用Xerox Phaser 3117打印机在OpenWrt Attitude Adjustment上测试的,安装CUPS本身需要6MB左右,所以可能需要创建一个important

CUPS 包在当前的 OpenWrt 版本中不可用
1、安装确保未安装kmod-usb-printerp910nd驱动程序。CUPS 本身在一个特殊库的帮助下使用 USB 端口,所以它不需要这个驱动程序


    # opkg remove kmod-usb-printer p910nd


如果安装了这些软件包,请立即重新启动路由器。
如果是gargoyle,记得先把plugin-gargoyle-usb-printer包去掉。
如果你得到没有这样的包的错误,那么我们可以采取进一步的措施


    # opkg install cups
    # opkg install cups-locale-pl # dla wygody, nie jest to konieczne


配置文件是/etc/cups/cupsd.conf,它需要一些修改才能使 OpenWrt 上的 cups 工作顺畅。您可以使用文本编辑器或使用以下命令更改文件:
- 更改运行 cups 的用户


    # sed -i 's/User nobody/User root/' /etc/cups/cupsd.conf
    # sed -i 's/Group nogroup/Group root/' /etc/cups/cupsd.conf


- 我们更改授权


    # sed -i 's/AuthClass.*/AuthClass Anonymous/' /etc/cups/cupsd.conf


- 另外 - 我们为杯子中的 USB 模块设置了适当的访问权限


    # chmod 700 /usr/lib/cups/backend/usb


默认设置为从 192.168.1.0/24 网络访问。如果我们使用不同的地址类,则应根据所使用的寻址对其进行更改(允许选项)。
2、检测打印机
将打印机连接到USB,运行模块并检查它是否可见


    # /usr/lib/cups/backend/usb


如果是这样,应该会出现一些信息,就我而言,它是:


    DEBUG: list_devices
    DEBUG: usb_find_busses=1
    DEBUG: usb_find_devices=5
    direct usb://Xerox/Phaser%203117?serial=L93813649....... "Xerox Phaser 3117" "Xerox Phaser 3117" "MFG:Xerox;CMD:GDI;MDLhaser 3117;CLSRINTER;MODE:GDI;STATUS:IDLE;" ""


我们运行cupsa


    # /etc/init.d/cupsd enable
    # /etc/init.d/cupsd start


3、配置
我们通过在浏览器中输入地址http://192.168.1.1:631/admin来启动图形界面。现在依次选择:
-添加打印机
-本地打印机,选择打印机名称(在本例中为Xerox Phaser 3117 (Xerox Phaser 3117)
- 点击继续
- 描述打印机 - 您可以保留默认选项但选择共享此打印机
- 点击继续
- 选择RAW作为驱动程序
- 点击添加打印机. 我们

将被要求输入密码 - 我们输入路由器的root登录名和密码。

- 将询问横幅,设置为并选择Set Default Options

这是整个配置。我们提供的打印机名称很重要 - 它也应该出现在 URL 地址上。就我而言,它是http://192.168.1.1:631/printers/Xerox_Phaser_3117
4、将固件上传到打印机(未测试)
某些打印机(例如HP LaserJet 1020)要求您在下载之前下载固件。这可以通过/etc/hotplug.d/usb/20-printer 中的脚本完成,内容如下:


    #!/bin/sh
    fw="/usr/lib/sihp1020.img"

    logger "loading firmware $fw to CUPS USB device ..."
    (
        for uri in `$USB_BACKEND 2> /dev/null | grep -i 'HP.*LaserJet.*' | grep -v FWVER | cut -d ' ' -f 2`; do
            if DEVICE_URI="$uri" /usr/lib/cups/backend/usb 1 1 1 1 '' $fw 2> /dev/null; then
                logger "$uri... download successful."
            else
                logger "$uri... download failed."
            fi
        done
    ) &


5、从 Linux 和 MacOS 打印我们也在 Linux 中安装 CUPS,在 MacOS 中应该是标准配置。转到配置 ( http://127.0.0.1:631/ ),选择管理,添加打印机,然后选择Internet 打印协议 (https)。作为连接,我们给出之前获得的名称,即http://192.168.1.1:631/printers/Xerox_Phaser_3117。接下来,我们自行决定继续,但选择一个特定的驱动程序,即不是RAW而是Xerox / Phaser 3117。可以通过向打印机发送测试页来测试操作。
根据您使用的 CUPS 版本,您可以尝试使用不同的协议 - IPP(对于 CUPS 1.5.x - ipp: //192.168.1.1: 631 / printers / Xerox_Phaser_3117) 或 IPP14(对于 CUPS - ipp14: //192.168.1.1: 631 / 打印机 / Xerox_Phaser_3117)。某些打印机/配置可能需要使用旧版本的 IPP14。
6、从 Windows 打印对于 Windows 7 Home:从菜单中选择设备和打印机,然后选择添加打印机添加网络、无线或蓝牙打印机。将显示搜索打印机的窗口,但是,我们选择选项我正在寻找打印机不在列表中。我们选择按名称选择共享打印机并输入我们的名称,在本例中为http://192.168.1.1:631/printers/Xerox_Phaser_3117。我们通过选择正确的驱动程序(在本例中为 Xerox/Phaser 3117)来更进一步。最后,您可以通过向打印机发送测试页来验证操作是否正确。
7、airprint 拥有 Apple 设备(iPad、iPhone、iPod touch、Mac),您可以通过运行[color=rgb(108, 138, 63) !important]AirPrint来简化从它们的打印。不幸的是,打印机需要 CUPS 完全支持(不是原始的,需要特定的 ppd 驱动程序)。因此,便宜且简单的 GDI 打印机并不适合。
设置 AirPrint 相当简单,归结为为您的important]Avahi服务创建适当的文件。描述了设置此服务的详细说明;简而言之,执行以下命令:


    # opkg update
    # opkg install avahi-daemon dbus libavahi-dbus-support
    # /etc/init.d/dbus enable
    # /etc/init.d/dbus start
    # /etc/init.d/avahi-daemon enable
    # /etc/init.d/avahi-daemon start


现在,您要做的就是创建适当的服务文件,在这种情况下(具有适当ppd的Xerox / Phaser 3117打印机)如下所示:


    <?xml version="1.0" ?><!DOCTYPE service-group  SYSTEM 'avahi-service.dtd'>
    <service-group><name replace-wildcards="yes">AirPrint Xerox_Phaser_3117 @ %h</name>
    <service>
        <type>_ipp._tcp</type>
        <subtype>_universal._sub._ipp._tcp</subtype>
        <port>631</port>
        <txt-record>txtvers=1</txt-record>
        <txt-record>qtotal=1</txt-record>
        <txt-record>Transparent=T</txt-record>
        <txt-record>URF=none</txt-record>
        <txt-record>rp=printers/Xerox_Phaser_3117</txt-record>
        <txt-record>note=Xerox Phaser 3117</txt-record>
        <txt-record>product=(GPL Ghostscript)</txt-record>
        <txt-record>printer-state=3</txt-record>
        <txt-record>printer-type=0x4</txt-record>
        <txt-record>pdl=application/octet-stream,application/pdf,application/postscript,application/vnd.cups-raster,image/gif,image/jpeg,image/png,image/tiff,image/urf,text/html,text/plain,application/rss+xml,application/vnd.cups-banner,application/vnd.cups-command</txt-record>
    </service>
    </service-group>


您可以使用基于 CUPS 配置的适当脚本为我们执行此操作:


    # opkg install wget
    # opkg install python/python-cups python-expat
    # cd /tmp
    # wget -O airprint-generate.py --no-check-certificate https://raw.github.com/tjfontain ... irprint-generate.py
    # echo "image/urf urf string(0,UNIRAST<00>)" >> /usr/share/cups/mime/mime.types
    # echo "image/urf application/pdf 100 pdftoraster" >> /usr/share/cups/mime/mime.convs
    # /etc/init.d/cups restart
    # chmod 755 ./airprint-generate.py
    # ./airprint-generate.py


将在当前目录中创建包含打印机数据的服务文件(RAW 文件将被跳过)。您只需要将它们复制到正确的位置并重新启动avahi服务:


    # cp AirPrint-Xerox_Phaser_3117.service /etc/avahi/services/
    # /etc/init.d/avahi-daemon stop
    # /etc/init.d/avahi-daemon start


可以卸载 wget / python / python-cups / python-expat 包,因为此服务不再需要它们。
谷歌云打印对于带有 Android 徽章的设备用户,基于云的打印服务可以派上用场。简而言之,它包括在谷歌云中共享配置的打印机,以便设备可以远程打印到这样的共享打印机。与AirPrint一样,要求CUPS完全支持打印机并安装自己的PPD驱动程序(不是RAW!)。Google 打印是 Android 4.4 (KitKat) 的标准配置,对于其他版本,可以在[color=rgb(108, 138, 63) !important]Google Play上找到相应的应用程序。

Google 云打印已于 2021 年初关闭。
整个操作归结为安装适当的脚本并运行它:


    # opkg install wget
    # opkg install python python-openssl python-cups
    # cd /root
    # wget --no-check-certificate https://github.com/armooo/cloudprint/archive/master.tar.gz
    # tar zxvf master.tar.gz
    # rm master.tar.gz
    # python cloudprint-master/cloudprint/cloudprint.py


我们提供 Google 帐户的用户名和密码。目前,打印机在我们的 Google 帐户中可用,您可以在上面打印。如果我们想注销账户,我们执行命令


    # python /root/cloudprint-master/cloudprint/cloudprint.py -l


也可以将用于挂载的数据放置在文件中(使用-a选项)
该服务不需要打开防火墙上的任何端口。
结尾在 cupsa 配置文件中有一个选项 ( TempDir ) 指示临时存储打印数据的目录。默认是/var中的目录,也就是内存中的OpenWrt。如果您使用的是 extroot,最好将其更改为媒体上的其他目录以确保有足够的空间。
默认情况下,还有两个预定义的打印机配置,名为USBLPT。它们可以被移除。

发表于 2021-6-2 02:06 | 显示全部楼层
正好需要我来试试
回复 支持 反对

使用道具 举报

发表于 2021-6-22 11:44 | 显示全部楼层
感谢,有空试试
Openwrt+cups+airprint有条件可以试下管用否
回复 支持 反对

使用道具 举报

发表于 2021-6-23 16:05 | 显示全部楼层
Openwrt+cups+airprint有条件可以试下管用否
回复 支持 反对

使用道具 举报

发表于 2021-6-26 16:51 | 显示全部楼层
mt7628上已经测试过,共享打印成功,airprint出错。查阅openwrt官网资料,没有看到看airprint的成功案例。
回复 支持 反对

使用道具 举报

发表于 2023-1-7 10:05 来自手机 | 显示全部楼层
看了很多帖子,感觉cups还是略为复杂,要各种后配置,有直接集成在固件中自动适配打印机的脚本吗?即只要知道路由器盒子的IP地址,就能按默认URL(替换地址)添加打印机,

点评

p910nd这个比较老了  详情 回复 发表于 2023-4-8 00:30
回复 支持 反对

使用道具 举报

发表于 2023-4-8 00:30 来自手机 | 显示全部楼层
aming.ou 发表于 2023-1-7 10:05
看了很多帖子,感觉cups还是略为复杂,要各种后配置,有直接集成在固件中自动适配打印机的脚本吗?即只要知 ...

p910nd这个比较老了
回复 支持 反对

使用道具 举报

发表于 2024-3-1 16:03 | 显示全部楼层
配置好了  电脑可以用 Airprint搜不到打印机

点评

配置好了,苹果手机能找到打印机,但是打印失败  详情 回复 发表于 2024-3-7 20:08
回复 支持 反对

使用道具 举报

发表于 2024-3-7 20:08 | 显示全部楼层
ANDY618 发表于 2024-3-1 16:03
配置好了  电脑可以用 Airprint搜不到打印机

配置好了,苹果手机能找到打印机,但是打印失败

点评

最后实现了吗? 我想在我的 WRT 上面安装 CUPS,让iPHONE 搜索到 AirPrint实现打印功能。  详情 回复 发表于 2024-4-1 16:07
回复 支持 反对

使用道具 举报

发表于 2024-4-1 16:07 | 显示全部楼层
hmtqjjj 发表于 2024-3-7 20:08
配置好了,苹果手机能找到打印机,但是打印失败

最后实现了吗?  我想在我的 WRT 上面安装 CUPS,让iPHONE 搜索到 AirPrint实现打印功能。

点评

没搞好,不知道哪里有问题,还是搞一个电视的机顶盒 拿来刷吧,可以装个docker  详情 回复 发表于 2024-4-2 08:41
回复 支持 反对

使用道具 举报

发表于 2024-4-2 08:41 | 显示全部楼层
wuliken 发表于 2024-4-1 16:07
最后实现了吗?  我想在我的 WRT 上面安装 CUPS,让iPHONE 搜索到 AirPrint实现打印功能。 ...

没搞好,不知道哪里有问题,还是搞一个电视的机顶盒

拿来刷吧,可以装个docker
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

欢迎大家光临恩山无线论坛上一条 /1 下一条

有疑问请添加管理员QQ86788181|手机版|小黑屋|Archiver|恩山无线论坛(常州市恩山计算机开发有限公司版权所有) ( 苏ICP备05084872号 )

GMT+8, 2024-6-15 00:17

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

| 江苏省互联网有害信息举报中心 举报信箱:js12377 | @jischina.com.cn 举报电话:025-88802724 本站不良内容举报信箱:68610888@qq.com

快速回复 返回顶部 返回列表