
Використання AI для реверс-інжинірингу апаратних драйверів за допомогою hw-harness
Розробник описав, як використав Claude для створення універсального хаб-інструменту, який записує та порівнює USB-трафік між Windows і Linux, дозволяючи AI писати бекенди SANE для сканерів та патчі для MIPI-камер.
Процес розробки драйверів за допомогою AI
Кристиян Ф.К. Шалер описав, як він використав Claude для реверс-інжинірингу апаратних драйверів, поєднуючи інструменти штучного інтелекту зі структурованим процесом дослідження та порівняння. Після того, як він побачив, як інші використовували AI-агентів на віртуальних машинах Windows з повним контролем, він створив універсальний хаб-інструмент для автоматизації цього процесу. Головне спостереження полягає в тому, що модель AI винятково добре впорається з декодуванням трафіку, написанням зондів та перехресною перевіркою констант, що традиційно вимагало тижнів ручної роботи.
Як працює hw-harness
Харнес запускає драйвер виробника Windows у віртуальній машині KVM, де пристрій передається гостю. Трафік записується на хості Linux за допомогою usbmon, який знаходиться під рівнем pass-through, тому гость його не виявляє. Потім та сама операція повторюється на Linux з кастомним драйвером і також записується. Два трафіки порівнюються через diff, щоб отримати конкретний список помилок драйвера. Для пристроїв, які не мають шини для прослуховування, наприклад вбудованих MIPI-камер, харнес використовує перевірку INF-файлів, даних реєстру, ACPI-таблиць та властивостей пристрою з боку Windows. Підхід не покладається на копіювання коду; у новому драйвері всі константи посилаються на записану поведінку.
Три завершені проекти
У результаті першого проекту був створений бекенд SANE для плівкового сканера Plustek OpticFilm 8200i, який використовує контролер Genesys GL128 і раніше не мав підтримки в Linux. Бекенд підтримує кольоровий, чорно-білий та інфрачервоні режими з роздільною здатністю до 7200 dpi, а також видалення пилку та подряпин. При 3600 dpi сканування завершилося за 34,6 секунди, порівняно з 54,4 секунди для upstream-бекенду genesys, який додав підтримку цього сканера у вересні 2026 року. Обидві версії обробляють однакові деталі зображення. Бекенд упаковано у вигляді Fedora RPM.
Другий проект — Negative Vibes, додаток GNOME, написаний на Rust, який використовується для сканування негативів і слайдів на будь-якому плівковому сканері, що підтримується SANE. Він зберігає сирий 16-бітний лінійний скан з інфрачервоніми даними та виконує недеструктивну інверсію, калібрування через ArgyllCMS та експорт у формати TIFF, JPEG, PNG та DNG. Він розповсюджується як Flatpak, який включає бекенд сканера.
Третій проект виправив проблеми MIPI-камери на Lenovo ThinkPad X1 Carbon Gen 14 з сенсором Sony IMX471. Патчі ядра виправили помилку crop-selection, неправильну ширину регістру test-pattern і верхню межу аналогового підсилення, яка зменшувала чутливість приблизно на 1,8 стопу. Патчі програмного ISP libcamera додали відсутню корекцію затемнення об'єктива, яка робила кути на 2,7 стопу темнішими, і виправили статистику білого балансу, яка заважувала проти 8-бітного чорного рівня на нативній біт-глубині. У контрольному тесті при низькій освітленості шуму кадру зменшився з 31,1 до 90,9, а цветові коефіцієнти суттєво наблизилися до референсу USB-веб-камери. Патчі ядра вже надіслані, а патчі libcamera знаходяться в процесі огляду.
Основні уроки
Шалер зазначив, що референтний трафік є великою перевагою: коли AI порівнює відомий хороший трафік із поганим, природа проблеми перетворюється на конкретний список відмінностей. AI добре впорається з роботою з декодуванням та зондуванням, але реальне обладнання залишається єдиним арбістром. Він закликає всіх, хто має непідтримуване обладнання, спробувати підхід hw-harness.
Джерела: blogs.gnome.org
SiTech — веброзробка з підтримкою AI
Створюємо швидкі та сучасні сайти й інтегруємо AI у бізнес-процеси. Маєте проєкт чи запитання? Із задоволенням допоможемо.