入门树莓派 (Raspberry Pi)需要哪些配件?
介绍个拿PI来做打印服务器的尝试。收藏之余请点个 吧。
家里翻出一张老树莓派的板子(Model B+ V1.1 没有WIFI),家里原来的老打印机(HP1020,没有网口,只有USB)在吃灰.
想着把两个老家伙放一起组一个无线打印机吧。没想到遇到一堆的坑,断断续续搞了一个周末,算是OK了。目前可以实现家里全系列的设备无线打印:Windows 电脑、 Ubuntu电脑、Andorid 手机、平板,Apple 手机、平板。
网上教程多少有帮助,但都有这样那样的坑,具体执行时需要及时鉴别。为了不辜负自己趟的这些坑,还是总结记录一下。
姥姥(老树莓派+老打印机)是啥样子。https://www.zhihu.com/question/1907100066197529388/answer/1912112218251703033?share_code=tDCp27zwmm5k&utm_psn=1912499494878150892
注意,以下操作需要有些linux配置相关的经验,不适合小白选手。总得来说,自己搭建的这种服务稳定性一般,每个月都要重启一两次机器才行。要是不想费这个事,也可以上网去买一个打印小盒子,大概百多块钱吧。
Step0: 准备(从简)
- 树莓派OS–建议直接用官方的pi-imger 工具烧写(记得一定先把ssh给配置了啊,不然后面很蛋疼)。老板子要用老一点的OS(Bullseye 32-bit Lite不带桌面就够了)。最开始下的bookworm, PI没问题,但是CUPS版本比较新,出了一堆的问题,不胜其烦–浪费了一天。
- 安装好以后,ssh进去PI,用 sudo raspi-config 配置一下,主要是locale和时区。
- 更新本地源,apt-update/upgrade不赘述。
- 一定配成静态IP地址。
step1: CUPS 服务器安装配置
以下ssh登录到pi进行:
安装必要的package — 蛮长时间,大半个小时朝上。
sudo apt-get install cups hplip printer-driver-hpcups samba
sudo apt-get install hplip-gui #如果不需要在pi上接显示器本地配置,可不装。
sudo apt-get install build-essential vim ufw # 后面编译、本地编辑、本地配置
配置CUPS
先配置一下 sudo vim /etc/cups/cupsd.conf — 不然远端没办法打开CUPS UI。
这个配置很重要,网上很多教程有这样那样的小坑(关键是不同CUPS版本细节有不同,可能还和设备本身有关),要是有问题,最好读一下对应版本的文档。可以打开对应的帮助文件。
我遇到一个比较重要的设定是 DefaultEncryption Never #家庭使用不开加解密 — 否则IOS设备打印会报告这样那样的TLS相关问题。

本地其它配置
$ sudo usermod -a -G lpadmin USERNAME # add the USERNAME to the lpadmin group
$ sudo cupsctl --remote-any # ensure that CUPS is accessible across entire network
$ sudo ufw allow 631/tcp # 防火墙需要开放端口
$ sudo systemctl restart cups # 重启cups服务才能生效
$ sudo vim /etc/samba/smb.conf # 如果需要windows发现服务,要配一下samba
Samba参考以下配置(sudo vim /etc/samba/smb.conf)
[printers]
comment = All Printers
browseable = yes
path = /var/spool/samba
printable = yes
guest ok = yes
read only = yes
create mask = 0700
[print$]
comment = Printer Drivers
path = /var/lib/samba/printers
browseable = yes
read only = yes
guest ok = yes
别忘记重启samba: sudo /etc/init.d/smbd restart
安装打印机驱动
这一步坑最多,网上面基于CUPS UI 操作的,在我这里都有稳定性问题。最后发现自己编译的驱动最稳定。
帮助文件,很详细了:https://github.com/koenkooi/foo2zjs/blob/master/INSTALL
TL,DR 版本,下载驱动代码到pi上面后:
INSTALLATION -- ONLY for Ubuntu
------------
(Optional) Uninstall -- BETTER DO THIS
$ sudo make uninstall
Compile:
$ make
Install driver, foomatic XML files, PPD files, and extra files:
$ sudo make install
(Optional) Install hotplug (for HP LJ 1000/1005/1018/1020/P100[5678]/P1505):
$ sudo make install-hotplug
Now Unplug and re-plug the USB printer
If you use CUPS to manage your printers, you must restart cupsd:
$ sudo make cups
Create printers (Debian)
Connect with a web browser to:
http://localhost:631
And configure printer (HP example shown) to:
HP LaserJet 2600n, Foomatic + foo2zjs (en)
Then edit "Manage Printers->Configure Printer" to suit you,
such as "Page Size" or "Color Mode".
Create printers (command line using CUPS)
# lpadmin -p "NAME" -v "URI" -E -P file.ppd.gz
i.e.
# lpadmin -p hp1020 -v "usb://HP/LaserJet%201020" -E \
-P /usr/share/cups/model/HP-LaserJet_1020.ppd.gz
Set the default:
# lpadmin -d "NAME"
其实最后一步运行,已经把打印机安装成功了。注意lpadmin命令很强大,可以代替任何CUPS UI上的操作。
打印客户端安装设置
细节不在这里更了,需要详细参考请看我的文章(集中在这里维护):
Android 手机、平板
这一步需要科学上网,去google store 找名为printer share的 app, 这是我验证下来最简单,易用,精干(安装包10M大,活久见) 还免费的 APP– 界面很古早,但是我只要打印,其它无所谓。
APPLE 手机、平板
Apple的东西最那么特殊。研究了大半天,我需要在PI上面起一个AirPrint的服务(实际上似乎是把已经工作了的无线打印服务再“映射出一个AirPrint的服务?”)(AirPrint with CUPS)
Window电脑
Pi上面 Samba要提前配好,见前文
windows还是简单易用(我是Win10,没试过其它OS),直接搜索打印机安装就能找到hp1020安装了。
如果安装失败,也可以手动安装。
Ubuntu22.04 电脑
Ubuntu上先安装HPLIP(惠普官方驱动)和驱动(这里到没有编译,直接就OK)–后面再把远端打印机映射成本地打印机。
sudo apt update
sudo apt install hplip printer-driver-foo2zjs
最后是一些debug手段(PI上面运行的)
有很多debug工具可以使用。参考文章吧