Мое полуночное хобби, растянувшееся на полтора года, подходит к завершению.
Узнав о легкости установки на VAG систем искусственного звука, я с первого дня загорелся этой идеей и почувствовал потенциал. Как бы кто не фанател от чадящих маскл-каров, за симпозерами будущее (и тем больнее прогресс стукнет дедов по лбу). Планета делает очередной виток, производства сокращают выбросы и углеродный след, человечество развивается по пути гедонизма, тик-тока и развлечений в каждый момент времени. Автомобиль (независимо от силовой установки) должен отзеркаливать настроение владельца и быть максимально тихим или громким по желанию. Вы сильно удивитесь на скольких современных машинах стоят симпозеры и насколько сильно они влияют на впечатления от езды (привет владельцам Porsche 😉).
Желающим написать в комментариях: “Мой Brabus / Urus звучит на голову лучше ваших перделок!” ― вы неправы. “Устройство по выдуванию газов в ржавую трубу” никогда не сравнится по спектру выдаваемых частот с современными бас-динамиками. Туда же идут и борцы “за реализм” ― индустрия компьютерных игр и симуляторов давно доказала обратное, на слепом тесте с концертной акустикой вы не определите источник.
Разобравшись с моими убеждениями 😏, перейдем к практической стороне вопроса:
В авто может быть установлено две системы генерации звука: внутренняя и внешняя. Производителем обеих систем для VAG-группы является компания Kendrion (бывшая Kuhnke) и с программной стороны это идентичные устройства. Отличаются только усилители звука в корпусе блоков и подключаемые к ним спикеры.
Внутренние блоки имеют номера заканчивающиеся на … 907 159, внешние ― в основном на … 907 160 (но попадаются и другие). Больше нумерологии в моих предыдущих постах:
― Установка салонного симпозера
― Установка активного выхлопа
Самыми массовыми поколениями блоков сейчас являются SAK-GEN2 и SAK-GEN2.5. Третье поколение появилось недавно и пока встречается только на гибридах и электричках MQB-Evo и MEB с номерами … 035 335. Я не уверен, как их правильно называет сама Kendrion, в именах железок фигурируют ESoundKenKuMQBENG, ESoundMEBHarma и подобное. Прошивки этих блоков в 4 раза больше и используют другие форматы данных.
Мы c daChillout изучали GEN2 как максимально массовые и доступные. Их блоки данных содержат:
― 8 engine / VIN масок с определением машин и привязкой графиков звука к FPA профилям
― Табличные данные с 8 / 16 графиками зависимостей громкости звука от положения педали газа, оборотов, линейной скорости, ускорения и т.д.
― Более мелкие таблицы с delay / pitch / gain / clip эффектами из music-making мира
― Однотактные семплы звука
Таким образом, в одной прошивке может содержаться информация для одной машины, разложенная на 5-7 профилей Drive Select (обычно это Audi RS), или 3-5 разных VIN масок с привязкой на 2-3 профиля для каждой машины (большинство прошивок для гражданских машин, обычно только Normal и Sport/Dynamic режимы)
Большие таблицы после экспорта в Excel выглядят примерно так:
А это визуализированные с помощью WinOLS семплы:
Когда все данные уже были размечены, а защита так и не поддавалась, я написал еще и программный генератор звука, узнать из-за чего же мы страдаем.
Пара примеров с частотой ~1000 RPM:
При сильном желании, можно собрать в одной прошивке свой собственный гибрид звуков разных машин, разнесенный по Eco / Comfort / Normal / Offroad / Dynamic / Race режимам. Есть даже отдельная ячейка для заднего хода. Только копировать столбцы и строки с места на место в бинарных данных с постоянными проверками в Excel занимает кучу времени.
Суммарно, данные в прошивке защищены 3 чексуммами и на их поиски и подбор параметров и области охвата ушли сотни часов. Без них ― блок выдает ошибку о повреждении данных. (Есть еще чексумма для исполняемого кода, но его мы не трогали.)
Большую часть времени я писал скрипты для пересчета всеми возможными алгоритмами и перепаковки файлов, а daChillout экспериментировал с готовыми утилитами и библиотеками для автоматизированного поиска. Его технические посты с подробным описанием всех шагов и математики:
― Investigating soundaktor firmware
― Investigating soundaktor firmware Part 2
― What is CRC32ADLATUS?
― Cracking the soundaktor firmware checksum
На последнем этапе, когда мы уже добрались до дизассемблера Renesas V850, очень помог блог Willem Melching про взлом рулевой рейки. В своих постах Вильям дает огромную теоретическую базу по реверс инжинирингу; крайне рекомендую к прочтению. (А еще он ― глава компании по созданию автопилота comma.ai)
― Hacking a VW Golf Power Steering ECU - Part 1
― Hacking a VW Golf Power Steering ECU - Part 2
― Hacking a VW Golf Power Steering ECU - Part 3
― Hacking a VW Golf Power Steering ECU - Part 4
Итоговый результат наших бессонных ночей:
В планах на будущее до конца разметить data-блоки для GEN2.5 устройств и написать набор визуальных инструментов для редактирования графиков и манипуляций с цифрами, делать это через Excel максимально стрёмно.
И напоследок, небольшой подарок для комьюнити:
FL_8S0907159__0004.TTRS.MOD1.odx
Stay tuned …
Комментарии
temp temp