Pull to refresh

Comments 72

А где можно получить эту самую прошивку для анализа?
Слить с блока программатором. Защиты от чтения там нет.
главное — не послать не туда не ту команду…

кое-кто имел опыт убивания блока управления ЦВТ :)
Повторив обмен seed-key с алгоритмом из прошивки получим в ответ 6702 34, где 34 это «Доступ разрешен».


А можно поинтересоваться алгоритмом?
так он есть же на картинке статье…
Там константы замазаны.

Впрочем, можно поснимать штук н-цать логов с родного MUT-3 и попробовать перебрать значения. Там, насколько я понимаю, 16 (начальное значение) + 8 (множитель 1) + 8 (множитель 2) бит перебирать, по современным меркам — любой калькулятор справится.

Автору в любом случае спасибо, занятная информация.
Получилось даже смешнее. Смотрим видео в этой статье, ищем мануал на ассемблер этого странного процессора (lsr2, lsl2 я никогда раньше не встречал), и… оп! готово! Прямо не вставая с дивана.

PS остался главный вопрос. Зачем я этим занимался?.. Оно ж мне нафиг не надо…
Когда у меня был Lancer X, я его настраивал через Lexia 3, купленную у китайцев.
Еще по такому же протоколу работает ряд французов.
С одним пареньком, который написал свою софтинку под Windows даже хотели написать Android-программу для Lexia через usb-otg.
Я научился обмениваться «приветствием» с Lexia, определять машину.
Но дальше, по некоторым причинам, всё заглохло и я передал исходники.
Не знаю, чем закончилось дело…
Еще по такому же протоколу работает ряд французов.

А именно Peugeot 4007/4008 и Citroen C-crosser (это те же аутлендеры, только со своим шильдиком)
Есть еще Dodge caliber и Jeep Compass, построенные на той же базе. Но там есть некоторые отличия… иногда неприятные.
Через Лексию (видимо, постарше) ещё Citroen XM настраивался…
Пользуясь случаем, хочу спросить: кто-то пытался программно реализовывать на микроконтроллере LIN slave через GPIO, без хардварных трансиверов? Встала сейчас такая задача с целью ремонта сдохшего электронного блока, но очень мало инфы по этой теме. Обычно под Ардуино для любой ерунды есть готовая библиотека, а для LIN нет, хотя это же очень интересно и потенциально открывает возможности интересных доработок.
А зачем оно надо? Берем нормальный микроконтроллер, берем RS232-LIN преобразователь и спокойно работаем по USART
Преобразователь — лишняя железка, которую нужно искать, заказывать, ждать, осваивать программирование, ещё и лишняя точка отказа. Хотелось избежать. Там 20 кбит/с, не понимаю, в чём проблема сэмплировать линию через GPIO. Единственное, что — посылать данные неудобно, надо какой-то ключевой транзистор изобретать.
Преобразователь это железка, которую надо тупо подключить, и ничего осваивать не надо, т.к. далее идёт просто преобразование RS232 в LIN. Кроме того у МК спокойно бывают UARTы, которые из коробки могут работать в UART/USART/LIN/ISO7816 и т.д.
А если так беспокоит надежность, то возникает вопрос: а почему вообще взгляд был на ардуино, там и код и железо весьма паршивого качества.
Большое спасибо, изучу даташит. Беглый запрос в гугле показал, что купить их у нас похоже, негде; может, какой-то другой аналог меня спасёт.
Можете искать трансиверы для k-line, физически это тоже самое что и LIN шина, ISO 9141 интерфейс. TJA1020 или L9637 из популярных.
Вот да, TJA1020 продают в чип-дипе.
www.chipdip.ru/product/tja1020t-cm.118

Если не хочется заморочек с ЛУТом, можно поискать LIN Shield у китайцев. Кажется, я что-то подобное видел.

Если проявите минимальную активность на сайте e2e.ti.com (а именно: зададите вопрос по существу, вам на него ответят и вы пометите ответ, как полезный и так несколько раз), то для TI Store дают купон на бесплатную доставку (доставляют они обычно FedEx'ом, а это не в пример молниеносно быстрее, чем покупать что либо на алиэкспрессе, обычно за неделю из штатов до стола доезжает)

Трансивер это штука которая просто преобразует уровни +12 вольт LIN шины в rx/tx на 3-5 вольт пригодные для подключения к МК. Собрать трансивер можно хоть из рассыпухи на одном транзисторе и нескольких резисторах.
А вот именно реализация протокола уже другое дело, в LIN используется по сути тот же уарт, только чутка изменен, можно использовать железный уарт в МК, можно софтварное все изобразить. Во многих современных МК штатный уарт даже поддерживает break и синхронизацию по sync, но в целом если не стоит задачи сделать все по феншую, то можно и обычный уарт из ардуины просто игнорировать битые кадры из-за brake.
Вы точно пробовали что-то искать по теме?
Вот, например: github.com/zapta/linbus (сходу, кстати, не вызывает приступов отвращения, в отличие от большей части ардуино-кода).
Точно пробовал искать, зуб даю. Кажется, я видел этот проект, но здесь же целая кастомная железка. Я искал реализацию для голой стоковой Ардуино, ведь явно же 20 кбит/с по единственному проводу можно легко обрабатывать одной ногой GPIO!
P. S. Если бы железку можно было заказать готовой, я бы заказал и не морочил голову. но за вменяемые деньги и любительского уровня я подобного не видел, видел более индустриальные анализаторы от $100.
P. P. S. Вот это представляет интерес, попытаюсь выяснить, сколько будет стоить доставка.
Это необязательно кастомная железка. Внутри там такая же атмега, как у всех остальных ардуин. Ищете где-то модуль с трансивером (или делаете самостоятельно), курите код товарища zapta, и всё — устройство готово.

При любви к нетрадиционным занятиям в гамаке, можно, конечно, и на GPIO сделать (откуда, кстати, цифра 20 кбит/с? я видел 4800, 9600 и 19200. Ещё 10400 есть, но это не LIN), но очень советую пользоваться по возможности аппаратными модулями. Особенно если хоть о какой-то надёжности говорить.
20 — потолок по спецификации LIN. У товарища zapta, к сожалению, использован экзотический трансивер. Хочу попробовать ширпотребный TJA1021, но смущает, что кроме упомянутого zapta практически ничего и не находится по теме LIN + Arduino, а именно с TJA1021 так и вовсе ничего, хотя сама микруха довольно известна. Чувствую себя первопроходцем, а это верный признак, что ступаю на поле граблей.
Предлагаю всё-таки получше разобраться в теме, благо даташиты в свободном доступе, спецификация на LIN тоже (повторю, кстати, вопрос: Вам точно LIN нужен?).
Потому что сразу выяснится, что LIN — это такой однопроводный UART (со специфичным признаком «начало пакета», правда), а все трансиверы — суть трансляторы уровня с процессорных 3/5 вольт до автомобильных 12+. Ну ещё там есть всякие плюшки, типа защиты от КЗ, переполюсовки, статики. Иногда бывает ещё встроенный стабилизатор (для питания того самого контроллера) и защита от подвисания контроллера (в виде ограничения на макс. длительность dominant level, чтоб шину напрочь не завесить).
Я понимаю всё, что вы написали, спецификацию LIN читал (правда, по диагонали). Мораль в том, что все трансиверы должны быть с логически-цифровой точки зрения одинаковы?

Я не нашёл достоверной информации, что нужен именно LIN, но есть косвенные на то указания, например, какой-то training мануал моего автопроизводителя примерно тех же времён, что и моя машина, где сказано именно LIN, и приводится довольно детальная схема работы протокола и шины.
Я понимаю всё, что вы написали, спецификацию LIN читал

Тогда откуда идеи «GPIO без трансиверов»?
Ну и вообще, как мне кажется, для человека, который умеет «программировать на С++ за деньги», набросать реализацию этого примитивного протокола особых проблем составить не должно. Просто джаст фо фан.

все трансиверы должны быть с логически-цифровой точки зрения одинаковы

Я вам не скажу за всю Одессу, но тексасовские SN65HVDA195, nxp-шные TJA1020, микрочиповские MCP200x и ATA6631 с точностью до методики включения (из спящего режима) и поведения в этом спящем режиме совершенно одинаковы.

Я не нашёл достоверной информации, что нужен именно LIN,

Самое достоверное — взять трансивер, подоткнуть его в живую шину с одной стороны и в логический анализатор — с другой. Транспортный уровень — как на ладони.
Тогда откуда идеи «GPIO без трансиверов»?

Кроме вопросов надёжности и сертификации automotive (устойчивости к transients и load dump), я по-прежнему не понимаю, почему это нельзя сделать на GPIO + 1 полевой транзистор с изолированным затвором вместо целого трансивера. Я только не умею выбрать правильный тип и модель транзистора.

набросать реализацию этого примитивного протокола особых проблем составить не должно.
Грабли, не люблю по граблям ходить, особенно там, где это касается физического железа, которое под отладчиком на паузу не поставишь и значения переменных / регистров не посмотришь. С софтом всё намного проще. Было бы LIN-master устройство, работающее на столе, я бы уже начал экспериментировать, но сидя в багажнике авто с ноутбуком этим заниматься не очень весело. Хочется просто, чтобы работало, поэтому уже заказал трансивер на Алиэкспресс, осталось дождаться. Спасибо за помощь / ликбез.
устойчивости к transients и load dump

В первую очередь нужна устойчивость к перегрузке и переполюсовке.
Отваливание незаряженного аккумулятора на полном ходу встречается редко, а криворукие прикручиватели проводов не туда — часто.

сделать на GPIO

Можно. Но первым же вопросом будет «как мне сформировать биты?». Вторым — «как мне прочитать биты и сложить их в байты?». И я ещё раз спрашиваю, зачем их героически решать, если в контроллере есть готовый модуль UART?

+ 1 полевой транзистор с изолированным затвором

Не нужен там никакой изолированный затвор.
Берите любой NPN, базу через резистор на ногу контроллера, эмиттер на землю, коллектор в линию. Для определённости, скажем, www.chipdip.ru/product/bc635pbf и килоомный резистор. Всё как по заказу — без защит и сертификаций. Для хоть какой-то защиты можно резистор воткнуть www.chipdip.ru/product0/18265 (физический размер имеет значение!)
Ну и да, приём чего-либо мы ещё не обсудили. Ардуины от 12 вольт горят.

Было бы LIN-master устройство, работающее на столе

Берём Saleae logic (must have!), паяем из двух резисторов делитель 12 -> 3.3, лезем в багажник, снимаем протокол. Возвращаемся на диван, берём отдельную ардуину, и тупо в цикле с ногодрыгом и sleep'ом повторяем услышанное.
Хороший вариант с тупым копированием услышанного, спасибо за наводку, я не догадался. Как раз колега пообещал одолжить Saleae.
Насчёт приёма 12 вольт Ардуиной — думал о резистивном делителе. Только не знаю, нужно ли в таком варианте использовать АЦП, чтобы правильно обработать уровни 0/1, не надеясь, что они магически совпадут с логическими уровнями выбранного МК. Но это всё умозрительно, потому что я уже послушал вас и других комментаторов — заказал TJA1021.

а чего за машина то? если тойота конца 9х, начало 200х, то MPX он вам не LIN. Это другое кино, там кольцевая сеть и вроде я видел какие-то поделки для неё

Audi A4 2003 года, пишут, что LIN. Но проверить не сложилось, очередной модуль сирены сигнализации умер и подслушивать опять нечего, а покупать ещё один новый (третий или четвёртый) энтузиазм иссяк. Я хотел разобрать протокол общения машины с сиреной и сделать свою реализацию вместо постоянно дохнущих штатных.
Кстати, пользуясь случаем, хочу напомнить, что UART-подобных однопроводных интерфейсов автопромышленность изобрела больше одного. LIN — только один из них. Ещё существуют ISO 14230 и куча всякого вендор-специфик (с документацией, в лучшем случае, на фанатских форумах).
Eсли сдох блок — посмотрите на проект resefi.com
Оч жалею что у меня авто крайне жмотского производителя — Крайслер (jeep, dodge)… и соответственно все протоколы наглухо закрыты и недоступны и софта нет, даже стандартный odb2 обрезан по минимуму

p.s. у крайслера есть авто построенные на чужой базе, у них таких проблем нет, а вот «родные»… печаль
Предупреждение в конце должно звучать немного по-другому:
Любая поддержка протокола, которую вы реализуете в своей железке или программе, будет специально сломана производителем авто в следующей версии, а если ему это не удастся, то он просто подаст на вас в суд.

CAN-шина прекрасный, открытый стандарт. И посмотрите во что он превратился в автомобилях. Дилеры постоянно оказывают давление на автопроизводителя — дайте нам заработать! Мы купили у вас этот стенд за 20К, мы покупаем у вас программы, запретите это делать пользователям. И разумеется, автопроизводитель идет им навстречу, ведь он так же зависит от продаж через дилеров.

Open Ford (сейчас OpenXC) была прекрасная инициатива, очень смелая. Ну и где сейчас Форд? Ну и кто из читателей Хабра купил себе Форд, потому что там есть открытый стандарт?

Машины вообще редко покупают по идеологическим соображениям такого характера.
Строго говоря сам стандарт CAN шины не регламентирует что по нему будет передаваться, он про физические уровни, арбитраж и прочий низкий уровень.
Это как сказать что Ethernet открытый стандарт, а посмотрите злой скайп закрыл протокол и не дает нам.

Тут ситуация двоякая еще, не дает производитель доков по работе со своей электроникой, залочил везде прошивки, все пошифровал — плохо, мы же за свободу и все такое.
Гоняет все в открытую — опять плохо, теперь любой злодей может переписать прошивку и т.д.
Кто из читателей хабра знал об инициативе форда до того, как прочел этот коммент?
Форд мог бы влить денег в пиар, в организацию комьюнити вокруг этой инициативы.

Форд, увы, прекращает легковые авто в России продавать.

UFO just landed and posted this here
Отлично, спасибо. Самое время развести руками и сказать — а что вы ожидали от открытого ПО? Прошло почти 8 (восемь!!!) лет. Дети во второй класс идут, а на Хабре о программе знает 2.5 человека, если считать alizar.
Пытался найти данные для Ford Focus 2007 и облом ничего толком не нашлось. Есть кто-то кто опытным путем собирал данные и потом пытался их интерпретировать. Но было интересно. Собирал свой can модуль на stm32. Все подключается и работает. Интересно и куча непонятных данных. (ловил все что прилетает)
Есть программа ForScan, может там есть что интересное?
Да есть и даже вроде куплена(не помню что-то из них было за деньги)
Я наивно думал когда начинал что документацию я найду. Ford для следующих моделей даже свой DIY девайс какой-то сделал. И доки выложил.
В целом не подумал что оттуда можно было заснифать трафик. Сейчас уже все равно забросил все это.
Давно пользую can-адаптер для VW – «вася диагност». Позволил активировать много функций комфорта, которые по неведомым причинам не выведены в настройки, нигде в официальной доке не описаны, но зато дилер пытался мне их продать. Но самое главное – это чтение кодов ошибок, ведь не знаю как у Mitsubishi, но у VW отображаемые на панели ошибки это какая-то жесть: мало чего понятно, всегда все фатально и возникает ощущение что без поездки в сервис вообще никак. А подключаешь, и понимаешь что всего-то перегорела одна из лампочек.
Смело могу рекомендовать для VAG, хотя за рекламу мне не платят. Но давайте откровенно: даже в продукте, который существует ни один год и заточен под определенный автоконцерн, даже там не все очевидно: не все значения регистров описаны, у разных модельных годов одной и той же модели есть отличия, при работе есть вероятность накосячить. Поэтому автору большой респект за ликбез, но от меня лично огромный дисклеймер: читать автофорумы, бекапить каждый update, следить за контактом шнурка, зарядкой АКБ и ноута и… верить!

Какие, если не секрет, опции комфорта получилось так включить?

На VW Tiguan: подъем стекол удерживанием кнопки закрытия, количество морганий поворотников, «стробоскоп», включение птф при поворотах в дополнение к адаптивному свету, дотирка капель заднего стекла, атоопускание правого зеркала при сдаче назад, работа с led-лампочками салона без доп.резисторов и ошибок. Это что сходу вспомнил, но сдается мне что это 1/3 от всего, остальное просто воспринимаю уже как само собой разумеющееся.

Но повторюсь, главное – это чтение кодов ошибок. Поэтому соглашусь с некоторыми авторами, bluetooth obd адаптера для насущных нужд должно хватать. А разные фичи можно активировать в неофициальных сервисах (на гарантию влиять не должно), либо брать погонять шнурки у соратников по автоклубу.

У VAG есть утилита VCDS, в народе ВАСЯ, через которую можно посмотреть любой датчик, настроить любой блок и поуправлять чем хочешь, сниффером вытаскиваются любые команды.

В свободном доступе есть VCDS lite, работает с китайским адаптером за $5. Возможности урезаны но тем не менее для поиска неисправного сенсора чего-либо (например ABS в моем случае) или чтения кода ошибки незаменимо.

У меня китайский аналог шнурка и крякнутая VCDS. Поддерживаются все функции оригинального, кроме обновления.

Статья интересная, только сомнительно, что для сброса maintenance lamp обязательно нужен OBD-сканер. У Хонды, например, этот сигнал легко сбрасывается комбинацией «повернуть ключ зажигания, удерживая кнопку сброса пробега (trip reset) 10 секунд». А, скажем, check engine сбрасывается комбо «повернуть ключ зажигания (не заводить) -> нажать педаль газа на 5 секунд -> выключить зажигание --> отпустить педаль, выждать 2 минуты до включения».

На Зафире тоже просто

На моем пепелаце таким образом сбрасывается только напоминание о ТО.

В конце статьи должна была быть ссылка на СЦ, где делают всё кучеряво, ибо зачем так поверхностно статью писать? Из примеров я не смог сопоставить PIDы, блоки и ответы, хотя и очень тема интересна.Так то можно и канхакером посоветовать проводить анализ данных в свое удовольствие и свободное время.
В конце статьи должна была быть ссылка на

ИМХО
Там таки должна быть отсылка к тому, что: это вам не ардуинка для экспериментов — 1 неверное значение, например, в блоке АБС\курсовой стабилизации\ГУР(ЭУР) и почти наверняка вы в скором времени труп
Вы представляете эту цивилизацию как то, что может разрушить любой случайно залетевший дятел… В то время как в блоке АБС кодируется лишь размер колес и выбор там из малого N значений. В стабилизации можно еще ноль руля закодировать. А в ГУР-е вообще нет никакой электроники.
А в ГУР-е вообще нет никакой электроники.

бывает клапан регулировки усилия, которым эбу рулит в зависимости от скорости авто
грубо говоря можно взять и отключить гур на низкой скорости, что в некоторых авто может быть крайне неприятно
Нет там клапана. Там есть датчик который говорит ЭБУ, что усилие пипец какое — чтоб он более быстро там моментом рулил на низких оборотах…
речь же о ГУРе, он гидравлический и в зависимости от скорости внутри него включается байпас который отключает усиление чтобы руль оставался информативным на скорости

А гидравлическим устройством можно только клапанами рулить ну или насосом (если это троллейбус или чето типа теслы прошлого века)
Вы путаете с ЭУР-ом.
или с ЭГУР-ом (электрически управляемый гидро-насос+обычная гидрорейка).
Никаких «от скорости зависимостей» в обычном ГУР нет! Не чем ему скорость видеть.
ЭГУР…
я говорю как в моей машине это устроено, у меня стоит обычная рейка без электроники, но есть комплектация где стоит такаяже точно рейка но с клапаном которым ЭБУ машины отключает усиление в зависимости от скорости. чето у меня не приходило в голову както отдельно выделять эту конструкцию в отдельный вид усилителей :) хотябы потому что технически они различаются только клапаном лишним проводом из ЭБУ
О какой конкретно машине речь?
У ЭГУР насос электрический — управляемый ШИМ.
конкретной мой автомобиль Chrysler concorde II, но есть комплектация у авто на этой-же платформе, Chrysler 300m, и опция называется «SPEED PROPORTIONAL STEERING GEAR» отличается только наличием дополнительным conrol valve на рейке
==
а делать электронасос у гура смысла не много (не исключая того что такие авто есть), проще эур уж поставить, он гораздо проще конструктивно и гораздо надежнее
Электронасос у гура как раз сделали для экономии потребления энергии в рамках классической конструкции. ЭУР было уже следующим этапом с более мощным двигателем и более мощной системой контроля этого двигателя — а то что у вас похоже есть только у крайслера на трех с половиной моделях и является очередным усовершенствованием классики вместо того чтоб все полностью поменять как в случае с ЭУР, но оно нигде не прижилось — опять же потому что есть ЭУР и остальные схемы почти повсеместно вымерли.
а то что у вас похоже есть только у крайслера на трех с половиной моделях и является очередным усовершенствованием классики

www.aa1car.com/library/2004/bf10434.htm
Вот если почитать тут то остановится понятным что это скорее последние итерации именно классической схемы а не особенности именно крайслера, а электронасос в виде помощи гуру это уже логическое развитие системы дальше
любопытно, с помощью чего подключались к кан шине?? это какой то кан юсб адаптер? видел в продаже MCP2515 я так понимаю это can spi, затем нужен spi-usb конвертер?? или на микроконтроллере с поддержкой can выполнен мост??

Для опытов использовался Lawicel (CAN hacker) протокол на stm32 + tja1051.
Софт на видео работает с J2534 Pass-thru адаптерами и всеми разновидностями ELM327.

Sign up to leave a comment.

Articles

Change theme settings