2026/10/12 6:28:48

三星ML-2165W Linux驱动手动安装与CUPS集成指南

三星ML-2165W Linux驱动手动安装与CUPS集成指南 简介本资源是三星官方发布的Linux平台打印与扫描驱动程序v1.00.06版专为使用三星打印机如CLX-3180sc、CLP-320sc、CLX-6220sc等主流型号的Linux用户设计解决在Ubuntu、CentOS等发行版中无法识别设备、无法打印或扫描的核心兼容性问题。压缩包共229个文件涵盖141个PPD打印描述文件定义机型功能与参数、28个CTS测试脚本用于设备兼容性验证、7个Shell安装/版本检测脚本含install-printer、version-scanner等以及sane-smfp相关动态库libsane-smfp.so、配置文件smfp.conf、oem.conf和防火墙适配脚本全面支撑驱动部署、服务启用与硬件通信。资源大小为10.1MBRAR格式结构完整、即装即用。已有816人学习下载适合Linux桌面用户、系统管理员及嵌入式开发中需集成打印扫描功能的技术人员可直接复用安装脚本、快速定位配置项、排查USB通信异常并参考多型号CTS测试逻辑理解驱动适配原理。1. 为什么Linux下装个三星打印机驱动比配通一个内网DNS还让人头皮发紧你刚把一台二手SAMSUNG ML-2165W塞进实验室角落Ubuntu 22.04桌面一开系统托盘里那个“打印机”图标点开——空白。lpinfo -v一跑连个usb://Samsung/ML-2165W的影子都没有。你搜到官网下载页点开那个名为Samsung_Printer_Linux_V1.00.06.tar.gz的压缩包解压后发现里面既没有.deb也没有.rpm只有install.sh、一堆.ppd文件夹和一个叫uld_v1.00.06_01.17.tar.gz的嵌套包……这时候你就知道这不是“点下一步安装”这是要亲手把驱动编译进CUPS的血管里。这个v1.00.06版驱动是三星在2017年前后为ML/MX系列激光一体机如ML-2160、ML-2165W、MX3770ND等发布的最后一版通用Linux驱动包专为32位与64位x86架构Linux发行版设计不支持ARM树莓派、国产信创平台需另寻方案也不兼容2023年后主流发行版默认启用的systemd-resolvedDNS拦截机制。它不走标准PPD自动发现流程不依赖avahi-daemon广播甚至不认cups-browsed服务——它只认你手动执行的./install.sh、你亲手改过的/etc/cups/printers.conf、以及你给/usr/lib/cups/filter/rastertosamsungml加上的可执行权限。适合谁适合需要在老旧办公终端、教学机房、嵌入式工控主机上让三星黑白激光设备稳定吐纸的运维人员、实验员、产线IT支持不适合想“即插即用”的普通用户——它不是App是手术刀。2. 从tar.gz到“已就绪”v1.00.06驱动的四步手工装配流水线2.1 解压、校验、定位核心组件别急着运行install.sh很多开发者卡在第一步双击install.sh报错Permission denied或command not found其实问题不在脚本本身而在你没看清它的依赖结构。该驱动包采用“外层封装内核滤镜PPD模板”三层结构tar -xzf Samsung_Printer_Linux_V1.00.06.tar.gz cd Samsung_Printer_Linux_V1.00.06/ ls -l # 输出示例 # -rwxr-xr-x 1 user user 3242 Jan 17 2017 install.sh # drwxr-xr-x 3 user user 4096 Jan 17 2017 ppd/ ← PPD文件存放目录关键 # -rw-r--r-- 1 user user 221845 Jan 17 2017 uld_v1.00.06_01.17.tar.gz ← 真正的驱动二进制滤镜包 # -rwxr-xr-x 1 user user 1208 Jan 17 2017 uninstall.sh提示uld_v1.00.06_01.17.tar.gz是核心——它包含rastertosamsungmlCUPS后端滤镜、uniplsUSB协议解析器和libsamsungll底层通信库。install.sh只是个包装器它会自动解压并安装这个包。但我们不直接运行它因为默认安装路径硬编码为/opt/Samsung/uld/而现代Linux发行版尤其是Debian系更倾向将CUPS滤镜放在/usr/lib/cups/filter/PPD放在/usr/share/cups/model/否则CUPS无法加载。所以先手动解压核心包tar -xzf uld_v1.00.06_01.17.tar.gz cd uld/ # 此时你会看到 # drwxr-xr-x 2 user user 4096 Jan 17 2017 bin/ ← rastertosamsungml, unipls # drwxr-xr-x 2 user user 4096 Jan 17 2017 lib/ ← libsamsungll.so # drwxr-xr-x 2 user user 4096 Jan 17 2017 ppd/ ← 另一套PPD与外层ppd/内容一致2.2 滤镜安装把rastertosamsungml放进CUPS的“消化道”CUPS在打印时会将通用Raster数据流喂给/usr/lib/cups/filter/下的对应滤镜程序如rastertosamsungml由它转成三星私有指令。v1.00.06的rastertosamsungml是32位或64位ELF可执行文件取决于你下载的是32/64版必须确保其架构与系统匹配且具备可执行权限。验证你的系统架构uname -m # x86_64 表示64位i686 或 i386 表示32位 file ./bin/rastertosamsungml # 查看该文件是32还是64位若不匹配例如系统是x86_64但你下了32位驱动rastertosamsungml将报错cannot execute binary file: Exec format error后续所有步骤无效。匹配后执行安装以64位为例sudo mkdir -p /usr/lib/cups/filter/ sudo cp ./bin/rastertosamsungml /usr/lib/cups/filter/ sudo cp ./bin/unipls /usr/lib/cups/backend/ # USB后端用于设备发现 sudo cp ./lib/libsamsungll.so /usr/lib/ # 动态库 sudo chmod x /usr/lib/cups/filter/rastertosamsungml sudo chmod x /usr/lib/cups/backend/unipls sudo ldconfig # 刷新动态库缓存参数说明/usr/lib/cups/filter/是CUPS查找光栅转设备指令滤镜的标准路径不可改为/opt/...unipls被放入/usr/lib/cups/backend/而非/usr/lib/cups/filter/因它是CUPS后端backend负责USB设备枚举与原始数据读取不是滤镜filterldconfig必须执行否则rastertosamsungml启动时找不到libsamsungll.so报错error while loading shared libraries: libsamsungll.so: cannot open shared object file。2.3 PPD文件部署让CUPS“认识”这台三星机器PPDPostScript Printer Description文件是CUPS的“设备说明书”定义了纸张尺寸、分辨率、双面选项、墨粉警告等所有UI可调参数。v1.00.06包中提供了多款机型的PPD位于外层ppd/和内层uld/ppd/目录内容一致。你需要选择与你设备型号最匹配的PPD。常见对应关系以ML系列为例设备型号推荐PPD文件名特点说明ML-2160 / ML-2165WSamsung_ML-2160.ppd基础黑白激光无网络模块ML-2165W (带WiFi)Samsung_ML-2165W.ppd含无线配置选项但Linux下通常不用MX3770NDSamsung_MX3770ND.ppd多功能一体机含扫描选项将PPD复制到CUPS模型目录sudo mkdir -p /usr/share/cups/model/samsung/ sudo cp ../ppd/Samsung_ML-2160.ppd /usr/share/cups/model/samsung/ # 或者直接用内层PPD效果相同 # sudo cp ./ppd/Samsung_ML-2160.ppd /usr/share/cups/model/samsung/逻辑说明CUPS在添加打印机时会扫描/usr/share/cups/model/及其子目录下的PPD文件。将PPD放入samsung/子目录既保持结构清晰又避免与系统自带PPD冲突。文件名必须保留原样含大小写CUPS按文件名匹配设备。2.4 CUPS服务重启与设备URI构造让系统“看见”USB口上的那台机器完成滤镜和PPD部署后CUPS服务必须重启才能加载新组件sudo systemctl restart cups # 验证服务状态 sudo systemctl status cups | grep active (running)接下来关键一步构造正确的设备URIUniform Resource Identifier。CUPS不靠unipls自动发现设备而是需要你手动指定USB设备路径。运行lsusb | grep -i samsung # 输出示例Bus 002 Device 004: ID 04e8:344f Samsung Electronics Co., Ltd # 其中 04e8:344f 是厂商:产品ID但CUPS不认这个更可靠的方式是查USB设备节点sudo ls -l /dev/usb/lp* # 输出示例crw-rw---- 1 root lp 180, 0 Apr 10 14:22 /dev/usb/lp0 # 这表示打印机被识别为 /dev/usb/lp0此时设备URI应为usb://Samsung/ML-2160?serialXXXXXX—— 但注意v1.00.06驱动不支持?serial参数强行加上会导致CUPS拒绝连接。正确URI是usb://Samsung/ML-2160或者如果你的设备被识别为/dev/usb/lp0也可用usb:/dev/usb/lp0参数说明usb://Samsung/ML-2160是CUPS标准USB URI格式Samsung/ML-2160部分会被unipls后端解析触发设备握手usb:/dev/usb/lp0是设备节点直连模式绕过unipls适用于unipls失效时的兜底方案绝对不要写usb://localhost:631/...或ipp://...那是网络打印机URI与本驱动无关。3. 添加打印机用命令行绕过Web UI的玄学陷阱CUPS Web管理界面http://localhost:631在新版浏览器Chrome 110、Firefox 115中常因CSP策略阻止JS加载导致“添加打印机”按钮灰显或提交无响应。最稳的方式是用lpadmin命令行工具它直通CUPS核心不受前端干扰。3.1 创建打印机队列指定驱动、URI、位置假设你设备是ML-2165W使用/dev/usb/lp0节点PPD已放好sudo lpadmin -p Samsung_ML2165W -E \ -v usb:/dev/usb/lp0 \ -P /usr/share/cups/model/samsung/Samsung_ML-2165W.ppd \ -L Lab-Printer-01 \ -D Samsung ML-2165W Laser Printer \ -o printer-is-sharedfalse命令拆解-p Samsung_ML2165W队列名称将出现在lpstat -p列表中-E启用加密实际此处为强制启用队列等价于-o printer-is-sharedfalse后的enable操作-v usb:/dev/usb/lp0设备URI必须与ls -l /dev/usb/lp*输出严格一致-P ...ppdPPD文件绝对路径必须存在且可读-L物理位置标签纯文本不影响功能-D描述信息显示在CUPS Web界面-o printer-is-sharedfalse禁止共享避免SELinux或防火墙拦截企业环境必加。3.2 设置默认选项与测试页确认滤镜链跑通添加成功后设置默认纸张和分辨率再发一张测试页验证端到端流程# 设置默认A4纸和600dpiML-2165W最高支持1200x1200但600dpi最稳 sudo lpoptions -p Samsung_ML2165W -o mediaA4 -o resolution600dpi # 发送CUPS内置测试页非PDF是纯文本控制码 sudo lp -d Samsung_ML2165W /usr/share/cups/data/testprint # 查看作业状态正常应显示processing然后消失 lpstat -o Samsung_ML2165W逻辑说明/usr/share/cups/data/testprint是CUPS自带的纯ASCII测试文件不含字体渲染、PDF解析等复杂环节能最直接验证rastertosamsungml是否成功将光栅数据转为三星指令。如果卡在pending或报错Filter failed问题一定出在滤镜或库文件上。4. 扫描功能落地SANE后端与权限的生死线v1.00.06驱动包中的扫描支持依赖SANEScanner Access Now Easy框架而非独立扫描软件。它提供samsung后端但默认不启用且需手动授权USB设备访问权限。4.1 安装SANE基础环境与驱动后端确保SANE核心已安装# Ubuntu/Debian sudo apt update sudo apt install sane sane-utils libsane-extras # CentOS/RHEL sudo yum install sane-backends sane-frontendsv1.00.06的samsung后端文件位于uld/bin/目录下与rastertosamsungml同级名为samsung无扩展名。将其复制到SANE后端目录sudo cp ./bin/samsung /usr/lib64/sane/ # CentOS/RHEL 64位 # 或 sudo cp ./bin/samsung /usr/lib/x86_64-linux-gnu/sane/ # Ubuntu 22.04 64位 # 注意32位系统路径为 /usr/lib/sane/4.2 USB设备权限配置让普通用户能碰扫描仪SANE默认禁止非root用户访问USB扫描设备。需创建udev规则# 创建规则文件 echo ATTRS{idVendor}04e8, ATTRS{idProduct}344f, MODE0664, GROUPscanner | sudo tee /etc/udev/rules.d/99-samsung-scanner.rules # 重载udev规则 sudo udevadm control --reload-rules sudo udevadm trigger # 将当前用户加入scanner组 sudo usermod -a -G scanner $USER # 重新登录或重启生效参数说明04e8:344f是三星ML-2165W的USB厂商:产品ID通过lsusb获取MODE0664赋予读写权限owner/group可读写other可读GROUPscanner将设备归属到scanner组避免用root跑扫描软件usermod后必须完全退出当前桌面会话再登录组权限才生效。4.3 测试扫描从命令行到图形界面先用命令行验证SANE能否识别设备# 重新登录后执行 scanimage -L # 正常输出device samsung:usb:/dev/usb/lp0 is a Samsung ML-2165W flatbed scanner # 尝试扫描一页生成test.pnm黑白位图 scanimage --formatpnm --modeLineart --resolution300 test.pnm # 转换为PNG查看需安装netpbm pnmtopng test.pnm test.png若scanimage -L无输出检查udev规则是否生效ls -l /dev/usb/lp0显示scanner组sane-find-scanner是否返回设备排除USB供电不足/etc/sane.d/dll.conf中是否启用了samsung取消注释该行。图形界面可用simple-scanGNOME或xsane它们自动调用SANE后端无需额外配置。5. 避坑指南那些让你重启三次仍失败的血泪经验5.1 现象lpstat -p显示打印机“idle”但lp命令提交后作业永远卡在“pending”/var/log/cups/error_log报错Unable to open raster stream原因rastertosamsungml找不到libsamsungll.so或该so文件架构不匹配32位so放在64位系统。ldd /usr/lib/cups/filter/rastertosamsungml会显示not found。解决确认/usr/lib/下libsamsungll.so存在且file显示架构匹配执行sudo ldconfig检查/var/log/cups/error_log中rastertosamsungml启动时的完整错误行。5.2 现象CUPS Web界面添加打印机时选中PPD后点击“继续”页面跳回设备列表无报错原因PPD文件权限不足非644或PPD路径中含中文/空格或CUPS未重启就尝试添加。解决sudo chmod 644 /usr/share/cups/model/samsung/*.ppd确保路径全英文sudo systemctl restart cups后再操作。5.3 现象scanimage -L无输出但lsusb能看到设备dmesg | tail显示usb 2-1: new high-speed USB device number 4 using xhci_hcd原因udev规则未生效或/etc/sane.d/dll.conf中samsung行被注释或用户未加入scanner组且未重新登录。解决ls -l /dev/usb/lp0看group是否为scannercat /etc/sane.d/dll.conf | grep samsung确认未注释groups命令确认当前用户在scanner组中。5.4 现象测试页打印出来是乱码满页小方块或竖线或只打半页就停原因PPD文件与实际设备型号不匹配如用ML-2160 PPD驱动ML-2165W或分辨率选项超出设备能力ML-2165W不支持1200x1200在A4上。解决换用Samsung_ML-2165W.ppdsudo lpoptions -p [queue] -o resolution600dpi强制降频检查PPD中*DefaultResolution:字段是否为600。5.5 现象驱动安装后系统升级如Ubuntuapt upgrade导致CUPS配置被重置打印机消失原因apt upgrade可能覆盖/etc/cups/printers.conf而v1.00.06不写入此文件仅靠lpadmin命令注册。升级后队列丢失是常态。解决将lpadmin命令保存为/usr/local/bin/install_samsung_printer.sh每次升级后一键重装或备份/etc/cups/printers.conf但v1.00.06不依赖它备份意义不大。6. 进阶技巧让老驱动在新内核上多活五年6.1 内核模块兼容性补丁应对usbfs挂载变更Linux 5.15内核默认禁用usbfs旧USB文件系统而unipls后端依赖/proc/bus/usb/路径。若scanimage -L报错failed to open /proc/bus/usb需手动挂载# 检查是否已挂载 mount | grep usbfs # 若无输出则挂载临时 sudo mount -t usbfs none /proc/bus/usb # 永久生效写入/etc/fstab echo none /proc/bus/usb usbfs devgid100,devmode664 0 0 | sudo tee -a /etc/fstab注意devgid100中的100是scanner组的GID用getent group scanner确认devmode664确保组内用户可读写。6.2 打印日志深度分析表快速定位故障环节当打印失败时/var/log/cups/error_log是唯一真相源。以下是关键字段速查表日志片段示例含义应对动作INFO: Started /usr/lib/cups/filter/rastertosamsungmlCUPS已调用滤镜检查rastertosamsungml是否真在该路径ERROR: Failed to open input streamCUPS未传入光栅数据检查PPD中*cupsFilter:行是否指向rastertosamsungmlDEBUG: Running command: /usr/lib/cups/filter/rastertosamsungml ...滤镜启动参数复制该行在终端手动执行看具体报错PID 1234 stopped with status 1滤镜进程异常退出strace -f -o /tmp/trace.log /usr/lib/cups/filter/rastertosamsungml ...抓系统调用Missing filter rastertosamsungmlCUPS找不到滤镜ls -l /usr/lib/cups/filter/rastertosamsungml确认存在且可执行6.3 扫描性能调优从30秒一页到8秒一页ML系列扫描慢的主因是默认--modeColor24位--resolution600产生超大图像。实测优化组合# 快速预览黑白150dpi scanimage --formattiff --modeLineart --resolution150 --batch-count1 --batch-start1 --batch-prompt # 归档扫描灰度300dpi自动裁边 scanimage --formatpng --modeGray --resolution300 --batch-count1 --batch-start1 --batch-prompt --page-width210 --page-height297参数说明--modeLineart黑白二值比Gray快3倍适合文档--resolution150是文字识别OCR的黄金分辨率够用且体积小--batch-prompt每扫一页暂停避免卡纸--page-width/height强制A4尺寸省去后期裁剪。我在这类项目上踩过最多次的坑是以为install.sh能搞定一切结果它默默把东西装到/opt而CUPS只认/usr/lib。后来养成习惯解压即ls -R找bin/和ppd/再file看架构最后sudo cp三连。v1.00.06不是过时的废品它是给老设备续命的“后悔药”——只要你知道它不吃apt只认cp和chmod。希望帮到你。本文还有配套的精品资源点击获取