История началась с плёнки
После смерти матери остался большой ящик со старыми фотоплёнками из детства и семейных поездок. Один из них решил купить сканер для негативов и нашёл поддерживаемый под Linux Plustek 8200i. Но открыв коробку, обнаружил, что чипсет в сканере поменялся на неподдерживаемый.
Раньше удавалось с помощью Claude создавать конфигурационные утилиты для своего оборудования — например, приложение для управления веб-камерой Dell. Казалось, Claude сможет помочь и с драйвером SANE. Но попытка застряла, и в итоге проект забросили на несколько месяцев.
Переломный момент наступил, когда нашёл пост Tom Crider (GloriousEggroll) в X о том, как он использовал ИИ для исправления драйвера мыши. Суть была простая: дал агенту полный контроль над Windows VM, чтобы тот захватил нужные данные для исправления драйвера. Пропустил твит через Claude и попросил помощь в настройке виртуальной машины для похожего эксперимента со сканером.
Результат превзошёл ожидания. Возможность запускать сканы под Windows и одновременно захватывать USB-данные произвела чудо. За несколько часов получил первый рабочий скан под Linux — с дефектами, но на 100% узнаваемый. Через несколько дней драйвер был почти идеален, с поддержкой инфракрасного сканирования. Но потом выяснилось: за время, пока проект был заброшен, кто-то уже добавил поддержку этого сканера в SANE. Таково уж бывает.
Параллельно Claude помог написать приложение для сканирования негативов — Negative Vibes. Название показалось забавным.
Расширение на MIPI камеру
Вдохновившись успехом со сканером, решил попробовать наконец-то исправить последние проблемы с поддержкой MIPI камеры на ноутбуке. Попросил Claude переиспользовать созданный инструмент и исправить MIPI камеру, обновив драйвер ядра и libcamera. Работа началась с утра, а к концу дня было готово значительное улучшение — патчи и для ядра, и для libcamera.
Тогда и возникла идея поделиться этим с миром. Попросил Claude сделать инструмент универсальным и документировать процесс, чтобы другим было легче попробовать то же на своём оборудовании.
Почему ИИ здесь эффективен
Разработка драйвера для недокументированного оборудования всегда была рутинной работой: захватить трафик шины, вглядываться в hex-дампы, формулировать гипотезы о том, что делает каждый регистр или управляющий пакет. Затем проверить гипотезы одну за другой — обычно это занимает недели. Работа не сложна концептуально, но требует огромного терпения и навыков.
Такая работа отлично подходит для модели ИИ. Она может прочитать тысячи строк захвата USB, заметить повторяющуюся последовательность с изменением одного байта, и предложить его значение. Может написать тест для проверки и не скучает в процессе. Человек остаётся тем, кто решает, что строить, и проверяет, что всё работает на реальном железе, но сам мучительный процесс значительно сокращается.
hw-harness: обобщённый инструмент
hw-harness — результат попытки сделать более универсальным и пригодным для обмена то, что использовалось в проектах. Изначально это было специализированным кодом, теперь же инструмент предназначен помочь Claude или Codex сессии с:
- Записью эталонной сессии. Запустить оригинальный драйвер поставщика в KVM VM с передачей реального устройства гостю.
- Захватом вне VM. Записать трафик на хосте Linux с помощью usbmon. Утилита располагается ниже слоя passthrough, поэтому гость её не видит.
- Повторением той же операции в Linux с собственным драйвером и захватом того же способом.
- Сравнением двух трасс. Обе из одного устройства, поэтому сравниваются напрямую. Различия — это список ошибок драйвера.
Для устройств без доступной шины (вроде встроенной MIPI камеры) инструмент использует инспекцию со стороны Windows: INF файлы, данные реестра, таблицы ACPI и свойства устройства.
Подход не требует копирования кода — он просто наблюдает, что делает оборудование, и извлекает конфигурационные данные из драйверов Windows. Каждая константа в новом драйвере основана на записанном.
Три проекта: детали
Проект 1: SANE backend для Plustek OpticFilm 8200i

Первый проект — SANE backend для более новой версии Plustek OpticFilm 8200i. Сканер использует контроллер Genesys GL128 (USB 07b3:1825) и не имел поддержки в Linux. Старая модель с тем же названием работала на GL845 и уже поддерживалась SANE.
Backend поддерживает:
- Режимы цветной, чёрно-белой, инфракрасной и комбинированной съёмки
- Разрешение от 300 до 7200 DPI, 8 или 16 бит на канал
- Удаление пыли и царапин через инфракрасный канал
- Множитель экспозиции для плотных негативов
Упакован как Fedora RPM с автоматической сборкой на каждый push. Тестирован в основном через собственное приложение Negative Vibes — под Linux не так много опций для сканирования негативов.
Upstream SANE также добавил поддержку этого сканера в сентябре 2026. Сравнение показало: оба разрешают одинаковые мелкие детали на 3600 DPI. Собственный драйвер быстрее на полном разрешении (34,6 с против 54,4 с) и поддерживает инфракрасное удаление пыли. Upstream предлагает больше вариантов разрешения. На интерактивной странице можно сравнить результаты рядом. Это одна рамка, один скан — относитесь как к одной точке данных. Надеюсь, обнаруженные моменты помогут SANE проекту исправить мелкие вещи. Проект выложен как proof of concept — когда upstream драйвер достигнет функциональной паритета, все будут использовать его.
Проект 2: Negative Vibes

Сам по себе драйвер мало полезен, если сканирование негативов остаётся мучительным. Поэтому создали Negative Vibes — приложение GNOME, написанное на Rust, для сканирования цветных, чёрно-белых негативов и слайдов на любом совместимом SANE сканере.
Скан хранится ровно таким, как доставил его сканер: 16-бит, линейный, с инфракрасной плоскостью. Всё остальное — стек неразрушающих настроек сверху, так что можно менять вид и экспортировать заново. Включает:
- Инверсию негатива в пространстве плотностей с коррекцией основы плёнки и перекрытия красителей
- Настройки по всей рулону с переопределением для отдельных кадров
- Инфракрасное и программное удаление пыли
- Калибровку IT8 через ArgyllCMS
- Экспорт в TIFF, JPEG, PNG и DNG с ICC профилями и метаданными
Распространяется как Flatpak, включающий backend сканера. Тестирован на 8200i. Цель — поддержать любой сканер, который знает SANE. Для этого SANE нужен стандартный способ предоставлять инфракрасные каналы, чего пока нет.
Проект 3: Исправление MIPI камеры на ThinkPad

Камера в Lenovo ThinkPad X1 Carbon Gen 14 (Aura Edition) использует сенсор Sony IMX471 позади Intel IPU7. Под Linux выдавала тёмные изображения с сильной виньеткой и жёлто-зелёным оттенком. Проект mipi-fixes-x1-aura собирает исправления. Он актуален только для этого ноутбука, поэтому не стал отдельным пакетом, но патчи ядра уже отправлены Kate Hsuan, а патчи libcamera на рассмотрении Wim Taymans для субмиши в Libcamera.
Ядро (драйвер IMX471):
- Ошибка в выборе кропа возвращала ошибку до сохранения прямоугольника, так что libcamera предполагала полный массив пикселей
- Регистр тестового паттерна был объявлен с неправильной шириной
- Крышка аналогового усиления была слишком низкой, отчего терялось примерно 1,8 стопа чувствительности
libcamera software ISP:
- Коррекция виньеткирования линзы вообще отсутствовала, оставляя углы примерно на 2,7 стопа темнее
- Статистика белого баланса суммировалась на родной разрядности сенсора против 8-бит чёрного уровня. Это искажало баланс, и исправление применимо к любому RAW10/RAW12 сенсору
В контролируемом тесте при слабом свете яркость кадра выросла с 31,1 до 90,9. Отношения красного/зелёного и синего/зелёного изменились с 0,890 и 0,672 на 1,047 и 0,823 — близко к эталону USB веб-камеры. Синий при слабом свете всё ещё примерно на 17% ниже — это вероятно grey-world белый баланс. Fedora 44 RPM находятся на странице releases.
Выводы
- Эталонные захваты — большой шаг. Если дать ИИ сравнить заведомо хороший трафик с неработающим, из размытого "это не работает" возникает конкретный список различий. Например, для MIPI камеры наличие подключённой USB камеры для сравнения захватов было критично.
- ИИ хорош в рутине. Это декодирование захватов, написание проб и перепроверка констант. Но физическое оборудование держать все ещё приходится человеку.
- Реальное оборудование — единственный судья. Каждое утверждение выше проверено на реальном сканере или ноутбуке.
Если у вас есть оборудование без драйвера под Linux — попробуйте hw-harness. И спасибо ещё раз GloriousEggroll за вдохновение.
ПРИМЕЧАНИЕ: Не утверждаю, что теперь сканы и MIPI камера идеальны, но сканер даёт приличные результаты и камера выглядит намного лучше, чем раньше. Со временем можно будет подстроить и отполировать дальше, но я доволен, что смог сдвинуть иглу, несмотря на отсутствие глубоких знаний в такого рода работе.