На Kodiaq FL поясничный массаж можно получить как одну из опций, но что же делать владельцам более старых машин? К счастью это VAG, а значит если на соплатформенной машине что-то работает, то с большой долей вероятности это можно заставить работать на любой машине той же платформы.
Итак, поясничный массаж есть на Passat B8 и Superb, при этом у них отличаются партномера блоков управления сидений от кодиака: 3Q0959760* — Passat, 5Q0959760* — Kodiaq.
К счастью тема не новая и на драйве уже были записи по установке поясничного массажа на Tiguan от 10zt, kirill-s, на Octavia от Vovanoto и другие. Правда почему-то Kodiaq это веяние обошло стороной. Так вот, из этих записей понятно, что замена блока — это достаточное условие для работы массажа, поскольку устройство самого поясничного подпора с электрорегулировкой не отличается у сидений с массажем и без. Без замены блока, чисто программным способом, реализовать массаж не получится и ниже вы увидите почему.
Что нужно для реализации?
➫ Блок управления регулировками сиденья — 3Q0959760D (*B, *С — тоже подходят, отличие только в прошивке).
➫ Блок кнопок управления с пиктограммой массажа — 3G0959769B9B9 (аналоги — 11A9597699B9, 3V09597699B9). Строго опционально, старый блок работает также, но новый выглядит феншуйнее, лично я, посмотрев на ценник, решил оставить старый блок кнопок. По некоторым сообщениям, чтобы подключить новый блок кнопок нужно подрезать перемычку на разъеме.
Сравнение блоков
Как видите, несмотря на то, что разъемы совпадают пин-в-пин, по "железу" разница достаточно большая, хотя и видно, что основа одна и в принципе, добавив рассыпухи, можно превратить один блок в другой.
Установка
Установка предельно простая:
➫ находите блок под сиденьем)
➫ отсоединяете от него все разъемы
➫ отгибаете защелки и снимаете блок
➫ вставляете новый блок и подключаете разъемы
Кодирование
Все действия я делал через ODIS.
Для начала, если блок версии *B или *C, его нужно обновить прошивкой до *D. Саму прошивку можно взять к примеру в этом наборе.
После этого самое время залить параметрию. У меня была параметрия от Passat B8, которой со мной любезно поделился kirill-s, ее я и залил.
Включить массаж очень просто (особенно учитывая, что он и так включен по умолчанию в блоке 3Q0):
Блок 36 → Кодирование:
[LO]_lumbar_massage: [VN]_active
После заливки параметрии ушла ошибка по недостоверному блоку данных, но осталась куча других:
Чтобы избавиться от этих ошибок, нужно сделать базовую установку сиденья. Если это не сделать, не будет работать память положений сиденья, но все остальное, включая массаж, работать будет.
Базовую установку можно сделать как через ведомые функции в ODIS-S, так и в ODIS-E.
В ODIS-E:
В ODIS-S:
Ручной способ: просто прогнать все регулировки от одного крайнего положения до другого, безо всякого одиса.
Ахтунг: не пытайтесь провести базовую установку сидя на этом сиденье, если нет желания быть расплющенным об руль.
Но оказалось не все так радужно, базовая установка никак не проходила. В попытках это исправить я полез в кодирование, и понял, что я — идиот забыл восстановить настройки из блока 5Q0*, а датчики моторов в 3Q0* по умолчанию настроены по другому.
В настройках есть два типа позиционирования моторов по датчикам:
SLP — остановка чисто по токовой нагрузке, к мотору идут два провода;
Hall — остановка по датчику Холла, к мотору идут четыре провода.
Если для моторов, оснащенных датчиком Холла, выбрать SLP, то их движение будет постоянно прерывать по срабатыванию токовой нагрузки и выполнить базовую установку не получится.
Что ж, с этим я разобрался и подумал, что сейчас быстро справлюсь с базовой установкой, но не тут-то было — она никак не поддавалась. Все приемы, описанные к примеру тут и тут, у меня не сработали для вертикальной оси поясничного подпора. Не хочет она устанавливаться и все тут.
Стал я разбираться дальше. В общем для вертикальной оси поясничного подпора у меня стояло значение параметра "Максимальный диапазон перемещения" равное 3200, тогда как стандартное значение для кодиака — 5164. Соответственно, подпор ходил гораздо выше ниже дальше, чем должен был, что не давало нормировать значения.
Как вариант отложить проблему до лучших времен — это просто отключить стандартизацию в кодировках, или переключить ее на стандартизацию только положений спинки сиденья.
Это делается просто:
Блок 36 → Кодирование:
[LO]_standardization_modes: [VO]_no_standartization — отключает стандартизацию
[LO]_standardization_modes: [VO]_backreast_standartization_only — включает стандартизацию только для спинки.
Естественно после отключения стандартизации ошибки пропали и все заработало, но я решил обязательно заставить заработать сиденье с включенной стандартизацией.
Для чего вообще нужна эта стандартизация? — А хрен ее знаетЯ могу только предполагать: с включенной стандартизацией блок обнаружит проблемы в движении кресла, выдаст ошибку и заблокирует его автоматическое перемещение (по кнопкам памяти или функцией Easy Entry), что в каких-то случаях позволит избежать бо́льших повреждений.
В общем стал я с этим разбираться. Так как максимальный диапазон перемещения ни в кодировках, ни в адаптациях не меняется, я стал смотреть в сторону параметрии. В процессе экспериментов я выяснил, что блок 3Q0* спокойно жрет принимает параметрии от блоков 5Q0* (что не удивительно, ведь они практически близнецы). Я нашел в свободном доступе параметрию от Octavia блока 5Q0*, залил ее и… понял, что чуда не произошло — базовая установка так и не проходила для поясничного подпора, но еще и отвалилиась нормализация для подушки сиденья. На самом деле, меня это обрадовало — нормализация подушки сиденья отвалилась, потому что изменилось значения параметра максимального диапазона перемещения, а значит этот параметр зашит в параметрии (сорри за тавтологию).
Итак, параметрия представляет собой набор байтов в шестнадцатеричном представлении. В первую очередь я стал искать значение 3200, переведенное в шестнадцатеричный формат — 0x0C80. И нашел в составе такой строки — …0D800C800CFF…, и поменял этот фрагмент на 0x142C (5164).
Чтобы залить параметрию с изменениями, необходимо также поправить контрольную сумму, которая содержится в последних двух байтах — CRC-16/CCITT-FALSE, посчитать ее можно онлайн — crccalc.com.
После заливки исправленной параметрии, я увидел изменения в максимальном диапазоне перемещения, но не те, что я ожидал: вместо 5164, там стояло 3116 (0x0C2C). И до меня дошло — строка после изменений выглядела так: …0D80142C0CFF… Получается в парамерии используется порядок байтов little-endian (младший байт идет перед старшим), а я просто поменял часть нужного байта и часть не нужного. После этого все пошло гораздо быстрее — я искал уже не 0x0C 0x80, а 0x80 0x0C, и поменял соответственно на 0x2C 0x14. Также я поступил и с максимальным диапазоном перемещения подушки.
Кому интересно — адрес байта максимального диапазона вертикального перемещения поясничного подпора — 0070h, а вертикального перемещения подушки сиденья — 006Ah.
После всех этих изменений у меня наконец получилось сделать базовую установку сиденья и все ошибки ушли.
Но это еще не все.
Другие проблемы
Помимо проблем с базовой установкой я также получил инвертированые кнопки управления поясничным подпором (жмешь вниз — едет вверх, жмешь вперед — едет назад и т.д.).
На массаж они никак не влияли (вернее взаимно компенсировались)), но жутко мешали моему внутреннему перфекционисту.
Так как исправить это програмно у меня не получилось, пришлось перепиновывать моторы.
Необходимо поменять местами пины 11 и 13, 15 и 16 16-контактного разъема на блоке.
Вытаскивается разъем из блока, дальше с разъема снимается внешняя часть
и меняются местами пины
После это работа моторов начинает полностью соответствовать как нажитию на кнопки, так и внутренне логике блока (до этого в измеряемых величинах направление движения соответствовало кнопкам, а не фактическому движению валика, поэтому-то я и решил перепиновать моторы, а не кнопки).
Вероятно порядок управления мотором тоже зашит где-то в параметрии, и хотя параметрия от Octavia ничего и не поменяла, возможно с родной параметрией от Kodiaq проблема бы решилась програмно (если она у вас есть, не стесняйтесь поделиться