OpenWrt/PandoraBox/LEDE做打印服务器连接HP1020问题汇总
此解决方案适用于HP 1000 1005 1018 1020打印机
需要在路由器上面禁用双向模式,否则无法正常打印
问题一
能识别,能添加网络打印机,不能打印,下发打印任务之后,发现打印机根本没反应,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为打印机挂载点),会发现打印机有反应,能正常打印
问题二
手动加载固件后成功打印一次,然后无法打印,错误和问题一相同
原因:打印机工作时每次打印都需要加载固件
添加脚本到路由器,自动加载固件到打印机
脚本内容
#!/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打印一次后打印一直重复打印
设置打印机属性,禁用打印机双向支持
重启路由器,测试
相关文件下载:https://dl.t2.re/Others/Openwrt%E6%8C%82%E8%BD%BDHP%E6%89%93%E5%8D%B0%E6%9C%BA/
来源:
http://blog.51cto.com/zbh3c/2084350
http://www.right.com.cn/forum/thread-212810-1-1.html