本文并非完全适用于所有人,因为每个人的硬件配置都不一样。

开始之前

请确定自己的打印机是否有Linux的(兼容)驱动。

这里使用的是三星的SCX-3200打印机(自带扫描仪),通过USB连接。

系统配置:
(之前的工控机)

图吧垃圾佬,能用就好,不求配置

拥有固定的IP地址。

配置打印机

安装配置CUPS服务

安装:

1
$ sudo apt install cups

然后编辑/etc/cups/cupsd.conf,更改以下配置:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
# 监听任意IP的访问,内网无所畏惧
Listen 0.0.0.0:631

# (省略文件内容)

# 设置验证和加密
DefaultAuthType Basic
DefaultEncryption IfRequested

# (省略文件内容)

# 网络管理页面是默认开启的,如果没有记得加上

WebInterface Yes

# (省略文件内容)

# 允许访问的IP区段,这里设置为192.168.0.0~255
<Location />
Order allow,deny
Allow 192.168.0.0/24
</ Location>

# (省略文件内容)

# 允许拥有管理权限的的IP区段,这里和上面一样

<Location /admin>
Order allow,deny
Allow 192.168.0.0/24
</Location>

# (省略文件内容)

然后重启cups服务。

1
$ sudo /etc/init.d/cups restart

访问http://你的服务器:631/,进入管理页面。

就像这样

如果被禁止了,请检查配置文件。

设置打印机

接下来添加打印机驱动。进入Administration管理页,在Printers中点击Add Printer.

如果被禁止了,请检查配置文件。

管理界面

第一次登录,它会要求你输入账户密码来验证。这里直接使用root用户。

多个用户管理的参考

来源:Linux中国 未经测试,仅供参考

为了允许另外一个用户(除了root之外)修改打印机设置,我们必须像下面这样添加他/她到lp(授权对打印机硬件的访问并启用用户管理打印任务)和lpadmin(拥有打印优先)组。如果在你当前网络设置没有必要或不需要该设置,你可以不用理会该步骤。

1
2
# adduser xmodulo lp
# adduser xmodulo lpadmin

1.
选择打印机

Add Printer中,你应该可以看到你的打印机型号。如果没有,可以尝试执行lsusb检测服务器与打印机的连接情况。选中你的打印机,点击Continue继续。

2.
属性设置

NameDescription可以不变。但一定要勾选Share This Printer。否则只能在服务器本地使用。

3.

选择驱动程序

Model列表框中查找对应打印机型号,并Add Printer如果列表中没有对应打印机的驱动,且因为某种玄学原因找不到或安装不上这个打印机的Linux版本驱动,可以像我一样在列表中随机抽取一个对应打印机驱动。这里使用的是三星ML-1450的驱动。

4.

设置打印机选项

可以根据情况自行更改。这里Set Default Options

打印机配置完后,可以在Printers中打印测试页。

打印测试页

结果

在Windows中添加打印机

在Windows中也需要安装对应打印机的驱动。后面的话如果会自己配置可以跳过不看。

+ R 输入 control打开控制面板,进入控制面板\硬件和声音\设备和打印机。点击工具栏中的添加打印机。正常的话,它会显示当前局域网的打印机。双击你想要添加的。

若未在列表中找到对应打印机

  1. 点击我所需的打印机未列出
    我所需的打印机未列出

  2. 输入你的打印机的URL,如:http://192.168.0.204:631/printers/Samsung_SCX-3200_Series

然后它会让你选择驱动程序。没有问题的话就添加好了,可以尝试打印测试页。

测试页

配置扫描仪服务器

配置扫描仪服务器的步骤参考自tangbao’s Blog,因为搜不到其他的了。

安装SANE——Linux下通用扫描仪API。

1
$ sudo apt install sane

测试扫描仪

执行sudo sane-find-scanner测试扫描仪。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
$ sudo sane-find-scanner

# sane-find-scanner will now attempt to detect your scanner. If the
# result is different from what you expected, first make sure your
# scanner is powered up and properly connected to your computer.

# No SCSI scanners found. If you expected something different, make sure that
# you have loaded a kernel SCSI driver for your SCSI adapter.

found USB scanner (vendor=0x04e8 [Samsung Electronics Co., Ltd.], product=0x3441 [SCX-3200 Series]) at libusb:003:002
# Your USB scanner was (probably) detected. It may or may not be supported by
# SANE. Try scanimage -L and read the backend's manpage.

# Not checking for parallel port scanners.

# Most Scanners connected to the parallel port or other proprietary ports
# can't be detected by this program.

出现found * scanner字样就说明检测到扫描仪了。

1
2
$ sudo scanimage -L
device `xerox_mfp:libusb:003:002' is a Samsung Samsung SCX-3200 Series multi-function peripheral

配置SANE

/etc/default/saned加入RUN=yes,开启守护进程:

1
2
3
4
5
6
# Defaults for the saned initscript, from sane-utils
RUN=yes

# Set to the user saned should run as
RUN_AS_USER=saned

然后编辑/etc/sane.d/saned.conf,取消注释data_portrange = 10000 - 10100,添加192.168.0.0/24(类似前面CUPS允许访问的IP的设置)。

将saned守护进程saned加入lp组。

1
$ sudo adduser saned lp

重启sane,使sane随开机启动,并检查状态。

1
2
3
4
5
6
7
8
9
10
11
12
13
$ sudo systemctl start saned.socket
$ sudo systemctl enable saned.socket
$ sudo systemctl status saned.socket
● saned.socket - saned incoming socket
Loaded: loaded (/lib/systemd/system/saned.socket; enabled; vendor preset: enabled)
Active: active (listening) since Sun 2020-11-08 16:54:46 CST; 8s ago
Listen: [::]:6566 (Stream)
Accepted: 3; Connected: 0;
Tasks: 0 (limit: 2306)
Memory: 28.0K
CGroup: /system.slice/saned.socket

11月 08 16:54:46 server systemd[1]: Listening on saned incoming socket.

说明sane已经在监听6566端口了。

使用SANE客户端

SANE客户端有很多,这里使用SANEWinDS

下载安装完,在开始菜单中打开SANEWin。

就这个

Output Format - 输出格式

Compression - 压缩

Output Folder - 输出文件夹

Output File Name Base - 输出文件名的格式

Overwrite Existing File - 当出现同名文件时覆盖

View After Acquire - 取得扫描文件后打开

点击Acquire

第一次使用可能会出现一些MsgBox,不用理会

添加扫描仪服务器

Host Name or IP Address中输入服务器的主机名或IP地址。

选择扫描仪

如果服务器没有连接多于一个扫描仪,就默认,点击OK。

然后就进入了配置页。

配置页

这里建议设置Scan resolution(扫描仪分辨率)为较大值,比如600。

点击Scan扫描文件。

Scanning

原谅我字难看...( _ _)ノ|

发现的一些问题

在samba共享文件夹下使用sudo scanimage -d "xerox_mfp:libusb:001:005" --format jpeg --resolution 150 > X.jpeg扫描时失败,输出的文件损坏。

当时将工作目录切换至家目录后正常,但在Windows文件管理器访问家目录时又失败了……可能是sane和samba访问冲突?

(2021/2/13)

参考

在Debian上设置USB网络打印机和扫描仪服务器 - Linux中国

基于树莓派的打印机/扫描仪服务器 - tangbao’s Blog