В данной заметке приведена информация по модификации ucds адаптера, который изначально может работать только с одноименной программой, цель модификации — получить адаптер, который сможет быть использован в разных программах для диагностики шины CAN. Последующая информация может быть интересна как владельцем автомобилей с шиной CAN, так и просто автолюбителям, а нетерпеливые сразу же могут обратиться к концу заметки к готовым вариантам использования адаптера.
Для меня эта история началась, когда мне понадобился CAN адаптер со следующими требованиями:
— не большие размеры, желательно в корпусе OBD2
— два физических канала CAN
— поддержка адаптера в ОС Linux
— цена не больше 50$
С большой долей вероятности, если спросить совета кого-либо о выборе CAN адаптера для подключения к автомобилю, то скорее всего в ответе будет звучать canhacker, но ирония в том, что canhacker-ом называют не определенное устройство и есть как минимум два общеизвестных варианта canhacker-а:
— каноничный или немецкий canhacker это одноименная программа CANHacker версии V2.00.01 за авторством Olaf Berthold, программа и схема для адаптера доступны на сайте www.mictronics.de/posts/USB-CAN-Bus
— российский canhacker это одноименный адаптер и программа от российских разработчиков canhacker.ru
Первый вариант canhacker-а не развивается уже более десятка лет, последняя версия программы была выпущена в 2009 году, но до сих пор эксплуатируется ардуинщиками и-за простоты реализации протокола SLCAN/LAWICEL между программой и адаптером.
Второй вариант развивается, хоть и начинался также с протокола SLCAN/LAWICEL, но в последствии пришел к своему протоколу между адаптером и программой, а также и к своему варианту вендорлока — между программой и адаптером есть проверка идентичности адаптера и программа не будет работать с поддельным адаптером
Мне оба этих варианта canhacker-а не подошли, впрочем как и множество других вариантов адаптеров, имеющихся на рынке, т.к. не удовлетворяли всем моим требованиям. Поэтому я решил попробовать вариант по модификации какого-либо готового CAN адаптера, тем более у меня уже был положительный опыт по модификации Bluetooth OBD2 адаптера.
Поиск по картинкам в гугле с ключевыми словами "STM32/OBD2/USB" вывел на заметку пользователя RED4911 с разобранным ucds адаптером

На фото видно, что на плате ucds адаптера распаяны микронтроллер STM32f105RBT6 и три CAN-трансивера TJA1040, предположительно присутствует разъем для программирования. Надпись на плате говорит что это ucds адаптер версии 3. Разводка дорожек на плате позволяет нарисовать схему адаптера почти полностью только по фото, поэтому я заказал такой адаптер на али.
Купить ucds адаптер можно на али или авито, называется он на этих площадках ucds pro+, стоимость на 2023 год начинается от 1т.р, это около 10$. На авито цены могут быть еще ниже, т.к. часто на авито они продаются уже непригодными для работы с программой ucds.


Немного подробнее про непригодные китайские адаптеры и собственно про сам адаптер. На сайте ucdsys.ru продается адаптер ucds и одноименная программа для диагностики автомобилей Ford, сама программа ucds является альтернативой официальной программе для диагностики автомобилей Ford IDS, но работает программа ucds только со своим адаптером, т.е. тоже вариант вендорлока как и у российского canhacker-а, но только разработчики ucds пошли еще дальше и продают адаптер и программу с минимальным функционалом, а для расширения функционала надо приобрести дополнительную подписку. Т.е. захотел владелец обновить прошивку в блоке, то он долнительно должен заплатить за эту процедуру и т.д.
Не знаю причин, что мешает автовладельцам Ford пользоваться официальной программой Ford IDS, но раз пользуются ucds, то значит "Народу нравится!". Кстати Ford со своей IDS наследил и в официальных сервисных программах как для Volvo Vida так и для JLR SDD, за то время когда владел данными автопроизводителями. Но раз даже бесплатную JLR SDD и инженерные коды для нее, люди умудряются покупать и благодарить продавцов воздуха, то я не удивляюсь и схожей ситуации с Ford.
Возвращаясь к истории с китайскими адаптерам ucds, видимо в какой-то момент времени производство ucds адаптеров было передано в китай, а далее по законам китайского капитализма на али появились ucds адаптеры по стоимости комплектующих и ломанная версия программы ucds в которой уже не надо было никому ничего платить за работу с программой и адаптером ucds. Разработчики ucds с данной проблемой решили бороться методом блокировки китайских адаптеров, так если китайкий адаптер будет подключен к не ломанной китайцами версии программы ucds, то китайский адаптер станет непригодным для работы и в китайской ломанной программе ucds. По этой причине на авито могут продаваться "испорченные" ucds адаптеры, которые уже не пригодны для работы даже с китайской ломанной программой ucds.
После того как заказанный с али адаптер пришел ко мне, при вскрытии его внутри оказалась таже самая плата, что и на фото у RED4911, но с затертыми надписями на микросхемах, но названия микросхем уже известны это STM32f105RBT6 и три CAN-трансивера TJA1040 .

С помощью мультиметра я прозвонил соединения и нарисовал схему, получившаяся схема отличается своей простотой, граничащей с дешивизной. На схеме нет ничего лишнего, сэкономили как на защите от помех для шины USB так и для шин CAN, поэтому о гальванической изоляции не стоит даже и мечтать. В схеме самый минимум элементов: адаптер питается от шины USB, питание 12 Вольт с OBD2 разъема заходит только на вход АЦП, есть 3 светодиода, терминирующих резисторов нет. Так как в микроконтроллере STM32f105RBT6 только два физических CAN интерфейса, третий CAN интерфейс коммутируемый и в один момент времени может использоваться только два CAN интерфейса.
Можно отметить, что в единичном экземпляре сделать аналогичный адаптер самостоятельно за меньшую цену в 10$ просто невозможно, такая низкая цена достигается за счет больших объемов производства, так что по сути китайcкий ucds адаптер на али продается по стоимости комплектующих деталей, чем не грех воспользоваться для своих личных нужд.

Также дополнительным ответным шагом на появление китайских адаптеров помимо блокировки китайских адаптеров ucds ver3 разработчиками ucds был сделан адаптер ucds ver4, чтобы исключить в своей программе поддержку скомпроментированных адаптеров ver3, но если посмотреть на плату этого адаптера видно что разводка, а значит и схема адаптера ver4 не изменились, а был заменен только микропроцессор на STM32F205RCT6.

По схеме видно, что три CAN интерфейса адаптера выведены на OBD2 разъем(на схеме это разъем J4), по распиновке, которая используется в атомобилях Ford. По стандарту на OBD2 разъеме присутствует только один CAN интерфейс на ножках 6 и 14. Автопроизводители могут подключать к свободным выводам OBD2 разъема что угодно, так Ford подключили к стандартным выводам 6,14 — HighSpedCAN, а к свободным выводам 3,11 — MediaSpeedCAN и к свободным выводам 1,8 — MultiMediaCAN. Подключение ucds адаптера в разъем OBD2 автомобиля не марки Ford может привести неожиданным последствиям, т.к. CAN трансиверы подключенные к нестандартным пинам 3,11 и 1,8 на других марках могут создать дополнительные электрические соединения в схеме автомобиля. Поэтому чтобы избежать возможных проблем, можно отломать пины на адаптере, где подключены лишние CAN шины. Так для автомобилей марки JLR можно отломать пины 1,8 на адаптере, тем самым физически отключить третий CAN трансивер от OBD2 разъема, т.к. у автомобилей марки JLR используются только два CAN интерфейса на пинах 6,14 и 3,11, которые совпадают с Ford-овскими. Ну а если отломать пины 1,8 и 3,11 то останется только один стандартный CAN интерфейс и такой адаптер можно подключать к любому автомобилю к разъему OBD2.
Ниже приведена стандартная и Ford-овская распиновки OBD2-разъемов, если смотреть на разъем в автомобиле, распиновка со стороны адаптора будет зеркальной.

Ключевой возможностью по модификации адаптера ucds, да и в принципе почти любого современного устройства является наличие в нем процессора, поменяв прошивку в котором можно поменять и функционал устройства. Так программа на компьютере "общается" с каким-либо USB устройством по определенному протоколу и если заново реализовать такой протокол в адаптере ucds, то можно для программы на компьютере представить ucds адаптер любым желаемым устройством не отличимым от реального.
Т.к. мне нужен был адаптер поддерживаемый в ОС Linux, то из многообразия поддерживаемых CAN адаптеров в ОС Linux, я выбрал для эмуляции CAN адаптера протокол CandleLight/GS, т.к. в этом протоколе поддерживается многоканальность и такой протокол поддерживается в ОС Linux уже более десятка лет: в 2013 году была добавлена поддержка адаптеров GS, а в 2016 году автор CandleLight адаптеров, чтобы не изобретать велосипед в части протоколов использовал протокол GS для своих адаптеров. На данный момент открытой прошивкой, размещенной на github.com/candle-usb/candleLight_fw, поддерживается более десятка различных can адаптеров от разных производителей. Я при реализации протокола GS в своей прошивке подглядывал как на реализацию прошивки в адаптере, так и на ответную реализацию драйвера GS в ОС Linux — это очень удобно, сразу видно общую картину, какие команды посылает ОС при подключении адаптера и что ожидает от него получить.
Для удобства перепрошивки и возможной смены функционала ucds адаптера, прошивка для адаптера разделена на две части: загрузчик(bl) и основная прошивка(main). Загрузчик прошивается однократно через SWD-разъем программирования, например с помощью адаптера ST-Link. Загрузчик работает через USB по протоколу DFU и позволяет обновлять основную прошивку через USB, без необходимости разбора адаптера каждый раз когда надо обновить основную прошивку.
Т.к. каких либо кнопок на адаптере нет, то для смены основной прошивки я задействовал вход АЦП, который подключен к ножке 12В на OBD2 разъеме по следующему алгоритму:
— при подключении адаптера к компьютеру через USB, если присутствует напряжение на входе 12В OBD2, то сразу же без задержек происходит переход к основной прошивке.
— при подключении адаптера к компьютеру через USB, если отсутствует напряжение на входе 12В, то адаптер переходит в режим программирования(DFU) на 5 секунд, а затем если от компьютера не приходят команды для перепрошивки, происходит переход к основной прошивке.
Рабочий процесс получается таким, если адаптер сначала подключен к OBD2 адаптеру, а затем подключается к компьютеру, то он сразу же без задержек готов к работе. А если адаптер подключается только к компьютеру, то на 5 секунд он перейдет в режим программирования(DFU), а затем в основной режим. По моему опыту, за те 5 секунд что адаптер находится в режиме программирования, можно успеть запустить процесс перепрошивки и сменить прошивку в адаптере.
Помимо прошивки с протоколом gs я реализовал еще несколько протоколов, которые можно легко менять перепрошивая адаптер через USB без необходимости вскрытия адаптера.
Исходники прошивки и несколько готовых вариантов прошивок доступны на гитхабе github.com/smartgauges/ucds
Варианты прошивок
gs.bin — реализация протокола CandleLight/GS, в ОС Linux это SocketCan совместимое устройство, в ОС Windows тоже работать с таким адаптером
slcan.bin — реализация протокола LAWICEL, используется в немецком варианте CanHacker
ch.bin — реализация протокола российского CanHacker — работает только 1 минуту, до момента проверки идентичности адаптера
jlrm.bin — минимальная реализация протокола, используемого в адаптере JLR Mongoose, подходит только чтобы установить драйвер для адаптера
ucds.bin — минимальная реализация протокола, используемого в адаптере UCDS, подходит только чтобы установить драйвер для адаптера
Я использую адаптер только с прошивкой gs, а остальные прошивки реализовал из спортивного интереса, но вкратце немного иформации об остальных вариантах прошивок.
В прошивке slcan.bin реализованы два COM порта, которые соответсвуют двум CAN интерфейсам, поэтому на компьютере можно открыть два экземпляра программ немецкого CanHacker и использовать два CAN интерфейса одновременно.
В прошивке ch.bin намеренно подменен секретный ключ, который используется для проверки идентичности адаптера, поэтому программа CAN Analyzer будет работать с ucds адаптером ровно 1 минуту, а c правильным секретным ключем ucds адаптер проходит проверку идентичности и программа CAN Analyzer взаимодействует с ucds адаптером как со своим родным адаптером. Заранее предупреждаю, что я сам алгоритм не ломал, продавать/раздавать ключи я не собираюсь, а алгоритм и секретный ключ мне подсказали, а при желании, кто захочет тот и сам найдет, т.к. ключи есть в публичном доступе.
В прошивках jlrm.bin и ucds.bin сделана минимальная реализация на уровне описания USB устройства, которой достаточно только чтобы можно было установить драйвер для адаптера JLR Mongoose или UCDS и после этого устройство в диспетчере устройств будет отображаться как работоспособное.
Для проверки функционала прошивки и производительности адаптера в режиме gs я использовал простой нагрузочный тест, в дереве исходников он называется test.sh, в тесте на различных скоростях передается 5000 пакетов с различными данными из первого интерфейса на второй с проверкой приема всех пакетов, тем самым полностью загружаются оба CAN интерфейса адаптера и шина USB. Перед запуском теста линии HSCAN адаптера необходимо соединить с линиями MSCAN адаптера и дополнительно нагрузить терминирующим резистором номиналом 60 Ом, т.к. в самом адаптере нет терминирующих резисторов. Сам тест написан на обычном bash с использованием обычных для ОС Linux команд, причем для работы с CAN адаптерами в ОС Linux никаких драйверов или дополнительных программ устанавливать не надо, сразу после подключения адаптера через него можно взаимодействовать с шиной CAN.
В результате теста определяется время передачи данных с контролем приема всех 5000 пакетов, пример работы теста приведен ниже.

Из результатов тестов можно сделать пару интересных выводов:
— адаптер может работать и на скоростях выше 1МБит/сек без потери данных
— данные передаются без потерь и на скорости 2МБит/сек, но с задержками в USB
На скоростях до 1МБит/сек включительно время передачи соответсвует скорости в канале CAN, а на скорости 2МБит/сек уже не хватает пропускной способности шины USB и время передачи не соответсвует скорости в шине CAN.
В целом результаты нагрузочного теста говорят, что адаптер можно использовать, для одновременного чтения двух шин на скоростях до 1МБит/сек включительно и при 100% загрузке в шинах CAN потерь при передаче данных не будет.
Дополнительно я проверил адаптер с gs прошивкой в реальной работе — модифировал изображения в TFT приборной панели, при этой операции в приборную панель через шину CAN загружается файл размером в 1 МБайт(AH42-14C088-BJ.vbf), подробнее о возможностях модификации изображений в TFT приборках есть отдельная заметка о модификации изображений в TFT приборках.
Ниже скриншот из программы предназначенной для прошивки изображений в приборную панель, запущенной в OC Linux, время прошивки файла AH42-14C088-BJ.vbf, размером в 1МБайт, составляет 2 минуты и 23 секунды. Данное время складывается как из времени передачи в шине CAN так и из времени записи данных во внутренний накопитель приборки, поэтому это время больше чем просто время передачи файла по шине CAN размером в 1МБайт.

Обычно сервисно-диагностическое ПО для автомобилей работает исключительно на ОС Windows, а я такую ОС держу только в виртульной машине и меня всегда интересовал вопрос создают ли виртуальные машины дополнительные задержки при диагностике автомобиля. Поэтому я дополнительно проверил работу адаптера с прошивкой gs в виртуальной машине как с ОС Linux так и с ОС Windows, чтобы оценить снижение производитености работы адаптера в виртуальной машине. При включенной эмуляции USB-2.0 в менеджере виртуальных машин VirtualBox наблюдалось падение в производительности в виртуальной машине почти в 10 раз, а при включенной эмуляции USB-3.0 наблюдалось уменьшение в производительности только на скоростях 1МБит/сек и 2МБит/сек примерно на десять процентов. Поскольку общеиспользуемыми скоростями в автомобилях являются скорости 500КБит/сек и ниже, то можно сделать вывод, что использование виртуальных машин не влияет на производительность адаптера и на работу сервисного диагностического ПО.
Дополнительно я сделал замеры для адаптера JLR Mongoose — этот адаптер обычно используется для диагностики автомобилей марки JLR совместно с помощью программы JLR SDD. Взаимодействие с адаптером JLR Mongoose происходит по протоколу J2534, у этого протокола также возможны два варианта: raw — работа с сырыми CAN кадрами и tp — работа с целыми TP/UDS кадрами, замеры были сделаны для обоих вариантов.
Замеры времен по прошивке изображений в TFT приборную панель с различными адаптерами и в разных ОС приведены ниже, по ним видно, что время прошивки изображений с ucds адаптером в режиме gs для ОС Linux и Windows практически одинаково и использование виртуальной машины не оказывает существенного уменьшения в производительности адаптера. А вот время затраченное на прошивку с помощью адаптера JLR Mongoose оказалось почти в 2 раза больше чем у адаптера ucds с gs прошивкой.

Подборка информации по CAN
Раз уже речь зашла о программах для ucds адаптера, то нельзя не упомянуть подборку программ для CAN от doka в этой подборке присутствуют как маленькие программы с открытым кодом, так и такие монстры как программа BusMaster от всем известной компании Bosсh, причем тоже с открытыми исходниками. К сожалению программа BUSMASTER написана на чистом win32api, а в наше время наверное большинство windows программистов не знают что это такое, так что увы для для меня такая программа бесполезна.
Мне нравятся программы с исходным кодом на Qt/C++, за возможность их модификации под свои нужды и запуск таких программ на разных ОС. В этом списке есть программы написанные на Qt/C++, причем есть как функциональные монстры как SavvyCan так и программы попроще, как например Cangaroo.
Cangaroo — это простая программа для отправки и приема CAN сообщений, написана на Qt/C++ исходники доступны на гитхабе. Т.к. эта программа написана на Qt/C++, то она может работать в Windows и Linux, а при желании ее можно заставить работать в MacOs, Android и IOS, т.к. фреймворк Qt поддерживает эти ОС. Я слегка модифицировал программу cangaroo, чтобы она могла работать одновременно с двуми каналами адаптера ucds при использовании прошивки gs, готовая программа для Windows доступна для скачивания с гитхаба: cangaroo.exe, а мои изменения можно увидеть здесь. Функционал программы cangaroo схож с функционалом немецкого canhacker, но только программа cangaroo может работать с различными типами адаптеров, поддерживает расшифровку сообщений из DBC файлов и открыта для модификаций и нового функционала.

Следующая программа в подборке это SavvyCan — это уже программа с большим количеством функционала чем Cangaroo, но также написана на Qt и исходные тексты программы доступны для модификации, чем я и воспользовался, добавив поддержку двух каналов для ucds адаптера с прошивкой gs, мои изменения можно увидеть здесь, а готовая программа для Windows доступна для скачивания с гитхаба: SavvyCan.exe
Краткое описание возможностей программы SavvyCan:
— Поддержка нескольких типов CAN адаптеров
— Графическое и текстовое отображение данных в шине CAN
— Разнообразные сценарии для отправки данных в шину CAN
— Скриптовый язык для гибкого взаимодействия с CAN адаптерами
— Поддержка множества различных форматов файлов захвата CAN данных (Vector, Microchip, CANDo, PCAN, CanHacker)
— Поддержка DBC файлов, для отображения параметров автомобиля в реальном времени из "живых" данных CAN шины
— Поддержка протокола UDS, причем как сканирование, так и декодирование

Причем мои модификации с целью поддержки двух каналов в адаптере, как для программы Cangaroo так и для SavvyCan были сделаны исключительно для ОС Windows, т.к. в ОС Windows отсутствует системная поддержка шины CAN как класса, а взаимодействие с CAN адаптерами производится через костыли типа последовательного порта или WinUSB, для ОС Linux эти модификации не нужны, т.к. gs адаптер в ОС Linux поддерживается на уровне ОС, как одноканальный так и двухканальный.
В данной подборке программ для CAN есть программы и без доступа к исходным кодам, например TSMaster от китайского производителя и в данной программе заявлена поддержка адаптеров GS/CandleLight, но у меня программа TSMaster к сожалению не заработала с ucds адаптером и gs прошивкой. Программа TSMaster просто "зависала" при попытке подключения к ucds адаптеру, а т.к. программа закрытая то как то исправить эту проблему уже не в моих силах.
Спасибо Mustela за проверки uds(gs) адаптера с программой TSMaster, вот что он выяснил:
— TSmaster работает и подключается к адаптеру, только если предварительно подключиться к нему с помощью Cangaroo или SavvyCAN.
— TSmaster не способен изменить параметры адаптера.
Несмотря на отрицательный опыт, я упомянул программу TSMaster, т.к. если судить по заметке www.drive2.ru/b/634393196410973588, то российский автопром переходит с западного софта, например такого как от компании Vector на китайский софт. А когда видишь, что только стоимость адаптеров Vector стартует от нескольких тысяч долларов, то понимаешь куда утекают миллиардные государственные субсидии на поддержку отечественного автопрома, т.к. если даже на инженерном уровне используется оборудование со стоимостью в 100 иксов от возможных альтернатив, то что творится на уровне менеджмента?

Программных и аппаратных проектов в подборке по шине CAN очень много и я думаю, что каждый сможет в ней найти что-то полезное для себя, как для изучения, так и для практических нужд.
Установка драйверов и вспомогательного ПО для ucds адаптера
В отличии от ОС Linux, в которой адаптер с gs прошивкой сразу готов к работе, т.к. драйверы для его работы уже есть в операционке, то в ОС Windows необходимо совершить дополнительные действия чтобы с ucds адаптером можно было работать в данной ОС.
Для адаптера ucds с прошивкой gs, с помощью программы Zadig необходимо установить драйвер WinUSB.

Для адаптера с прошивкой slcan, при поиске драйвера необходимо указать каталог с этим inf файлом.
Для адаптера с прошивкой ch, при поиске драйвера необходимо указать каталог с этим inf файлом.
Для первоначальной прошивки загрузчика bl.bin можно воспользоваться любым адаптером с интерфейсом SWD, например ST-Link/V2 и соответсвующей программой ST-Link Utility. Драйвера для адаптера ST-Link/V2 устанавливаются вместе с программой ST-Link Utility. При подключении все 5 выводов разъема J2 на плате ucds адаптера необходимо соединить с соответствующими выводами адаптера ST-Link/V2, на разъеме J2 вывод №1 квадратной формы, а остальные круглой. При прошивке разъем USB должен быть отключен от компьютера, чтобы питание шло только от адаптера ST-Link/V2.
Родная прошивка адаптера ucds блокирует возможность смены прошивки через интерфейс SWD и возникает ошибка при подключении к контроллеру на плате.

Чтобы осуществить прошивку необходимо соблюсти следующую последовательность действий:
— подключить вывод №3(RST) на разъеме J2 на GND адаптера ST-Link, чтобы контроллер находился в сбросе и родная прошивка не успела заблокировать SWD интерфейс
— нажать кнопку Target->Connect, при этом программа "призадумается" — будет пробовать подключаться к плате, но без вывода сообщений об ошибке
— через пару — тройку секунд отключить вывод №3(RST) от GND адаптера ST-Link, при этом программа ST-link подключится к контроллеру на плате и покажет окно о том что не может прочитать память контроллера т.к. включена защита Read Out Protection
— зайти в Target->Option Byte и отключить Read Out Protection
После этого уже можно спокойно прошить контроллер: нажимаем Target->Connect, затем Target->Programm&Verify и выбираем файл bl.bin и нажимаем Start.
Для обновления прошивки через USB по протокол DFU на ОС Windows можно воспользоваться программой DfuSe, как работать с программой DfuSe можно почитать в этом руководстве: Обновление прошивки через DFU
Оригинальная прошивка для адаптера ucds
В некоторых случаях только что купленный на али адаптер ucds может не работать с китайской же программой ucds, при запуске программы в полях о адаптере отображаются прочерки. В отзывах на али сообщений от таких проблемах 50 на 50.

Для решения этой проблемы я считал оригинальную прошивку из ucds адаптера по методу H3 и немного ее модифицировал. Модификация заключается в удалении кода отвечающего за сброс конечных точек на USB устройстве при запросе CLEAR_FEATURE(STALL) от хоста. После этого китайская программа ucds корректно работает с китайский адаптером и отображается информация об адаптере.

Оригинальная и модифицированные прошивки также доступны на гитхабе и могут быть использованы для возврата к оригинальному функционалу.
Варианты использования ucds адаптера
1. Восстановление оригинальной прошивки
По просьбе разработчиков ucds информация из этого раздела удалена, также с гитхаба удалены оригинальная и модифицированная прошивки из китайского ucds адаптера.
Самостоятельно считать защищенную от считывания прошивку из контроллера STM32Fxx можно по методу H3(более подробное объяснение)
2. Использование совместно с программами по протоколу lawicel (каноничный CanHacker)
— прошить загрузчик bl.bin с помощью st-link адаптера и любой из программ stlink/QStlink2/ST-Link Utility
— прошить прошивку slcan.dfu или
slcan-win10.dfu для win10 и win11 с помощью программы DfuSe
— установить драйвер для сдвоенного COM порта, указав при поиске драйвера каталог с этим inf файлом.
3. Использование совместно с программами Cangaroo, SavvyCAN, TSMASTER
— прошить загрузчик bl.bin с помощью st-link адаптера и любой из программ stlink/QStlink2/ST-Link Utility
— прошить прошивку gs.dfu с помощью программы DfuSe
— установить с помощью программы Zadig драйвер WinUSB для адаптера
— Скачать SavvyCan
4. Использование совместно с программой CAN Analyzer(российский CanHacker)
— прошить загрузчик bl.bin с помощью st-link адаптера и любой из программ stlink/QStlink2/ST-Link Utility
— прошить прошивку ch.dfu с помощью программы DfuSe
— установить драйвер для одиночного COM порта, указав при поиске драйвера каталог с этим inf файлом.
Используемые источники и ссылки:
Подборка информации по шине CAN: github.com/iDoka/awesome-canbus
Реализация протокола GS/CandleLigth: github.com/candle-usb/candleLight_fw
Описание протокола Lawicel: www.can232.com/docs/can232_v3.pdf
Реализация парсера для протокола Lawicel: github.com/tixiv/lib-slcan
Описание протокола для российского CanHacker(Lawicel): docs.google.com/document/…DONt2Rwti_cgk6BYXWdEzf_Uw
Описание протокола для российского CanHacker(Binary): drive.google.com/file/d/1…PqBxrhksOy2ItRrNg21m1xDH_
Плагин GS для Qt/Canbus: github.com/homewsn/candle…w-SavvyCAN-Windows-plugin
Cangaroo: github.com/normaldotcom/cangaroo
SavvyCan: github.com/collin80/SavvyCAN
TSMaster: github.com/TOSUN-Shanghai/TSMaster
Еще один canhacker адаптер: www.drive2.ru/b/523781227145069738/
Альтернативные прошивки для эмуляции VECTOR и PCAN адаптеров: github.com/moonglow
Вывод:
С помощью альтернативных прошивок для ucds адаптера можно превратить ucds адаптер из устройства привязанного к одной программе, а иногда и из неработоспособного адаптера, в адаптер поддерживаемый различными программами для диагностики шины CAN. Для ОС Windows это может быть как классическая программа CanHacker, так и ее более современный и открытый аналог Cangaroo, так и более функциональная программа SavvyCan, а в ОС Linux можно использовать эти же программы или диагностировать автомобиль и перепрошивать ЭБУ с помощью такого ПО как python-can или VBFlasher.
Обновление:
По просьбе разработчиков ucds, оригинальная и модифицированная прошивки удалены с гитхаба.
А т.к. считать закрытую прошивку с контроллера STM32Fxx по методу H3 делов на несколько часов работы, то в удалении конечно нет большого смысла, но раз джентельмены попросили об этом то сделал.
Комментарии 117
Привет. У кого есть ucds-3.5.bin или модифицированная прошивка ucds-3.5-mod.bin можно в личку?
Привет, можеш скнуть ucds-3.5.bin и ucds-3.5-mod.bin . На ноуте не работает приобретенный шнурок на ноуте, на стационарном все ок
Скиньте пожалуйста в личку сток или модифицированный бэкап ucds-3.5-mod.bin
Поделитесь люди добрые прошивочкой хто скачать успел…Закончился шнурок а нужен сейчас как никогда…
Привет) сейчас уже есть синий отлом) не тестил его? Что там по плате и ПО?
Приветствую, я не знаю, что такое синий отлом
ozon.ru/t/lQEKfDN
Дорого, красный адаптер 1т.р. стоит, не думаю что внутренняя начинка синего стоит 5т.р.
Как говорят тут обнова 21 года и больше ключей) красный не шьёт блок адаптивного круиза от Вольво, а синий шьет
Понятно, но я не пользуюсь ucds, мне этот адаптер был интересен как железка,
не вижу принципиальных проблем превратить красный адаптер в синий ))
У кого есть ucds-3.5.bin, и модифицированная прошивка ucds-3.5-mod.bin, если не трудно скиньте мне в лс.Спасибо . Очень нужно для убитого UCDS .
Здравствуйте!
Прежде всего, хочу выразить огромную благодарность автору за проделанную работу и за гениальный подход к модификации адаптера UCDS. Ваша настойчивость и умение разбираться в таких сложных технических вопросах вызывают настоящее восхищение! Это по-настоящему ценный вклад в сообщество автолюбителей и тех, кто работает с CAN-шиной.
У меня есть два китайских адаптера UCDS, которые на данный момент не работают. К сожалению, я не могу их восстановить, так как у продавца нет резервной копии прошивки. Я пытался следовать описанным здесь методам, но, к сожалению, без исходного файла результата не добился.
Если кто-нибудь из участников форума может поделиться резервной копией прошивки, я был бы чрезвычайно признателен. Особенно если это версия, которая решает проблемы с работой в Windows XP, так как это критично в моем случае.
Еще раз выражаю благодарность автору за такой подробный и содержательный пост! Заранее спасибо всем за помощь и понимание.
С уважением,
Оскар
Приветствую, спасибо, но вам лучше обращаться напрямую к людям, кто уже ранее искал оригинальные прошивки, так у вас есть шанс найти оригинальную прошивку, т.к. на ваш комментарий никто не получает уведомление кроме автора заметки
Здравствуйте!
Спасибо вам огромное за ответ и за вашу работу! Ваш вклад действительно бесценен для всех, кто работает с адаптерами UCDS и CAN. Благодаря вам у многих пользователей появилась возможность восстановить нерабочие устройства и расширить их функциональность.
Я попробую найти прошивку, но если не удастся её достать, то буду вынужден попробовать метод H3. Он, конечно, более сложный и требует дополнительных устройств, но, возможно, это единственный выход.
Еще раз спасибо за ваши исследования и за то, что делитесь ими с сообществом!
С уважением,
Оскар
abalinux
Здравствуйте!
Прежде всего, хочу выразить огромную благодарность автору за проделанную работу и за гениальный подход к модификации адаптера UCDS. Ваша настойчивость и умение разбираться в таких сложных технических вопросах вызывают настоящее восхищение! Это по-настоящему ценный вклад в сообщество автолюбителей и тех, кто работает с CAN-шиной.
У меня есть два китайских адаптера UCDS, которые на данный момент не работают. К сожалению, я не могу их восстановить, так как у продавца нет резервной копии прошивки. Я пытался следовать описанным здесь методам, но, к сожалению, без исходного файла результата не добился.
Если кто-нибудь из участников форума может поделиться резервной копией прошивки, я был бы чрезвычайно признателен. Особенно если это версия, которая решает проблемы с работой в Windows XP, так как это критично в моем случае.
Еще раз выражаю благодарность автору за такой подробный и содержательный пост! Заранее спасибо всем за помощь и понимание.
С уважением,
Оскар
Приветствую, удалось найти резервные копии прошивки на китайский UCDS? Забыл отключить от компа, когда пробовал поставить более свежую версию UCDS… В итоге адаптер теперь перестал подключаться к компу, по всей видимости оригинальная прога его завалила.
Здравствуйте! Слетела прошивка UCDS. Может поделитесь ucds-3.5.bin или модифицированной прошивкой ucds-3.5-mod.bin
Прочитал все внимательно и разобрался! Все заработало! Ура! Спасибо тебе добрый человек!
Добрый день! Прошиваю под JLRM, а компютер его не видит! Подскажи что делаю не правильно! Давно заваленый лежит, а так в дело пойдет!
Приветствую, прошивка jlrm не доделанная, в ней минимальный функционал
Все ли китайские копии ucds одинаковы и штампуются на одном станке или же среди них нужно отбирать нужный?
Какай то статистики по адаптерами у меня нет
Подскажите тупому, есть ли вариан перезалить мод прошивка на это чудо изделие без лишних плат и танцами с бубном напрямую подсоеденив к ПК?
Мой учитель говаривал: "ножки бывают у девушек, а у микросхем — выводы" xD
Ага и фрон бывает только один, а не передний и задний🤣
Есть у кого прошивка UCDS 3.5bin ?
Здравствуйте! Слетела прошивка UCDS. Может поделитесь ucds-3.5.bin или модифицированной прошивкой ucds-3.5-mod.bin
Вот это мозг)
GS хорошо работает в Linux. Я использую SavvyCan.
Slcan очень хорошо работает на
Windows.SmartGauges мне очень помог. Я работаю в SavvyCan, Canhacker Germany, Cangaroo.
CH.bin был активен более 1 минуты в русской программе Canhacker, как и сказал SmartGauges.
Протестирована версия 3 (0.9.1)-(0.9.5)-(0.9.17)
Canhacker версии 0.4.10 поддерживает протокол Slcan-Lawicel, поэтому работает без ограничений по времени. Произошла ошибка при отправке сообщения Can — считыватель идентификаторов не работает.
Спасибо SmartGauges.
(Я использую Гугл переводчик)
Спасибо
ManhBuiDuc
GS хорошо работает в Linux. Я использую SavvyCan.
Slcan очень хорошо работает на
Windows.SmartGauges мне очень помог. Я работаю в SavvyCan, Canhacker Germany, Cangaroo.
CH.bin был активен более 1 минуты в русской программе Canhacker, как и сказал SmartGauges.
Протестирована версия 3 (0.9.1)-(0.9.5)-(0.9.17)
Canhacker версии 0.4.10 поддерживает протокол Slcan-Lawicel, поэтому работает без ограничений по времени. Произошла ошибка при отправке сообщения Can — считыватель идентификаторов не работает.
Спасибо SmartGauges.
(Я использую Гугл переводчик)
CH.bin без исправлений не может работать более 1 минуты.
Приветствую, под win7 попробовал поставить Savvycan ваш с патчем под 2 канала, поставил драйвер WinUSB, однако в интерфейсе Savvycan выбираем QTSerialBus — далее gs — и в поле port пустота. Есть идеи что я делаю не так?
Приветствую, а в cangoroo работает?
в 7ке удалось добиться появления путем переименования устройства в gs через zadig, работоспособность пока еще не проверял. cangoroo проверю, отпишусь
SmartGauges
Приветствую, а в cangoroo работает?
cangoroo в win7 интерфейсы видит
Отлично
вообщем потыкал я savvycan и cangoroo в 7ке, из проблем, это то, что отваливается интерфейс (шнурок) приходится перетыкать его и переоткрывать софт, не знаю с чем связано конечно (возможно дрова), а так в целом все работает, спасибо!
Спасибо за обратную связь
Вдруг кому будет интересно, добавил возможность переключения на MM-CAN шину, актуально кто форды ковыряет, всякие моды для sync3 и т.п. когда нужно напрямую в эту шину стучаться.
github.com/smartgauges/ucds/pull/1
Заюзал флаг triple-sampling для включения.
Спасибо, постараюсь в выходные замержить, я правда хотел на место 3-го трансивера запаять lin, но одно другому не помешает )
Подскажите, в какой версии программы CanHacker прошивка ch.bin РАБОТАЛА 1 минуту?
Не знаю, скорее всего актуальная на момент написания заметки
Тогда, как Вы проверяли исходник? Или Вы не проверяли?
Не понимаю вопроса? Я скачал программу, проверил прошивку, удалил программу. Зачем мне знать версию программы?
Знать и помнить, конечно не обязательно. Но с какой версией тестировалось в статье указать наверное надо…
у вас не работает текущая версия CarBUSAnalyzer с прошивкой ch.dfu?
я могу спросить, мне буквально сегодня manhbuiduc написал, что у него эта прошивка работает ровно одну минуту
С версией 0.4 с бинарным протоколом не определяется прогой.
С текущей версией (0.10.4) требует обновить прошивку.
Мне на сайте canhacker.ru предлагают скачать CarBUSAnalyzer-0.9.17.671-r3321-full.exe
drive.google.com/file/d/1…hVoBK8pcO2qzhUFQ14ys/view
Версии 0.10 я не вижу
Вы наверное из другой локации пытаетесь скачать, чем я?
Могу дать ссылку на свежайшую версию.
С Вашей версией заработало…
Большое спасибо.
Спасибо, мне не надо, я не пользуюсь этой программой
Здравствуйте! Кто поделится прошивкой ?
Кто успел скачать ucds-3.5.bin или модифицированную прошивку ucds-3.5-mod.bin, просьба написать мне в лс
Вечер добрый.появилась ли Mod прошивка?можно в личку
CAN Analyzer 0.7 версии работает без ограничений в минуту, но там и прошивку надо править немного.
А ключи от CAN Analyzer свежих версий вы в паблике видели? я чет потыкался и не нашел, был спортивный интерес через x64dbg свежую версию от жадности избавить)
Я этим софтом не пользуюсь и не отслеживаю версии, поэтому не знаю о ключах. Смысл заметки в том, что если жаба душит, то можно пользоваться бесплатным и открытым софтом, а не в том, как бесплатно пользоваться чужим софтом
полностью поддерживаю, никакого коммерческого интереса, тупо спортивный. спасибо за ваш труд
Респект за такой разбор, сам юзал платку CANable с candlelight для всяких экспериментов, очень удобно представление в линуксе просто как сетевой интерфейс, без всяких заморочек с slcan. А тут прям подарок — в корпусе, на все три шины и добрый человек уже прошивку сделал.
У самого куга2 и стало интересно потыкать заодно софт UCDS, но судя по всему та китайская версия старая и имеет по этой машине ограниченный функционал очень.
Интереса ради решил попробовать те бинарники ucds-3.5.bin и ucds-3.5-mod.bin что в репозитории лежат, но немного не понял, они все по 256к, но на адаптере распаян STM32F105RBT6 у которого 128к флеша, наугад попробовал залить просто первые 128к, но софтина рисует все прочерки даже на -mod версии. Да и смотрю там какие-то данные лежат во второй половине файла.
Приветствую, спасибо, прошивать надо полностью все 256кб, во второй половине памяти как раз кредиты. По факту в этих чипах 256кб, но производитель гарантирует только 128кб
Ахтыж вон оно как, консольная st-flash ругалась на размер, а stm32 cube programmer зашил все. Что занятно в моем конкретном случае просто ucds-3.5.bin работает, а ucds-3.5-mod.bin как раз рисует прочерки.
Вспоминаю аналогично где-то в этой же серии был запрятан "не гарантированный" USB контроллер ))
У меня винда в виртуалке и в виртуалке заработала только мод прошивка
Занятно, а что за сетап в виртуалке? У меня просто UCDS не запускался в виртуалбоксе с вин10, я подумал что это защита от запуска в виртуалке.
Virtualbox+winxp
iGloooM
Респект за такой разбор, сам юзал платку CANable с candlelight для всяких экспериментов, очень удобно представление в линуксе просто как сетевой интерфейс, без всяких заморочек с slcan. А тут прям подарок — в корпусе, на все три шины и добрый человек уже прошивку сделал.
У самого куга2 и стало интересно потыкать заодно софт UCDS, но судя по всему та китайская версия старая и имеет по этой машине ограниченный функционал очень.
Интереса ради решил попробовать те бинарники ucds-3.5.bin и ucds-3.5-mod.bin что в репозитории лежат, но немного не понял, они все по 256к, но на адаптере распаян STM32F105RBT6 у которого 128к флеша, наугад попробовал залить просто первые 128к, но софтина рисует все прочерки даже на -mod версии. Да и смотрю там какие-то данные лежат во второй половине файла.
Здравствуйте, уважаемые участники!
У меня есть два китайских адаптера UCDS, которые в настоящее время не работают. К сожалению, продавец не предоставляет прошивку.
Хотел бы спросить, есть ли у кого-то резервная копия прошивки, которая может помочь вернуть адаптеры к жизни. В идеале, если у вас есть версия, которая решает проблемы работы в Windows XP, это было бы замечательно, но мне подойдет любая прошивка — как оригинальная, так и модифицированная.
Буду очень признателен, если кто-то сможет помочь!
С уважением,
Оскар
Здравствуйте! Слетела прошивка UCDS. Может поделитесь ucds-3.5.bin или модифицированной прошивкой ucds-3.5-mod.bin
У кого есть ucds-3.5.bin, и модифицированная прошивка ucds-3.5-mod.bin, если не трудно скиньте мне в лс.Спасибо . Очень нужно для убитого UCDS .
Приветствую, если не трудно поделитесь прошивкой UCDS 3.5 bin
Baum62
У кого есть ucds-3.5.bin, и модифицированная прошивка ucds-3.5-mod.bin, если не трудно скиньте мне в лс.Спасибо . Очень нужно для убитого UCDS .
Вечер добрый, поделитесь прошивкой в личку у кого есть))
Комментарий удалён
Приветствую, да, нет
Огромное спасибо!
Теперь у меня есть еще один удобный девайс для работы с CAN-шиной!
Привет. Кто успел качнуть, поделитесь плз.
Подскажите пожалуйста, возможно ли данным адаптером после модификации вообще активировать круиз контроль на Ford Focus 3 дорест ?
Будет ли этот адаптер видеть программа Focccus например
Приветствую, к сожалению не подскажу, я не пользуюсь такими программами и в конфигурации Фордов я не специалист
Комментарий удалён
Зачем?, этих сниферов уже как грязи
Кто успел скачать ucds-3.5.bin или модифицированную прошивку ucds-3.5-mod.bin, просьба написать мне в лс
Если у кого есть скиньте пожалуйста мне тоже. Валяется как раз такой нерабочий шнурок
AlexKanivets
Кто успел скачать ucds-3.5.bin или модифицированную прошивку ucds-3.5-mod.bin, просьба написать мне в лс
доброго времени. и я не отказался бы мерси
AlexKanivets
Кто успел скачать ucds-3.5.bin или модифицированную прошивку ucds-3.5-mod.bin, просьба написать мне в лс
И мне, плиз.)
AlexKanivets
Кто успел скачать ucds-3.5.bin или модифицированную прошивку ucds-3.5-mod.bin, просьба написать мне в лс
Если есть поделитесь прошивкой.
AlexKanivets
Кто успел скачать ucds-3.5.bin или модифицированную прошивку ucds-3.5-mod.bin, просьба написать мне в лс
я бы тоже хотел попробовать свой восстановить.
Если кто поделиться, буду благодарен. Тоже шнурок валяется
AlexKanivets
Кто успел скачать ucds-3.5.bin или модифицированную прошивку ucds-3.5-mod.bin, просьба написать мне в лс
Если есть возможность, поделитесь прошивкой UCDS 3.5bin
Не могу написать в лс
AlexKanivets
Кто успел скачать ucds-3.5.bin или модифицированную прошивку ucds-3.5-mod.bin, просьба написать мне в лс
Если кто поделился бы, был бы благодарен.
AlexKanivets
Кто успел скачать ucds-3.5.bin или модифицированную прошивку ucds-3.5-mod.bin, просьба написать мне в лс
Поделитесь плиз, в личку ucds-3.5.bin и ucds-3.5-mod.bin. Заранее благодарен.
AlexKanivets
Кто успел скачать ucds-3.5.bin или модифицированную прошивку ucds-3.5-mod.bin, просьба написать мне в лс
Здравствуйте, уважаемые участники!
У меня есть два китайских адаптера UCDS, которые в настоящее время не работают. К сожалению, продавец не предоставляет прошивку.
Хотел бы спросить, есть ли у кого-то резервная копия прошивки, которая может помочь вернуть адаптеры к жизни. В идеале, если у вас есть версия, которая решает проблемы работы в Windows XP, это было бы замечательно, но мне подойдет любая прошивка — как оригинальная, так и модифицированная.
Буду очень признателен, если кто-то сможет помочь!
С уважением,
Оскар
Подскажи пожалуйста, правильно ли я понял:
чтобы прошить загрузчик, необходимо адаптер ST Link соединить выводами к к контактам платы (j2)? этот разъем j2 на плате это 5 отверстий? как понять их нумерацию?
Приветствую, да верно, 5-и пиновый разъем, 1 вывод квадратной формы, а остальные круглой. Надо будет картинку добавить для ясности
Wowchi-K
Подскажи пожалуйста, правильно ли я понял:
чтобы прошить загрузчик, необходимо адаптер ST Link соединить выводами к к контактам платы (j2)? этот разъем j2 на плате это 5 отверстий? как понять их нумерацию?
Привет, удалось разобраться с пинами и прошить?
Да, давно уже)
А можешь схемкой поделиться?)
Так с последними дополнениями автора стало ж всё понятно как прошивать. У меня получилось. Не с первого раза конечно. Но в целом осилил.
А, подскажите, доступный и безопасный вариант подключения для JLR, плюс программу же надо скачать? Какую связку использовать?
Приветствую, посмотрите здесь
www.drive2.ru/b/617122067761883014/
Я на пост попал случайно, ничего в этом не понимаю и вообще боюсь что-либо самостоятельно из таких вещей к машине подключать. Но за пост респект, здорово, что делитесь знаниями!
Очень нравятся ваши посты. Спасибо!
Спасибо
Блин как раз хотел на 105 камне сделать под фришный канхакер. А тут сразу в корпусе, хорошая идея. Только все линии питаются от LDO, в целом особых вычислений не будет.
Посмотрите подборку, там больше десятка разных готовых адаптеров, в том числе и открытыми схемами и платами готовыми для производства
Как обычно, респект и уважуха за распространение знаний!
Правильно понимаю, что ucds на китайских адаптерах трет прошивку? И чтобы его оживить, достаточно прошить загрузки и далее по Вашему тексту?
Не совсем трет, слегка модифицирует, но так что они перестают работать с ломанной версией. А далее два варианта: можно прошить либо оригинальную прошивку либо альтернативную. Оригинальную ucds прошивку можно считать с нового ucds адаптера
Подскажите на китайском UCDS разве не заблокироан загрузчик ? При считывании разве не затирает прошивку?
Приветствую, в адаптере на процессоре установлена защита от считывания прошивки, поэтому программатором родную прошивку не считать.
Но родная прошивка легко считывается другим способом:
github.com/CTXz/stm32f1-picopwner
Ничего себе. Жалко малинки под рукой нет у меня. А дампа у Вас случайно нет? Интресно на железе 1.27 реально запустить версию 2?
Если честно ничего не понял, причем тут малинка? Что за железо 1.27? Что за версия 2?
Вы ж мне скинули ссылку: подключить STM32 к плате Raspberriy Pi и вытянуть дамп так? UCDS адаптер версии 1.27.001 возможно запустить на версии 2.0?..
Ааа, понял, использование малинки в этом месте не принципиально, поэтому скинул первую попавшуюся ссылку, можно хоть руками прерывать питание.
Вот блин. лежит канхакер купленый много лет назад.раз в пару месяцев достаю. а тут прочитал и ради спортивного интререса еще и ucds пришлось заказать))) одни разорения блин)))
У меня нет канхакера, но он бы у меня тоже лежал ), т.к. не это не универсальная херня, разрабы канхакера могли бы добавить в канхакер j2534, тогда бы он мог заменить мангуста для jlr, vcds-адаптер для vag т.д. И было бы одно устройство и для хакинга и для диагностики, а так да одни разорения )
> Поэтому чтобы избежать возможных проблем, можно отломать пины на адаптере, где подключены лишние CAN шины.
Не вижу особо больших проблем. TJA1040 допускает на своих ногах -27.+40 вольт, входное сопротивление — полсотни кОм.
Ну это если софтина не будет пытаться туда что-то передавать, конечно :-)
Я подумал, что лучше перестраховаться и предупредить, чтобы не втыкали все подряд в свой автомобиль.
Вопросы по ОС Linux задать могу?
Да
Честно, прочитал всё от первого до последнего слова, восхитился, но половину не понял)) стараюсь познать этот дивный мир 😁
Старался по простому написать, если что-то непонятно, то напишите, постараюсь дополнить или переформулировать
Шикарно. спасибо 👍
У меня слов нет. Вы вообще отдыхаете когда нибудь)) по моему опыту, то что вы делаете требует просто страшного количества времени
Спасибо, если честно года полтора заметка была в черновиках, лень было закончить )
Знакомая тема))