三星打印机驱动v1.00.06 Linux安装与CUPS/SANE排错
简介这份驱动包为三星官方打印及扫描驱动1.00.06版适用于Linux 32位与64位系统面向需要在Linux环境下部署三星打印机、扫描仪的用户可解决多型号设备驱动缺失与兼容性问题。压缩包共229个文件约10.1MB其中141个ppd打印机描述文件覆盖多种机型并用于向系统描述设备能力与参数28个cts扫描配置文件、7个sh安装脚本及3个so动态库等共同构成打印、扫描与网络发现组件另含防火墙与安装辅助脚本目录组织较完整。已有818人学习下载说明其在Linux打印驱动场景中具有一定参考价值。读者可从中获得官方驱动文件、CLX与CLP等系列机型的适配信息以及脚本化安装所需的配套组件适合需要完成三星设备驱动部署与排查兼容问题的Linux用户参考使用。1. 认不出打印机的那台机器三星打印驱动 v1.00.06 装的是什么一台内网工作站的 USB 口上插着三星激光一体机lsusb能清清楚楚看到设备系统设置的打印机列表里却空空荡荡——这种场面在 Linux 上太常见了。三星打印机驱动 v1.00.06 版 For Linux32/64 位就是给这种场面准备的它不是一个 deb 包而是一整套 uld 目录树、几个安装脚本、一批 CUPS 用的 PPD外加 sane 的扫描后端。装对了打印和扫描一起跑通装错了症状往往很具体——队列建好却一打就停、扫描仪死活扫不到设备。手上还有老款三星激光机或一体机、系统是较新的发行版、又不想为了一台打印机换硬件的基本都是在这条路上折腾。2. 装前把底子摸清v1.00.06 包结构、位数判断与依赖清单动手之前先别急着sudo ./install.sh。这套包的目录分得比较清楚noarch放的是与架构无关的元数据和 PPDx86_64和i386放的是对应位数的二进制。先把包解开看一眼比装完再回头查要省事得多。2.1 先看包里到底有什么解压前先列目录确认下载下来的包完整、没有嵌套多层压缩包# 只列内容不解压确认顶层目录名 tar -tzf Samsung_Uld_v1.00.06.tar.gz | head -30-t是只列出清单-z表示 gzip 压缩-f后面跟文件名。如果输出里出现了uld/install.sh、uld/x86_64/、uld/noarch/说明结构正常如果第一层只有一个同名目录、再往里才是 uld解压后就多cd一层不算问题。确认没问题再真正解压mkdir -p ~/drv tar -xzf Samsung_Uld_v1.00.06.tar.gz -C ~/drv cd ~/drv/uld ls -F-C指定解压目标目录避免把文件散落在当前工作目录。ls -F会在目录名后面加/、可执行文件后面加*一眼就能看出哪些脚本带着可执行位。解压完对照下表认一遍缺哪一项就说明包不完整重新下一遍比硬装省时间文件或目录作用缺失后的表现install.sh总入口交互式安装打印机与扫描仪只能手工解压拷贝很麻烦install-printer.sh只装打印部分不依赖图形界面无 X 环境时只能靠它install-scanner.sh只装 sane 扫描后端扫描仪永远找不到uninstall.sh卸载脚本重装前清理很痛苦noarch/与架构无关的公共包、PPD、元数据CUPS 里选不到对应机型x86_64/64 位二进制与驱动组件64 位系统装完跑不起来i386/32 位二进制与驱动组件32 位系统或部分扫描后端报缺库2.2 位数不是看 CPU 型号是看用户态很多人一看机器是 64 位 CPU 就默认装x86_64结果扫描那部分报cannot open shared object file。判断位数要用能反映用户态的命令别靠猜uname -m # 内核架构x86_64 或 i686 getconf LONG_BIT # 用户态位数64 或 32最准 dpkg --print-architecture # Debian/Ubuntu 系三条里面以getconf LONG_BIT为准。uname -m在极少数裁剪系统上会显示和用户态不一致的结果dpkg --print-architecture只在 Debian 系存在RPM 系可以用rpm -q --qf %{ARCH}\n glibc看主库架构。还有一个反直觉的点64 位系统装完x86_64目录之后扫描后端有可能仍然是 32 位二进制尤其是包里自带的某些libsane-*组件。判断方法很直接装完跑一次ldd# 把路径换成你系统里实际存在的后端文件 ldd /usr/lib/sane/libsane-samsung.so.1 2/dev/null | grep not found有not found输出就说明缺对应位数的运行库装 32 位兼容库即可不必重装驱动。这一步建议放在装驱动之前做一次能省掉一整轮返工。2.3 依赖清单CUPS、sane 和两三个容易漏的库这套驱动不自带 CUPS也不自带 sane它只是往里塞 PPD 和后端。所以系统上得先有打印和扫描的底座。Debian/Ubuntu 系sudo apt update sudo apt install -y \ cups cups-client cups-filters cups-bsd \ libusb-0.1-4 sane-utils \ ghostscript \ libc6 libstdc6逐项说一下为什么不能省cups是服务端本体cups-client提供lp、lpadmin、lpstat这些命令cups-filters负责格式转换缺了它打印任务会卡在Filter failedcups-bsd提供传统的lpr兼容命令有些老脚本会调用libusb-0.1-4是 USB 打印机和扫描仪通信的老接口这套 v1.00.06 的包正好依赖它sane-utils提供sane-find-scanner和scanimageghostscript负责 PPD 里定义的页面渲染。如果是 RPM 系换成sudo dnf install -y cups cups-filters libusb sane-backends ghostscript包名差异主要在libusb-0.1-4对应libusbsane-utils对应sane-backends。64 位系统上如果打算补 32 位运行库Debian/Ubuntu 系要先把 i386 架构加进来否则apt根本找不到:i386的包sudo dpkg --add-architecture i386 sudo apt update sudo apt install -y libusb-0.1-4:i386 libc6:i386 libstdc6:i386dpkg --add-architecture只是把架构写进dpkg的配置不会立刻装任何东西后面那条apt update才会去拉 i386 的索引。RPM 系对应的是dnf install libusb.i686 glibc.i686不过较新的版本已经很少需要这一步了。3. 正式安装install.sh 与分步脚本的两条路子这套包的安装有两个入口一个总脚本带交互菜单把打印机和扫描仪一起装另一个是拆开的两个分步脚本适合在服务器版系统、没有图形环境或者只想装一半的场景下用。两条路我都走过血泪经验是能进桌面就先用总脚本进不去就直接上分步脚本别在总脚本上反复试。3.1 给脚本加执行位再跑从压缩包里解出来的脚本权限位有时候是丢的直接./install.sh会报Permission deniedcd ~/drv/uld chmod x install.sh install-printer.sh install-scanner.sh uninstall.sh ls -l *.shchmod x只给这几个脚本加执行位不要图省事chmod -R 777那会把整个目录树的权限搞乱后面卸载脚本可能因为权限异常判断失误。ls -l确认每个文件前面出现了-rwxr-xr-x这样的权限串就行。如果是从网上下载的包装之前可以先核一下校验值包里一般会附一个 md5 或 sha256 文件sha256sum Samsung_Uld_v1.00.06.tar.gz拿输出和下载页给出的值对一下不一致就重下。这一步在跨网络传输、U 盘拷贝的场景下救过我两次包尾被截断的情况下tar有可能只解出一半文件而不报错装到一半才发现少东西。3.2 install.sh 的交互流程怎么走总脚本的流程大致是显示许可协议、等你输入y确认、弹出一个数字菜单让你选装打印机还是扫描仪还是两者、然后自动把文件铺到/opt/Samsung和/usr/share/cups/model/samsung。cd ~/drv/uld sudo ./install.sh几个关键点第一必须用sudo因为要往/opt、/usr/lib、/usr/share/cups写文件第二协议那一步输入y之后会回车确认不同小版本的提示文案会略有差异认关键词就行别死记中文翻译第三菜单里最常见的三个选项大致是「只装打印机」「只装扫描仪」「两个都装」选「都装」最省事。脚本执行过程中会打印一堆cp和install的记录重点看最后几行有没有Install is completed之类的成功提示。中间如果有No such file or directory大概率是解压不完整回到 2.1 重新核对目录如果有cannot execute binary file那是位数装错了回到 2.2。提示总脚本在无图形环境纯 SSH、服务器版里可能一闪而过/opt/Samsung仍然是空的。这不是包坏了是它内部调了图形安装器没有DISPLAY就静默退出了。遇到这种情况直接跳到 3.3。3.3 分步脚本没有桌面环境时的稳妥做法分步脚本的好处是没有图形依赖输出也更好读出问题容易定位到是哪一半装的cd ~/drv/uld sudo ./install-printer.sh跑完之后再装扫描部分sudo ./install-scanner.sh这两个脚本都不需要传参数它们会自动读同目录下的noarch/和x86_64/或i386/子目录。如果你只想装打印不装扫描跑完第一条就可以停能少一套 sane 后端也少一类冲突源。装完之后立刻确认文件落位这一步比看脚本输出可靠ls /opt/Samsung/ # 主程序与配置 ls /usr/share/cups/model/samsung/ | head # CUPS 能识别的 PPD ls /usr/lib/sane/ | grep -i samsung # 扫描后端三处都有东西说明安装这一关过了。如果/usr/share/cups/model/samsung/是空目录那 CUPS 里就永远选不到三星的机型后面建队列一定会卡住。3.4 卸载与重装先把后悔药备好驱动装坏、装重、装错位数都是常事这套包自带了卸载脚本但它的清理并不彻底重装前最好手工补一刀cd ~/drv/uld sudo ./uninstall.sh卸载脚本跑完后手工检查这几个位置有残留就删sudo rm -rf /opt/Samsung sudo rm -rf /usr/share/cups/model/samsung sudo rm -f /usr/lib/sane/libsane-samsung* sudo rm -f /etc/sane.d/samsung.conf sudo rm -f /etc/udev/rules.d/99-samsung-*.rules顺序上先卸载再删残留反过来卸载脚本会找不到自己的文件、报一堆警告。删完记得重启 CUPS 和 udev否则内存里还挂着旧配置sudo systemctl restart cups sudo udevadm control --reload-rules sudo udevadm trigger4. 接入 CUPS队列怎么建、PPD 从哪来、网络机怎么连驱动装完只是把零件放到了位真正让打印机干活的是 CUPS 里的队列。这一步是最容易翻车的地方设备 URI 抄错一个字符、PPD 选错一个型号表现都是「任务发出去了但打印机不动」。4.1 服务、权限和两个必开开关先确认 CUPS 在跑并且设成开机自启sudo systemctl enable --now cups systemctl is-active cupsis-active返回active才算过。如果返回failed先看journalctl -u cups -n 50 --no-pager十有八九是/etc/cups/cupsd.conf被改坏了或者 631 端口被别的服务占了。接着把自己加进相关用户组不加的话普通用户发不了打印任务、也读不到扫描设备sudo usermod -aG lp,lpadmin,scanner $USERlp管打印设备节点lpadmin允许用lpadmin命令管理队列scanner是扫描设备的组。这条命令改的是组关系必须重新登录才生效newgrp只能临时顶一下退出终端又没了。这一点坑过很多人命令全对但就是没权限最后发现是没重登。4.2 用 lpadmin 建队列三行命令搞定图形化的打印机设置工具在老版本上不太稳命令行反而更可控。先看系统认到了哪些设备、有哪些可用 PPDlpinfo -v | grep -i usb lpinfo -m | grep -i samsung | head -20lpinfo -v列出可用设备 URIUSB 打印机会显示成usb://Samsung/XXXX?serialYYYY这种形式lpinfo -m列出驱动型号装了驱动之后应该能看到一批samsung/...ppd。拿到 URI 和 PPD 名字之后建队列sudo lpadmin -p Sam_Laser -E \ -v usb://Samsung/XXXX?serialYYYY \ -m samsung/你的机型.ppd sudo lpadmin -d Sam_Laser sudo cupsenable Sam_Laser sudo cupsaccept Sam_Laser参数逐个说明-p后面是队列名自己起别带空格-E表示建完立刻启用并接受任务少了它队列是停用状态任务会一直排队-v是设备 URI必须从lpinfo -v的输出里原样复制含?serial的那一截一个字符都不能改-m指定 PPD路径相对于/usr/share/cups/model/。最后两行cupsenable和cupsaccept是双保险有些版本的-E只做了一半。验证队列状态lpstat -p -d-p列出所有队列及其状态-d显示当前默认队列。看到printer Sam_Laser is idle就对了如果显示disabled再跑一次sudo cupsenable Sam_Laser。4.3 网络打印机socket 和 ipp 怎么选USB 直连的机器按 4.2 走就行网络机型要换设备 URI。两种最常见的接法# 走原始 JetDirect 端口兼容性最好 sudo lpadmin -p Sam_Net -E \ -v socket://192.168.10.20:9100 \ -m samsung/你的机型.ppd# 走 IPP能带上打印机自身的状态回传 sudo lpadmin -p Sam_Net -E \ -v ipp://192.168.10.20/ipp/print \ -m samsung/你的机型.ppdsocket://就是往 9100 端口裸发数据老机器基本都支持缺点是没有状态反馈卡纸、缺纸你在 CUPS 里看不出来ipp://走的是标准协议路径常见的是/ipp/print或/ipp/printer具体看机型。判断走哪条先探端口nc -vz 192.168.10.20 9100 nc -vz 192.168.10.20 631哪个通走哪个。两个都不通先确认打印机 IP 有没有变——很多机器默认 DHCP重启一次网段就换了这类「昨天还好好的今天不打了」的玄学问题八成是 IP 变了。4.4 扫描端让 sane 认出这台机器打印走 CUPS扫描走 sane两套是独立的所以打印机装好了不代表能扫。先看底层有没有认到 USB 设备sudo sane-find-scanner这个命令不做权限校验能看到found USB scanner (vendor0x04e8, product0x...)就说明硬件层通了。再用普通用户跑一次scanimage -L返回device samsung:... is a ...才算真通。如果sane-find-scanner有、scanimage -L没有基本都是后端没启用编辑配置文件加一行sudo sh -c grep -qxF samsung /etc/sane.d/dll.conf || echo samsung /etc/sane.d/dll.confdll.conf里每行是一个后端名注释掉的行不生效。部分三星机型同时被xerox_mfp后端支持加samsung无效时可以试试换成xerox_mfp两个都加上也不冲突。权限方面USB 设备节点默认只有 root 可读写普通用户扫不了。加一条 udev 规则一劳永逸sudo tee /etc/udev/rules.d/99-samsung-scan.rules /dev/null EOF # 04e8 是三星 USB 厂商号从 lsusb 输出里核对后再用 SUBSYSTEMusb, ATTRS{idVendor}04e8, MODE0664, GROUPscanner EOF sudo udevadm control --reload-rules sudo udevadm triggerMODE0664给组读写权限GROUPscanner把设备节点归到 scanner 组配合 4.1 里的usermod就通了。改完规则要拔插一次 USB 线让设备重新枚举。5. 避坑与排查五条翻车记录这套驱动本身不复杂麻烦都在环境差异上。下面五条是我在不同机器上真踩过的按「现象 → 原因 → 解决」记遇到问题时对号入座比从头查快得多。5.1 脚本一闪而过/opt/Samsung 是空的现象sudo ./install.sh执行后几乎没输出就回到命令提示符ls /opt/Samsung报目录不存在。原因总脚本内部调用了图形安装器纯 SSH 或服务器版系统没有DISPLAY图形界面初始化失败后脚本直接退出退出码还不一定是非零所以看不出错。解决不要跟总脚本较劲直接用分步脚本sudo ./install-printer.sh和sudo ./install-scanner.sh。如果确实想用总脚本的交互界面在有桌面的机器上开终端跑或者ssh -X转发 X11前提是服务端装了 xauth 和 X 库。5.2 队列建好了任务一发就停现象lpstat -p显示队列空闲lp -d Sam_Laser 文件之后任务状态立刻变成 stopped/var/log/cups/error_log里出现Filter failed。原因九成是 PPD 和机型对不上或者cups-filters、ghostscript没装。PPD 里定义了页面尺寸、分辨率、送纸盒这些参数选错型号时过滤器处理不了任务数据直接抛错。解决先用cancel -a Sam_Laser清空积压任务再sudo lpadmin -p Sam_Laser -m samsung/正确型号.ppd换 PPD。如果日志里明确指向某个 filter 缺失补装cups-filters和ghostscript。临时排查可以把 CUPS 日志级别调成 debugsudo cupsctl --debug-logging sudo tail -f /var/log/cups/error_log看完记得sudo cupsctl --no-debug-logging关掉debug 日志长得很快。5.3 sane-find-scanner 能看到scanimage -L 扫不到现象sudo sane-find-scanner明确输出找到了 USB 设备但scanimage -L始终返回No scanners were identified。原因三个可能按概率排——/etc/sane.d/dll.conf里samsung被注释掉了当前用户不在scanner组udev 规则没生效导致设备节点权限是root:root 0600。解决先ls -l /dev/bus/usb/*/*看设备节点权限是root root就补 udev 规则权限正常就看dll.conf两样都对就id确认一下组关系加完组没重登是常见疏漏。三样都排查完还不行换xerox_mfp后端试一次很多三星一体机的扫描模块用的是同一套协议。5.4 卸载完重装提示已安装或 PPD 重复现象跑过uninstall.sh之后再装脚本提示已存在安装记录或者 CUPS 的型号列表里同一个机型出现好几条。原因卸载脚本只删主程序目录/etc/sane.d/samsung.conf、/usr/lib/sane/libsane-samsung*、udev 规则这些散落文件会留下重装时检测到痕迹就跳过。解决按 3.4 里的清单手工清一遍再装。清理顺序是先uninstall.sh再删残留删完systemctl restart cups。如果 CUPS 里 PPD 重复用lpinfo -m | grep -i samsung看是不是有samsung和samsung-uld两套路径同时存在删掉旧的那套目录即可。5.5 64 位系统报 cannot open shared object file现象打印一切正常一跑scanimage就报error while loading shared libraries: libusb-0.1.so.4: cannot open shared object file。原因包里自带的扫描后端是 32 位二进制而系统只装了 64 位的libusb-0.1-4。位数不匹配时动态链接器根本找不到库报错信息里不会告诉你缺的是哪个位数。解决ldd /usr/lib/sane/libsane-samsung.so.1 | grep not found定位缺哪个库然后按 2.3 里的方法补 i386 运行库。补完不用重装驱动直接再跑一次scanimage -L就行。如果不想引入 32 位库另一条路是找发行版仓库里自带的sane-backends后端替代功能上通常够用。6. 装完怎么验证跑通四组命令加一张自检表装完不做验证等于没装。我一般在装完之后按顺序跑四组命令从服务层一路验到实际出纸任何一组不过就停在那里排查不往后走。第一组验服务systemctl is-active cups lpstat -rlpstat -r返回scheduler is running才算调度器活着。这一步不过后面全是空的。第二组验队列和驱动lpstat -p -d lpinfo -m | grep -c -i samsung前者要能看到队列名和idle状态后者返回的数字大于 0 说明 PPD 已经注册进 CUPS 的型号库。第三组验实际打印别用图形界面点用命令行最直接printf samsung uld v1.00.06 test\n /tmp/t.txt lp -d Sam_Laser /tmp/t.txt lpstat -o Sam_Laserlpstat -o能看到任务在队列里滚动几秒后消失并且纸出来了这条链路就算通了。第四组验扫描sane-find-scanner | grep -i found scanimage -L scanimage --formatpng --resolution200 /tmp/scan.png file /tmp/scan.png--formatpng指定输出格式--resolution200是分辨率先别用 600速度慢还容易因为内存不足中断。file命令确认输出是真 PNG 而不是一段错误文本。把这四组装成一张表出问题时按「失败先看」那一列直奔现场比从头翻日志快检查项命令通过标准失败先看CUPS 服务systemctl is-active cups返回 activejournalctl -u cups -n 50队列状态lpstat -p -d队列 idle 且有默认lpadmin的 URI 与 PPD型号库lpinfo -m | grep -i samsung输出非空/usr/share/cups/model/samsung/打印链路lp -d 队列 /tmp/t.txt任务消失且出纸/var/log/cups/error_log设备识别sane-find-scanner有 found 行USB 线、lsusb扫描后端scanimage -L列出设备名/etc/sane.d/dll.conf、组权限实际扫描scanimage /tmp/x.pngfile显示 PNGldd查缺库有个小技巧值得单独说这套驱动装完会往系统里塞不少文件验证通过之后我习惯把落位情况记一份清单存下来dpkg -S或rpm -qf对不上就用find / -newer按时间筛。下次系统升级把驱动搞坏了照着清单重装比重新摸索快一个数量级。从那以后我每次装这类厂商驱动都强制走一遍「先getconf LONG_BIT定位数、再lpinfo -v抄 URI、最后四组命令验一遍」的流程不再凭感觉点下一步。翻车最多的从来不是驱动本身而是那几行没确认的环境前提。希望帮到你。本文还有配套的精品资源点击获取