« 上一篇下一篇 »

7620的openwrt用CUPs连HP1007做网络打印

很多人都用各种带有USB接口的家用路由器刷了openwrt,用p910nd打印服务器来接普通打印机作为打印服务器。但是,有一些GDI打印机,在打印之前需要把固件发送到打印机上,p910nd 力有不逮,于是翻遍中古的软件,发现CUPs还是比较方便的。自己又写了一个查询-传输脚本,探查USB打印机是否接入,如果接入了,就把固件发送过去,使得这种比较“低档”的打印机也能变身为网络打印机....^_^

====================================

【实操:我用的是HP-P1007  openwrt运行在16+64M的7620n路由器上,AP模式】


0:根据你路由器的处理器架构,自行下载并安装CUPs 的ipk(ytwl333大神的编译:https://gitee.com/ytwl333/openwrt-musl-cups/tree/master  )


1:创建一个  /etc/123 目录,将 轮询脚本 dl_sent.sh 和 dl驱动文件放进去,记得设置脚本可运行权限 +x

在使用SPI-Flash的普通openwrt路由器里,etc目录是通过overlay方式叠加在root_rom文件系统之上的。写入 /etc目录的文件变化,可以在后台被保存到Flash里,从而持久化,重启之后仍旧存在,你仅需要注意的是Flash里是否有足够的空间即可(df -h 看一下 overlayfs:/overlay对应的 / 目录的使用情况就知道了)。在使用 tf卡、eMMC 的arm处理器或者x86处理器的路由器里,/etc空间有如PC上的硬盘容量足够,你随便用。


  • #ls -l  /etc/123

  • -rwxr-xr-x    1 root     root           393 May 12 16:44   dl_sent.sh

  • -rw-r--r--    1 root     root        222443 May 12 15:10   sihpP1007.dl


2:修改 /etc/rc.local 让脚本以crontab方式运行

(或在路由器web界面修改 自启动脚本:http://192.168.1.1/cgi-bin/luci/admin/system/startup)

在 exit 0 之前增加:

  • sleep 5

  • echo  "* * * * *  /bin/ash  /etc/123/dl_sent.sh"  > /etc/crontabs/root 

  • #修改crontab,每分钟执行一下sh程序,查询是否有usb打印机插入、是否需要传递驱动给打印机


3:  dl_sent.sh 脚本内容如下:


  •  if  [ -e /dev/usb/lp0 ]

  •      then

  •         if [ -f /tmp/dl_sent.mark ]

  •         then

  •           return

  •         else

  •           cat /etc/123/sihpP1007.dl > /dev/usb/lp0 && touch /tmp/dl_sent.mark && echo "PRN:lp0=UP mark=0, sent dl and marked..." >> /tmp/syslog

  •         fi

  •      else

  •         if [ -f /tmp/dl_sent.mark ]

  •          then

  •           rm /tmp/dl_sent.mark && echo "PRN:lp0=DOWN mark=1, rm mark..." >> /tmp/syslog

  •         fi

  • fi

#解释:

# if判断,-e 表示是否存在此文件,-f表示是否普通文件

# 如果探查到usb打印机,且标记mark存在,说明一切正常,直接退出本sh

# ------如果mark文件不存在,则说明刚启动,要发送驱动给打印机,并记录事件到日志文件/tmp/syslog

#如果探查不到usb打印机,且mark标记存在,

#-------说明打印机掉线,需删除已发送mark标记,防止打印机连接后mark文件存在 从而不发送驱动了


4:  PC上安装HP的驱动: ljP1000_P1500-HB-pnp-win64-sc.exe


5:浏览 http://192.168.1.2:631/ (根据你的实际情况修改IP) 配置CUPs,增加插入的USB打印机


6:在PC上添加网络共享打印机,通常是  http://192.168.1.2:631/printers/1007 等等这样的格式,请从CUPs的管理界面里获得


OK了!

该脚本会每分钟自动运行一下,探查打印机状态,并做相应设置,你也可以修改crontab,改为2、3、5分钟均可。

无论打印机和openwrt谁先开机,无论中间打印机是否断线、断电,在设置的巡查时间间隔之后,打印机都能正常联机打印。


================================================

【参考文章】

https://www.likecs.com/show-204015396.html 加入 sihpP1007.dl > /dev/usb/lp0 就行了。

https://blog.csdn.net/wynter_/article/details/78949502  很多相关的usb的ipk都要安装


【教训:丢失了 kmod-usb-printer】

不知道为啥丢失了,于是乎,找不到 /dev/usb/lp0 !!!  为此搞了3个小时不得其解。

后来重新 update 一下源,在 kmod-usb 开头的软件包里寻找,找到后,Install之,

再 ll /dev/usb/lp0  正常了。