miangedev/epson-l3110-driver

GitHub: miangedev/epson-l3110-driver

用 C 语言从零构建的 Epson L3110 原生 Linux 打印机驱动,旨在不依赖专有软件的前提下完整理解并实现 USB 通信、ESC/P-R 协议与 CUPS 集成。

Stars: 0 | Forks: 0

# epson-l3110-driver 一个使用 C 语言编写的原生 Linux **Epson L3110** 打印机驱动程序,完全从零开始构建,不依赖专有软件、Gutenprint 或任何现有的驱动程序作为基础。 这是一个长期的系统编程项目。目标是理解 Linux 打印技术栈的每一层 —— USB 通信、ESC/P-R 协议、CUPS 集成 —— 并实现一个简洁、可审计的开源驱动程序。 ## 目标 - 使用 `libusb` 通过 USB 与 Epson L3110 进行通信。 - 理解并实现 ESC/P-R 协议,而不依赖逆向工程生成的二进制数据块。 - 使用 C 语言编写 CUPS filter 和 CUPS backend。 - 制作干净的 `.deb` 软件包和源代码 tarball。 - 记录每一项技术决策。 本项目**仅针对一款打印机**:Epson L3110。除非确认其他型号共享完全相同的协议实现,否则不会添加其他型号。 ## 这不是什么 - 不是 Epson 的 `iscan` 或 `escpr` 软件包的封装。 - 不是 Gutenprint 的分支。 - 不是快速修复方案。这是一个由学习驱动的工程项目。 ## 路线图 | 阶段 | 描述 | 状态 | |-------|-------------|--------| | 0 | 研究:USB、ESC/P-R、CUPS、现有项目 | 进行中 | | 1 | 仓库结构、Makefile、编码规范 | 待定 | | 2 | USB 设备检测和描述符检查 | 待定 | | 3 | USB 通信:打开、声明、发送、接收 | 待定 | | 4 | 打印测试页 | 待定 | | 5 | 图像处理:PNG、光栅、颜色 | 待定 | | 6 | CUPS filter 和 backend | 待定 | | 7 | 打包:.deb、tarball、PKGBUILD | 待定 | ## 文档 研究笔记和架构决策随着项目的推进保存在 `docs/` 目录中: - `docs/architecture.md` — 系统设计和模块职责 - `docs/protocol-notes.md` — ESC/P-R 命令分析 - `docs/research-notes.md` — 关于 USB、CUPS 和现有开源项目的笔记 - `docs/decisions.md` — 记录每一项重要的设计决策及其理由 ## 依赖项 | 库 | 用途 | |---------|---------| | `libusb-1.0` | USB 设备通信 | | `libcups` | CUPS filter 和 backend 集成 | 不计划包含任何其他运行时依赖。只有在有文档说明理由的情况下,才会引入额外的库。 ## 许可证 GPL v3.0。参见 `LICENSE`。 ## 参考 - [OpenPrinting](https://openprinting.github.io/) - [CUPS 文档](https://www.cups.org/doc/) - [libusb](https://libusb.info/) - [Epson ESC/P 参考手册](https://files.support.epson.com/pdf/general/escp2ref.pdf) - [Gutenprint](https://gimp-print.sourceforge.net/) — 研究其协议洞察,但不作为基础使用
标签:CUPS, ESC/P-R协议, USB通信, 打印机驱动, 系统编程