Прошивка Bluedio T4


Важное предупреждение! Действия описаные ниже могут привести к уничтожению ваших наушников! Я описываю только свой опыт и не призываю ни к каким действиям. Любые повреждения вызванные попыткой повторить — исключительно на вашей ответсвенности.
Если предупреждение не остановало вас, и вы по-прежнему желаете повторить опыт, для смягчения последующего удара, рекомендую начать относиться к своим наушникам как к уже сломанным. Их уже нет. Вам повезет если они заработают снова. И вам очень повезет если проблема с задержкой исчезнет. Но это только если повезет. А так их у вас их уже нет. Смиритесь. 🙂

Описание проблемы. Наушники Bluedio T4 ранних ревизий (произведенных до середины июня 2017) имеют проблему с рассинхронизацией звука при просмотре видео при подключении через Bluetooth. Звук запаздывает до одной секунды. Настройка плеера на искусственную задержку звука невозможна, т.к. проблема осложняется тем что задержка плавающая — иногда это 1000мс, иногда это 500мс, иногда она практически исчезает. Насколько я понял, завизит от параметров аудио-потока. Стартует всегда синхронно, однако со временем ошибка накапливается. Побочный эффект, заметный при прослушивании музыки — если нажать на паузу, в самом плеере трек становится на паузу, однако в наушниках звук продолжает играть в районе секунды. Проблема была на всех моих девайсах.
(Одно исключение было с одним из компьютеров — вероятно используется какой-то нестандартный блютус-профиль, или особенность драйвера: на нем была какая-то коррекция, из-за которой аудио и видео синхронизировалось где-то раз в секунду. Однако во время этой коррекции звук прерывался и видео проскакивало на время рассинхронизации. В итоге просмотр видео был невозможен из-за постоянных заиканий и пропусков видео.)
При подключении по проводу проблемы нет. Впрочем это и не удивительно — в этом случае, звук идет напрямую на динамики, минуя процессор наушников (шумоподавление и регулировка громкости не работают).

Если использование наушников для просмотра видео по проводу для вас не вариант, и не страшно угробить их (смотри предупреждение выше), а также имеются паяльник с тонким жалом и руки, тогда есть возможность исправить эту проблему.
Проблема не исчезает совсем! Но задержка снижается до приемлимого уровня.
В качестве примера, вот для сравнения небольшой видеофрагмент до и после прошивки:
1. До прошивки

2. После прошивки

(К сожалению компьютер с заиканием по-прежнему заикаится. Однако интервал между икотами значительно увеличился — сейчас скачки происходят где-то раз в 15 секунд (иногда дольше), и они не такие заметные как было раньше (на некоторых видео не заикается совсем)).
В общем я предупредил — проблема осталась, но сней уже можно мириться.
Upd. Сменил драйвера bluetooth на икающем компе – проблема ушла совсем.

Сразу оговорюсь, что использовался софт с производтсвенной линии. Софт китайский, интерфейс китайский. Понять что там происходит — тяжело. Более того, мне не удалось добиться положительного подтверждения процесса прошивки — все операции заканчивались либо с ошибкой, либо вываливанием в бесконечный цикл в процессе финальнрой верификации. Однако мои действия в конечном итоге привели к обновлению MAC-адреса и исчезновлению задержки. Из чего я заключаю что прошивка таки залилась успешно.
Разобраться в работе приложения удалось благодаря использованию мониторинга serial-порта и эмуляцией наушников на arduino-подобном SoC’е (использовал NodeMCU ESP 12E).
Интерфейс программы я частично перевел, однако исключительно чтобы можно было ссылаться на элементы интерфейса по-человечески, а не «дропдаун с длинным иероглифом, отмеченный красным».

Для прошивки потребуются:
1. Паяльник с тонким жалом
2. Какой-либо модуль для эмуляции 232-го интерфейса через USB (ну или любой иной способ подключиться к плате наушников через COM-порт). Я
во время экспериментов использовал PL2303, FTDI, и CH341A. Последний и использовался во время финальной заливки. Главное требование — чтобы COM-порт поддерживал соединение на скорости 921600 бод.
3. Windows компьютер (настоящий, или виртуалка — не суть важно. Главное чтобы был доступ к COM-порту)
4. Отверточки, проводки, всякое-разное. Если есть первые два пункта, то все остальное тоже наверняка есть 🙂

Итак, последовательность действий.
-1. Записываем старый MAC адрес. Исключительно для проверки результата. При остром желании можно прошить его же, однако смысла особо не вижу. Я пользовался вот этой программой.
0. Полностью заряжаем батарею.
1. Разбираем правое ухо. Чтобы не поцарапать пластик, рекомендую использовать присоску. Крышка держится на трех защелках. К сожалению это самый стрёмный момент — я разбирал трижды, и все три раза переживал что могу отломать один из зацепов. Все самое интересное (материнка, батарея) находятся в правом ухе.

Для любопытных привожу содержимое левого уха — чтобы не было соблазна лишний раз ломать.
На нижней стороне платы имеется несколько сервисных площадок, которые очевидно используются на производтственной линии (имеются следы подключений).
Возможно для полной эмуляции производственной линии необходимо задействовать их все. Для наших целей достаточно исопльзовать только три.
2. Подпаиваемся к площадкам SCL, DAT, GND
3. Подлючаем 232-ой интерфейс следующим образом:
RX → DAT
TX → SCL
GND → GND(думаю можно не объяснять что можно обойтись без dupont-коннекторов как это сделал я, а просто подпаяться напрямую, или вообще обойтись без пайки. Но сами понимаете… )
4. Подключаем модуль к компьютеру, устанавливаем драйвера, запускаем программу.
5. Первый шаг возможно не нужен, но поможет оценить работоспособность системы:
5.1. Выбираем нужный порт, остальные отключаем. (Port settings → Scan Ports → COMx → OK) 
5.2. Идем в настройки. (Firmware Configuration → usr/pwd: lyfoes.com/lyfoes.com)
5.3. Исправляем путь к файлу прошивки, если надо, а также устанавливаем параметры как на картинке.
Параметры BT Address NAP/UAP/LAP отвечают за новый MAC адрес. При большом желании можно ввести оригинальный адрес и попытаться угадать какой из паттернов генератора не изменит его 🙂 Я ввел оригинальный и оставил паттерн как на скриншоте, но программа «скорректировала» его в третьем байте.
5.4. Сохраняем параметры и в главном окне жмем на кнопку Start (синий кружок с треугольником). В это время программа открывает порт в режиме 921600 8N1 и ждет начала передачи от наушников (сама ничего не пишет в порт пока не получит первый пакет 0xBE500003).
5.5. Жмем кнопку питания на наушниках. Если все подключено правильно, драйвера в порядке, выбран правильный COM-порт, то должен побежать прогресс. Наушники в это время моргают синим-красным светодиодами. В течении десятка секунд идет первый цикл (вероятно эмуляция записи), после чего начинается второй (вероятно верификация), доходит до 20% и останавливается с ошибкой. После ошибки наушники остаются гореть красным светодиодом. Ждем когда погаснет и они снова перейдут в режим ожидания начала соединения (в районе минуты-двух).
6. Собственно запись.
6.1. Идем в настройки и отключаем чекбоксы “calibration” и “Factory pattern”
6.2. Повторяем предыдущий пункт: стартуем запись в программе, жмем питание на наушниках. Первый цикл пробегает за 13 секунд. Со вторым, лично у меня, случилось странное — программа сменила статус бар на «тестирование» и больше никак не обновляла прогресс. Наушники тоже никак не проявляли активность. Однако в serial-мониторе шел активный обмен данными (правда данные не выглядели куском прошивки — скорее повторяющиеся блоки разреженных данных). Для очистки совести я выждал более получаса. После чего просто отключил наушники от порта. Дальше немного напрягся — они больше ни на что не реагировали. После ряда экспериментов, удалось вернуть их к жизни подключением питания в usb-порт. Проверка показала что MAC-адрес обновился и задержка исчезла.
Есть подозрение что перед вторым циклом наушники перешли в режим удержания сессии и ожидали команды посредством кнопки питания, или еще какое условие должно было выполнится. К сожалению проверить все варианты я не догадался — была глубокая ночь и хотелось спать 🙂
Краткое видео для закрепления материала:

Вообще же, первоначальный план был заменить китайский «черный ящик» на самописный прошивальщик, благо вся коммуникация имеется. Однако катострофическая нехватка времени и затягивающийся прогресс на неопределенное время… Починил свои — и ладно. Делюсь тем что есть. Так что есть поле для дальнейших изысканий, если у кого появится такое желание.
Дополнительные хотелки, которыми возможно займусь как появится острое желание и время:
– раздобыть финальную прошивку с исправленными косяками, ежели будет такая (надо войти в контакт с инженерами bluedio, украсть, выпросить, отдаться в конце концов 🙂 снова 🙂 ). Как вариант — разобраться как скачать текущую прошивку из наушников, и найти донор который будет выпущен в ближайшем будущем. (вроде сейчас появились T4S — посмотреть есть ли аппаратные отличия, или только софт )
– напрягают дефолтные звуки (“power off”, “device connected”, итд). Хотелось бы заменить их на более короткие бульки и бипы.
– Программа максимум — раздобыть исходники прошивки. А там aptX и кто знает что еще… 🙂
– Ну или забить и пользоваться тем что есть пока не помрёт, а там купить новые 🙂
Если, вдруг, кто-то зайдет дальше в изысканиях — пишите, делитесь информацией (сюда, или в личку: anar@ibn.by).

Ах, да. Чуть не забыл. Ссылка на архив с программой-прошивальщиком. Пароль: lyfoes.com

Прошивка Bluedio T4: 18 комментариев

  1. Добрый день, пытаюсь повторить ваш подвиг, но вот на стадии попытки законектить наушники с прогой, всё и остановилось. Прогресс не двигается, уши моргают синим. Пытался менять местами RX TX, не помогает.
    Потом посмотрел ваше видео, там видно ещё одно открытое окно, в котором видно, что вы используете USB to COM на чипе CH 341A. А я пробую это делать на переходнике USB to COM PL2303_Prolific. Не знаю в этом ли дело или в моих кривых руках. Вроде бы ничего сложного, но не получается, Может поделитесь идеями, в чём может быть загвоздка.
    С ув. Александр.

    1. Ответил на YouTube, но продублирую здесь.

      Второе окно – это я сниффил COM-порт во время прошивки, оно не важно.
      Вот то что уши моргают синим – это странно. Во время прошивки у меня моргали красно-синим. И моргать начинали только после того как начал бежать прогресс в проге. У вас что-нибудь происходит в программе?
      После того как нажили play в программе – нажимаете MF (power) кнопку на плате?
      Батарея заряжена?

  2. В программе ничего не происходит, она как будто в режиме ожидания. Уши просто включаются, о чём сообщает голосовой интерфейс ушей. И всё, так ничего никуда не двигается. Пробовал с двумя переходниками, оба USB to COM PL2303_Prolific. Вот думаю заказать на Али на чипе CH 341, может с ним получится, но вот что то сомневаюсь, может они в ушах что изменили. у меня версия T4-BES2000S-20 2017/03/27

    1. Во-первых у меня такая же версия: //ibn.by/wp-content/uploads/2017/08/bluedioT4_PCB1.jpg
      Во-вторых, чтобы они включились – надо же зажать MF и подержать. А для прошивки надо только кратко кликнуть. Может в этом дело?
      Предлагаю попробовать следующее, чтобы уж наверняка вернуть в исходное состояние:
      1. Выключите их (и переведите ANC слайдер в выключеное состояние)
      2. Подключите USB питание на пару минут, после чего отключите.
      3. Подключите PL2303
      4. В проге выберите порт
      5. В проге нажмите play
      6. Краткий клик по MF/Power на плате

  3. К сожалению – нет. Ни в какую они не хотят прошиваться. Сделал всё по написанному выше. И на краткий клик, тоже ничего. Заказал на Али СОМ порт на CH340G USB 2.0. Может он поможет, не знаю что ещё придумать.

  4. Добрый день.
    Надеюсь, я вам не сильно надоедаю.
    В общем решил я попробовать все способы, по этому было решено повторить всё на старом HP ноуте.
    И уже на одном из, 3-х USB to COM наушники зацепились, но ровно на 1 секунду. После чего я подождал какое то время и отключил всё, так как ничего не происходило. Уши перестали реагировать на включение.
    Отпаял батарейку на минут 10, после чего повторил попытку. Которую решил заснять.
    https://www.youtube.com/watch?v=_yWRdwtzQ94&feature=youtu.be
    Не успел перевести съёмку на экран, но там появлялась жёлтая полоска, которая стала красной. На ушах светодиоды не моргали, наверное не успели, так как всё закончилось не успев начаться.

    1. Хм. Подобное поведение у меня было только когда я эмулировал наушники, воткнув вместо них esp’шку с собственным “загрузчиком” – тупо подбирал хендшейк, чтобы понять как она работает. Выяснил что программа при старте пассивна – она открывает порт и ждет хендшейк от платы. Если к ней приходит что-либо кроме 0xBE500003 – она вываливается с ошибкой. Из чего я делаю вывод что плата подцепилась как надо – она шлет что-то. Другой вопрос что данные приходят не те что ожидались. Тут мне видится только один вариант – возможно ваша PL2303 “крива”. Помнится я читал что есть куча клонов оной, где вместо полноценного 232, реализован как тупая машина состояний, и это порождало какие-то проблемы. В частности не подходили оригинальные драйвера, и были какие-то проблемы с передачей. Может это ваш случай?
      Ну или нет контакта на RX? Т.е. пакет приходит, но не ответ не принимается?

      Уши-то, хоть, живы?

  5. Похоже что уши приказали долго жить. На кнопку питания они больше не реагируют. Если батарейку не отпаивать на время, то и программа тоже не реагирует. В остальном всё повторяется как на видео. Одна секунда и всё. А в третьем окне программы после попытки соединения, нули меняются на цифры, это типа мас-адрес ушей? На счёт СОМ портов, из трёх, этот с которым хоть что то произошло, с алика. Остальные, оригинал и точно рабочие. Вот только загадка, почему с ними полная тишина была… Ну неудачный опыт, это тоже опыт. Тем более, что я за них вернул по спору на Али 80 % стоимости, по этому не жалко.

    1. Но если они действительно окирпичились — то вы, пожалуй, первый кто отчитался. До этого были только отчеты (на ютьюбе и 4пда) либо об успешной прошивке, либо не стартануло вообще.

  6. Хм. Это странно. Если запись не стартовала, то и испортить ничего не должно было.
    Кстати, после входа в режим записи, у меня тоже на кнопку питания переставали реагировать, пока не втыкал питание (аккум не выпаивал). Может и у вас так же?

    А по проводу, работают хоть?
    Что происходит если включить рычажок ANC?

  7. Пробовал втыкать шнурок в USB, красный светодиод светится. Но не включаются не с ним не без него.
    По шнурку 3.5мм, играют. Рычажок ANC включаешь, светится зелёным.
    Вопрос, есть ли смысл ждать ещё один сом-порт, в плане туда ещё можно что то прошить или это уже всё запорото безвозвратно.

    1. Я не могу сказать про “запорото безвозвратно”, т.к. у меня опыт единичной прошивки. Вполне может быть у вас загрузчик жив, а запорота только основная прошивка (в пользу этого говорит тот факт что они таки пытаются коннектиться к проге). Если так – то ещё можно прошить. Я бы подождал еще один порт.

      Кстати, я так и не попробовал скачать дамп биоса, т.к. не было смысла. Да и не уверен что это биос (DIP 8 на вот этой фотке: //ibn.by/wp-content/uploads/2017/08/bluedioT4_contacts.jpg ). Как вариант – убедиться что это он. Если так – то я мог бы снять дамп со своего. Для этого нужен программатор (тот же CH341) и прищепка типа такой http://bit.ly/2nnJyP1 . Но это не точно – может оказаться что это не биос, или из-за обвязки без выпаивания никак). Если есть желание повозиться – можете заказать CH341A и прищепку, и проверить чип на плате – если окажется что это SPI 25xx биос и он читается прищепкой без выпаивания – то я могу снять дамп со своих ушей. И тогда можно забыть про китайский софт и просто накатить полный образ.

  8. Ну дело в том, что я люблю окирпичивать всякие гаджеты и у меня как раз имеется всё для прошивки DIP 8 чипов и программатор и адаптеры и прищепка, я в планшете, прищепкой биос поднимал. Будет время, попробую, может что то вычитаю.
    P.S. Не подскажите, как картинку в комент добавлять, что то я туплю.

    1. Ок, удачи. Получится — пишите.
      (Картинку в коменты — никак. Проще запретить чем бороться с нехваткой места на хостинге и, самое главное, бороться с различными уязвимостями wordpress’а script-injecting’а . 🙂 )

  9. Добрый день.
    Пробовал читать, не получилось. Попробовал найти что это за чип, вот что нашёл
    https://ru.aliexpress.com/store/product/5056-AP5056-8-pin-SMD-battery-charge-management-IC-chip-IC/1395137_2031638506.html?aff_platform=link-c-tool&cpt=1512393816607&sk=uR7uBY3Rz&aff_trace_key=2aba72d258514b048ce302bbdbecbae6-1512393816607-04018-uR7uBY3Rz&terminal_id=436dec38081d4441b48b2aa7bae5ab3d
    Получается что это не биос.

  10. Приветствую!
    Поломались уши; как назло, только сел в поезд, зарядив их перед выездом, устроился поудобнее, достал телефон, включил уши – и через минуту треск вместо звука… треск вместо команд. Думал усилок помер или цап, но когда разобрал оказалось, что сдох акум. Заменил акум, включил, – всё работает. Радость моя длилась минут 5 :). Оказалось он прихватил с собой несколько кондеров (предположительно, они у меня сейчас негры, окислились-почернели, я очень надеюсь, что не микроконтроллер в придачу).

    Отсюда вопрос – https://yadi.sk/i/FGdrFC_g3Ym4nu есть ли возможность померить емкость этих кондеров?

    1. Сочувствую. Но, к сожалению, помочь не могу — паятель я тот еще, и рисковать лишний раз не хочу. 🙁
      Тут отмечались другие сочувствующие, у кого уши окирпичились — может кто из них отзовется?

      1. Всё равно спасибо :).
        Промыл после поста всё спиртом, прогрел феном, поскоблил. Решил впаять выключатель, чтобы не отпаивать каждый раз батарею для тестов. Сейчас уже часов 8 в общей сложности работают. Надеюсь дело было именно в окислах и паразитном контакте где не нужно.

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

Добавить комментарий