网络上关于”基于树莓派的网络打印服务器“的资料非常多了,感谢大神们的无私分享,才能让技术不停传递,造福所有人!
建这个服务器的起因和目的很简单:
1. 手边有树莓派
2. 家里有闲置的USB接口打印机
3. 有多人多电脑打印的需求,但不想用电脑做服务器,用树莓派更加方便
4. 闲置也是闲置,不如利用手边的设备玩一玩
OK,首先列一下我的设备和环境:
1. 树莓派B型(我还试了Pi2 Model B,都可以,具体哪个型号应该不是太重要,本文以树莓派B型为例)
2. 树莓派软件版本
使用官方的raspbian,版本信息如下:
$ cat /proc/version
Linux version 4.9.39+ (dc4@dc4-XPS13-9333) (gcc version 4.9.3 (crosstool-NG crosstool-ng-1.22.0-88-g8460611) ) #1021 Mon Jul 24 11:27:49 BST 2017
$ uname -a
Linux raspberrypi 4.9.39+ #1021 Mon Jul 24 11:27:49 BST 2017 armv6l GNU/Linux
3. 打印机型号:惠普LaserJet 1020 激光打印机
下面列举一下我的安装过程:
1. 登录树莓派的console,执行sudo apt-get update
2. 执行sudo apt-get install cups以安装cups,安装过程同时会安装相关依赖项,执行完成即可。
cups是UNIX-Like系统的一个统一打印管理系统,由Apple开发并开源(赞一下Apple),详情可参考https://www.cups.org/
3. 需要使用foo2zjs以驱动我的LaserJet 1020,foo2zjs见http://foo2zjs.rkkda.com/。安装方法在网站上也有详细介绍,参考执行如下命令:
$ wget -O foo2zjs.tar.gz http://foo2zjs.rkkda.com/foo2zjs.tar.gz
$ tar zxf foo2zjs.tar.gz
$ cd foo2zjs
$ make
$ ./getweb 1020
$ sudo make install
$ sudo make install-hotplug
$ sudo make cups
上述命令完全照搬自foo2zjs的官网,照样执行即可,执行命令过程中曾遇到缺少动态库支持的问题,根据缺少的库名称使用sudo apt-get install libname安装好即可。
4. 执行 sudo usermod -a -G lpadmin username 以允许配置cups。
至此安装结束,将打印机接到树莓派的USB口上,通过cups进行打印机的添加和配置。
1. 在树莓派的GUI界面上可以通过内置的浏览器访问https://localhost:631,进入cups web配置界面。也可以在/etc/cups/cupsd.conf文件中将localhost:631修改为Port 631,同时在其中增加如下红色字体部分:
# Restrict access to the server...
<Location />
Order allow,deny
Allow @LOCAL
</Location>
# Restrict access to the admin pages...
<Location /admin>
Order allow,deny
Allow @LOCAL
</Location>
# Restrict access to configuration files...
<Location /admin/conf>
AuthType Default
Require user @SYSTEM
Order allow,deny
Allow @LOCAL
</Location>
通过PC远程访问https://192.168.31.44:631(IP地址根据自己树莓派的实际情况修改)进入配置界面。如果修改了cupsd.conf,需要执行sudo service cups restart重启cups服务。
2. 在配置界面的administration界面上,选中如下选项:
点击change setting后等待配置结束,期间需要输入树莓派的账户和密码。
3. 在administration界面上,点击Add Printer按钮步骤添加打印机:
对于LaserJet1020界面上出现的打印机是:
在如下界面需要选中Share This Printer
驱动程序选择如下图:
选择完驱动点击Add Printer后直接Set Default Options即可。
4. 至此打印机添加完成,可以在Printer标签栏中看到:
至此打印机添加结束。
下面只需要在电脑上按照添加打印机的过程添加此网络打印机即可,打印机的链接地址即在Printer界面看到的链接地址,如:
http://192.168.31.44:631/printers/HP_LaserJet_1020
注意开头是http而不是https。
在Win10上,添加过程中需要选择对应的打印机驱动,选择对应的打印机型号即可。我没有在其它版本的Windows上测试过。添加完成后就可以打印测试页测试配置是否成功。
对于Android手机,我使用了PrintBot这个app,可以很简单的通过自动scan功能连接上打印机实现手机打印功能。
对于Mac OS X 电脑和iphone手机,我参考如下链接:
http://linuxwin.com/cups-airprint-on-raspberry-pi/
其中主要是:
1. 在树莓派上执行sudo apt-get install avahi-discover cups-pdf python-cups
2. 按链接中的介绍添加如下文件和文件中对应的内容:
/usr/share/cups/mime/local.convs,内容为:
/usr/share/cups/mime/local.convs
image/urf application/vnd.cups-postscript 66 pdftops
/usr/share/cups/mime/apple.types,内容为:
/usr/share/cups/mime/apple.typesimage/urf urf (0,UNIRAST)
/usr/share/cups/mime/apple.convs,内容为:
/usr/share/cups/mime/apple.convs
image/urf application/pdf 100 pdftoraster
3. 重启一下avahi和cups服务:
$ sudo service avahi-daemon restart
$ sudo service cups restart
然后就可以在Mac OS X 电脑和iphone手机上自动发现打印机。