Debian启用打印机共享并部署扫描仪服务器
河城凌风(kawashiro-ryofu) Lv5

(2025年8月17日)

目前苹果已放弃CUPS的开发,转交由OpenPrinting进行维护。

本文最初完成于2020年11月,近来发现原文部分失效。线予以修正。

开始之前

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

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

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

image

拥有固定的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
35
36
# (内网或者自建虚拟网络中)注释Listen一行
#Listen localhost:631
# 改为
Port 631

# (省略文件内容)

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

# (省略文件内容)

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

WebInterface Yes

# (省略文件内容)

# 允许访问的IP区段,结合自身网络环境修改,这里来者不拒
<Location />
Order allow,deny
Allow @LOCAL
</ Location>

# (省略文件内容)

# 允许拥有管理权限的的IP区段,同上

<Location /admin>
Order allow,deny
Allow @LOCAL
</Location>

# (省略文件内容)

然后重启cups服务。

1
sudo /etc/init.d/cups restart

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

image

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

设置打印机

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

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

image

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


如果需要多个用户管理

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

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

1
2
# adduser xmodulo lp
# adduser xmodulo lpadmin
  1. (2025.08.17)

安装SCX-3200可以使用的第三方的打印机驱动(Splix):

1
sudo apt install printer-driver-splix
  1. image

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

  1. image

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

image

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

选择Samsung SCX-3200, 2.0.0 (grayscale)

image

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

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

image

image

在Windows中添加打印机

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

(2025.08.17)

CUPS支持IPP协议,这意味着可以实现跨设备免驱动打印

这一点对于非x86架构的Windows平板以及移动设备是非常友好的

安装Avahi

1
2
3
4
sudo apt install avahi-daemon
sudo systemctl enable avahi-daemo
sudo systemctl start avahi-daemon
sudo /etc/init.d/cups restart

在设备上添加打印机:

在Windows中,一般可以直接扫描到对应的设备。如果需要手动添加,则要在”添加打印机”窗口中选择”使用IP地址或主机名添加打印机”。在下一页,设备类型选择”IPP设备”,主机名或IP地址填入CUPS打印机配置页面的URL,在本文即http://服务器IP:631/printers/Samsung_SCX-3200_Series

Android默认的打印服务可以扫描到打印机,也可在F-Droid下载一个CUPS服务手动添加打印机。

配置扫描仪服务器

安装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。

image

Output Format - 输出格式

Compression - 压缩

Output Folder - 输出文件夹

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

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

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

点击Acquire

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

image

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

image

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

然后就进入了配置页。

image

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

点击Scan扫描文件。

image

image

发现的一些问题

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

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

(2021/2/13)

 评论
评论插件加载失败
正在加载评论插件