хм. а как ты брутфорсишь? перебор и каждый раз просмотр картинок? или есть какой-то флажок? вот любопытно, если продолжать увеличивать этот байт в середине на единичку - контрольный код так и будет продолжать уменьшаться? то есть отправлять в качестве значения напряжения 9f (crc будет 2e), a0 (будет 2d)? а если менять не этот байт, а соседний? увеличить лямбду - не 17, а 18 - контрольный код тоже уменьшится на единичку?
Я вбиваю в контроллер нужную мне последовательность а он сам брутфорсит контрольный байт, а прога подхватывает данные когда он нужный проскакивает. Но как отследить какой он в тот момент я пока не придумал, разве что кнопку прилепить и по нажатию кнопки менять байт контрольной суммы. Пока все выглядит вот так.
а можешь, если не сложно, побрутфорсить (в скобках пишу предполагаемый crc): >CA110000.>AC11 00 64 7A FF 17 9F 8 1 C8 C8 9A 8 0C7 00 0A 00 86 (2E) >CA110000.>AC11 00 64 7A FF 17 a0 8 1 C8 C8 9A 8 0C7 00 0A 00 86 (2D) самое интересное начинается, когда пробую увеличить значение до ff - и вот тут любопытно увидеть crc >CA110000.>AC11 00 64 7A FF 17 ff 8 1 C8 C8 9A 8 0C7 00 0A 00 86 (CE???) или 71? или 93? а еще crc для >CA110000.>AC11 00 64 7A FF 17 fe 8 1 C8 C8 9A 8 0C7 00 0A 00 86 (???) >CA110000.>AC11 00 64 7A FF 17 fd 8 1 C8 C8 9A 8 0C7 00 0A 00 86 (???) и для >CA110000.>AC11 00 64 7A FF 17 ff 8 2 C8 C8 9A 8 0C7 00 0A 00 86 (???) если не сложно. по первым страницам лога там реально идет вычитание (xor дает такой же результат?)
сравнил последовательности из двух разных посылок. вычел побайтово одну из другой. сложил полученные значения. сделал xor этой суммы и crc одного из байтов - получил crc второго байта. предлагаю сбрутфорсить crc для нулевого значения и для всех единичек)
а почему без проверки пакета по crc это несерьезно? там такое crc что особой роли не играет (после поверхностного ознакомления с алгоритмами crc) даешь софтину-показывалку для андроида! у меня нет k-line адаптера. а если будет - то не будет виндовз-ноута с батарейкой. зато у меня есть mega8 и tiny85. есть hc05. и даже elm-bluetooth (в котором вроде бы есть нечто подобное). вот интересно, можно ли с этими активами разузнать версию лискара? а увидеть основные значения датчиков?
Вы были правы в отношении контрольной суммы, при нулях и единицах там прокатывает любое значение, да и при других значениях подходит по несколько штук из диапазона байта (на него можно забить). Под андроид не пишу, планировал на авр и дисплее слепить бортовик, но у меня пропал интерес когда увидел что горючка там считается через жопу, я только из за этого параметра все и замутил. На ардуине у меня не получилось связаться, в ней настройка UART не такая как нужно, а библиотеку ковырять не хочется. Я эмулятор на меге8 лепил.
а как там считается горючка? (через жопу?) я так понял, одна из метод - подключить бортовик к одной из форсунок. потом допускают, что все форсунки открываются на одинаковое время и имеют одинаквую производительность. не знаю, учитывают ли при этом лаги. ну и дальше обычная арифметика. мне все эти открытия интересны, чтобы можно было с андроида хотя бы в диагностических целях смотреть показания датчиков. устанавливаю андроид студию, читаю тюториалы) а какая нужна uart, какой нет в ардуине? у меня надежда на elm327. подать на него питание и найти/подключить пин, который k-line (вроде есть там такой) - к лискару. а потом коннектится с андроида к нему. кэшно, на столе иметь всё это безобразие куда удобнее, чем проводить эти эксперименты в авто. пока что задача из двух частей: убедиться в работоспособности решения через elm (хотя бы просто терминалом) + сделать простенькую смотрелку на андроиде, которая будет парсить 17 байт (или сколько там) я так понимаю, достаточно эти запросы пару раз в секунду отправлять и ловить ответ от эбу...
Горючка читается тупа посылается байт равный типа текущему расходу а в проге эти байты суммируются, но не учитываются обороты, а скорость обмена фиксированная, т.е. считает полную лажу (даже не учитывается попал байт в прогу или нет). Правильно было бы брать сигнал с открытия форсунок (время) и учитывать разность давлений. Из этого вычислять сколько ливануло бенза. На счет ЕЛМ я сомневаюсь, там какой то не совсем чистый к-л. много микрух напихано в него. лискар работает по асинхронному протоколу 8 бит данных, 2 стоп бита, без контроля четности. Т.к. ардуина не завязалась я подозреваю что там другой режим работы, а кроме скорости там поменять ничего нельзя не расковыривая библиотеки. Попробуй елмкой я с ней не заморачивался, хотя она у меня валяется и проводная и блютуз. Именно так. Шлешь эту последовательность: >CA110000(0x0D) (в ascii) в конце обязательно 0x0D, в ascii нема такого символа это возврат картки, после этого назад возвращется пакет с данными: >CA110000(0x0D)>AC1100647AFF179E81C8C89A80C7000A00862F(0x0D), все в ascii кроме возврата каретки.
ну, осталось придумать план эксперимента. найти провод из ЭБУ, найти пин в obdii адаптере. придумать, чем отправлять и принимать, и, наконц, пробовать! а вот как узнать версию прошивки - не ясно...
парсинг строчки более-менее сделал. осталось добавить блютус и тестировать. и тут всплывают тонкости. про k-line, якобы требующий специальной последовтельности инициализации. то ли это всё возлагается на k-line адаптер (и весь обмен идёт прозрачным образом), то ли это необходимо предусматривать в проге (с этой точки зрния интересно увидеть sniffed data в самом начале работы) энивей, если купить мастеркитовский адаптер и к нему подцепить hc05 - думаю, я близок к работоспособному варианту. если же пробовать с elm327 (что для меня интереснее), то тут хз как быть. сначала его нужно наинициализировать, а потом то ли слушать данные, то ли отправлять запросы... причем как я понял, работа смартфона с адаптером идёт на одной скорости, а работа адаптера с ЭБУ может осуществляться на другой скорости... я вот тут читал http://theksmith.com/software/hack-vehicle-bus-cheap-easy-part-1/ там и ссылки на спецификации elm есть..
Дружище, разобрался? Похожая проблема нарисовалась. Лискар продиагностировал, всё Ок. На всякий случай поменял "лямбду", бегунок, крышку трамблёра, свечи, топливный фильтр(слава Богу всё это было как бы в запасе) - но ни чего не меняется. Бензонасос тоже почти не так давно менял но давку не замерял . Дефект плавающий, что и больше всего напрягает. У ноутбука батарея сдохла, поэтому возить с собой и ждать когда начнёт тупить и дёргаться возможности пока нету. А так бывает не плохо едет и работает как часики на ХХ, но потом вдруг в движении начинает тупить и разгоняться с поддёргиваниями. Как будто с ручника не снялся. Потом резко как будто турбина подхватит, и едет нормально. Потом опять тупить начинает. Но даже когда тупит на разгоне, всё равно едет. Сегодня до 220 по спидометру разогнал, но с поддёргиваниями и подтупливаниями. Уже и не знаю , грешу тоже на зажигание. Да, ещё заметил сегодня когда по трассе давил, что когда тупить начинает, выключаю зажигание и опять завожу,и какое то время опять едет нормально и не тупит и не дёргается. Но не долго, а потом опять тупит и поддёргивается. Что за х...я???
я уже в старой теме писал про это-сначала все лето подергивала при разгоне.потом в сырую погоду однажды выехал просто заглохла через 300 метров и все.я что только не менял-и датчик температуры и провода и катушку-потом когда выкрутил свечи и движок покрутил ,то увидел что там льет как из ведра-так и гидроудар можно схватить.Отвезли ЭБУ в лискар-Алексей там главный поставил его к себе на свою сотку вместо своего-у него тоже не заводилась на моем блоке управления .Он сказал что подгорело что то там-дал мне другой блок.Я его поставил и езжу уже около 3 лет нормально.Сказал такое бывает редко на небольшом проценте блоков.
Братцы, подскажите почему "лямбда" при сбросе газа на показании 0.0 на несколько секунд подвисает. Может ли из за этого машина тупить и дёргаться?