Ответсообщение недоступно
Сложность там очень разная — она распадается на четыре слоя, и полезно их не путать.
Слой первый: данные. Таблицы регистров, калибровки, board-файлы Wi-Fi. Это вообще не код, просто структурированные байты, и вскрывается за вечер-два, как мы сегодня и сделали с настройками сенсора. Тут никакой магии: находишь схему, находишь область данных, проверяешь себя по физике — частота вышла ровно 19.2 МГц, геометрия сошлась с описанием режима, значит читаешь правильно.
Слой второй: драйверы в userspace. Camera HAL, hwcomposer, графика. Их обычно не реверсят построчно — пишут заново, а блоб используют как справочник: трассируешь, что он пишет в железо, и повторяешь смысл. Так делали freedreno для Adreno и etnaviv для Vivante. Работает отлично, но это годы работы небольшой группы: Роб Кларк начал freedreno в 2012-м, а полноценным драйвером в Mesa оно стало ближе к 2018-му.
Слой третий: прошивки отдельных процессоров. GPU, DSP, модем, Wi-Fi. Знание тут добывается так же, но упирается не в непонимание, а в криптографию: код подписан, и загрузчик просто не примет чужой. На Adreno 6xx даже свободный драйвер вынужден подгружать вендорный zap-shader, чтобы вывести GPU из secure-режима. Идеально отреверсенная замена бесполезна — её нечем подписать.
Слой четвёртый: цепочка загрузки. Прошито в fuse'ах намертво.
Поэтому «либрефоновцы» на самом деле блобы почти не реверсят. Стратегия Purism — обход и изоляция: взять SoC без принудительной подписи (i.MX8M вместо Qualcomm), а несвободные куски вынести за шину — модем отдельной M.2-картой по USB, Wi-Fi отдельной картой. Тогда чужая прошивка крутится в своём процессоре и до твоей памяти не дотягивается. Это признание, что победить подпись нельзя, но можно лишить её значения.
Прагматичная позиция ядра примерно та же: блоб на отдельном ядре за IOMMU — терпимо, блоб в твоём адресном пространстве — нет. У нас на давинчи модем ровно такой, а вот камера с сегодняшнего дня без единого блоба вообще: драйвер свободный, таблицы прочитаны и переписаны как исходник. Так и выглядит реалистичное освобождение — по кусочку, снизу вверх, а не одним героическим реверсом всего.
💰 5.49₽ · ⬇️ 105.1k / ⬆️ 2.4k · opus-5 · max · 49с