OpenWrt/PandoraBox/LEDE打印服务器连接HP1020发送GDI驱动HP1020打印一次一直重复打印

2020-12-26
1评论
/
阅读
管理员

此解决方案适用于HP 1000 1005 1018 1020打印机

需要在路由器上面禁用双向模式,否则无法正常打印

GDI打印机发送驱动

HP1020等GDI打印机发送驱动的问题

能识别,能添加网络打印机,不能打印,下发打印任务之后,发现打印机根本没反应,Windows系统日志有报错

Administrator 拥有的文档 打印文档 无法在打印机 HP LaserJet 1020 上打印。请尝试再次打印文档,或重新启动后台打印程序。

数据类型: RAW。后台文件大小(以字节为单位): 1414944。打印的字节数: 1414944。文档页面总数: 1。打印页面总数: 0。客户端计算机: \DESKTOP-EOG90GN。打印处理器返回的 Win32 错误代码: 1803。打印机命令无效。

原因:主机型打印机(也叫Windows 打印机,GDI打印机)需要每次上传固件,1020就是这种的

复制固件sihp1020.dl到路由器/etc

执行

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

加载固件到打印机(/dev/usb/lp0为打印机挂载点),会发现打印机有反应,能正常打印

GDI打印机发送驱动打印服务器

问题二

手动加载固件后成功打印一次,然后无法打印,错误和问题一相同

原因:打印机工作时每次打印都需要加载固件

添加脚本到路由器,自动加载固件到打印机

脚本内容

#!/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/hp1020
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
fi

保存为/etc/hotplug.d/usb/10-usb_printer(替换原有的10-usb_printer文件)

usb_printerid需要自行编译

HP1020打印一次后打印一直重复打印

HP1020打印一次后打印一直重复打印

设置打印机属性,禁用打印机双向支持

重启路由器,测试

本站附件分享,如附件失效,可以去找找看
诚通网盘附件百度网盘附件
PS:由于百度网盘附件太大,所以百度网盘附件为拆分压缩,全部下载后打开zip后缀文件即可。也可以只下载zip后缀文件查看(只可以查看不能解压)是否有需要的文件,再下载全部文件解压需要的文件


干饭福利分享: 微信扫码领取“饿了么”抵用券↓↓↓↓↓↓↓↓↓↓

于2020-12-26发布