OpenWrt OpenPrinting CUPS Feed
本仓库提供 OpenWrt package feed,用于从 OpenPrinting/cups 官方源码编译 CUPS。
四个包互相独立,可任意安装其一或组合,无交叉依赖。
包名
依赖
安装内容
面向用户
cups-mini
zlib, libjpeg-turbo, libpng, libopenssl, libusb-1.0, libstdcpp
cupsd, cupsctl, cupsfilter, libcups, libcupsimage, backend/filter/cgi/daemon/driver/monitor, 配置, 文档, init
最小打印服务器(Web 管理)
cups-bsd
同上
mini 全部 + lpr, lpq, lprm, lpc
服务器 + BSD 命令,可独立安装
cups-client
同上
mini 全部 + lp, cancel, lpadmin, cupsaccept 等
服务器 + System V 命令,可独立安装
cups-full
同上
mini + bsd + client 全部内容
全功能包,可独立安装
需求
安装
最小打印服务器(Web 管理)
opkg install cups-mini
服务器 + BSD 命令
opkg install cups-bsd(已含 mini)
服务器 + System V 命令
opkg install cups-client(已含 mini)
全功能
opkg install cups-full
GitHub Actions 从 downloads.openwrt.org 下载 OpenWrt 24.10 SDK 并编译,产出 .ipk。推送到 main/master 或提交 PR 时触发,产物作为 Artifact 提供下载。
简体中文 Web 界面使用源码 overlay 方式提供:packages/print/cups/files/source/doc/zh_CN/ 与 packages/print/cups/files/source/templates/zh_CN/ 会在构建阶段覆盖到 CUPS 源码树的 doc/zh_CN/ 和 templates/zh_CN/。
设备型号
芯片
OpenWrt target/subtarget
Artifact
x86/64 设备
-
x86/64
cups-x86_64-packages
D-Link DIR-505
Atheros AR1311
ath79/generic
cups-mips_24kc_ath79-packages
TP-Link TL-WR720N
Atheros AR9331
ath79/tiny
cups-mips_24kc_ath79_tiny-packages
VoCore
Ralink RT5350F
ramips/rt305x
cups-mipsel_24kc_rt305x-packages
Mi WiFi Mini
MediaTek MT7620A
ramips/mt7620
cups-mipsel_24kc_mt7620-packages
新路由3 (Newifi D2)
MediaTek MT7621
ramips/mt7621
cups-mipsel_24kc-packages
CMCC RAX3000M
MediaTek MT7981B
mediatek/filogic
cups-aarch64_cortex-a53_filogic-packages
其他设备可查 OpenWrt 设备页 ,选择对应 target/subtarget 的 artifact。
CI 对下表中的每种 target/subtarget 各构建一份包,Artifact 名格式为 cups-<arch>-packages。按设备芯片/型号选择对应行下载。
target / subtarget
arch(Artifact 名)
典型设备/说明
x86 / 64
x86_64
x86/64 软路由、虚拟机、开发机
mvebu / cortexa72
aarch64_cortex-a72
Marvell Armada 3720/8040 等
mvebu / cortexa9
arm_cortex-a9
Linksys WRT 系列(Armada 385/388)等
rockchip / armv8
aarch64_generic
瑞芯微 RK3328、RK3399、R4S 等
mediatek / filogic
aarch64_cortex-a53_filogic
联发科 MT7981/7986,如 CMCC RAX3000M、红米 AX6000
ramips / mt7621
mipsel_24kc
新路由3 (Newifi D2)、K2P、小米 R3G 等 MT7621
ramips / mt7620
mipsel_24kc_mt7620
小米 Mini、联想 NEWIFI mini 等 MT7620A
ramips / rt305x
mipsel_24kc_rt305x
VoCore、TP-Link WR841N v8 等 RT305x
ath79 / generic
mips_24kc_ath79
D-Link DIR-505、DIR-615 等 Atheros 大 flash 机型
ath79 / tiny
mips_24kc_ath79_tiny
TP-Link TL-WR720N v3、TL-WR702N 等小 flash 机型
sunxi / cortexa7
arm_cortex-a7_neon-vfpv4
全志 H3/H2+ 等(香橙派、NanoPi 等)
mpc85xx / p1020
powerpc_8548
NXP P1020 等 PowerPC 开发板/工控
stm32 / stm32mp1
stm32-stm32mp1
STM32MP1 系列板卡
lantiq / xrx200
lantiq-xrx200_legacy
领势 VR200、FRITZ!Box 等 Lantiq xRX200
malta / be
mips_24kc
Malta 模拟器(MIPS 大端),开发/测试用
每天 UTC 0:00 定时检查 OpenPrinting/cups 是否有新版本,若有则自动更新 Makefile 并推送。
打开 GitHub Actions 对应构建的 Artifact,下载与设备 target/subtarget 匹配的包。
解压后使用 opkg install cups-mini_*.ipk(或 cups-bsd/cups-client/cups-full)。
将仓库克隆到 OpenWrt 源码树旁:
git clone https://github.com/<your-account>/OpenWrt_OpenPrinting_cups.git
cd openwrt
在 feeds.conf(或 feeds.conf.default)中追加:
src-link openprinting_cups ../OpenWrt_OpenPrinting_cups
更新并安装 feed:
./scripts/feeds update openprinting_cups
./scripts/feeds install -a -p openprinting_cups
make menuconfig,在 Network -> Printing 中选择 cups。
运行 make package/cups/{clean,compile} V=s 或构建完整固件。
管理入口:**http://设备IP:631/admin**(需用 root 及 root 密码登录)。
简体中文界面 :本仓库在 packages/print/cups/files/source/templates/zh_CN/ 下提供 Web 模板,构建时会 overlay 到 CUPS 源码的 templates/zh_CN/ 并随包安装。浏览器语言设为简体中文(zh-CN)时,CUPS Web 管理界面会自动使用中文;无需单独安装语言包。
同时出现「请求的条目过大」且没有登录框 :多为升级后保留了旧 conffile。升级包已带自动修复(postinst),修复后执行 **/etc/init.d/cupsd restart** 即可。若未生效,请手动修改 /etc/cups/cupsd.conf:1)在 MaxLogSize 下一行添加 MaxRequestSize 0;2)把所有 Allow 10.0.0.0/8、Allow 172.16.0.0/12、Allow 192.168.0.0/16 改为 Allow from 同网段(如 Allow from 192.168.0.0/16),保存后 /etc/init.d/cupsd restart。
仅不出现登录框 :确认 /etc/group 中组名为 lpadmin (小写),并为 root 设置密码:passwd root。若仍不出现,尝试无痕/隐私模式 或清除浏览器缓存 后重新访问。
现象
原因
处理
请求的条目过大(413)
请求体超限
在 /etc/cups/cupsd.conf 中 MaxLogSize 下一行添加 MaxRequestSize 0,保存后 /etc/init.d/cupsd restart
无登录框 / 403 Forbidden
Location 里 Allow 语法错误
必须写 Allow from 10.0.0.0/8 等,不能只写 Allow 10.0.0.0/8;修改后 /etc/init.d/cupsd restart
无登录框(配置无误)
浏览器缓存
使用无痕/隐私模式 或清除浏览器缓存后重新访问 http://IP:631/admin
Your account does not have the necessary privileges
root 未在 lpadmin 组
确认 /etc/group 有 lpadmin:x:19:root;为 root 设置密码:passwd root
现象
原因
处理
Unknown SystemGroup "lpadmin"
系统无 lpadmin 组
创建组和用户:echo 'lpadmin:x:19:root' >> /etc/group,echo 'lp:x:7:' >> /etc/group,echo 'lp:x:7:7:Printing:/var/run/cups:/bin/false' >> /etc/passwd,然后 /etc/init.d/cupsd restart(若已存在则跳过相应行)
Unable to create directory /var/spool/cups
目录未创建
执行:mkdir -p /var/cache/cups /var/spool/cups/tmp,chown -R lp:lp /var/cache/cups /var/spool/cups,/etc/init.d/cupsd restart
Unable to open spool directory /var/spool/cups
同上
同上
Unable to create /var/cache/cups/job.cache.N
/var/cache/cups 缺失
同上
Unknown directive IdleExitTimeout
构建不支持该指令
包内已通过 sed 删除;若手动配置,移除 IdleExitTimeout 行
Listen :Listen *:631 才能从局域网访问(默认 localhost:631 仅本机)
Location :每个 <Location> 各自生效,/admin 必须单独配置 Allow + Require
Allow 语法 :必须写 Allow from 10.0.0.0/8,不能省略 from
Require :Require user @SYSTEM 即可,root 在 lpadmin 组即可登录
DefaultAuthType Basic :已有则各 Location 不必再写 AuthType Basic
步骤
命令
说明
检查 cupsd 是否运行
`ps
grep cupsd或/etc/init.d/cupsd status`
检查端口 631 是否监听
`netstat -tlnp
grep 631或ss -tlnp
LogLevel :改为 debug 或 debug2 获取更详细日志;调试完改回 warn
错误日志 :logread | grep -i cups 或 /var/log/cups/error_log(若存在)
现象
处理
ramips/mt7620 构建失败
使用 cups-mipsel_24kc_mt7620-packages,勿与 mt7621 的 cups-mipsel_24kc-packages 混淆
sed unmatched {
已简化 sed,仅匹配 Order allow,deny(Location 用),不修改 Policy 的 Order deny,allow
CUPS 依赖 libusb-1.0, libjpeg-turbo, libpng, zlib, libopenssl, libstdcpp,请确保已选。
资源有限的路由器上 CUPS 可能压力较大,若仅需 USB 打印透传可考虑 p910nd。
OpenWrt_OpenPrinting_cups/
├── packages/print/cups/
│ ├── files/
│ │ ├── cupsd.init
│ │ └── source/
│ │ ├── doc/zh_CN/ # 覆盖 CUPS 源码 doc/zh_CN
│ │ └── templates/zh_CN/ # 覆盖 CUPS 源码 templates/zh_CN
│ └── Makefile # 定义源码 overlay 与 OpenWrt 包
├── .github/workflows/
│ ├── build.yml # 多架构构建(从 SDK 构建 .ipk,打 Release)
│ └── update-check.yml # 定时检查上游 CUPS 版本并自动更新 Makefile
└── README.md