Пользователи ноутбука Lenovo Legion Pro 7 (16IAX10H) выплатили награду $2 тыс. за устранение багов с динамиками в Linux
Группа пользователей с ноутбуками Lenovo Legion Pro 7 (16IAX10H) во главе с Надимом Кобейсси выплатила разработчику Lyapsus с GitHub награду в размере $2 тыс. за помощь в программном устранении багов с динамиками этого устройства в Linux.
Проблема была в том, что встроенные динамики Lenovo Legion Pro 7 16IAX10H (и нескольких других ноутбуков Lenovo с кодеком Realtek ALC3306) в Linux воспроизводят очень тихий звук, который кажется дребезжащим и приглушённым, как будто работают только высокочастотные динамики, а не низкочастотные.
В ноутбуке установлен кодек Realtek ALC3306 (согласно официальным спецификациям Lenovo), но Linux ошибочно определяет его как ALC287 с идентификатором подсистемы 17aa:3906. Драйвер ядра применяет стандартное резервное исправление вместо специфичного для устройства, из‑за чего низкочастотные динамики работают некорректно. В Legion Pro 7 16IAX10H используются интеллектуальные усилители Awinic AWDZ8399 (с адресами I2C 0×34 и 0×35 на шине i2c-2). Хотя драйвер ядра (snd_soc_aw88399) существует и загружается корректно, интеграция между кодеком и усилителями в аудиоконвейере отсутствует.
Проблему решила группа разработчиков за несколько недель. Основной вклад внёс Lyapsus. Он выявил недостающие компоненты, необходимые для работы аудиосистемы 16IAX10H в Linux. В итоге разработчики смогли извлечь прошивку AW88399 из пакета драйверов Windows и установить ее в Linux, отладить и очистить нужный код ядра Linux Kernel 6.17.8, протестировать его и внести необходимые улучшения, включая фикс для проблем с регулировкой громкости (16iax10h-audio-linux-6.17.8.patch).
В настоящее время руководство о том, как правильно настроить звук на Lenovo Legion Pro 7i Gen 10 (16IAX10H), предназначено для ядра Linux версии 6.17.8.
Читать на habr.com