家里只有一台老旧的惠普P1007打印机,老婆经常需要通过微信发送文件到连接打印机的电脑来打印,甚是不便。恰好家中有一台树莓派,因此利用树莓派搭建一台网络打印机。
环境介绍
- 树莓派3B,系统版本Raspbian GNU/Linux 11
- HP LaserJet P1007
资源下载
我用夸克网盘分享了「树莓派远程网络打印机.zip」,点击链接即可保存。打开「夸克APP」,无需下载在线播放视频,畅享原画5倍速,支持电视投屏。
链接:https://pan.quark.cn/s/531c196f7aa6
提取码:cwcS
我用夸克网盘分享了「ljP1000_P1500-HB-pnp-win64-sc.exe」,点击链接即可保存。打开「夸克APP」,无需下载在线播放视频,畅享原画5倍速,支持电视投屏。
链接:https://pan.quark.cn/s/5d58ce1a034a
提取码:BPjD
步骤记录
树莓派各种初始化操作就不在这里详细展开描述了,把打印机通电,usb插到树莓派上面即可。
- 安装惠普hp打印机驱动,此安装会同时安装cups服务
sudo apt-get install hplip
- 将用户添加入lpadmin
sudo usermod -a -G lpadmin $(whoami)
- 修改cups配置环境,为了安全起见,cups服务默认是只能本地用户localhost访问的。现在我们需要远程访问,需要修改配置文件/etc/cups/cupsd.conf。在修改配置文件前,先关掉cups服务,然后再开启。
编辑内容修改为:
# Only listen for connections from the local machine.
#Listen localhost:631
Listen 0.0.0.0:631 #此行是修改行,并注释上一行
...
...
...
# Restrict access to the server…
<Location />
Order allow,deny
Allow from @Local #此行是添加行
</Location>
# Restrict access to the admin pages…
<Location /admin>
Order allow,deny
Allow from @Local #此行是添加行
</Location>
...
# Restrict access to configuration files…
<Location /admin/conf>
AuthType Default
Require user @SYSTEM
Order allow,deny
Allow from @Local #此行是添加行
</Location>
重启cups服务
sudo service cups start
- 安装foo2xqx
从github上下载foo2xqx,https://github.com/koenkooi/foo2zjshttps://github.com/koenkooi/foo2zjs,原来的网站http://foo2xqx.rkkda.com/已经无法访问。
unzip foo2zjs-master.zip
cd foo2zjs-master/
make
sudo make install
sudo make install-hotplug
sudo make cups
sudo systemctl restart cups
有些文章会提到需要执行命令sudo ./getweb p1007
,但github上下载的这个按照包已经把相应的驱动安装好了。
- 如果以上工作没问题,可以通过cups服务添加网络打印机设置了。打开同一局域网下计算机的浏览器,输入树莓派IP + :613。例如我的树莓派IP是192.168.31.93,那么输入192.168.31.93:631。
如果没有弹出对话框,选择回去再重新点击,然后输入树莓派的用户名和密码。
点击选择文件,选择相应的ppd文件。
测试
选择右上角的printers,再选择刚才添加的打印机,点击Maintenance,点击Print Test Page,打印测试页。
等刷新一会,我们进行手动添加设备。
选择按名称共享打印机http://192.168.31.93:631/printers/HP_LaserJet_P1007
如果电脑上没有相应的驱动,需要从惠普官网下载相应的打印机驱动,下载完的exe文件使用解压缩软件进行解压,选择打印机驱动时选择从电脑上安装,然后选择刚才解压缩后的文件夹即可。
以两份测试页结束本文
常见错误处理
缺纸后无法继续打印
"/var/spool/cups/d00025-001 (object 11 0): object has offset 0"
查看打印队列指令:
lpstat -R
取消所有打印队列:
cancel -a
清除缺少纸张错误:
Open /etc/cups/printers.conf in a text editor.
Look for a line that says "Reason media-empty-error". Delete it.
Save printers.conf and restart cups (sudo /etc/init.d/cups restart).
ref: https://bugs.launchpad.net/ubuntu/+source/cups/+bug/559331
重新打印某一个job
注意,-i
参数必须在-H
参数之前;jobId不能为纯数字,需要带打印机Id
lp -i HP_LaserJet_P1007-45 -H restart
知道了用命令行之后就可以用循环语句批量重新打印某一些job。
声明
本文仅对相同环境下安装的真实性负责。