AI로 리눅스 드라이버 없는 하드웨어를 역공학했다
원제 Using AI to reverse engineer hardware
128 포인트댓글 113

Key Point
문서화되지 않은 하드웨어의 드라이버 작성이라는 골치 아픈 작업을 AI가 크게 단축시켰으며, 저자가 공개한 hw-harness 도구로 누구나 같은 방식을 시도할 수 있게 되었다.
핵심 요약
- 저자가 구형 필름 스캐너 Plustek 8200i를 구입했으나 칩셋이 변경되어 리눅스 드라이버가 없었고, Claude AI의 도움을 받아 드라이버 작성에 시도했으나 오래 진전이 없었다.
- Tom Crider가 AI 에이전트로 마우스 드라이버를 수정한 사례에서 영감을 받아, Claude에게 Windows 가상머신을 제어해 USB 데이터를 캡처하도록 설정했다.
- 스캐너의 Windows 드라이버 출력과 Linux 드라이버 출력을 비교하는 능력이 결정적이었고, 며칠 내에 적외선 스캔 지원이 포함된 작동하는 SANE 드라이버를 완성했다.
- 나중에 상류 SANE 프로젝트도 이 스캐너를 지원하기 시작했으나, 저자는 hw-harness라는 일반화된 도구를 만들어 다른 사람들도 미지원 하드웨어 드라이버를 작성할 수 있도록 했다.
- hw-harness는 Windows 드라이버를 KVM 가상머신에서 실행하고 usbmon으로 트래픽을 캡처한 뒤, Linux 드라이버로 같은 작업을 반복해 두 트래픽을 비교해 드라이버 버그를 파악한다.
- 첫 번째 프로젝트로 Genesys GL128 칩셋 기반 Plustek OpticFilm 8200i용 SANE 백엔드를 만들었으며, 300~7200dpi, 색상·흑백·적외선 모드, 먼지 제거 등을 지원한다.
- 저자의 드라이버는 풀 해상도에서 34.6초, 상류 드라이버는 54.4초가 걸리며, 저자의 드라이버는 적외선 먼지 제거를 지원하고 상류 드라이버는 더 많은 해상도 단계를 제공한다.
- 두 번째 프로젝트인 Negative Vibes는 Rust로 작성한 GNOME 앱으로, SANE 스캐너에서 컬러·흑백 필름과 슬라이드를 스캔하며 16비트 선형 적외선 평면을 유지한다.
- Negative Vibes는 비손실 편집, 필름 베이스 보정, 적외선 먼지 제거, IT8 캘리브레이션, TIFF·JPEG·PNG·DNG 내보내기를 지원하며 Flatpak으로 배포된다.
- 세 번째 프로젝트로 Lenovo ThinkPad X1 Carbon Gen 14의 Sony IMX471 MIPI 카메라의 문제를 수정했으며, 커널과 libcamera 패치를 준비했다.
- 카메라 수정 사항은 crop 선택 버그 제거, 테스트 패턴 레지스터 폭 수정, 아날로그 게인 상한 상향(1.8 stops 감도 향상), 렌즈 쉐이딩 보정 추가(2.7 stops 개선) 등이다.
- white-balance 통계 계산 수정으로 저조도 테스트에서 프레임 밝기가 31.1에서 90.9로 상향되었고, 색상 균형도 USB 웹캠 기준에 가까워졌다.
- 저자의 경험에 따르면 기준 트래픽 캡처가 핵심이며, AI는 인코딩, 프로브 작성, 상수 검증 같은 반복 작업에 우수하고, 인간은 실제 하드웨어로 검증해야 한다.