loog2009 发表于 2021-9-9 10:34

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

gforce10 发表于 2021-9-9 20:49

ohhhhhh!厉害了,我的大佬!!!

turboYI 发表于 2021-9-11 14:26

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

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

dirdir2012 发表于 2021-9-13 21:45

真的是解决了千古难题。HP1020 的路由器打印 一直是个难题,感谢分享。

nczzz 发表于 2021-9-13 22:16

今天搞了一天,用PADAVAN共享打印机,三星的1600直接就行了,换成HP p1106一直没搞起,原来是GDI的问题,明天 再试下

nczzz 发表于 2021-9-14 09:57

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

文艺互撸娃 发表于 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

yeifang 发表于 2021-9-14 16:44

你可以参考一下老毛子本人的方法:https://bitbucket.org/padavan/rt-n56u/wiki/EN/CommonTips#!access-to-the-printer-hp-laser-jet-connected-to-usb-port

文艺互撸娃 发表于 2021-9-14 17:48

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

老毛子的方法看着更简单;P

turboYI 发表于 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,自己重新造了个轮子:)


330127240 发表于 2021-9-15 08:31

值得学习:victory:找到宝藏了

yeifang 发表于 2021-9-15 11:47

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

能够解决USB Printer热插拔的问题了吗?https://cdn.jsdelivr.net/gh/master-of-forums/master-of-forums/public/images/patch.gif

turboYI 发表于 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上的脚本如下:
#!/bin/sh

# 准备打印机热插拔时安装固件(从网上下载固件) turboYI 20210901
cat > "/tmp/usblp_hotplug.sh" <<-\EOF
#!/bin/sh
set -x
LOGFILE=/var/usblp_hotplug.log
FIRMWARE=
if [ $# -eq 3 ]; then
    #这里用于开机时调用
    DEVNAME=$1
    ACTION=$2
    DEVD=$3/device/..
    #/sys/class/usb/lp0/device/..
else
    /sbin/asus_lp $DEVICENAME $ACTION
    DEVD=/sys$DEVPATH/device/..
fi
if [ -f $DEVD/product ]; then
    product=`cat $DEVD/product`
    vid=`cat $DEVD/idVendor`
    pid=`cat $DEVD/idProduct`
    case $vid-$pid in
    03f0-0517)
      FIRMWARE=sihp1000.dl
      ;;
    03f0-1317)
      FIRMWARE=sihp1005.dl
      ;;
    03f0-4117)
      FIRMWARE=sihp1018.dl
      ;;
    03f0-2b17)
      FIRMWARE=sihp1020.dl
      ;;
    03f0-3d17)
      FIRMWARE=sihpP1005.dl
      ;;
    03f0-3e17)
      FIRMWARE=sihpP1006.dl
      ;;
    03f0-4817)
      FIRMWARE=sihpP1005.dl
      ;;
    03f0-4917)
      FIRMWARE=sihpP1006.dl
      ;;
    03f0-3f17)
      FIRMWARE=sihpP1505.dl
      ;;
    esac
    if [ $FIRMWARE -a $ACTION = 'add' ]; then
      for i in 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20; do
            if [ -c /dev/$DEVNAME ]; then
               echo "$(date "+%Y-%m-%d %H:%M:%S") : Sending $product firmware to $DEVNAME" > $LOGFILE
               cat /jffs/$FIRMWARE > /dev/$DEVNAME
               echo "$(date "+%Y-%m-%d %H:%M:%S") : done." >> $LOGFILE
               exit
            fi
            sleep 1
      done
    fi
fi
EOF
chmod a+x /tmp/usblp_hotplug.sh

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

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

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

cooljet 发表于 2021-9-23 20:19

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

baron7256 发表于 2021-9-24 10:24

这个网址打不开,访问不了了。http://oleg.wl500g.info/hplj
页: 1 [2] 3 4 5 6 7 8 9 10 11
查看完整版本: Padavan插入HP的GDI打印机时自动发送固件的脚本