ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

Ubuntu 安装 Epson 打印机:CUPS 驱动与排错指南

Ubuntu 安装 Epson 打印机:CUPS 驱动与排错指南 上周帮朋友把一台 Epson 墨仓式一体机接到装了 Ubuntu 24.04 的老笔记本上本以为插上 USB 十分钟就能搞定结果来回折腾了近两个小时系统识别到了设备但打印队列一直显示“正在处理”纸上一个字没出来。排查到最后发现是驱动包版本选错了——新机型用老一代的 ESC/P-R 驱动页面描述语言对不上任务就被无限挂起。这类事在 Linux 桌面环境里太常见了所以我打算把 Ubuntu以及大部分 Linux 发行版安装 Epson 打印机的完整流程、协议选型、参数含义和踩坑记录一次性讲清楚。无论你手里是 USB 直连的家用墨仓机还是走网线、WiFi 的办公一体机只要按协议和驱动两条线去判断基本都能在没有厂商客服的情况下自己搞定。适合刚接触 Linux 的新手也适合已经会用 CUPS 但总在“选哪个驱动”这一步犯迷糊的老用户。1. 先搞清楚 Linux 打印这套体系是怎么运作的很多人第一次在 Linux 下装打印机会下意识去找一个“Epson 驱动安装包双击运行”的东西这思路是 Windows 带过来的在 Linux 上会走很多弯路。所以动手之前先花几分钟把底层的运作方式理清楚后面选驱动、排查故障都会快得多。1.1 CUPS 是整个打印体系的中枢Linux 桌面下的打印几乎全部由CUPSCommon Unix Printing System接管。它做三件事管理打印队列、把文档转换成打印机认识的页面描述语言、通过 USB 或网络把数据送出去。你在系统设置里点“添加打印机”其实就是在跟 CUPS 的后台服务cupsd打交道浏览器打开http://localhost:631看到的那套网页界面也是 CUPS 自带的。理解这一点之后“装驱动”这个概念就清晰了所谓驱动本质上是一个PPD 文件PostScript Printer Description加上配套的过滤器程序。PPD 告诉 CUPS 这台机器支持什么纸张、什么分辨率、双面怎么设置过滤器负责把 PDF 或者文本转成打印机听得懂的指令流。Epson 的喷墨机大多使用ESC/P-R这套页面描述语言跟 PostScript、PCL 都不是一回事所以通用 PCL 驱动套上去基本没用必须用 Epson 自己的过滤器。提示如果你在http://localhost:631能打开界面但点不动按钮先确认当前用户是否在lpadmin组里否则 CUPS 会拒绝你的管理操作。1.2 驱动路线其实只有三条在 Linux 下接 Epson 打印机可选的路线就那么三条判断清楚走哪条能省掉大量试错时间。路线适用机型优势局限官方 APT 驱动包ESC/P-R / ESC/P-R2绝大多数 2012 年后的喷墨、墨仓机支持完整彩色、墨量、无边距都能用包版本更新慢新机型要等无驱动打印IPP Everywhere / AirPrint近十年的网络机型零安装系统自带高级功能少USB 场景不适用通用 PostScript / PCL 驱动激光机和少数高端机通用性好喷墨墨仓机基本不可用第一条路是绝大多数人需要走的。第二条路是这两年的省事之选只要打印机支持 AirPrintUbuntu 桌面甚至能自动发现并配好一行命令都不用敲。第三条路在家用喷墨机上大概率会打出乱码或者干脆不响应遇到这种情况别怀疑人生换路线就行。1.3 型号决定一切先查再动手Epson 的墨仓系列命名有规律L 系列基本是家用墨仓一体机L3xxx、L4xxx 这些属于比较新的型号用的是ESC/P-R2驱动再早一些的 L2xx、L3xx 老款用的是一代ESC/P-R。这两个驱动包在软件源里是两个独立的包名装错了不会报错但打印会出问题——要么任务卡死要么打出一堆 JSON 似的乱字符。判断方法很土但很有效去看打印机机身背面或底部的型号标签或者打印一张网络配置页看具体型号后缀。别只记“Epson L 系列”这种模糊信息后缀差一位驱动包可能就差一代。我见过有人把 L4158 的驱动装在 L4263 上结果能识别、能添加、就是打不出东西。2. 动手之前该做的准备工作准备工作这块很多人会跳过直接上来就apt install然后在报错里打转。下面这几步花不了五分钟但能让后面的流程顺得多。2.1 确认连接方式和设备路径先明确打印机是怎么接入的。USB 直连最简单插上之后用lsusb看能不能列出 Epson 的厂商 IDEpson 的 USB 厂商 ID 是04b8lsusb | grep -i epson正常会输出类似Bus 001 Device 005: ID 04b8:xxxx Seiko Epson Corp.的内容。如果什么都没有先换根线、换个 USB 口试试尤其是那些只供电不传数据的充电线是排查里最容易忽略的一环。走网络的机型用avahi-browse或者lpinfo -v看看能不能发现设备lpinfo -v | grep -i epson输出里带ipp://或者dnssd://前缀的那一行就是稍后要填进 CUPS 的设备地址。2.2 补上必需的服务和工具Ubuntu 桌面版默认装了 CUPS但有些精简安装或者服务器版会缺东西。一次性把常用的补齐sudo apt update sudo apt install cups cups-client cups-filters printer-driver-gutenprint avahi-daemon这里几个包各自有分工。cups-client提供lp、lpadmin、lpstat这些命令行工具是排查问题的核心武器cups-filters负责格式转换缺了它连 PDF 都送不进打印机avahi-daemon管的是 mDNS 服务发现网络打印机能被自动找到全靠它gutenprint是个通用驱动大合集作为兜底选项留着。装完把当前用户加进管理组并启动服务sudo usermod -aG lpadmin $USER sudo systemctl enable --now cups加组之后要重新登录一次才生效这一步经常被忘掉然后就会出现“明明加了组还是提示无权限”的怪事。2.3 关掉可能冲突的防火墙规则Ubuntu 默认的ufw一般不拦本机的631端口但如果你之前手动配过规则建议确认一下sudo ufw status只要没把631/tcp明确 deny 掉就不用额外开放。真要用网络共享给局域网其他机器才需要sudo ufw allow 631/tcp。2.4 记下几个关键端口号排查时很有用网络打印走哪条路看端口就能判断。IPP 是631老的 LPD 是515很多打印机还开着原始 RAW 端口9100。端口不同走的后端也不一样ipp://走 CUPS 原生协议支持状态回传推荐优先用。socket://打 RAW速度快但不带状态回传队列里的“已发送”不代表真打出来了。lpd://兼容老设备现在基本不用。实际排查中把三种都试一遍来判断问题出在网络还是驱动层是个很高效的思路。3. USB 直连机型的完整落地流程USB 场景是最典型也最容易踩坑的下面按顺序走一遍。3.1 先让系统确认能看到设备前面lsusb已经确认过设备在。再补一步看内核有没有把打印机识别成 USB 打印类设备ls /dev/usb/ dmesg | tail -20在dmesg输出里应该能看到usblp或者usb ... printer字样。如果设备被识别成了存储设备部分一体机在插卡状态下会这样先把存储卡拔掉再插 USB 线。3.2 获取并安装官方驱动包Epson 官方在 Linux 上提供的是.deb格式的驱动包需要从官方下载页面按型号下载。这里不贴具体下载链接因为厂商页面结构会变直接搜“Epson 型号 Linux driver”到官方站点找更靠谱。下载下来通常是一串这样的文件epson-inkjet-printer-escpr_1.x.x-1lsb3.2_amd64.deb一代 ESC/P-Repson-inkjet-printer-escpr2_1.1.x-1_amd64.deb二代 ESC/P-R2epson-printer-utility_x.x.x-1lsb3.2_amd64.deb墨量监控和喷头清洗工具安装用dpkg直接装缺依赖再补cd ~/Downloads sudo dpkg -i epson-inkjet-printer-escpr2_*.deb sudo apt install -f第二行apt install -f是关键它会自动把你机器上缺失的依赖补上。这一步的报错信息要认真看最常见的缺失依赖是lsb相关包虽然新系统上已经不太需要但一些老驱动包的依赖声明里还挂着。注意如果下载的是 32 位包i386装到 64 位系统上dpkg会直接拒绝。看一眼文件名里的amd64还是i386别下错。3.3 用 CUPS 网页界面添加打印机驱动装好之后浏览器打开http://localhost:631进 “Administration” → “Add Printer”。会看到系统自动列出的本地设备USB 打印机一般显示成 “Epson XXX (Epson XXX USB #1)” 这种形式。选中它点继续下一页会让你确认连接方式保持默认的usb://地址即可。真正关键的是下一页的Make/Model选择。Epson 会出现在厂商列表里点进去之后型号列表会非常长。这里的原则是优先选带 “ESC/P-R” 或 “ESC/P-R2” 字样的条目名称里型号对得越准越好。名字里有 “(recommended)” 标记的就是 CUPS 认为最匹配的那个一般可以直接用。实在找不到完全一致的型号选同系列里最近的型号通常也能工作但纸张选项可能有偏差。选完保存CUPS 会生成一份 PPD 文件放进/etc/cups/ppd/这时候打印机会出现在打印机列表里。3.4 命令行方式添加效率更高网页界面步骤多熟练之后我更倾向于用命令行一条搞定lpadmin -p Epson_L4263 -E -v usb://EPSON/L4263%20Series -m EPSON/EPSON_L4263_Series-epson-escpr2-en.ppd逐个参数说清楚因为这几个参数是后面所有排查的基础-p后面跟的是你在 CUPS 里给这台机器起的名字随便起但不要带空格和中文后面lp -d打印时要用。-E表示启用这台打印机并接受任务少了这个参数打印机是禁用状态任务会一直排队。-v是设备 URIUSB 设备的地址可以用lpinfo -v查注意 URL 里的空格要转义成%20。-m是 PPD 文件名。用lpinfo -m | grep -i epson可以列出系统里所有可用的 Epson PPD把返回结果里的完整名字填进去就行。lpinfo -m这条命令值得单独记一下它是判断“驱动到底装没装上”的最直接证据。如果输出里一条 Epson 相关的都没有那说明驱动包没装成功问题不在 CUPS 层。3.5 测试打印与状态确认添加完先设成默认打印机然后打一张测试页lpoptions -d Epson_L4263 lpstat -t lp -d Epson_L4263 /usr/share/cups/data/testprintlpstat -t会输出一堆状态信息重点看三行打印机是否enabled、是否accepting requests、队列里有没有卡住的任务。如果测试页能出来说明驱动链路完全通了。打不出来但队列显示完成了通常是 PPD 选错队列一直卡在 “processing”那多半是过滤器转换失败回去把-m的 PPD 换成另一个版本的 ESC/P-R 再试。4. 网络机型与无驱动打印怎么选网络打印在 Linux 下反而比 USB 更省心尤其是近几年的机型很多时候根本不需要装驱动。4.1 三种网络协议的取舍逻辑打印机同时开着好几个端口是很常见的选哪个取决于你要什么协议地址形式状态回传适用场景IPPipp://IP/ipp/print有首选支持驱动无关模式RAW/socketsocket://IP:9100无驱动齐全但 IPP 不通时备用LPDlpd://IP/QUEUE弱老设备兼容IPP 的优势在于它是双向的CUPS 能拿到缺纸、卡纸、墨量低这些状态桌面上会弹通知。RAW 是单向的发出去就完事出没出来只能靠人去看。所以能用 IPP 就用 IPP。4.2 一行命令搞定无驱动打印近十年的 Epson 网络机型基本都支持 IPP EverywhereUbuntu 里自带driverless工具可以自动生成临时 PPDdriverless它会输出当前网络里可用的一串ipp://地址。拿到地址后直接lpadmin -p Epson_Net -E -v ipp://192.168.1.50/ipp/print -m everywhere-m everywhere是个关键字告诉 CUPS 去跟打印机实时协商能力而不是读本地 PPD。这么配出来的打印机基本功能都能用彩色、双面如果机器支持都有。这种方式最大的好处是系统升级不会失效。用本地 PPD 的打印机每次大版本升级 CUPS 或者过滤器有变动多少都可能出点小问题everywhere模式把能力协商交给打印机本身稳定性明显更好。注意无驱动模式对彩色墨仓机来说高级选项会少一些比如无边距打印、特定纸张类型的精细调节可能没有。如果你需要这些还是老老实实装官方驱动包。4.3 给网络打印机固定 IP这是长期稳定的前提动态 IP 的打印机用着用着突然连不上是很多人遇到过的怪事。根因就是 DHCP 租约到期后 IP 变了CUPS 里配的地址自然就失效了。两种解法在路由器里给打印机的 MAC 地址绑定静态 IP一劳永逸。打印机自带网络设置页面直接配静态 IP但要注意别跟路由器 DHCP 池冲突。我个人推荐在路由器上绑改起来方便打印机本身不用动。配好之后顺手把 CUPS 里的设备 URI 更新一下lpadmin -p Epson_Net -v ipp://192.168.1.50/ipp/print只改地址不用重建打印机队列名和设置都保留。4.4 扫描功能的处理思路一体机的扫描功能在 Linux 上走的是SANE这套体系跟 CUPS 是两码事需要单独配。先装基础组件sudo apt install sane-utils libsane-common然后列出设备scanimage -L输出里有epson2:libusb:xxx或者escl:http://IP这类地址就成了说明 SANE 认到了设备。Epson 官方还有一个epsonscan2包功能比通用后端全支持无线扫描和更多参数新机型建议装这个。老机型用epson2后端就够了这个后端在sane-utils里自带。扫描这块最常见的坑是权限普通用户访问 USB 扫描仪时报 “Access denied”。解决办法是把用户加进scanner组sudo usermod -aG scanner $USER同样是重新登录后生效。4.5 WiFi 直连机型的额外注意点有些 L 系列机型支持 WiFi但只支持 2.4GHz 频段不认 5GHz。如果你在路由器上把两个频段合成了一个 SSID配网时会失败。这种时候临时拆出一个 2.4GHz 的独立 SSID 配好再合回去或者直接用 USB 线跑一次初始化配置。另外配好 WiFi 之后用avahi-browse -art | grep -i epson能扫到设备比lpinfo -v更灵敏适合排查“局域网里明明有但就是发现不了”的情况。5. 常见故障的排查顺序和实录故障排查这件事最怕的是东试一下西试一下。下面按“从下往上”的顺序整理也就是先确认物理层和网络层再往驱动层走效率最高。5.1 任务卡在“正在处理”不动这是出现频率最高的症状原因至少有四种PPD 版本不对。新机型配了老驱动或者反过来。验证方法lpinfo -m | grep -i epson看装的是哪个包然后在 CUPS 网页界面里换一个 PPD 试。过滤器缺失。CUPS 找不到转换程序/var/log/cups/error_log里会有Filter failed字样。装cups-filters补齐。USB 权限问题。日志里会出现Permission denied。检查/dev/bus/usb/下设备的所属组必要时加 udev 规则。打印机自身处于错误状态。缺纸、盖子没关、墨盒报错这些状态 CUPS 有时拿不到需要去看打印机面板。排查时最有用的一条命令是实时看日志sudo tail -f /var/log/cups/error_log然后另开一个终端发打印任务日志里会一行行显示处理过程卡在哪一步一目了然。这比猜要快十倍。5.2 打出乱码或者只打半页乱码基本可以断定是页面描述语言对不上。喷墨机收到的不是 ESC/P-R 指令流就会把数据当成普通字符直接输出于是纸上出现一堆乱七八糟的东西。换 PPD 是唯一的解法。只打半页或者打到一半停住的情况通常是缓冲区或者纸张尺寸设置不一致。检查两处CUPS 里的纸张尺寸是不是 A4默认有时是 Letter打印机面板里设置的纸张尺寸是否一致。两边不一致时某些机型会在渲染阶段就截断数据。5.3 打印机状态一直是“已暂停”lpstat -t输出里如果看到printer Epson_L4263 disabled说明打印机被暂停了。原因多半是之前有个任务失败CUPS 自动把它禁用保护队列。恢复cupsenable Epson_L4263 cupsaccept Epson_L4263第一条是启用打印机第二条是让它重新接受新任务。这两个命令要一起用只做第一条的话打印机会启用但拒绝新任务看起来还是没反应。5.4 中文文档打印成方块或乱码这个跟驱动没关系是字体问题。CUPS 把文档转成 PDF 再渲染时如果系统缺对应字体中文会变成一个个方块。装一下常用字体sudo apt install fonts-noto-cjk fonts-wqy-zenhei装完重启 CUPS 服务sudo systemctl restart cups另外注意一点从文本编辑器直接lp一个纯文本文件时编码必须是 UTF-8。GBK 编码的文件在转换环节就会乱掉可以用iconv先转iconv -f GBK -t UTF-8 old.txt new.txt5.5 常见问题速查表症状最可能的原因处理动作lpinfo -v看不到设备连接或服务发现异常检查线缆、重启 avahi-daemon添加时报 “client-error-not-possible”用户不在 lpadmin 组加组后重新登录任务瞬间消失没有任何输出URI 写错或端口不通用nc -zv IP 631测端口打印速度和预览不符分辨率设置过高把 PPD 里的质量档位调到普通扫描仪列表为空SANE 后端缺失装libsane-common检查 scanner 组重启后打印机消失动态 IP 变化给打印机绑静态 IP这张表里每一条都是实际遇到过的组合照着查能覆盖大部分场景。5.6 日志才是最终裁判所有排查最后都要落到日志上。CUPS 有两处日志值得看一处是/var/log/cups/error_log看服务端处理一处是/var/log/syslog看内核层的 USB 和网络事件。把日志级别临时调高能看到更细的内容sudo cupsctl --debug-logging调完之后记得改回来日志级别太高会迅速吃掉磁盘空间sudo cupsctl --no-debug-logging另外日志文件本身会被轮转如果追查的是一个老问题记得用zcat /var/log/cups/error_log.1.gz去看历史记录。6. 几个实实在在的经验教训前面讲的是流程这里讲的是流程之外那些只有踩过才知道的事。6.1 驱动包的选择比安装过程更关键我做过一个统计帮别人处理 Epson 打印机问题里真正因为“装不上”而失败的不到三成七成以上是装错了包。ESC/P-R 和 ESC/P-R2 这两代驱动从外面看几乎一样装哪个都能让打印机出现在列表里但只有对的那个能真打出东西。我的习惯是拿到型号先去官方下载页看那个型号对应的驱动包文件名里是escpr还是escpr2确认之后再去装。多花两分钟省两个小时。还有一个细节官方驱动包分 32 位和 64 位也分不同发行版适配的版本。Ubuntu 系的机器选amd64那个别选成i386也别选成给其他发行版打包的rpm。6.2 系统大版本升级前先备份 PPDUbuntu 每半年一个版本两年一个 LTS升级这件事躲不开。升级过程中 CUPS 有可能重建配置虽然大多数时候不会出问题但我遇到过升级之后打印机配置还在、驱动包被卸载的情况因为新版本的依赖关系变了旧的第三方包被标记为可移除。备份很简单把整个目录打包sudo tar czf cups-backup.tar.gz /etc/cups万一出问题解包恢复再重启服务几秒钟的事。这个小习惯帮我省过至少两次重配的时间。驱动包的.deb文件也建议留一份在本地别到时候找不到下载页。6.3 多台机器共用一台打印机的正确姿势家里或者小办公室几台电脑共用一台打印机有两种做法。一种是每台机器各自连打印机前提是打印机能同时接受多路连接现在的网络机型基本都行。另一种是拿一台常年开机的 Linux 机器做打印服务器其他机器连它。后一种更稳做法也简单在那台机器上开启共享sudo cupsctl --share-printers sudo ufw allow 631/tcp其他机器添加打印机时把设备地址填成ipp://服务器IP:631/printers/队列名就行。这种架构下驱动只需要装在服务器上客户端什么都不用装连 Windows 机器也能直接用省事得多。唯一要注意的是队列名别起得太随意Epson_L4263这种就挺好纯中文队列名在某些客户端上会出编码问题。
返回列表