返回

文章详情

使用人工智能逆向工程硬件

Hacker News2026年10月15日 14:35

在我母亲去世后,我得到了一个装满旧胶卷底片的大盒子,里面有我童年家庭旅行的照片等。因此,我决定购买一个底片扫描仪,并发现Plustek 8200i在Linux下受支持,所以我买了它。结果发现扫描仪中的芯片组已经更改为不再受Linux支持的型号。所以我用Claude代码为我的一些硬件制作Linux配置工具时取得了一些成功,例如我的Dell相机控制器应用程序,因此我想,也许Claude可以帮助我得到一个工作正常的SANE驱动程序。我基本上在这一点上卡住了,长时间没有进展,甚至基本上放弃了该项目几个月。然后我在X上看到了Tom Crider(又名Glorious Eggroll)的一篇帖子,谈到他如何使用AI工具修复鼠标驱动程序。他基本上描述了他如何设置AI代理,以便对Windows实例拥有完全控制权以捕获修复驱动程序所需的数据。因此,我将他的推文粘贴到Claude中,并请求帮助我设置一个Windows虚拟机,以做同样的事情来修复我的扫描仪。我想在Windows下运行扫描并在此过程中捕获USB数据的结合取得了很好的效果,加上Claude代码的改进产生了巨大差异。在几个小时内,我在Linux下首次成功完成了扫描,虽然有一些质量问题,但100%可以识别为底片中的图像。几天后,我有了几乎完美的驱动程序,包括红外扫描的支持,但我发现,在我放弃到重新尝试之间,有人已经提交了代码支持该扫描仪到SANE……这有时会发生。我还使用Claude编写了一个进行底片扫描的应用程序,我给它取名为Negative Vibes,觉得这是个可爱的名字。总之,随着我扫描仪工作的成功,我想,我想知道是否可以使用这个方法最终解决我笔记本电脑的MIPI相机支持的最后问题。因此,我告诉Claude重新使用我创建的工具,尝试通过更新内核驱动程序和libcamera来修复我笔记本电脑上的MIPI相机。我早上开始工作,到了晚上,我修复了大部分问题,准备好内核和libcamera的补丁。因此,我想这可能值得与世界分享,虽然任何人都可以从头开始,我确实要求Claude使工具更通用并进行文档记录,以便为其他有兴趣在硬件上尝试的人提供更简便的路径。为未记录的硬件编写驱动程序始终是乏味的。你捕获总线流量,盯着十六进制转储,并对每个寄存器或控制传输的功能形成假设。然后你逐一测试,通常要花费数周。没有任何一项是概念上困难的,但这需要很多耐心和技能。这类工作很适合AI模型。它可以读取成千上万行USB捕获,注意到某个序列在一个字节变化的情况下重复,并提出该字节的含义。它可以编写确认测试,并且不会感到无聊。人类仍然决定构建什么,并检查它在真实硬件上是否有效,但繁琐的工作就会大大减少。hw-harness 请注意,我在我的项目中并没有以这种形式使用hw-harness,因为那时这基本上是定制的代码,所以这个项目是一个尝试,使得工具变得更通用和可分享,基于我在做这项工作时使用的脚本。hw-harness旨在帮助你的Claude或Codex会话:1. 记录参考会话。在KVM虚拟机中运行供应商的Windows驱动程序,并将真实设备传递给来宾。2. 从VM外部捕获。在Linux主机上使用usbmon记录流量。它位于直通层之下,因此来宾无法看到它。3. 在Linux上使用你自己的驱动程序重复相同的操作,并以相同的方式捕获。4. 比较两个跟踪。两者都来自同一仪器,因此可以直接比较。差异就是你的驱动程序错误列表。对于没有总线可接入的设备,例如内部MIPI相机,工具则改用Windows侧检查。这意味着INF文件、注册表数据、ACPI表和设备属性。这种方法是可行的,因为它不依赖于复制任何代码,而是观察硬件的行为并仅提取来自Windows驱动程序的配置数据,因此新驱动程序中的每一个常量都可以追溯到记录的某个内容。因此,对于那些感兴趣的人,我有3个简短的项目描述及其所需内容。项目1:Plustek OpticFilm 8200i的SANE后端 比较两个可用驱动程序的驱动程序输出。第一个项目是用于较新Plustek OpticFilm 8200i的SANE后端。它使用Genesys GL128控制器(USB 07b3:1825),并且没有Linux支持。旧款同名型号使用GL845,已经在SANE中得到处理。该后端支持:彩色、灰度、红外和彩色

赞助内容

NordVPN Next-gen Antivirus

本站免费、广告极少。如果觉得有帮助,可以请我们喝杯咖啡 —— 任何金额都对持续运营有实际帮助。

☕请我喝杯咖啡