或端着笔记本,或手握 U 盘,在目睹了大家每天在座位和打印机之间来来回回后,我决定改变这一切:用吃灰的 Raspberry Pi 3 共享打印机,让局域网内的所有设备都可以远程打印。

设置系统时踩过的坑

关于树莓派的基本设置,可以参考「树莓派入门指南|明明白白玩 Pi 系列」「如何优雅地食用树莓派 zero w」,详尽且易读。但是,当你成功将最新版 Raspbian 系统烧录进 SD 卡并开机后,需要注意其他攻略 / 教程 / 文章中没有提到的 3 个坑:

  • SSH 默认不开启,请准备一台支持 HDMI 接口的显示器;
  • 键盘布局默认不正确,无法正常输入符号,需要修改键盘布局;
  • 需要修改 2 个软件源,除了/etc/apt/sources.list之外,还有 /etc/apt/sources.list.d/raspi.list

现在开始排坑。将树莓派通过 HDMI 线连接显示器后,使用初始用户 pi 及密码 raspberry 登录系统,然后执行sudo raspi-config进行系统配置,主要配置以下几个方面,顺序并不重要:

  • 修改密码;
  • 设置 locale,去掉「en_GB.UTF-8」,选中「en_US.UTF-8」;
  • 开启 SSH;
  • 扩展文件系统;
  • 设置键盘布局,依次选择 「Generic 101-key PC」-「Other」-「English(US)」-「 English(US)-English(US,alternative international)」。

新版的 raspi-config
新版的 raspi-config

值得注意的是,locale 和键盘布局需要重启后才能生效。接下来,配置好网络后,就可以使用 SSH 连接树莓派,用不着显示器了。

在共享打印机之前,先分别修改 2 个软件源,这是第 1 个:

sudo nano /etc/apt/sources.list

删除或注释全部内容,添加以下内容:

deb http://mirrors.aliyun.com/raspbian/raspbian jessie main contrib non-free rpi

修改第 2 个软件源:

sudo nano /etc/apt/sources.list.d/raspi.list

删除或注释全部内容,添加以下内容:

deb http://mirrors.ustc.edu.cn/archive.raspberrypi.org/ jessie main ui

最后,更新一下软件源:

sudo apt-get update

共享打印机

其实,这一步的工作量非常少,因为软件包 CUPS 就是为共享打印机而生。我们要做的只是将打印机用 USB 线缆连接树莓派,然后安装并配置 CUPS。

sudo apt-get install cups

Raspbian 系统会自动安装相关依赖,包括打印机驱动。安装完成后,需要将用户加入到 lpadmin 用户组,然后开启 CUPS 的远程访问权限。

sudo usermod -a -G lpadmin pi
sudo cupsctl --remote-any

这时候,在局域网内任何一台电脑或手机的浏览器中,访问树莓派的 631 端口,如:http://192.168.1.XX:631,就可以进入基于网页的 CUPS 配置界面。

基于网页的 CUPS 配置界面
基于网页的 CUPS 配置界面

依次点击「Administration」-「Add Printer」按照提示配置即可。需要注意的是,打印机的 Description 尽量写的短小精悍一点,比如就叫 printer1 ,后面会用到。配置完成后,可以点击「Print Test Page」来打印测试页,如果一切正常,就意味着可以在其他设备上使用这台打印机了。

macOS 以及 iOS 设备使用打印机

CUPS 是由苹果公司开发并开源的,这意味着使用苹果系设备远程打印,几乎可以不用对自己的设备进行配置。对于 macOS ,依次点击「设置」-「打印机与扫描仪」-「+」,添加列出的共享打印机即可。对于 iOS,在需要打印时,依次点击「分享」-「打印」,就能选择打印机并直接打印。

在 macOS 环境添加打印机
在 macOS 环境添加打印机

但是,苹果系设备可能会碰到一些问题,比如一段时间后打印机就消失了,导致无法使用。本问题可能由 Bonjour 协议所导致,如果碰到了,请在树莓派上再次执行如下命令,可以在短时间内解决问题,但无法根治:

sudo cupsctl --remote-any

Windows 设备使用打印机

相对于苹果系设备,Windows 使用共享打印机前的配置就稍微麻烦了一点。依次进入「控制面板」-「硬件和声音」-「设备和打印机」-「添加打印机」,然后直接点击 「我所需的打印机未列出」,选择「按名称选择共享打印机」,输入打印机IP:端口/printers/Description,如http://192.168.1.XX:631/printers/printer1,然后在弹出的窗口选择打印机品牌和打印机型号,即可成功配置。如果找不到品牌和型号,请先去打印机官网下载安装驱动程序。现在,当你需要打印时,就可以选择这台远程打印机了。

在 Windows 环境添加打印机
在 Windows 环境添加打印机

非常幸运的是,Windows 环境下的远程打印机非常稳定,不会碰到打印机消失之类的问题。