Хакаем CAN шину сидений от Volkswagen Phaeton 2005

  • Автор темы nkha
  • Дата начала
  • Ответы 5
  • Просмотры
  • Теги
    vw phaeton

nkha

Просто заглянул
Сообщения
4
Реакции
3
Город
Россия
Авто
Mitsubishi Pajero 2008
Всех приветствую!

Я решил установить в свои автомобиль не родные сидения. Порылся по разборкам и нашел сиденья от Volkswagen Phaeton 2005 г.в.(со слов разборщиков, маркировка на сидухах 2003 год), с подогревом, массажем и вентиляцией в идеальном состоянии. Сиденья супер - но есть трудность чтобы их установить. Подогрев и вентиляция управляется по CAN шине. Массаж кнопкой на сиденьях.
Просто взять выводы физического нагревателя и вентиляторов и подать на них 12 вольт - вариант сильно "не очень". Тот же подогрев разделен на 4 зоны и у каждой зоны свой датчик температуры... комфорт емое. Поэтому очень хотелось бы использовать родной "мозг" кресел.
Я так посмотрю на форуме есть куча спецов по CAN шине, посему обращаюсь здесь за помощью.

Для начала что я сделал. Слепил CAN сниффер из того что было, а так же из чего планирую делать само управление со стороны машины. А именно микроконтроллер STM32F103C8T6 + адаптер CAN шины TJA1050. Ничего нового я думаю, кроме софта. Софт написал с нуля свой, т.к. все равно бы его придется писать реализацию управления со стороны машины, да и интересно самому было по-ковыряться.
Софт здесь - https://github.com/Nikolay-Kha/CANBusHacker
Несложно догадаться, что СТМка цепляется к CAN шине через TJA1050 и потом через последовательный порт все пишет/управляется в терминале. В компьютер он подключается через CP2102. Кстати у контроллера есть USB через который можно было бы реализовать виртуальный последовательный порт, но к сожалению 103 серия использует один и тот же буфер в памяти для CAN и USB, поэтому одновременно можно использовать что-то одно. Т.к. я не пользуюсь вендой терминал реализован как стандартный POSIX терминал, т.е. с историей ввода, редактированием и прочим, будет работать в любой POSIX системе(под вендой все же можно PuTTy использовать). т.е. тупо 'screen /dev/ttyUSB0 115200' и вперед использовать этот сниффер прямо в терминале.

А теперь главная проблема - т.к. самого фаетона или блока комфорта у меня от него нету(на разборке тоже уже нет), я пытаюсь как нибудь найти нужные команды для управления этим креслом. Написал парочку простых брут форсов. Перебирать 8 байт + 11 бит - не вариант конечно, но погонять несколько бит по разным ID кан шины я все же попытался. Пока удалось найти следующее:
при включении шлет что-то наподобие:
Код:
CAN received: 406#060280000000 [6 bytes]
CAN received: 406#060100000000 [6 bytes]
CAN received: 406#060200000000 [6 bytes]
CAN received: 406#060100000000 [6 bytes]
CAN received: 511#00008000000000 [7 bytes]
CAN received: 406#060200000000 [6 bytes]
CAN received: 406#060100000000 [6 bytes]
CAN received: 406#060200000000 [6 bytes]
CAN received: 406#060100000000 [6 bytes]
CAN received: 511#00008000000000 [7 bytes]
CAN received: 406#060200000000 [6 bytes]
CAN received: 511#00008000000000 [7 bytes]
CAN received: 406#061400000000 [6 bytes]
формат думаю ясен - CAN ID решетка данные.
406#060200000200 высылает кресло при нажатии на кнопку памяти 1
406#060200000400 высылает кресло при нажатии на кнопку памяти 2
406#060200000800 высылает кресло при нажатии на кнопку памяти 3
В результате брутфорса вычислил, что команда 2C1#0010 (кстати еще много вариантов с какими данными) заставляет щелкать какое-то реле в блок - предположительно реле моторов регулировки положения руля(да, эти моторы управляются с блока кресла водителя) - не разбирался, не важно.
5DD#0000F0 - свет ног пол ток 300мА
5DD#FF000F - свет ног пол ток 180мА
5DD#0F000F - свет ног пол ток 380мА
5DD#0F0006 свет полная - 400мА(осцилографом ШИМ на лампе не проверял, но по току максимум)
5DD#000000 - выключить свет ног
Со светом понятно я думаю, CAN ID найден, данные подобрать можно, да и принципе уже есть примеры данных что бы им управлять.

Но самое главное - ни нагрев, ни вентиляцию во время брутфорсов не включились ни разу. Контролировал на слух и по амперметру блока питания. Возможно надо подсунуть сначала команду включения зажигания или еще что... даже пробовал питать от 14.5В - вдруг напряжение контролирует.
Нашел по VAG вот такие примеры CAN пакетов:
https://docs.google.com/spreadsheets/d/1eir...vHJw/edit#gid=0
https://www.janssuuh.nl/en/blog/2016/03/18/bekende-canids/
5DD там кстати для управления салонным светом фигурирует, правда формат данных другой, указанный в доке у меня не работает. 3E1 указан как подогрев... тщательного попробовал пробрутфористь 3 байта целиком и до 8 байт разными комбинациями - ничего.

Посему вопросы:
1) (легкий я думаю и не особо важный) В CAN шине фольцвагена жеж должен стоять резистор между CANL и CANH в 120 Ом. Без резистора не работает. С резистором тоже не работает. Работает с резистором 120 Ом между землей и CANL... почему, не понимаю. Какие нибудь соображения на этот счет?
2) Кто нибудь знает CAN ID для включения подогрева, вентиляции или просто как сказать креслу что зажигание включено на этом или любом другом VAG авто. Да и любая инфа от других VAG автомобилей по подогреву и вентиляции сидений будет полезна.
Спасибо.
 
я использовал когда-то MCP2515 для моторной шины, там есть джампер-терминатор, но насколько я помню он не использовался и все работало.

касаемо команд, скорее всего все немного сложнее, сидуха может хотеть:
- хендшейка
- кодировки комфорта
- чексуммы в сообщениях
- определенную структуру сообщения
- всякие сид-кеи, ИДы оборудования, начало-конец сессии, но скорее всего это не используется на уровне обмена между блоками

итд
зажигание наврятле тк по идее это на уровне бк обрабатывается

кмк без машины тут нечего ловить
 
MSTRKRFT написал(а):
но скорее всего это не используется на уровне обмена между блоками

итд
зажигание наврятле тк по идее это на уровне бк обрабатывается

это уже радует, тоже надеюсь на это.

Чувствую буду собирать брутфорс машину - подключу подогрев к ноге проца чтобы тормознуло при включении и оставлю брутфорсить на неделю/месяц или более пока подогрев не включится...

Знать бы сколько там байт в пакете включения подогрева... 3 байта + 11 битный айди подобрать еще реально... хотелось бы услышать от кого нибудь, что они видели пакеты включения подогрева на каком-нибудь VAG и длина данных там небольшая...
 
Я могу тебе скинуть описание моторного кана для мед9 например, мб чем то поможет
 
спасибо, но моторный кан мне вряд ли поможет. Здесь все по комфорт кану идет.

Покопавшись еще с сиденьями, я понял что допустил не простительную ошибку - проглядел на схема "heating/ventilation adjuster" который я принял за один из датчиков моторов....

Вообщем крутилка подогрева и вентиляции от -3 до +3 есть не что иное как простой переменный резистор. К нему подходит земля и +5В от блок. Центральный вывод - как раз управление.

Подключил резистор, но ни подогрев, ни вентиляция не заработали. Видимо сиденье хочет еще увидеть зажигание или что-то еще. С зажиганием порыскал по интернету, я так посмотрю очень многие VAGи, пассаты, гольфы, Т6, ауди а4 высылают зажигание как 271#0700 или 2C3#0B. Высылается этот пакет кажды 100мс. Попробовал я вокруг да около по брутфорсить, 2 байта полностью перебрал для обеих айди. Результат отсутствует.

Но зато хоть какие-то подвижки, теперь надо найти как "включить зажигание".
 
Короче сломал я протокол фольцвагена. Чтобы кресло ожило, ему нужно знать, что включено зажигание. Для этого нужно писать в CAN шину каждые 50-100 миллисекунд команду 271#06. Стоить прекратить писать и кресло отключается. Подогрев/вентиляцию регулируется переменным резистором при этом. Проблема решена.
 
Назад
Сверху Снизу