Группа пользователей с ноутбуками Lenovo Legion Pro 7 (16IAX10H) объявили на GitHub награду в размере $2 тыс. за программное устранение багов с динамиками этого устройства в Linux.
«Мы — пользователи Linux, использующие Lenovo Legion Pro 7 (16IAX10H), и нам ужасно надоели неисправные динамики. Кроме того, ��ы плохо пишем аудиодрайверы для ядра Linux, особенно когда речь идёт о таких странных вещах, как «умные усилители Awinic». Если вы поможете нам добиться поддержки звука в Linux на наших ноутбуках, мы вышлем вам кучу денег», — сообщил разработчик Надим Кобейсси.
В чём проблема? Встроенные динамики Lenovo Legion Pro 7 16IAX10H (и нескольких других ноутбуков Lenovo с кодеком Realtek ALC3306) воспроизводят очень тихий звук, который кажется дребезжащим и приглушённым, как будто работают только высокочастотные динамики, а не низкочастотные.
Что на самом деле происходит (по мнению пользователей устройства). В ноутбуке установлен кодек Realtek ALC3306 (согласно официальным спецификациям Lenovo), но Linux ошибочно определяет его как ALC287 с идентификатором подсистемы 17aa:3906. Драйвер ядра применяет стандартное резервное исправление вместо специфичного для устройства, из‑за чего низкочастотные/низкочастотные динамики работают некорректно.
После проверки выяснилось, что в Legion Pro 7 16IAX10H используются интеллектуальные усилители Awinic AWDZ8399 (с адресами I2C 0×34 и 0×35 на шине i2c-2). Хотя драйвер ядра (snd_soc_aw88399) существует и загружается корректно, интеграция между кодеком и усилителями в аудиоконвейере отсутствует.
В частности драйвер SOF (Sound Open Firmware) можно загрузить принудительно, но он откатывается к универсальному драйверу машины (skl_hda_dsp_generic). Он использует универсальную топологию, которая включает только пути к HDA‑кодекам — поддержка усилителей I2C отсутствует. Требуемый файл топологии (например, sof‑arl‑alc287-aw88399.tplg) отсутствует в пакете прошивки SOF. Для идентификатора подсистемы 17aa:3906 не существует ACPI/DMI‑причуды для правильной настройки аудиоконвейера. Вышесказанное отражает примерную оценку ситуации и, может быть, дело в чём‑то другом.
В настоящее время проблема продолжает являться нерешённой. Также Кобейсси попросил других пользователей с аналогичной проблемой «поднять этот вопрос в списках рассылки по аудио ядра Linux, а также откликнуться на обсуждение ситуации в обсуждении бага 218329 на Bugzilla на kernel.org.
Источник: habr.com