
简介三星官方于2013年8月发布的打印及扫描驱动程序1.00.06版面向Linux 32位与64位系统适用于多种型号三星打印机可解决Linux环境下打印机与扫描仪驱动缺失、无法识别或功能受限等问题。压缩包共包含229个文件大小10.1MB主要以ppd打印机描述文件、cts配置模板、sh安装脚本、so动态库、rastertospl与pstospl转换过滤程序等构成其中libsane-smfp.so.1.0.1等扫描库文件可直接支撑扫描功能配套的install-printer、install-scanner脚本能简化安装流程。目前已有813人学习下载适合需要为三星打印机配置Linux驱动的用户参考。资源内还提供了适用于suse、fedora、shorewall等防火墙的配置兼顾不同发行版的安装需求整体结构清晰便于按需调用。由于是官方发布版本驱动兼容性与稳定性相对有保障尤其适合在企业或校园Linux环境中批量部署三星打印及扫描设备时作为基础驱动包使用。1. Linux 下的三星打印机为什么需要专用驱动v1.00.06 能解决什么在 Linux 下用三星打印机的朋友大概率遇到过这个情况把 USB 线插到电脑上系统“嘀”一声认出了硬件可打开打印设置设备列表里空空如也换成系统自带的通用驱动打印出来一堆乱码或者任务直接卡在队列里不动。这不是打印机坏了而是 Linux 缺了专门的三星打印及扫描驱动程序。这篇笔记围绕三星官方 v1.00.06 版 Linux 驱动来写这个版本同时覆盖 32 位和 64 位系统把打印和扫描两套驱动打包在同一份资源里适合正在为三星打印机在 Linux 上装驱动、配扫描发愁的桌面用户和运维。下面从安装前准备讲起逐步落到命令、参数和真实翻车记录。2. 安装前准备先分清 32 位和 64 位再补依赖2.1 用 uname 和 dpkg 查清架构避免一半安装失败三星这个 v1.00.06 驱动安装脚本在识别系统类型后只会去读取对应架构目录下的安装包。装错位数最常见的后果是安装脚本执行到一半提示缺少 32 位库或者装完后 CUPS 过滤器无法加载。所以在动手之前先把架构确认清楚比后面排错省事得多。在 Debian/Ubuntu 这类系统上我一般同时看两条命令# 查看当前内核运行的架构 uname -m # 输出 x86_64 表示 64 位i386/i686 表示 32 位 # 查看包管理器支持的架构 dpkg --print-architecture # 输出 amd64 表示 64 位发行版i386 表示 32 位发行版这里值得留意的是uname -m反映的是内核和 CPU 的体系结构dpkg --print-architecture反映的是发行版打包时采用的架构。正常安装的桌面系统两者结论一致。但如果你手上的机器是 64 位 CPU 上装了 32 位发行版uname -m会显示 i386 或 i686驱动安装脚本通常以 uname 的结果为准遇到这种情况照做就行不用怀疑系统装错了。还有一个新手容易犯迷糊的点驱动包里的目录名写着 i386而你系统显示的是 i686。i686 是 i386 指令集扩展之后的一种 CPU 型号标识驱动包为了兼容老机器统一把 32 位目录命名为 i386CentOS 系的 i386 和 i686 归档包都适用于同一个 32 位驱动不要因为名字对不上就放弃继续操作。RedHat 系系统的判断方式类似uname -m输出 x86_64 就用 64 位驱动输出 i686 就用 32 位驱动。现在很多新发行版已经不再提供 32 位安装介质但老式的三星激光打印机用户手中往往还留着旧电脑架构确认这一步反而是整套流程里最值得花时间的地方。我处理过一台老笔记本装 32 位 Ubuntu 配三星 ML-1640 的案例用户全程用 64 位包尝试折腾了一下午最后只是换回 32 位驱动就正常出纸了。2.2 安装依赖CUPS 和 SANE 的运行时库是前置条件三星的打印驱动不是独立程序它工作在 CUPS 体系内打印任务从应用程序进入 CUPS 过滤器最后由后端送进 USB 或网络端口扫描部分则是通过 SANE 后端接入scanimage或者图像软件调用它来打开扫描设备。因此系统里必须先有 CUPS 和 SANE 的运行时库驱动安装脚本才能完整部署。Debian/Ubuntu 上常见的依赖项有这几个# 安装 CUPS 和 SANE 依赖 sudo apt update sudo apt install -y cups cups-client libcups2 libcupsimage2 sane-utils libsaneCentOS/RHEL 系对应的是cups、cups-libs和sane-backends包名不同作用相同。装完依赖后确认服务是跑着的# 启动 CUPS 服务并设为开机自启 sudo systemctl enable --now cups sudo systemctl status cups --no-pager值得说明的是sane-utils里包含scanimage命令行工具之后验证扫描功能时要用它libcupsimage2是 CUPS 过滤器的映像库驱动里的 PPD 过滤器如果缺少它打印任务会卡在队列中不吐出任何错误。很多人把依赖问题当成驱动问题处理结果重装了驱动三次都没有效果最后装上缺失的运行时库就恢复了。这点在最小化安装的服务器上尤其突出——不带桌面环境的系统通常不会预装完整的 CUPS 运行时。如果系统是 64 位而手头驱动包只有 32 位介质这种极端情况还需要补齐 32 位兼容库。Ubuntu 上做法是启用多架构支持# 在 64 位 Ubuntu 上启用 i386 多架构支持 sudo dpkg --add-architecture i386 sudo apt update sudo apt install -y libc6-i386 lib32stdc6这里补的libc6-i386和lib32stdc6是给 32 位 SANE 后端和 CUPS 过滤器在 64 位内核里运行用的。老版本三星驱动v1.00.06 这一代的扫描后端确实存在 32 位组件缺少它们时scanimage -L可能完全看不到设备。如果你用的是纯 64 位发行版依赖问题相对少一些但同样的检查流程还是值得走一遍。2.3 惠普收购三星打印业务之后驱动分发格局的变化2017 年惠普完成了对三星打印业务的收购从那以后三星打印机的驱动分发渠道发生了明显变化。当年印着 Samsung 标志的官网驱动下载入口现在会导向惠普支持页面新出的多功能一体机大多走 HPLIP 或专用安装包不再单独提供三星品牌的 Linux 驱动。v1.00.06 这个版本号透露的信息是它属于三星在自营打印业务时期发布的驱动支持的重点是那批十多年前量产的三星激光打印机和黑白多功能机比如 ML 系列、SCX 系列。对你而言这意味着两件事。第一如果你的设备恰好是这批老机型这份驱动反而是比惠普新驱动更贴合硬件的选择因为三星自家驱动的 PPD 和过滤器是针对原厂固件调校过的兼容性更直接。第二如果后续遇到官网下载不到对应驱动的问题不必太惊讶——惠普的驱动库依然保留了相当一部分三星机型的 Linux 包但归档和检索路径都变了这也就是为什么网上很多老三星用户手里都存着 v1.00.xx 这一系列的安装包属于“且用且珍惜”的状态。所以安装前不妨先用打印机机身上的型号标签确认具体型号再决定驱动来源。不要拿着惠普的 Universal Print Driver 硬套老三星机器那样装完队列能建但扫描后端往往缺失打印出来的页面也会出现字体位置偏移的小毛病。这一步判断对了后面安装流程会顺利很多。3. 安装驱动三步走解压、执行 install.sh、用 CUPS 配队列3.1 解压驱动包先读目录结构再动手拿到这份 v1.00.06 的驱动包之后第一步是解压。驱动包是一个压缩归档里面通常有 install.sh 脚本配套的 32bit / 64bit 目录以及对应的 deb、rpm 子包。我见过不少用户拿到包就直接双击 install.sh结果脚本读不到对应架构的包报一个莫名其妙的错。按顺序来把目录结构看清了心里就有底。# 解压驱动包到当前目录 tar -xvf Samsung_Printer_Driver_Linux_v1.00.06.tar.gz # 进入解压后的目录 cd Samsung_Printer_Driver_Linux_v1.00.06 # 查看两层目录结构 find . -maxdepth 2 -type d | sort这一段的输出通常能看到32bit/、64bit/这类明显的架构目录以及noarch/或common/这种放公共配置文件的目录。我一般会继续看一眼 install.sh 的内容确认它调用了哪些系统命令# 查看安装脚本前 40 行 head -40 install.sh这一步不是必须但值得做。驱动包的安装脚本本质是一个壳它会去调用dpkg或者rpm安装各组件包同时把 PPD 复制到 CUPS 的模型目录。如果你发现脚本里引用了某个系统里没有的命令比如某些精简版系统没有lsb_release可以先装对应的基础工具避免脚本在环境检查阶段就退出。检查环境这一步本质上和 linux 常用命令里的which、command -v是一个道理提前把脚本用到的工具确认一遍。3.2 执行 install.sh脚本替你完成了哪几件事解压确认无误后直接运行安装脚本# 给脚本加执行权限避免权限不足 chmod x install.sh # 用 root 权限安装 sudo ./install.sh脚本跑完后可以用下面两条命令确认关键文件已经就位# 查看三星 PPD 文件是否复制到 CUPS 模型目录 ls -l /usr/share/cups/model/samsung/ | head # 查看三星 CUPS 过滤器是否加载 ls -l /usr/lib/cups/filter/ | grep -i samsung这里解释一下安装脚本干了什么它首先读取系统架构匹配对应目录下的 deb 或 rpm 包随后把 PPD 文件安装到 CUPS 的模型目录CUPS 添加打印机时就是靠这些 PPD 向系统描述打印机的分辨率、纸张规格和色彩配置再往 CUPS 过滤器目录写入三星专用的过滤程序负责把标准打印数据转成三星设备能理解的语言最后注册 SANE 后端。后面的配置步骤都不需要再手动操作这些文件了。有一点要注意有些版本的安装脚本执行过程中会问是否要立刻添加打印机以对话框形式出现。这一步可以直接跳过留到 CUPS 里统一配置。原因是脚本自带的添加向导对网络打印机的适配较弱尤其和静态 IP 打印机配合时经常出现队列建好但离线的情况用 CUPS 原生流程建队列系统活动日志和错误提示都更规范。如果你的 install.sh 直接一条命令跑到结束没有任何交互那也正常不同批次打包方式略有差异。3.3 在 CUPS 添加打印机并打印测试页安装脚本完成之后重启一次 CUPS让新增的 PPD 和过滤器被加载# 重启 CUPS 服务 sudo systemctl restart cups # 检查系统是否发现了三星打印设备 lpinfo -v | grep -i samsung如果打印机通过 USB 连接这一步的输出会类似direct usb://Samsung/ML-2010%20Series如果是网络打印机则显示network socket://192.168.1.50:9100。看到设备行说明驱动已经能感知硬件。此时打开浏览器访问http://localhost:631进入 Administration 页面点 Add Printer系统会列出检测到的设备选择对应的三星型号在型号列表里找到刚装好的 PPD提交后即完成队列创建。不习惯网页操作的话命令行一样可以完成。下面是用 lpadmin 直接添加 USB 打印机的完整命令# 用 lpadmin 建队列指定设备 URI 和 PPD lpadmin -p Samsung_ML_2010 -E -v usb://Samsung/ML-2010%20Series -m Samsung_ML_2010.ppd # 启用并接受队列任务 cupsenable Samsung_ML_2010 cupsaccept Samsung_ML_2010 # 打印一个测试文件 lp -d Samsung_ML_2010 /etc/issue这段命令里-p后面是队列名可以自己起但建议和型号一致方便辨认-E表示启用队列-v指定设备 URIUSB 打印机的 URI 格式是usb://厂商/型号这一串不能随便改改动之后 CUPS 就找不到设备了-m指定队列的 PPD 文件名就是刚才ls /usr/share/cups/model/samsung/里看到的那个 .ppd 文件。最后一条lp命令把/etc/issue文件内容发给打印机用作基本输出验证。不熟悉 PPD 文件名的读者可以先执行find /usr/share/cups/model -iname *samsung*把完整文件名拿到手再拼进-m参数。这里也顺带说明cupsenable和cupsaccept分别控制队列的开关状态前者决定打印机是否接收任务后者决定 CUPS 是否接受新的任务提交排在队列前面的任务卡住时这两个命令是排查的第一抓手。4. 排查与避坑五个常见故障的正确打开方式4.1 现象一install.sh 提示缺少依赖而退出运行安装脚本时终端里出现类似error: failed dependencies或libcupsimage.so.2 不存在的提示然后脚本中止这就是典型的依赖缺失。原因是这个版次的驱动安装包依赖的运行时库在你系统里没有对应的版本尤其是从官网精简的工作站版系统装完桌面后没有安装额外的软件依赖包。解决方式先回到第 2 章把依赖清单补齐不要试图强行加参数绕过依赖检查。用dpkg -l | grep -i cups检查 cups 相关包是否齐全缺什么装什么再重新执行 install.sh。如果安装脚本内部打包的是 rpm 文件也可以直接用rpm -ivh --nodeps强装但我不建议这条路径因为绕过依赖之后驱动装好了过滤器加载时照样会因为缺库而失败排查起来更绕。先修依赖再跑脚本这是最省时间的顺序。4.2 现象二CUPS 添加打印机时型号列表里找不到三星选项明明 lpinfo 能识别到 USB 设备但在 CUPS 添加打印机的型号列表里看不到 Samsung 或者你的型号这是驱动文件没被正确加载的典型表现。多数原因是安装脚本执行时 CUPS 服务处于运行状态文件写入完了但服务没有重新读取模型目录。解决方式重启 CUPS 后再刷新添加打印机页面。如果重启之后还是没有手动检查 PPD 文件是不是真的在模型目录下# 检查模型目录里是否有三星 PPD find /usr/share/cups/model -iname *samsung* # 检查过滤器是否就位 ls /usr/lib/cups/filter/ | grep -i samsung两个目录的检查结果都为空说明驱动安装不完整需要重跑 install.sh只有 PPD 但没有过滤器多半是安装脚本在复制过滤器时因权限问题中断用 sudo 重跑一次即可。我曾经处理过一个案例用户用的是带桌面环境的发行版install.sh 里用 sudo 执行后半段命令时弹出了密码确认窗口用户没注意脚本实际只装了一半。这种翻车案例在 linux 运维故障案例里非常典型问题往往不是技术难度而是安装过程被中断了。4.3 现象三打印任务进了队列打印机毫无反应用lp -d递交任务后lpstat -o能看到任务在队列里状态一直是 processing打印机面板没有任何动作。这一类问题在三星老机型上很常见原因集中在三处过滤器加载失败、设备 URI 错误、打印机固件处于休眠状态。排查顺序是先看 CUPS 错误日志# 查看 CUPS 最近 50 行错误日志 tail -50 /var/log/cups/error_log日志里如果出现filter failed或者unable to open filter问题在过滤器检查/usr/lib/cups/filter里是否有对应驱动文件以及文件的执行权限出现device not found问题在-v指定的 URI重新用lsusb | grep -i samsung获取设备路径改回正确的 URI。还有一类不常被注意到的情况三星老激光机的节能模式非常激进长时间待机后打印机进入深度休眠此时系统发任务过去设备不会自动唤醒。应对方式是先按一下打印机面板的任意按键唤醒设备再重新打印。这一步不用改任何配置却经常被人忽略。4.4 现象四扫描设备能被识别但 scanimage 报错驱动装好后scanimage -L能看到三星扫描设备但实际扫描时报open of device samsungmfp:libusb:... failed基本可以判定为权限问题。SANE 访问 USB 设备时需要通过操作系统的权限控制层普通用户不在对应的用户组里无法打开设备节点。解决方式是把当前用户加入 scanner 和 lp 组然后重新登录# 把当前用户加入 scanner 和 lp 组 sudo usermod -a -G scanner,lp $USER # 重新登录后执行扫描验证 scanimage -L这条命令把用户追加到scanner组和lp组scanner组控制 SANE 对扫描设备的访问权限lp组控制打印相关设备的访问权限。加入组之后需要注销并重新登录才生效如果急于验证可以在终端里用newgrp scanner临时切换组上下文。另外提醒一下如果系统里跑着 snap 版的扫描软件snap 的沙箱可能拦截设备访问优先用 apt 安装的软件。4.5 现象五内核升级或者系统更新后打印和扫描同时失效系统更新后打印机列表还在但打印任务全部报错扫描仪也找不到了这种“系统一更新驱动就翻车”的现象在 Linux 设备驱动场景里非常典型。原因是内核升级后USB 设备节点的路径或者设备的 ID 映射关系发生了变化而三星该版驱动里的静态配置文件还是按照旧环境写的设备路径对不上后端自然无法打开设备。处理办法不复杂重新执行一次 install.sh 就好脚本会自动重建设备节点和老旧配置。如果重装之后仍然不稳定检查一下 udev 规则文件是否被覆盖# 查看三星相关的 udev 规则 ls /etc/udev/rules.d/ | grep -i samsung # 重新加载 udev 规则 sudo udevadm control --reload-rules sudo udevadm trigger这里把常见的“驱动失效”场景拆成了两个层面一是安装脚本层面的文件缺失重跑安装即可二是系统层面的设备映射用 udevadm 重新加载规则即可。需要留个心眼的是升级系统前注意先备份/etc/sane.d/samsungmfp.conf这类配置文件有些系统更新会在升级过程中清理旧配置目录备份能避免重新配置网络打印机参数。这类问题在 linux 运维故障案例中属于高频项建议记进自己的维护手册。5. 进阶用法命令行管打印机、网络打印和验证技巧5.1 用 lpadmin 彻底摆脱浏览器页面CUPS 的网页界面适合新手但生产环境里我基本不碰它。驱动装好之后用 lpadmin 一行命令即可完成队列创建。关键是先把 PPD 文件名摸清再拼参数# 找到三星 PPD 的完整文件名 find /usr/share/cups/model/samsung -name *.ppd # 用 socket 协议添加网络打印机 sudo lpadmin -p Office_Samsung -E -v socket://192.168.1.50:9100 -m Samsung_ML_2010.ppd # 设置默认打印机 sudo lpadmin -d Office_Samsung这组命令里-v socket://...用的是打印机的 IP 地址和 9100 端口这是大多数网络打印机的标准监听端口。-m参数指定的 PPD 文件名必须和 find 命令输出完全一致大小写都不能出错。命令行方式还有一个好处就是可以通过-o DuplexDuplexNoTumble这样的参数直接预设双面打印选项不需要进入打印机属性逐个找。5.2 网络扫描的配置和防火墙值得注意网络打印配好了扫描又是另一回事。三星多合一机型的网络扫描需要 SANE 后端知道打印机的 IP 才能建立连接。在/etc/sane.d/samsungmfp.conf里追加一行就行# 在 SANE 配置里指定网络扫描仪 IP echo option net-scanner-ip 192.168.1.50 | sudo tee -a /etc/sane.d/samsungmfp.conf追加完配置后用scanimage -L验证输出中出现samsungmfp:net:192.168.1.50这样的设备行说明网络扫描通道已打通。防火墙方面打印使用 9100 端口CUPS 浏览和发现使用 631 端口这两个端口需要在防火墙里放行不然客户端打印不了扫描也连不上# 放行 CUPS 和常用打印端口 sudo ufw allow 631/tcp sudo ufw allow 9100/tcp5.3 验证驱动状态的四个快照命令装完驱动我习惯跑四个命令把系统状态做一次快照也为下次排错留一份对照素材# 打印机队列状态 lpstat -t # SANE 设备列表 scanimage -L # CUPS 错误日志尾部 tail -20 /var/log/cups/error_log # 三星驱动包安装状态 dpkg -l | grep -i samsung这套命令每次装完驱动我必跑一遍看的东西其实很简单队列有没有、设备能不能看见、日志有没有新告警、驱动包版本是否和预期一致。从那以后我每次在 Linux 上装三星打印机驱动都会强制走一遍这套四命令的验证流程再去做任何打印或扫描测试。先让系统状态自证清白再让打印机出声出纸能省下大量排查时间。希望这篇笔记帮到你尤其是那些正在为老三星打印机在 Linux 下装驱动而头疼的人。本文还有配套的精品资源点击获取