В общем это моя первая статья, да и не писатель я :) Так что не буду ходить вокруг да около, а перейду к делу.
Купив полгода назад наушники
OneOdio Elysium с одной небезызвестной площадки, сразу же захотел как то улучшить их звучание по BT, по проводу они отрабатывают свои рубли(юани) на 100%, а вот по синему зубу играют мягко говоря не очень. А все из-за того что хитрые китайцы решили в данной модели не включать кодек AAC(типа поют же на SBC). Ну ничего мы это поправим :)
«Все делается на свой страх и риск, автор ответственности за испорченную технику не несет»
Для начала разбираем наушники, а именно ухо с управлением, так как именно там находиться основная плата, а во втором наушнике лежит аккумулятор, видимо это сделано для более менее верной развесовки наушников.
Наушники собраны на довольно редкой в наших краях микросхеме Bluetooth 5.0 фирмы
Microchip IS2020S, тем не менее микросхема поддерживает кодеки SBC/AAC_LC, а так же менее интересный mSBC, плюс Microchip в отличие от Qualcomm не прячет информацию и программы для программирования данных микросхем. Данные под катом:
Ссылки на даташиты и софт
Единственное, но данный софт рассчитан на работу с их собственной микросхемой USB — UART mcp2200, но софт нам понадобиться лишь косвенно.
Для начала пришлось просмотреть даташит, оказывается их микросхема построена на база старенькой 8051 и не имеет собственной EEPROM поэтому Microchip предлагает хранить все настройки данной микросхемы в отдельной EEPROM, распаянной тут же неподалеку. Микросхема EEPROM самая простенькая
24С32 с классическим I2C интерфейсом. Так что программатор подойдёт абсолютно любой хоть народный
CH341, хоть не менее народная
Arduino, я же пользуюсь самодельным
«Postal 3» , единственно требуются уровни равные 3.3в. Для начала был снят дамп памяти EEPROM, для его изучения и попытки скормить его софту от Microchip.
Увы попытка скормить софту была неудачной, MPET вывалился с ошибкой format unknown:
Далее при сравнении оригинальной таблицы характеристик «IS2020SUI_DEFAULT_TABLE» и дампа EEPROM было обнаружено сходство структуры данных.
Сравнение таблицы и дампа
В итоге собрав я собрал свою таблицу настроек IS2020S, и вполне удачно скормил редактору параметров, из пакета разработчика.
Вот и найден не включенный кодек :) ставим галочку, сохраняем таблицу и переносим, изменения в оригинальный дамп EEPROM, я для этих целей использовал WinHEX, сохраняем отредактированный дамп, подключаем программатор к микросхеме EEPROM и закачиваем новую прошивку с поддержкой ААС. Подключаемся на телефоне к гарнитуре и видим что кодек AAC в работе.
Данный способ позволяет не только включить недостающий кодек, можно поменять назначения кнопок, режим работы светодиодов, отсечку по напряжению на акб и т.д. Ну а на по следок для тех кто осилил данную статью :), но не хочет забивать себе голову, готовая прошивка с включенным AAC и таблица параметров (для собственноручного изготовления прошивки, в таблице строки 0800 и 0810 это CRC их в дамп вставлять не нужно)
P.S: Есть вероятность что наушники Remax 200HB имеют идентичное строение, так как OneOdio Elysium внешне клон Remax, но платы Remax 200HB я не видел так что утверждать что прошивка заработает на них не могу, кому надо тот разберет и посмотрит, совпадает ли железная база данных наушников.
Однозначно плюс. За образованность :)
PS: прошу понять меня правильно, я просто по умолчанию думаю о людях плохо ;) и склонен считать что никому нельзя верить, в частности, любой дурак может присвоить себе чужую разработку. автор вроде как похож на человека который всё это осилил сам.
Кстати, у меня гдета в дебрях наса можно найти Комбисет, с уважением…
Может кто сталкивался уже: при подключении этих oneodio по ВТ, звук на телефоне отключается, а в самих наушниках не появляется. Другие наушники с тем же тел отлично работают.
Думал еще купить, а их нигде нет, альтернатив не могу найти.
— конкретно у IS2020S (в отличие от IS2021S) нет встроенной EEPROM, только под внешний чип
— A single-cycle 8-bit MCU is built into the stereo audio chip to execute the Bluetooth protocols. <...> The MCU firmware is hard-wired in ROM to minimize the firmware execution power consumption and to save the external flash cost.
Поэтому в данном случае BD_ADDR должен быть где-то среди UI parameters в данной EEPROM. «Mone Device Audio Gateway» — что-то другое, скорее всего. Это обычные наушники, вряд ли там заморочились с динамическим BD_ADDR, скорее всего какой-нибудь random static, который берется из EEPROM, полностью или частично.