Проблема: Аудиоподсистема Apple Silicon в мейнлайне
Несмотря на то, что форк Asahi Linux уже давно обеспечивает работу динамиков и разъема для наушников на Mac с чипами Apple Silicon, основной (mainline) Linux-ядра этой функциональности лишено. Архитектура звука в Mac крайне сложна: конфигурация динамиков варьируется от одного моно-вуфера до сложных стереопар с твитерами. Кроме того, встроенные микрофоны обрабатываются отдельным Always-On Processor, а не аудиоподсистемой, что требует специфического подхода.
Решение: Драйвер macaudio и защита динамиков
Новый драйвер macaudio берет на себя функции, которые на других платформах выполняет прошивка. Ключевая особенность — программная защита динамиков. Поскольку в Apple Silicon нет аппаратных предохранителей, драйвер реализует механизм, который блокирует управление динамиками (kcontrol), если не запущен пользовательский демон speakersafetyd. Драйвер предоставляет PCM-поток для захвата, позволяя считывать напряжение и ток через голосовые катушки динамиков в реальном времени.
Технические детали и охват устройств
Серия патчей включает 28 файлов, суммарно добавляя около 3000 строк нового кода. Изменения в Device Tree (DT) уже позволяют активировать поддержку звука на Mac с чипами M1 и M2. Поддержка серии M3 отложена, так как в текущих патчах отсутствуют необходимые аппаратные узлы для этих процессоров.
| Характеристика | Значение / Описание |
|---|---|
| Количество патчей | 28 |
| Объем кода | ~3000 строк |
| Поддерживаемые чипы | Apple M1, Apple M2 (M3 — в будущем) |
| Механизм защиты | Программный failsafe + демон speakersafetyd |
| Статус микрофонов | Не обрабатываются данным драйвером (AOP) |
Значение для сообщества
Интеграция этого драйвера в основное ядро Linux позволит пользователям Apple Silicon Mac использовать стандартные дистрибутивы (не только Asahi) с полноценной поддержкой вывода звука. Это устраняет необходимость в использовании специализированных форков ядра для базовых задач, таких как прослушивание музыки или видеозвонки через встроенные динамики.
Источник: Phoronix ↗
