Asahi Linux 7.1: звук на M3 и собственная прошивка для декодирования видео
Команда Asahi заставила звучать динамики MacBook на M3, не задействовав ни строчки аудиопрошивки Apple, и написала собственный видеодекодер с нуля, вместо того чтобы взять проприетарный блоб Apple.
На машинах с M3 динамики и разъём наушников теперь работают через те же контроллеры I2S, что не менялись со времён M1, а переключение частоты процессора с планировщиком big.LITTLE наконец распределяет задачи по нужным ядрам.
Вместо того чтобы извлекать блоб Apple для декодирования видео, команда написала собственную прошивку AVD: драйвер V4L2 декодирует 10-битный AVC вплоть до 4K.
Один разработчик предупреждает: ставка на собственную прошивку рухнет в тот день, когда Apple решит подписывать блобы прошивок на уровне железа.
Звук из динамиков M3 без аудиопрошивки Apple
MacBook на чипах серии M3 теперь выдают качественный звук в Asahi Linux через встроенные динамики и разъём наушников, задействуя те же контроллеры I2S и тактирование NCO, что не менялись со времён M1. Вместе со звуком M3 получил переключение частоты процессора и полноценный планировщик big.LITTLE, так что задачи попадают на энергоэффективные или производительные ядра как задумано, вдобавок к уже работающим PCIe, WiFi, Bluetooth, NVMe, клавиатуре, тачпаду и датчикам SMC.
Главное инженерное достижение — декодирование видео. Вместо того чтобы извлекать проприетарный блоб прошивки AVD от Apple, команда написала свой: драйвер V4L2 декодирует 10-битный AVC вплоть до 4K и открывает путь к VA-API и Vulkan Video.
Две регрессии в macOS 27 потребовали патчей. Флаг прошивки, помечающий том загрузочным, раньше игнорировался, поэтому установщик теперь выставляет его автоматически; а SMC сменил формат показания батареи с 32-битного целого на один байт, что вызывало аварийные выключения, пока ядро 7.0.12 не догнало изменение. Загрузчик m1n1 дорос до версии 1.6.0: для сборки второй стадии теперь нужен Rust, добавлена поддержка M3 (включая контроллер SPMI и инициализацию PCIe), а также задел для чипов M4 и A18 Pro.
Почему Apple просто не профинансирует это?
Повторяющийся вопрос треда: почему богатая деньгами железная компания оставляет это волонтёрам. Джеффри Пол, автор блога sneak.berlin без обиняков сформулировал бизнес-логику:
«Мне не укладывается в голове, что Apple… не бросит на это 2–3 из своих тысяч штатных инженеров.»
Технический текст отчёта тоже вызвал поправку. В нём аудиошину описали, назвав I²S «шиной на основе I²C», и разработчик, заметивший, что I²S сродни SPI, а не I²C указал на путаницу:
«I²S не имеет никакого отношения к I²C.»
Самый трезвый голос принадлежит программисту, автору блога zacbentley.com; он назвал несущее допущение, на котором вообще держится собственная прошивка: она работает только потому, что сопроцессор Apple не проверяет то, что загружает.
«Не кажется маловероятным, что они введут аппаратную подпись для блобов прошивок или данных, которые те передают во время работы… для Apple это разумная мера безопасности.»
Каждое улучшение для M3 в этом релизе держится на том, что эта дверь остаётся открытой.
Получайте такие разборы каждый день
Главные истории Hacker News — на email, в Telegram или RSS.
Box3D: Эрин Катто превращает Box2D в открытый 3D-движок
Эрин Катто, чей Box2D отвечает за физику в Angry Birds и множестве инди-игр, выпустил Box3D — движок твёрдых тел для 3D, начавшийся как форк внутреннего движка Valve по имени Rubikon.