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通信, 打印机驱动, 系统编程