Как я прошил наушники soundcore, портировал на них кастомную прошивку и DOOM. Часть 2
nnonick только что Как я прошил наушники soundcore, портировал на них кастомную прошивку и DOOM. Часть 2 Средний 7 мин 7 DIY или Сделай сам Open source * Беспроводные технологии * Программирование микроконтроллеров *...
<5 — 2026'da uzaya kaç SpaceX Starship fırlatması ulaşacak?
Значимый прорыв формирует отрасль ИИ: nnonick только что Как я прошил наушники soundcore, портировал на них кастомную прошивку и DOOM. Часть 2 Средний 7 мин 7 DIY или Сделай сам Open source * Беспроводные технологии * Программирование микроконтроллеров * Реверс-инжиниринг * Демонстрация порта DOOM:Часть 2: ещё немного про работу софтверной части, DOOM и обновления по воздухуЗа месяц, прошедший с прошлой части, я изучил работу механизма обновлений наушников и выпустил утилиту для прошивки по воздуху. Тайна BESOTA раскрыта!
Если у вас есть почти любые наушники soundcore / Nothing (CMF), вы могли замечать в диспетчере устройств сервис BESOTA. На форумах пользователи иногда не на шутку напрягались, что за «бесота» завелась у них в компьютере. Ещё страшнее становилось, когда человек заходил в свойства службы и обнаруживал, что её GUID состоит из одних шестерок...
Технические детали
На самом деле всё намного проще: этот сервис нужен для обновления по воздуху, а его название — сокращение от BEStechnic OTA (а число 6 в китайской культуре считается счастливым). Я создал скрипт, который успешно прошивает наушники на чипах BES примерно до 2022 года (протокол BESOTA v1). Он выложен на Github под названием besota.
В будущем я планирую добавить в скрипт поддержку BESOTA v2, тем самым обеспечив возможность прошивать по воздуху все существующие SoC BES на данный момент. Протокол BESOTA v1 работает таким образом:С наушниками устанавливается соединение, и в сервис BESOTA отправляется пакет инициализации OTA. Этот пакет переводит наушники в состояние, в котором они не могут входить в режим создания пары и сбрасываться до заводских настроек через комбинации кнопок.
В сервис передается информация об отправляемой прошивке: её размер и контрольная сумма CRC32 всего файла. Наушники в ответ отправляют MTU (размер пакета для отправки прошивки, по умолчанию он составляет 656 байт). После этого отправляется пакет конфигурации, в котором передается адрес, куда нужно будет записать прошивку разделу OTA_BOOT во время стадии COPY_NEW_IMAGE (об этом ниже), но кроме этого в пакете можно передать новое BT и BLE имя, которое запишется во время обновления вместо предыдущего, а также MAC-адреса для них.
Отраслевые последствия
В конце пакета должна лежать CRC32, чтобы наушники приняли пакет. Хост начинает отправлять прошивку, разбитую на эти пакеты, а наушники записывают эти пакеты по смещению newImageOffset. После передачи файла наушники сначала проверяют CRC32 (от начала прошивки до строки CRC32_OF_IMAGE) из метаданных в конце прошивки, а после этого проверяют CRC32 всего файла, переданную в шаге 2.
Метаданные прошивкиЕсли все проверки прошли успешно, наушники перезагружаются, далее прошивка записывается разделом OTA_BOOT.
Этот прогресс даёт важные сигналы о будущем отрасли, и технологический мир внимательно наблюдает.





