EdigE
← ЛЕНТА

USB-C электросамоката оказался CAN-портом для перепрошивки дисплея

Зарядный порт на руле обычно воспринимается как самый скучный элемент устройства: отдал 5 В телефону и забыл. В Egret GT он оказался дверью во внутреннюю сеть самоката. Автор разбора подключил к USB-C breakout-плату и осциллограф, увидел дифференциальный CAN-сигнал на двух линиях данных и получил доступ к обмену дисплея, панели кнопок и главного контроллера. Производитель на странице модели описывает USB-C именно как зарядку смартфона.

Зарядный разъём стал точкой съёма шины

Сначала зацепкой послужило мобильное приложение. Его Bluetooth-обмен показал отдельные образы обновления для дисплея, панели ввода и основного контроллера. Запись кадров при включении самоката позволила сопоставлять CAN ID с действиями машины: кадры 0x300 связаны с режимами и светом, 0x306 несёт состояние дросселя, поворотников и ограничение скорости, 0x201 содержит данные о скорости двигателя. Так из пакетов и реакции железа выросла схема значительной части внутренней топологии.

Осциллограф отделил CAN от обещаний на корпусе

Физический слой пришлось воспринимать буквально. В отчёте не опубликована распиновка, которая однозначно назвала бы контакты D+ и D−, поэтому корректно говорить о двух линиях данных USB-C, а не утверждать конкретные имена пинов. Сам факт CAN подтверждён осциллограммой с декодированием кадра. Для собственного интерфейса автор использовал ESP32-C6, трансивер SN65HVD230 и MCP2515. Встроенная CAN-периферия ESP32 принимала трафик через SN65HVD230, но передача вызывала bus error; MCP2515 взял на себя отправку. В опубликованной позднее версии CAN-flasher в README уже указан TJA1050, то есть стенд успел измениться.

Девять кадров на один блок прошивки

Самая сильная часть работы начинается после sniffing. В дисплейном модуле обнаружился AT32F415, а его CAN-загрузчик принимает образ блоками по 64 байта: один блок разбит на девять кадров с ID 0x384, затем проверяется CRC-16-CCITT и данные записываются во flash. Автор считал штатный образ, успешно записал его обратно на вскрытое устройство, после чего опубликовал собственную прошивку дисплея на Rust. Загрузчик для этого узла не выполняет криптографической проверки образа.

Это не полная карта всей электроники Egret GT: часть сообщений, связанных с Apple Find My, осталась неразобранной, а на схеме присутствуют неизвестные микроконтроллеры. Но путь от приложения к осциллографу, от кадров к формату прошивки и далее к работающему коду хорошо показывает порядок аппаратного реверс-инжиниринга. Разъём остаётся механической деталью, пока измерение не докажет, какой сигнал живёт на его контактах.