
ELM327 не дочитывает ответы блоков кузова: доказательство подмены кадра и обход
У меня в VW Polo завёлся плавающий контакт в проводке парктроника, и я решил написать свой диагностический клиент — потому что штатный сканер показывает факт, но не момент: пока листаешь меню, обрыв уже прошёл, а руки заняты сканером вместо жгута.Дальше выяснилось, что дело не в моём коде и не в машине. Прошивка ELM327 ведёт многокадровый обмен ISO-TP только с одной парой адресов — 0x7E0 и 0x7E8, это блок двигателя, зашитый намертво. Блокам кузовной электроники, которые отвечают с другим смещением, адаптер просто не посылает кадр разрешения на продолжение: блок отдаёт первый кадр и встаёт в ожидание, а на все следующие запросы отвечает «занят».В статье: разбор ограничения, таблица из четырёх неработающих обходов на AT-командах, случайно полученное доказательство того, что адаптер подменяет кадр, инженерный компромисс, который всё-таки позволил вытащить коды, и настоящее решение через USB-CAN. Плюс приём, спасший архитектуру: новый способ связи притворяется старым, и остальной код не меняется вовсе.Отрицательный результат, ради которого всё и написано: я перебрал всё, что было под рукой, и не нашёл ни одного ELM327, который умеет дочитывать длинные ответы от блоков кузова. Если у вас такой есть — назовите модель. Читать далее