Skip to content

jackadam1981/OpenWrt_OpenPrinting_cups

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

52 Commits
 
 
 
 
 
 

Repository files navigation

OpenWrt OpenPrinting CUPS Feed

本仓库提供 OpenWrt package feed,用于从 OpenPrinting/cups 官方源码编译 CUPS。

4 包结构

四个包互相独立,可任意安装其一或组合,无交叉依赖。

包名 依赖 安装内容 面向用户
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

CI 构建

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 并推送。

使用方式

从 CI Artifact 安装

  1. 打开 GitHub Actions 对应构建的 Artifact,下载与设备 target/subtarget 匹配的包。
  2. 解压后使用 opkg install cups-mini_*.ipk(或 cups-bsd/cups-client/cups-full)。

作为 Feed 本地构建

  1. 将仓库克隆到 OpenWrt 源码树旁:
 git clone https://github.com/<your-account>/OpenWrt_OpenPrinting_cups.git
 cd openwrt
  1. feeds.conf(或 feeds.conf.default)中追加:
 src-link openprinting_cups ../OpenWrt_OpenPrinting_cups
  1. 更新并安装 feed:
 ./scripts/feeds update openprinting_cups
 ./scripts/feeds install -a -p openprinting_cups
  1. make menuconfig,在 Network -> Printing 中选择 cups。
  2. 运行 make package/cups/{clean,compile} V=s 或构建完整固件。

Web 管理 (http://IP:631)

  • 管理入口:**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/8Allow 172.16.0.0/12Allow 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。若仍不出现,尝试无痕/隐私模式清除浏览器缓存后重新访问。

故障排除指南

Web 管理问题

现象 原因 处理
请求的条目过大(413) 请求体超限 /etc/cups/cupsd.confMaxLogSize 下一行添加 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/grouplpadmin:x:19:root;为 root 设置密码:passwd root

启动与运行问题

现象 原因 处理
Unknown SystemGroup "lpadmin" 系统无 lpadmin 组 创建组和用户:echo 'lpadmin:x:19:root' >> /etc/groupecho 'lp:x:7:' >> /etc/groupecho '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/tmpchown -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

cupsd.conf 配置要点

  • ListenListen *:631 才能从局域网访问(默认 localhost:631 仅本机)
  • Location:每个 <Location> 各自生效,/admin 必须单独配置 Allow + Require
  • Allow 语法:必须写 Allow from 10.0.0.0/8,不能省略 from
  • RequireRequire user @SYSTEM 即可,root 在 lpadmin 组即可登录
  • DefaultAuthType Basic:已有则各 Location 不必再写 AuthType Basic

检查端口与程序

步骤 命令 说明
检查 cupsd 是否运行 `ps grep cupsd/etc/init.d/cupsd status`
检查端口 631 是否监听 `netstat -tlnp grep 631ss -tlnp

调试

  • LogLevel:改为 debugdebug2 获取更详细日志;调试完改回 warn
  • 错误日志logread | grep -i cups/var/log/cups/error_log(若存在)

CI 构建问题

现象 处理
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

About

编译openwrt的最新cups

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors