2020
10-04

Pandorabox固件安装p910nd搭建无线打印服务器GDI打印机发送驱动打印服务器

Pandorabox固件安装p910nd搭建无线打印服务器

一、Pandorabox固件+p910nd

Pandorabox固件

2017年的老固件地址:

http://downloads.openwrt.org.cn/PandoraBox/
最新的第三方固件地址:

http://downloads.pangubox.com:6380/pandorabox/

MT7620 最新的是19.01

http://downloads.pangubox.com:6380/pandorabox/19.01/targets/ralink/mt7620/

MT7621 最新的是19.02

http://downloads.pangubox.com:6380/pandorabox/19.02/targets/ralink/mt7621/

1、安装软件

opkg update
opkg install luci-app-p910nd
opkg install kmod-usb-printer
opkg install luci-app-usb-printer(这个好像可以不安装)
opkg install p910nd

opkg install可以一行命令安装多个软件,每个软件名称之间 用空格隔开就行:

opkg update
opkg install kmod-usb-printer usbutils p910nd luci-app-p910nd

安装后 去 系统-启动项 确认先是否开机运行,如果有问题,可以尝试重启一下。

服务-打印服务器 界面绑定打印机的端口,勾选 enable启用,选择打印机,interface网络接口默认 不指定,或者选择LAN 都可以。 端口默认 9100就行,双向模式一般不选。

putty 连上路由,看看是否监听了9100端口:

/etc/init.d/p910nd enable
netstat –an

2、将打印机开机,将USB连上路由器

(3个命令都可以查看打印机连接情况)

2.1   ls /dev/usb/   可以查看USB打印机连接情况

ls /dev/usb/

返回:lp0 ,如果连接了2个打印机会显示: lp0  lp1

ls /dev/usb/lp0

返回:/dev/usb/lp0

(这个打印机挂载的位置,后面会用到。)

这个命令lp0正确的状态(crw-r--r--):

ls /dev -la

返回:crw-r--r--    1 root     root      180,   0 Apr 25 16:04 lp0

2.2

dmesg | grep printer

[   23.604000] usblp 1-1.2:1.0: usblp0: USB Bidirectional printer dev 3 if 0 alt 0 proto 2 vid 0x03F0 pid 0x2B17

[   23.616000] usblp 1-1.3:1.1: usblp1: USB Bidirectional printer dev 4 if 1 alt 0 proto 2 vid 0x03F0 pid 0x3B17

2.3

lsusb -v | grep ID

  (需要安装usbutils)

返回:

Bus 001 Device 004: ID 03f0:3b17 Hewlett-Packard LaserJet M1005 MFP

Bus 001 Device 003: ID 03f0:2b17 Hewlett-Packard LaserJet 1020

如果提示lsusb not found,则需要安装usbutils: 

opkg update (安装软件每次都要运行更新软件源,否则就会提示“Unknown package”)
opkg install usbutils (安装了这个才能使用 lsusb命令)

3. HP 1020,HP MFP M1005,HP 1000,HP1018 等打印机 每次打印都要用cat命令把firmware传送到打印机里。如果你的打印不属于此类就可以直接跳过本文。

GDI打印机Padavan固件网络打印断电驱动丢失问题

3.1.用winscp把sihp1020.dl上传到/etc/ 目录,当然你也可以上传到/lib/目录下

(sihp1020.dl即是惠普1020打印机的固件)

hp打印固件地址:http://oleg.wl500g.info/hplj/

3.2.前面已经说过 用

ls /dev/usb/lp0

可以查看USB打印机挂载的位置。winscp直接查看这个/dev/目录也行;另外,luci里查看系统日志,打印机挂载路径 /dev/usb/lp0(一般都是这个,有的文章说有的打印机挂载的位置是/dev/lp0)。

3.3 putty 软件 以telnet或ssh协议连接路由器,执行如下命令:

cat /etc/sihp1020.dl >>/dev/usb/lp0

按回车之后会发现,打印机有类似插上电源的动静了,表示驱动传送成功。

下面就是要实现的就是通过代码检测usb打印机,就自动传送打印固件。

以下代码我都用过,只需要注意3个地方:

固件上传的路径、打印机设备挂载位置、产品的代码。

固件路径:/usr/lib/sihp1005.dl

打印机设备挂载位置:/dev/usb/lp0

打印机型号代码:3f0/3b17/100

例如(查看命令lsusb -v | grep ID,需要安装usbutils):

HP M1005 的ID: 03f0:3b17 

HP 1020    的ID: 03f0:2b17 

将HP打印机固件定时发送到打印机的代码,见15楼:
https://www.right.com.cn/forum/thread-212810-1-1.html

下面是HP1005的代码,保存为20-printer,具体路径:

/etc/hotplug.d/usb/20-printer

#!/bin/sh
# change this to the location where you put the .dl file:
FIRMWARE=/usr/lib/sihp1005.dl
DEVICE=/dev/usb/lp0
LOGFILE=/var/log/printer
if [ "$PRODUCT" = "3f0/3b17/100" -a "$ACTION" = "add" -a "$DEVTYPE" = "usb_interface" ]; then
   echo "$(date): STARTING" > $LOGFILE
   for i in $(seq 30); do
       echo "$(date): Attempt number $i on $DEVICE" >> $LOGFILE
       if [ -c $DEVICE ]; then
          echo "$(date): Device $DEVICE found." >> $LOGFILE
          if [ -z "'usb_printerid $DEVICE | grep FWVER" ]; then
              echo "$(date): No firmware found on $DEVICE" >> $LOGFILE
              echo "$(date): Sending firmware to printer..." >> $LOGFILE
              cat $FIRMWARE > $DEVICE
              echo "$(date): done." >> $LOGFILE
          else
              echo "$(date): Firmware already there on $DEVICE" >> $LOGFILE
          fi
          echo "$(date): EXITING" >> $LOGFILE
          exit
       fi
       sleep 1
    done
fi

下面是HP1020的代码,保存为10-usb-printer,具体路径为:

/etc/hotplug.d/usb/10-usb-printer

#!/bin/sh
set -e
# change this to the location where you put the .dl file:
FIRMWARE=/etc/sihp1020.dl
DEVICE=/dev/usb/lp0
LOGFILE=/tmp/hp-fm
if [ "$PRODUCT" = "3f0/2b17/100" -a "$ACTION" = "add" -a "$DEVTYPE" = "usb_interface" ]; then
   echo "$(date): STARTING" > $LOGFILE
   for i in $(seq 30); do
       echo "$(date): Attempt number $i on $DEVICE" >> $LOGFILE
       if [ -c $DEVICE ]; then
          echo "$(date): Device $DEVICE found." >> $LOGFILE
          if [ -z "`usb_printerid $DEVICE | grep FWVER`" ]; then
              echo "$(date): No firmware found on $DEVICE" >> $LOGFILE
              echo "$(date): Sending firmware to printer…" >> $LOGFILE
              cat $FIRMWARE > $DEVICE
              echo "$(date): done." >> $LOGFILE
          else
              echo "$(date): Firmware already there on $DEVICE" >> $LOGFILE
          fi
          echo "$(date): EXITING" >> $LOGFILE
          exit
       fi
       sleep 1
    done
sleep 10
/etc/rc.d/S70usb_printer restart
fi

最后再多说一句,windows 添加打印机的时候,一定要去“打印机属性”里“端口”标签选项卡,去掉“双向打印”的勾,否则会出现不停地重复打印,停不下来,只能关电源。

参考:

http://blog.sina.com.cn/s/blog_6b9a8e7d0102vo4i.html

https://blog.51cto.com/zbh3c/2084350

910nd打印服务器的方案用了很长时间了,连接单台打印机基本够用,只有一个问题,就是打印机关闭电源后再开,需要进入路由器后台,服务-USB打印 将打印机的端口和设置再保存应用一下,才能正常使用。

p910nd 支持多个打印机共享的 LuCI 模块 (p910nd 改进版) 

https://www.right.com.cn/forum/thread-142071-1-1.html

参考:https://www.right.com.cn/forum/thread-4009734-1-1.html

如果您通过本站解决了一些问题,并希望本站能够很好的发展下去,动动手指即可帮助我们。

如无特殊说明,解压密码均为:aisoa.cn

您可能感兴趣的文章

支付宝打赏支付宝打赏微信打赏微信打赏