找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

 火.. [复制链接]
发表于 2021-9-9 20:49 | 显示全部楼层
ohhhhhh!厉害了,我的大佬!!!
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

 楼主| 发表于 2021-9-11 14:26 | 显示全部楼层
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.
回复

使用道具 举报

发表于 2021-9-13 21:45 | 显示全部楼层
真的是解决了千古难题。HP1020 的路由器打印 一直是个难题,感谢分享。
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

发表于 2021-9-13 22:16 | 显示全部楼层
今天搞了一天,用PADAVAN共享打印机,三星的1600直接就行了,换成HP p1106一直没搞起,原来是GDI的问题,明天 再试下
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

发表于 2021-9-14 09:57 | 显示全部楼层
1106没搞起,控制台看,sh文件是生成了的,但是路由重启打印机没动作

点评

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

使用道具 举报

发表于 2021-9-14 16:05 | 显示全部楼层
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.
回复

使用道具 举报

发表于 2021-9-14 16:44 | 显示全部楼层
你可以参考一下老毛子本人的方法: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.
回复

使用道具 举报

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

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

使用道具 举报

 楼主| 发表于 2021-9-15 00:44 | 显示全部楼层
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.
回复

使用道具 举报

发表于 2021-9-15 08:31 | 显示全部楼层
值得学习  找到宝藏了
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

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

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

使用道具 举报

 楼主| 发表于 2021-9-15 23:11 | 显示全部楼层
能否完美解决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.
回复

使用道具 举报

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

点评

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

使用道具 举报

发表于 2021-9-24 10:24 | 显示全部楼层
这个网址打不开,访问不了了。http://oleg.wl500g.info/hplj

点评

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

使用道具 举报

发表于 2021-9-24 22:51 | 显示全部楼层
m1005扫描打印一体机是安1005那个驱动吗?

点评

m1005不需要驱动,后台取消双向模式,打印机取消双向支持即可,还有个前提,电脑必须是官方驱动  详情 回复 发表于 2022-1-22 08:23
不太清楚,也许根本不需要,只有几款特殊的打印机需要热加载固件。  详情 回复 发表于 2021-9-25 12:39
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-3-29 05:07

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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

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