toshiki

AIと二人三脚で、Linuxに無いドライバを書く

· Hacker News(GNOME Blogs) #130

Linux非対応のフィルムスキャナとノートPCのカメラを、AIと一緒に解析。Windowsの通信を録って比べる手法で、数日でドライバとパッチまで作った記録。

  • #reverse-engineering
  • #hardware
  • #linux
  • #rust
  • #ai

#なぜ今日これを選んだか

「Rust+ハードウェア」を目標にしていると、最初の壁は「資料の無い機械をどう読むか」です。この記事は、数か月止まっていた解析を、AIに単調な作業を任せることで数日で前に進めた実例でした。手法が具体的で、そのまま真似できる形になっているのが選んだ理由です。

#要点

  • 対象は、Linuxで動かないフィルムスキャナ(Plustek OpticFilm 8200i の新しい版)と、暗く黄緑がかった映像になるThinkPadのカメラ。スキャナは数か月行き詰まっていた
  • 手法は「正しく動く通信」と「動かない通信」を並べて比べること。Windowsの純正ドライバを仮想マシンで動かしてUSBの通信を録り、Linux側でも同じ操作をして差分を取る。これを hw-harness という道具にまとめた
  • Claudeが通信の解読・試験コード・定数の照合を担い、スキャナは数時間で最初の1枚、数日でほぼ完成。カメラは1日でカーネルとlibcameraの修正を作り、暗所の明るさが31.1→90.9に。ネガ用のアプリはRustで書いた
  • 結論は「AIは単調な部分に強い。ただし機械を触るのは人間で、最後の判定は実機」

#自分にとっての示唆

可動域アプリでも同じ構図があります。姿勢推定の揺れや角度のズレは、ぼんやり「おかしい」と感じるうちは直せません。この記事のように「正しい測定」と「ずれた測定」を並べて差分にすれば、具体的な数字の問題に変わります。ゴニオメーターで測った値を基準にして、アプリの値と並べた表を1つ作ることから始めます。もう1つの学びは、検証は必ず実機でやること。AIが「直った」と言っても、腕を動かして確かめるまでは直っていません。