1. 为什么选择OpenWrt路由器搭建CUPS打印服务器?
家里有台老式USB打印机,每次想用手机打印都得开电脑共享,实在麻烦。后来发现用刷了OpenWrt的路由器就能让打印机变身无线设备,全家设备都能直接打印。CUPS(Common UNIX Printing System)作为Linux生态的标准打印方案,比常见的p910nd方案更稳定,特别适合多设备同时打印的场景。
实测下来,这套方案有三大优势:
- 跨平台支持:Windows 10/11、macOS、iOS(AirPrint)、安卓全兼容
- 硬件零成本:利用现有路由器改造,无需购置新设备
- 集中管理:所有打印任务通过网页后台统一管理,还能设置不同用户权限
不过要注意,路由器需要满足两个基本条件:至少8MB存储空间(安装CUPS约占用5MB)和USB 2.0及以上接口。常见的小米AC2100、斐讯K2P等百元级路由器都能完美支持。
2. 固件准备与CUPS安装
2.1 选择合适的OpenWrt固件
官方原版OpenWrt和LEDE分支都支持CUPS,但建议选择第三方优化固件,比如:
- ImmortalWrt:对中文支持更好,自带CUPS插件
- Lean's OpenWrt:集成常用驱动,适合新手
- 自编译固件:通过ImageBuilder删除无用模块节省空间
重点检查固件是否包含以下内核模块:
kmod-usb-core # USB基础驱动 kmod-usb2 # USB 2.0支持 kmod-usb-printer # 打印机通信模块2.2 安装CUPS核心组件
通过SSH登录路由器后,按顺序执行:
opkg update opkg install cups cups-filters libcupsdriver如果遇到空间不足,可以先卸载无关软件:
opkg remove luci-app-ddns # 示例:移除动态DNS插件有个坑要注意:部分固源的cups-filters版本可能冲突,如果安装后无法启动服务,可以尝试:
opkg remove cups-filters opkg install --force-depends cups3. CUPS服务配置详解
3.1 基础网络设置
编辑配置文件/etc/cups/cupsd.conf,关键修改项如下:
Listen 0.0.0.0:631 # 允许所有接口访问 WebInterface Yes # 启用网页管理 DefaultLanguage zh # 设置中文界面 <Location /> Order allow,deny Allow from 192.168.1.0/24 # 改为你的局域网网段 </Location>3.2 权限与安全配置
建议为管理员单独设置密码:
lppasswd -a root然后在配置文件中添加:
<Location /admin> AuthType Basic Require user @SYSTEM </Location>3.3 服务启动与排查
启动服务并设置开机自启:
/etc/init.d/cupsd start /etc/init.d/cupsd enable检查服务状态:
logread | grep cups # 查看日志 netstat -lnpt | grep 631 # 确认端口监听如果遇到打印机无法识别,先检查USB设备是否挂载:
lsusb # 查看USB设备列表 dmesg | grep usb # 检查内核日志4. 多平台客户端配置指南
4.1 Windows系统配置
以Win11为例分步操作:
- 控制面板 → 设备和打印机 → 添加打印机
- 选择"我需要的打印机不在列表中"
- 输入URL:
http://路由器IP:631/printers/打印机名 - 驱动选择建议:
- 优先使用厂商官方驱动
- 无对应驱动时选"Generic - PostScript Printer"
实测发现部分惠普打印机需要额外步骤:
Add-PrinterPort -Name "CUPS" -PrinterHostAddress "路由器IP"4.2 macOS无缝连接
苹果设备支持AirPrint原生协议:
- 系统设置 → 打印机与扫描仪 → 点击+
- 自动发现后选择"默认队列"
- 如果没有自动出现,手动输入:
ipp://路由器IP:631/printers/打印机名
进阶技巧:让老打印机支持AirPrint
opkg install avahi-daemon service avahi-daemon restart4.3 手机移动端打印
iOS设备:
- 直接使用系统相册/文件的"共享"功能
- 选择打印机图标即可自动发现
安卓设备: 推荐安装"PrinterShare"应用:
- 添加 → 网络打印机 → 高级
- 协议选择"IPP"
- 地址填写
http://路由器IP:631/printers/打印机名
5. 常见问题解决方案
5.1 打印任务卡住
先检查CUPS任务队列:
lpstat -o # 查看待处理任务 cancel -a # 清除所有任务如果是内存不足导致,可以扩展交换分区:
dd if=/dev/zero of=/swapfile bs=1M count=64 mkswap /swapfile swapon /swapfile5.2 中文乱码问题
安装中文字体包:
opkg install freetype opkg install --force-depends fontconfig然后在CUPS网页端 → 打印机 → 管理 → 修改默认选项 → 选择"UTF-8"编码
5.3 多打印机负载均衡
编辑/etc/cups/printers.conf添加类:
<DefaultClass MyPrinterGroup> Info "打印机集群" Accepting Yes Printer printer1 Printer printer2 </DefaultClass>最后提醒,长期使用时建议给路由器加装散热片,我的一台小米路由器3G连续打印200页后CPU温度达到了78℃,加装散热片后稳定在45℃左右。