Обновить
4K+
3

Пользователь

13
Рейтинг
1
Подписчики
Отправить сообщение

ELM327 не дочитывает ответы блоков кузова: доказательство подмены кадра и обход

Уровень сложностиСредний
Время на прочтение15 мин
Охват и читатели6.9K

У меня в VW Polo завёлся плавающий контакт в проводке парктроника, и я решил написать свой диагностический клиент — потому что штатный сканер показывает факт, но не момент: пока листаешь меню, обрыв уже прошёл, а руки заняты сканером вместо жгута.

Дальше выяснилось, что дело не в моём коде и не в машине. Прошивка ELM327 ведёт многокадровый обмен ISO-TP только с одной парой адресов — 0x7E0 и 0x7E8, это блок двигателя, зашитый намертво. Блокам кузовной электроники, которые отвечают с другим смещением, адаптер просто не посылает кадр разрешения на продолжение: блок отдаёт первый кадр и встаёт в ожидание, а на все следующие запросы отвечает «занят».

В статье: разбор ограничения, таблица из четырёх неработающих обходов на AT-командах, случайно полученное доказательство того, что адаптер подменяет кадр, инженерный компромисс, который всё-таки позволил вытащить коды, и настоящее решение через USB-CAN. Плюс приём, спасший архитектуру: новый способ связи притворяется старым, и остальной код не меняется вовсе.

Отрицательный результат, ради которого всё и написано: я перебрал всё, что было под рукой, и не нашёл ни одного ELM327, который умеет дочитывать длинные ответы от блоков кузова. Если у вас такой есть — назовите модель.

Читать далее

Информация

В рейтинге
654-й
Зарегистрирован
Активность