他的扫描仪在Linux上无法使用——于是他让Claude研究Windows驱动

他的扫描仪在Linux上无法使用——于是他让Claude研究Windows驱动

💡 原文英文,约1200词,阅读约需5分钟。
📝

内容提要

红帽工程师Christian Schaller利用Claude Code为Linux不支持的Plustek扫描仪开发驱动:让AI对比Windows与Linux驱动的USB流量,数小时内完成首张扫描,几天后支持红外扫描。他将该方法开源为hw-harness(MIT协议),并以同样思路修复笔记本摄像头偏暗、偏色问题,提交内核与libcamera补丁,还用Rust编写了扫描应用Negative Vibes。

🔎

延伸解读

方法核心:用Windows驱动作参照

Schaller的关键突破在于让Claude同时观察Windows和Linux两边的USB流量。早期直接让AI写驱动失败,是因为缺少可对比的“正确实现”。新方法在KVM虚拟机中运行厂商Windows驱动,用usbmon捕获流量,再与Linux驱动对比,使AI能定位差异。这提示:对缺乏文档的硬件,提供参照实现比单纯生成代码更有效。

成果与局限:驱动可用但未合并

Schaller的驱动在数小时内实现首张扫描,几天后支持红外除尘,单帧全分辨率扫描34.6秒,快于上游SANE的54.4秒。但他不计划维护竞争驱动,将切换至上游版本。其内核与libcamera补丁尚未合并,且低光下蓝色通道仍比参考低约17%,说明AI辅助产出仍需人工测试与审查。

工具开源:hw-harness的适用边界

hw-harness以MIT协议开源,包含winctl、usbcap、hostdev和hwdbg等组件,可复用于其他Linux不支持的硬件。但作者指出,发布版并非其扫描仪和摄像头项目所用原工具,且尚未在广泛硬件上测试,许可问题也未解决。读者应将其视为概念验证,而非即用型通用方案。

摄像头案例:无USB流量的替代思路

笔记本内置摄像头没有USB流量可供对比,Schaller改为向Claude提供Windows驱动的配置文件、注册表、ACPI表和设备属性,并接入USB摄像头作为工作参照。最终发现内核裁剪选择错误、测试图案寄存器定义错误、模拟增益限制损失约1.8档灵敏度,以及libcamera缺少镜头阴影校正等问题。这表明参照物可以灵活替换。

❓

Q&A

Christian Schaller 是如何让 Claude 帮助开发 Linux 扫描仪驱动的?

他让 Claude 在 KVM 虚拟机中运行厂商的 Windows 驱动,通过 usbmon 捕获 USB 流量,然后与 Linux 驱动发送的数据进行对比,从而找出并修复 Linux 驱动的问题。

hw-harness 是什么?它包含哪些工具?

hw-harness 是 Schaller 开源的一个项目(MIT 协议),用于捕获设备行为、对比正常与故障实现,并为编码代理提供信息以支持 Linux 不支持的硬件。它包含 winctl(控制 Windows 虚拟机)、usbcap(捕获流量)、hostdev(切换设备)和 hwdbg(Linux 端调试)等工具。

Schaller 开发的扫描仪驱动与上游 SANE 驱动相比有哪些优势和不足?

优势:支持红外除尘、曝光调整,以及 300 到 7200 dpi 的彩色和灰度扫描;单帧全分辨率扫描耗时 34.6 秒,快于上游的 54.4 秒。不足:上游驱动支持更多分辨率选项,且 Schaller 不打算维护竞争驱动,将改用上游版本。

Schaller 如何用 Claude 修复笔记本摄像头的偏暗和偏色问题?

由于摄像头没有 USB 流量可分析,他让 Claude 查看 Windows 驱动的配置文件、注册表项、ACPI 表和设备属性,并连接一个 USB 网络摄像头作为正常参考。Claude 随后找到了内核和 libcamera 中的多个问题,并生成了补丁。

Negative Vibes 是什么?它有哪些功能?

Negative Vibes 是 Schaller 用 Rust 编写的 GNOME 扫描应用,保留原始 16 位扫描数据(包括红外通道),支持除尘、无损调整图像、使用 ArgyllCMS 校准颜色,并可导出为 TIFF、JPEG、PNG 或 DNG 文件。

Schaller 的方法存在哪些局限或待解决的问题?

局限包括:许可问题尚未解决;通用测试框架尚未在广泛硬件上验证;摄像头补丁尚未合并,低光下蓝色通道仍比参考低约 17%;扫描仪驱动不再维护,将改用上游版本。

🏷️

标签

➡️

继续阅读