Claude Code помог улучшить драйверы сканера и камеры в Linux

2026-10-16 81 комментарии
Кристиан Шаллер использовал Windows в виртуальной машине и записи USB-обмена для разработки драйвера Plustek OpticFilm 8200i. Затем он подготовил исправления камеры ThinkPad и приложение Negative Vibes для GNOME. Код опубликован, а патчи камеры проходят подготовку к включению в основные проекты

Кристиан Шаллер из Red Hat рассказал об использовании Claude Code для улучшения поддержки оборудования в Linux. С помощью ИИ он разработал драйвер плёночного сканера Plustek OpticFilm 8200i, приложение для оцифровки негативов и исправления камеры ThinkPad. Результаты он проверил на собственных устройствах. Код опубликован, но часть изменений ещё предстоит включить в основные проекты.

Эталонный драйвер Windows помог разобраться со сканером

Шаллер купил OpticFilm 8200i для оцифровки семейных негативов, рассчитывая на поддержку Linux. Однако под прежним названием продавалась новая аппаратная ревизия: вместо контроллера Genesys GL845 в ней установили GL128. Первые попытки написать драйвер с Claude Code зашли в тупик, и разработчик отложил работу на несколько месяцев.

Вернуться к задаче помог опыт Тома Крайдера, известного как Glorious Eggroll. Шаллер предоставил ИИ-агенту управление виртуальной машиной Windows с фирменным драйвером и возможность записывать USB-обмен во время сканирования. Через несколько часов он получил узнаваемый скан в Linux, а через несколько дней – существенно доработанный драйвер с инфракрасным каналом.

usbmon – механизм ядра Linux для записи запросов ввода-вывода USB. В этом эксперименте он позволял на хосте записывать обмен с устройством, переданным виртуальной машине, а затем сопоставлять его с работой Linux-драйвера.

Опубликованный модуль для SANE рассчитан на GL128 с USB ID 07b3:1825. Он поддерживает цветной, серый, инфракрасный и совмещённый режимы, 300–7200 dpi, 8 или 16 бит на канал, удаление пыли и царапин по ИК-каналу и увеличение экспозиции для плотных негативов. Старую ревизию с GL845 и ID 07b3:130d обслуживает штатный модуль genesys. Определить вариант устройства можно командой:

lsusb

За время перерыва другой разработчик уже добавил поддержку GL128 в основной SANE – по данным Шаллера, в сентябре 2026 года. Поэтому собственный драйвер он рассматривает прежде всего как демонстрацию подхода и источник улучшений для общего проекта. Сравнение автора на одном сканере и одном цветном негативе дало следующие результаты:

ПараметрДрайвер ШаллераSANE genesys GL128
Скан при 600 dpi: размер и время864x645 пикселей; 16,7 с864x586 пикселей; 16,4 с
Скан при 3600 dpi: размер и время5184x3877 пикселей; 34,6 с5184x3519 пикселей; 54,4 с
ИК-канал и удаление пыли и царапинЕстьНет в сравнении автора
Глубина цвета на канал8 или 16 бит16 бит
Ступени разрешения6, от 300 до 7200 dpi11, от 150 до 7200 dpi
Поля слева / справа при 3600 dpi, мм0,17 / 0,851,19 / 0,06
Поля сверху / снизу при 3600 dpi, мм1,64 / 1,560,45 / 0,22

При 3600 dpi оба варианта передавали одинаковые мелкие детали, но захватывали разную область. У genesys окно смещено примерно на 1,06 мм влево, а исходное изображение ярче и зеленее. Это единичный тест; при 600 dpi штатный модуль оказался немного быстрее. После переключения между драйверами автору однажды потребовалось выключить и включить сканер. Новый модуль проверен на одном экземпляре, сканирует по кадру с ручным перемещением держателя; RPM для Fedora выпускаются как предварительные автоматические сборки.

Negative Vibes: оцифровка плёнки в GNOME

Параллельно Шаллер создал с Claude Code приложение Negative Vibes на Rust для GNOME. Оно сканирует цветные и чёрно-белые негативы и слайды, сохраняя исходные линейные 16-битные данные и ИК-канал, если он доступен. Обработку можно менять без повторного сканирования.

comss img 2026 10 16 073256
Negative Vibes

Программа поддерживает преобразование негатива в позитив с коррекцией основы плёнки и взаимного влияния красителей, настройки всей плёнки и отдельных кадров, инфракрасное и программное удаление пыли, IT8-калибровку через ArgyllCMS. Экспорт предусмотрен в TIFF, JPEG, PNG и DNG с цветовыми профилями ICC и метаданными.

Flatpak-сборка включает драйвер 8200i; пока приложение проверено именно с этим сканером. Разработчик рассчитывает расширить совместимость, но SANE ещё не стандартизировал предоставление ИК-канала. На других устройствах инфракрасная очистка может быть недоступна, тогда остаётся программное удаление пыли.

Пять исправлений для камеры ThinkPad

Следующей задачей стала камера Lenovo ThinkPad X1 Carbon Gen 14 Aura Edition: сенсор Sony IMX471 подключён через Intel IPU7. В Linux изображение получалось тёмным, с затемнёнными углами и жёлто-зелёным оттенком. Повторно используя подготовленные инструменты, Шаллер за рабочий день получил исправления для ядра и libcamera.

В драйвере исправили получение области считывания сенсора, разрядность регистра тестового изображения и предел аналогового усиления: вместо примерно 4,57-кратного стало доступно 16-кратное. В программный обработчик libcamera добавили компенсацию затемнения углов и исправили расчёт баланса белого, смешивавший данные разной разрядности. Последняя ошибка затрагивает также другие RAW10/RAW12-сенсоры, использующие этот обработчик.

В контрольном сравнении автора при слабом освещении средняя яркость кадра выросла с 31,1 до 90,9 по его шкале. Положение ноутбука и освещение сохраняли, а перед измерением каждой конфигурации ждали 400 кадров для стабилизации автоматики. Отношения красного и синего каналов к зелёному показывают изменение цветового баланса:

Слабое освещениеКрасный / зелёныйСиний / зелёныйЯркость кадра
Без исправлений0,8900,67231,1
Все пять исправлений1,0470,82390,9
Эталонная USB-камера1,0520,989Не указана

При более ярком освещении автор отдельно сравнил этапы обработки. Коэффициент затемнения углов измерен в парном тесте равномерного поля; меньшее значение означает более равномерную яркость.

КонфигурацияКрасный / зелёныйСиний / зелёныйЗатемнение углов
Без исправлений0,8710,6672,78 раза
С компенсацией затемнения углов0,9740,8551,09 раза
С исправлением баланса белого и цветовой матрицей1,0010,8701,09 раза
Эталонная USB-камера0,990,97Не измерено

Проблемы остаются: при слабом свете синий канал примерно на 17% ниже эталона, а libcamera не увеличивает выдержку за счёт снижения частоты кадров. Экспозиция ограничена 18,8 мс при 52,5 кадра/с; даже с максимальным усилением камера заметно уступает USB-эталону. Проверки охватывали одну комнату и обработку на GPU, без цветовой мишени; путь обработки на CPU не проверен из-за существующего сбоя libcamera.

По словам Шаллера, патчи ядра переданы Кейт Сюань, а изменения libcamera проверяет Вим Тайманс перед отправкой в проект. Подтверждения включения в стабильные выпуски нет. Автор также заявляет о RPM для Fedora 44, однако на указанная страница релизов не содержит выпусков, поэтому доступность готовых пакетов не подтверждена.

hw-harness позволяет повторить подход

Шаллер опубликовал hw-harness – набор инструментов для подобных исследований с Claude Code или Codex. Он автоматизирует управление Windows в KVM, передачу устройства между системами и запись обмена. Для внутренних MIPI-камер вместо USB-захвата используются INF-файлы, реестр, таблицы ACPI и свойства устройств; код фирменных драйверов инструменты не декомпилируют. Набор разработан и проверен в Fedora, требует libvirt/KVM и гостевой Windows 11 Pro с RDP-сервером.

Это обобщённая версия ранее написанных специальных скриптов: именно в таком виде Шаллер её в своих экспериментах ещё не использовал. Он отдельно предупреждает, что записи обмена могут содержать серийные номера, а каталог проекта – закрытые SSH-ключи; их нельзя публиковать вместе с кодом.

Подобные эксперименты дополняют работу над ядром Linux с помощью Claude Code. В случае Шаллера решающую роль сыграл доступ к эталонному поведению оборудования: ИИ сравнивал результаты, предлагал проверки и готовил код, а человек проверял итог на реальных устройствах.

Вывод

Опыт Шаллера показывает практическую пользу ИИ при разборе протоколов и поиске ошибок поддержки оборудования. Опубликованные инструменты позволяют другим разработчикам повторить такой рабочий процесс. Его результат всё равно зависит от проверок на устройстве и последующей доработки кода вместе с сопровождающими Linux-проектов.

Читаете нас в Google? Добавьте Comss.ru в источникиДобавьте Comss.ru в источники Google
Новые статьи будут чаще в «Главных новостях» Google. Без подписок и уведомлений, отключается в один клик. Нужен вход в аккаунт Google.Наши статьи будут чаще в «Главных новостях». Нужен вход в Google.
Добавить в Google
© .
Комментарии и отзывы

Нашли ошибку?

Новое на сайте