找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
广告投放联系QQ68610888
楼主: tur***

Padavan插入HP的GDI打印机时自动发送固件的脚本

 火... [复制链接]
路由器设置WIFI打印,打印文件一多系统就卡死,很鸡肋,当然用USB链接到路由器,驱动安装到电脑的没啥意思

点评

卡死是因为打印服务的存储空间不足,并发的任务量又太多。打印任务多的时候,只有等队列前面的打印完毕才能继续打印下一份,如果打印服务的调度程序不完善,就可能出错死掉。 家用无线路由器的配置本来就很低,只能  详情 回复 发表于 2021-9-11 14:26
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

ohhhhhh!厉害了,我的大佬!!!
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

 楼主| | 显示全部楼层
loog2009 发表于 2021-9-9 10:34
路由器设置WIFI打印,打印文件一多系统就卡死,很鸡肋,当然用USB链接到路由器,驱动安装到电脑的没啥意思

卡死是因为打印服务的存储空间不足,并发的任务量又太多。打印任务多的时候,只有等队列前面的打印完毕才能继续打印下一份,如果打印服务的调度程序不完善,就可能出错死掉。
家用无线路由器的配置本来就很低,只能用来担当一些任务量较小的办公室打印服务器。如果需要打印复杂的图纸,或者很多页的文档,并发任务量很大,还是用PC架设打印服务器好一些。

点评

何必呢?少说几句吧,网络这么大,聚到一起也不容易!: 0.0
何必呢?少说几句吧,网络这么大,聚到一起也不容易!: 0
PC架构就不用在linux系统搞了,win有直接支持airprint的程序  发表于 2021-10-5 14:20
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

真的是解决了千古难题。HP1020 的路由器打印 一直是个难题,感谢分享。
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

今天搞了一天,用PADAVAN共享打印机,三星的1600直接就行了,换成HP p1106一直没搞起,原来是GDI的问题,明天 再试下
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

1106没搞起,控制台看,sh文件是生成了的,但是路由重启打印机没动作

点评

1106不需要驱动,后台取消双向模式,打印机取消双向支持即可  详情 回复 发表于 2022-1-22 08:22
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

turboYI 发表于 2021-9-6 14:05
我的路由器只有8M,剩余空间装不下固件,才选择即用即下载。如果空间大,就可以把固件保存下来直接用。在 ...

如果已经把固件下载到/etc/storage,是不是下面这几句就可以不需要了?
if [ ! -f /etc/storage/$FIRMWARE ]; then
            curl -o /etc/storage/$FIRMWARE $HPLJSITE/$FIRMWARE
        fi

点评

这一句什么意思?你的怎么弄的  详情 回复 发表于 2022-3-1 07:50
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

你可以参考一下老毛子本人的方法:https://bitbucket.org/padavan/rt ... nnected-to-usb-port

点评

看来老毛子在固件里预留了一个 /opt/bin/on_hotplug_printer.sh 的调用点来解决这个问题。老毛子还提供固件下载: https://bitbucket.org/padavan/rt-n56u/wiki/browse/files/hplj/ 我之前没有看老毛子的网站,第  详情 回复 发表于 2021-9-15 00:44
老毛子的方法看着更简单  详情 回复 发表于 2021-9-14 17:48
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

yeifang 发表于 2021-9-14 16:44
你可以参考一下老毛子本人的方法:https://bitbucket.org/padavan/rt-n56u/wiki/EN/CommonTips#!access-to- ...

老毛子的方法看着更简单
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

 楼主| | 显示全部楼层
yeifang 发表于 2021-9-14 16:44
你可以参考一下老毛子本人的方法:https://bitbucket.org/padavan/rt-n56u/wiki/EN/CommonTips#!access-to- ...

看来老毛子在固件里预留了一个 /opt/bin/on_hotplug_printer.sh 的调用点来解决这个问题。老毛子还提供固件下载: https://bitbucket.org/padavan/rt-n56u/wiki/browse/files/hplj/

我之前没有看老毛子的网站,第一次用Padavan,自己重新造了个轮子


点评

能够解决USB Printer热插拔的问题了吗?  详情 回复 发表于 2021-9-15 11:47
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

值得学习  找到宝藏了
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

turboYI 发表于 2021-9-15 00:44
看来老毛子在固件里预留了一个 /opt/bin/on_hotplug_printer.sh 的调用点来解决这个问题。老毛子还提供固 ...

能够解决USB Printer热插拔的问题了吗?
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

 楼主| | 显示全部楼层
能否完美解决USB Printer热插拔的问题了不知道,但我相信方向没错。

昨天晚上我看了老毛子网站的那篇文章,文章里只说了修改 /opt/bin/on_hotplug_printer.sh 脚本文件里的固件路径指向插入打印机的固件,然后开启TCP/IP RAW(9100)端口的打印服务就行了。我没有阅读过固件源码,乐观估计是作者在mdev_lp程序里留了一个口子。

Padavan我只刷过Hiboy编译的版本,发现里面对硬件热插拔的处理是基于mdev的,所以就想在/etc/mdev.conf里动动手脚。这个接管在原理上是可行的。我只测试过RT-N56U和HP Laserjet 1020,无论是开机自动发送打印机固件,还是中途再打开打印机电源,脚本都能正常工作。

可是前几天我的N56U坏了,/opt/bin/on_hotplug_printer.sh 的接口是否还有,无法再验证。

前几天群里有朋友出腾达AC9,我就买了一个,Flash空间够大,自带梅林固件。我看了一下热插拔的配置文件是/etc/hotplug2.rules——这个文件的格式也很简单,还有个后台服务hotplug2。就按前面Padavan的思路改写了一下脚本,也能基本达到预期(在工具箱->用户脚本->Services-start中加载,实现开机发送打印机固件和中途开打印机时发送固件)。这里因为梅林的WAN-start在Services-start之后,Services-start时还没有上网,所以得先准备好打印机固件文件,保存在/jffs/。我写在AC9上的脚本如下:
  1. #!/bin/sh

  2. # 准备打印机热插拔时安装固件(从网上下载固件) turboYI 20210901
  3. cat > "/tmp/usblp_hotplug.sh" <<-\EOF
  4. #!/bin/sh
  5. set -x
  6. LOGFILE=/var/usblp_hotplug.log
  7. FIRMWARE=
  8. if [ $# -eq 3 ]; then
  9.     #这里用于开机时调用
  10.     DEVNAME=$1
  11.     ACTION=$2
  12.     DEVD=$3/device/..
  13.     #/sys/class/usb/lp0/device/..
  14. else
  15.     /sbin/asus_lp $DEVICENAME $ACTION
  16.     DEVD=/sys$DEVPATH/device/..
  17. fi
  18. if [ -f $DEVD/product ]; then
  19.     product=`cat $DEVD/product`
  20.     vid=`cat $DEVD/idVendor`
  21.     pid=`cat $DEVD/idProduct`
  22.     case $vid-$pid in
  23.     03f0-0517)
  24.         FIRMWARE=sihp1000.dl
  25.         ;;
  26.     03f0-1317)
  27.         FIRMWARE=sihp1005.dl
  28.         ;;
  29.     03f0-4117)
  30.         FIRMWARE=sihp1018.dl
  31.         ;;
  32.     03f0-2b17)
  33.         FIRMWARE=sihp1020.dl
  34.         ;;
  35.     03f0-3d17)
  36.         FIRMWARE=sihpP1005.dl
  37.         ;;
  38.     03f0-3e17)
  39.         FIRMWARE=sihpP1006.dl
  40.         ;;
  41.     03f0-4817)
  42.         FIRMWARE=sihpP1005.dl
  43.         ;;
  44.     03f0-4917)
  45.         FIRMWARE=sihpP1006.dl
  46.         ;;
  47.     03f0-3f17)
  48.         FIRMWARE=sihpP1505.dl
  49.         ;;
  50.     esac
  51.     if [ $FIRMWARE -a $ACTION = 'add' ]; then
  52.         for i in 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20; do
  53.             if [ -c /dev/$DEVNAME ]; then
  54.                echo "$(date "+%Y-%m-%d %H:%M:%S") : Sending $product firmware to $DEVNAME" > $LOGFILE
  55.                cat /jffs/$FIRMWARE > /dev/$DEVNAME
  56.                echo "$(date "+%Y-%m-%d %H:%M:%S") : done." >> $LOGFILE
  57.                exit
  58.             fi
  59.             sleep 1
  60.         done
  61.     fi
  62. fi
  63. EOF
  64. chmod a+x /tmp/usblp_hotplug.sh

  65. rm /etc/hotplug2.rules
  66. sed 's/\/sbin\/asus_lp/\/tmp\/usblp_hotplug.sh/' /rom/etc/hotplug2.rules > /etc/hotplug2.rules

  67. for pid in `ps | grep hotplug2 | awk '{print $1}'`; do
  68.     kill $pid
  69. done
  70. hotplug2 --persistent --no-coldplug --set-rules-file /etc/hotplug2.rules &

  71. # 启动时如果检查到了打印机,就安装固件
  72. for i in 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20; do
  73.     if [ -c /dev/usb/lp0 ]; then
  74.         if [ -d /sys/class/usb/lp0 ]; then
  75.             /tmp/usblp_hotplug.sh usb/lp0 add /sys/class/usb/lp0
  76.             exit
  77.         fi
  78.     fi
  79.     sleep 1
  80. done
复制代码


点评

感谢大神,无私奉献,终于搞定!!  详情 回复 发表于 2022-3-11 18:12
大神,我的路由器是网件r6400,刷的是梅林3.8.0固件,我的打印机是hp1007,我通过winscp将打印机驱动放在了jffs目录下。我用ssh试过 “cat /jffs/sihpP1007.dl >/dev/usb/lp0”命令,打印机有反应,打印机指示灯为绿  详情 回复 发表于 2022-2-28 10:10
我的梅林里没有Services-start,怎么弄?  详情 回复 发表于 2022-2-27 21:47
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

来自手机 | 显示全部楼层
楼主 你分的两个脚本,第一个是每一次都把驱动联网下载一下安装,热插拔打印机后加载驱动打印,第二个是把驱动下载下来存在路由器中,每次就不需要联网下载驱动,就可以路由器不需要联网就可以打印了?

点评

是这样的。 1楼的每次都下载到内存临时空间,路由器重启就丢失,但是节约空间。 13楼的是下载到/etc/starage/文件夹,可以保存,占用了一百多KB,但以后重启就不用再下载。  详情 回复 发表于 2021-9-25 12:45
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

这个网址打不开,访问不了了。http://oleg.wl500g.info/hplj

点评

可以换成老毛子网站的地址:  详情 回复 发表于 2021-9-25 12:35
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-4-28 02:50

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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

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