Перепрошивка Sena

Mar 09, 2024 05:45



Попали мне тут в руки пара модулей от Sena.

Для тех, кто не в курсе, Sena выпускает всякие гарнитуры для мотоциклистов. Эти гарнитуры интегрируются в шлемы и позволяют комфортно разговаривать по телефону, слушать музыку и, как один из ключевых факторов, общаться с такими же обладателями этих гарнитур. Старые версии гарнитур связывались друг с другом по Bluetooth, из-за этого была относительно небольшая дальность связи и было сильно ограничено количество участников. Относительно недавно Sena представила новые гарнитуры с поддержкой нового протокола, который они незамысловато назвали Mesh. Они отказались от Bluetooth в сторону своего проприетарного протокола. Гарнитуры строят Mesh сеть. За счёт этого увеличилось количество участников (для открытой сети заявлено, что ограничений нет) и дальность связи (несколько километров, а может и больше). Конечно, если два собеседника находятся дальше нескольких сотен метров, то чтобы им общаться, кто-то должен находиться между ними с такой же гарнитурой или специальным ретранслятором. В общем, классическая Mesh.

Так вот, возвращаясь к нашим модулям.
У Sena, кроме разных гарнитур, есть ещё модули для добавления поддержки этого нового протокола Mesh к старым гарнитурам, либо гарнитурам сторонних производителей. Всего модулей три:
  • Sena +Mesh - служит для связи старых гарнитур Sena, которые умели старый протокол Bluetooth, с сетью Mesh. Этот адаптер самый дешёвый.
  • Sena Mesh Port Blue - служит для связи любых классический Bluetooth гарнитур (ну, те, что все себе для телефонов покупают или в машины ставят громкую связь) с сетью Mesh. Это самый дорогой адаптер из трёх. Если сравнивать с предыдущим, то почти в полтора раза дороже.
  • Sena Mesh Port Red - служит для связи телефонов или чего-то подобного с сетью Mesh. Т.е. если предыдущий вариант прикидывался смартфоном и коннектился к Bluetooth гарнитурам, то этот делает обратную вещь - прикидывается Bluetooth гарнитурой, и его можно подключить к любому телефону или комьютеру с Bluetooth и тем самой транслировать звонок по сотовой сети или какому-нибудь мессенджеру в сеть Mesh. По цене этот адаптер где-то посередине.
Так вот. Папали мне в руки эти адаптеры двух типов: самый дорогой и самый дешёвый. Дешёвый был приобретён то ли по ошибке, то ли в надежде, что он будет способен соединиться с какими-то китайскими мотоциклетными гарнитурами. В общем, дешёвый адаптер (Sena +Mesh) оказался бесполезной безделушкой, красиво мигающей разными цветами. А для подключения в сеть Mesh китайской гарнитуры был приобретён дорогой адаптер, который Sena Mesh Port Blue.
И вот когда появился второй адаптер, внешний осмотр их обоих поселил в голове мысль, что если они снаружи похожи как две капли воды (различаются только цветом резиновой вставки), то может быть они и внутри похожи? И может быть, можно перепрошить один в другой? Ведь так жалко, что первый адаптер остался бесполезным.
Забегая вперёд скажу, что да. На аппаратном уровне это одно и тоже устройство. Различается только зашитое в них ПО.
Дальше последовало вскрытие корпуса, благо всё на шурупах и без какого-либо клея. На плате обнаружил две SPI флешки Winbond W25Q64JV. Одна в районе Bluetooth модуля, другая рядом с каким-то большим чипом от Analog Device. Скорее всего, он обеспечивает работу протокола Mesh.
Я снял все четыре дампа с этих флешек и сравнил. Те флешки, что были рядом с чипом от Analog Device, в них содержимое полностью идентично. Те же флешки, что рядом с Bluetooth модулем, их содержимое различается. И в целом, это логично, т.к. со стороны Mesh эти адаптеры работают одинаково, а вот в плане работы блютуса различия есть. Попробовал зашить содержимое от голубого адаптера в адаптер Plus Port. Это никакого эффекта не дало. Всё работало так же, как и раньше.
Дальнейшее изучение вопроса показало, что в блютус чипе, а стоит там довольно популярный кодек CSR 8675, имеет свою встроенную Flash память, и скорее всего, в ней и живёт рабочая микропрограмма. А внешняя флешка используется только при обновлениях.
В целом, т.к. Bluetooth чип довольно распространённый, в интернете много кто его ковырял, есть куча инструкций, как его прошивать и менять параметры. Даже нашёл инструкцию, как полностью сдампить содержимое внутренней флешки. Но к сожалению подходящего программатора под рукой не оказалось. Да, можно заказать, и через неделю-другую оно приедет и можно будет продолжить эксперименты. Но тут же выходной и руки чешутся что-нибудь ещё придумать. Как бы обойтись без программатора?...
И решение нашлось. Для обновления прошивки есть утилита под винду от производителя. Алгоритм максимально простой: запускаешь утилиту, подключешь USB кабелем адаптер или гарнитуру, утилита определяет, что за устройство подключено и проверяет, есть ли свежие прошивки, если прошивки свежие есть, то предлагает скачать и обновить, если прошивка актуальная, то позволяет покрутить настройки.
Ну и, утилита при скачивании прошивки сохраняет её на диск, и позволяет файл прошивки выбирать. В общем, вполне закономерная мысль: "А что если подсунуть утилите для адаптера +Mesh прошивку от голубого адаптера?" Вот так с наскока не прокатило. Утилита не глупая, и говорит, что прошивка повреждена. Стал сравнивать файлы прошивок, благо у меня ещё были две разные версии для одного из адаптеров.

В общем, вот мы и подошли к ключевому моменту всего этого поста. Принадлежность прошивки тому или иному адаптеру определяется по одному байту по смещению 0x1C. Если этот байт имеет значение 0x00, то прошивка для +Mesh. Если этот в этом байте 0x60, то прошивка для Sena Mesh Port Blue.

Таким образом, изменив всего один байт, можно перешить один адаптер в другой. К сожалению, у меня нет файла прошивки для красного адаптера. В открытом доступе я всех этих прошивок не нашёл, сама же утилита качает прошивки только при подключении соответствующего устройства.
Ну и есть у такого перешитого адаптера баг. Эта прошивка перепрошивает не всё. Т.е. да, приложение для смартфона начинает считать этот адаптер тем, в кого его прошили, но вот утилита эта продолжает считать его тем, кем он был изначально. И там есть проблема в различных нумерациях версий прошивки. Для +Mesh актуальная версия 2.4, а для Blue Port - 1.4.2. И когда вот так перешиваешь +Mesh в Blue Port, то приложение считает, что у +Mesh какая-то древняя версия, которую надо обновить, и не даёт крутить настройки. Ну и обновить на новую прошивку не получится, если нет под рукой изначально голубого адаптера, т.к. негде взять файл прошивки, а утилита старательно предлагает перешиться обратно в +Mesh.

В остальном же, адаптер получается полностью функциональный. Если не подключать по проводу к компу, то отличить их можно только по резиновой вставке на корпусе.

Да, можно попробовать отреверсить приложение, выяснить куда оно ходит за прошивками и скачать всё необходимое. Но это уже как-нибудь в следующий раз.

Для тех же, кто захочет сэкономить, я выложил все прошивки, что смог добыть, утилиту для прошивки и уже измененные файлы.

UPD
Посмотрел на свежую голову, в байтах 0x1C-0x1D файла прошивки содержится PID устройства, для которого предназначена прошивка. Сам PID содержится в Блютус чипе, но обычной прошивкой не обновляется.

Касательно скачивания прошивок. С помощью API Monitor выцепил ссылки, откуда родное приложение качает прошивки.
Таким образом, удалось скачать прошивку для модуля Sena Mesh Port Red.

кулибничество, железо, электроника

Previous post
Up