自建基于树莓派的网络打印服务器

来源:互联网 发布:淘宝店"开名"假货 编辑:程序博客网 时间:2024/06/05 16:16

网络上关于”基于树莓派的网络打印服务器“的资料非常多了,感谢大神们的无私分享,才能让技术不停传递,造福所有人!

建这个服务器的起因和目的很简单:

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修改为0.0.0.0:631,通过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.types
image/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手机上自动发现打印机。