
Привет!
Когда-то в далеком 2013 году на aIiexpress, я приобрел китайский адаптер ELM327 Mini и уже в наши дни, не смотря на наличие адаптера HEX-USB+CAN для VCDS/ВАСЯ, решил полностью разобраться с его устройством и возможностями.
Из Китая адаптер пришел с прошивкой Bluetooth выдающей имя адаптера как OBDII с MAC адресом 11:22:33:DD:EE:FF и паролем 1234.
Какие программы поддерживают этот адаптер? Из опробованных мной:
1. Car Scanner ELM OBD2 — мониторинг OBD2 параметров, изменение кодировок, адаптаций, параметрирование, чтение ошибок блоков и запуск тестов исполнительных механизмов.
2. VAG DPF мониторинг состояния сажевого фильтра — незаменимый инструмент для владельцев автомобилей VAG с дизельным двигателем
3. Deep OBD — диагностика автомобилей BMW и VAG (протоколы KPW2000, KWP1281 и TP2.0)
4. ForScan диагностика автомобилей Ford
5. ELMScan Toyota — Профессиональная диагностика автомобилей концерна Toyota (Toyota / Lexus / Scion) японского, американского, европейского и тайского рынков, выпущенных с 1998 по 2010 годы.
5. Torque Pro — мониторинг OBD2 параметров
6. Carista — изменение кодировок и адаптаций блоков на автомобилях разных брендов
Проблемы замеченные во время использования адаптера который мне достался
1. При прекращении приема/передачи данных между адаптером и подключенными к нему приложениями, соединение bluetooth зависало и приходилось отключать/включать bluetooth на смартфоне и соединяться повторно.
2. Считывание данных программами работало подозрительно медленно.
Проверка реально поддерживаемых AT команд
Китайские адаптеры ELM327 с aIiexpress, обычно приходят с фейковой прошивкой ELM327 v1.5, отрабатывающей не все AT команды корректно. Поэтому в обязательном порядке, адаптер необходимо проверить в ELMScan Adapter Validator.
На момент написания данной записи я об этом приложении не знал и использовал ELM327 Identifier by Daaren Fonloil.
Слева заводская китайская прошивка ELM327 v1.5 версии 2013 года, а справа прошивка с открытым исходным кодом Deep OBD ELM327 v1.5. Спасибо автору Ulrich Holeschak за предоставленный скриншот:

Обе прошивки как и положено, выдают строку версии ELM327 v1.5 и поддерживают наборы AT команд ELM327 v1.4. Какие AT команды доступны в какой версии прошивки ELM, можно посмотреть в AT_Commands_Table, а историю версий в официальном руководстве к самой актуальной версии прошивки ELM327 v2.3
Ищем причину зависания bluetooh после прекращения активности
Для этого я установил Serial Bluetooth Terminal для Android.
После соединения, с адаптером по bluetooth, я ввел в терминале команду ATPPS, выдающую конфигурацию хранящуюся в eeprom чипа. Оказалось, что информация частично теряется:
>ATPPS
00:FF F 01:FF F 02:FF F 03:32 F
04:01 F 05:FF F 06:F1 F 07:09 F
08:FF F 09:00 F 0A:0A F 0B:FF F
0C:68 F 0D:0D F 12:FF F 13:32 F
14:FF F 15:0A F 16:FF F 17:92 F
18:00 F 19:28 F 1F F
1C:FF F 1D:FF F 1E:FF F 1F:FF F
20:FF F 21:FF F 22:FF F 23:F00 F 27:FF F
28:FF F 29:FF F 2A:38 F 2B:02 F
2C:E0 F 2D:04 F 2E:80 F 2F:0A F
А неискаженный список должен выглядеть так:
00:FF F 01:FF F 02:FF F 03:32 F
04:01 F 05:FF F 06:F1 F 07:09 F
08:FF F 09:00 F 0A:0A F 0B:FF F
0C:68 F 0D:0D F 0E:9A F 0F:FF F
10:0D F 11:00 F 12:FF F 13:32 F
14:FF F 15:0A F 16:FF F 17:92 F
18:00 F 19:28 F 1A:FF F 1B:FF F
1C:FF F 1D:FF F 1E:FF F 1F:FF F
20:FF F 21:FF F 22:FF F 23:FF F
24:00 F 25:00 F 26:00 F 27:FF F
28:FF F 29:FF F 2A:38 F 2B:02 F
2C:E0 F 2D:04 F 2E:80 F 2F:0A F
ПОЛЕЗНО ЗНАТЬ! F после значения каждого байта, говорит о том, что в китайской прошивке ELM327 v1.5, все параметры неактивны.
Подключившись к ELM327 Mini с ноутбука через встроенный bluetooth адаптер, при помощи putty, в ответ на ввод ATPPS выдавался тот же искаженный список выше и также подвисал bluetooth после прекращения активности.
Разборка адаптера для исследования
Крышка адаптера удерживается 4-мя защелками изнутри. Чтоб к ним добраться, я снял наклейку с одной стороны и используя отвертку и подсветку фонариком, проковырял отверстия в местах где эти защелки находятся:

Оказалось достаточно поддеть только эти две защелки и крышку удалось стянуть:

Адаптер сделан в виде гамбургера, состоящего из двух двусторонних плат, соединенных между собой запаянными штырьками по 8 штук с двух сторон. К верхней плате припаян bluetooth модуль EC04.
Задействованные контакты OBD2 разъема:


Распаяны и подписаны контакты 2, 4, 5, 6, 7, 10, 14, 15, 16 OBD2 разъема, что подтверждает поддержку шин J1850, KL-line и CAN

ПОЛЕЗНО ЗНАТЬ! Оригинальный чип ELM327L, это ничто иное, как микроконтроллер PIC18F25K80:

В китайские ELM адаптеры в целях удешевления себестоимости адаптера, вместо PIC18F25K80 часто ставят что угодно, но мне повезло — здесь стоит оригинал Microchip PIC18F25K80 Enhanced Flash Microcontroller with ECAN™ XLP Technology, имеющий на борту Flash для прошивки объемом 32 Кбайт, память для обработки данных 3 Кбайт, EEPROM 1 Кбайт и встроенный контроллер CAN 2.0B.
Наличие буквы F в маркировке означает что микроконтроллер перепрограммируемый, а не с однократной записью. ПОЛЕЗНО ЗНАТЬ! Если вам вместо PIC18F попался чип-капля, возможно это перепрограммируемый STM32.
Справа находится AMS1117 3.3 преобразующий 5 в 3.3 вольт для питания bluetooth модуля. Слева кварц на 4МГц — мелочь, а приятно, так как он опционален даже на оригинальном адаптере.
ПОЛЕЗНО ЗНАТЬ! Не смотря на то, что PIC18F25K80 может работать на частоте до 64МГц, в данном адаптере он работает на частоте 4МГц, для обеспечения стабильности таймингов на шинах KL-line, CAN и J1850. Не смотря на то, что чип умеет работать с CAN шиной на скорости 1 Мбит/с, прошивка ELM327 поддерживает максимальную скорость 500 Кбит/с.
Смотрим с другой стороны:

Слева спрятался 78M05 преобразующий входное напряжение с 16-го контакта OBD2 разъема в 5 вольт. Справа от него, находится приемо-передатчик (трансивер) CAN шины Microchip MCP2551I, где I — индустриальная версия с температурами от -40 до +85°C.
Справа в углу, выглядывает регулятор напряжения WS LM317LZ в корпусе TO-92, используемый в обвязке шины J1850 Bus+.
На верхней плате имеется три светодиода:

Красный индикатор питания (на схеме L5) загорается и постоянно горит при подключении адаптера к OBD2 разъему.
Зеленые светодиоды прием/передача (на схеме L2 и L4), подключены к контактам 27 (OBD Rx LED — диод слева) и 25 (RS232 Rx LED — диод справа) микроконтроллера PIC и мигают, когда он принимает данные от ЭБУ автомобиля и/или bluetooth адаптера.
Используя принципиальную схему оригинального адаптера ELM327L из официального руководства OBD to RS232 Interpreter ELM327L v2.3

и мультиметр, я составил таблицу соединений выводов PIC18F25K80 (ELM327L) с точками соединения на платах:
1 MCLR -> резистор 10кОм -> Vdd
-> MCLR пин на верхней плате
2 Vmeasure -> согласно принципиальной схемы
3 J1850 Volts -> согласно принципиальной схемы
4 J1850 Bus+ -> согласно принципиальной схемы
5 Memory -> Vdd
6 Baud Rate -> уходит в металлизированное отверстие, ведущее под модуль bluetooth. Из-под модуля bluetooth, дорожкой уходит во второе металлизированное отверстие, ведущее обратно :) Оттуда дорожка ведет куда-то, где при подаче питания на OBD2 разъем, присутствует напряжение 3,3 вольт.
7 LFmode -> Vss
8 Vss -> GND
9 XT1 -> согласно принципиальной схемы
10 XT2 -> согласно принципиальной схемы
11 VPW In -> согласно принципиальной схемы
12 ISO In -> согласно принципиальной схемы
13 PWM In -> согласно принципиальной схемы
14 J1850 Bus- -> согласно принципиальной схемы
15 IgnMon/RTS -> Vdd
16 PwrCtrl/Busy -> NC
17 RS232 Tx -> резистор 220 Ом -> Tx на плате EC04 (bluetooth)
18 RS232 Rx -> резистор 220 Ом -> Rx на плате EC04 (bluetooth)
19 Vss -> GND
20 Vdd -> контакт +5 вольт на 78L05 SOT-89
21 ISO K -> согласно принципиальной схемы
22 ISO L -> согласно принципиальной схемы
23 CAN Tx -> согласно принципиальной схемы
24 CAN Rx -> согласно принципиальной схемы
25 RS232 Rx LED -> резистор 680 Ом -> зеленый светодиод справа
26 RS232 Tx LED -> NC
27 OBD Rx LED -> резистор 680 Ом -> зеленый светодиод слева
-> PGC на верхней плате
28 OBD Tx LED -> PGD на верхней плате
ВАЖНО! Разработчики данного китайского адаптера, соединили вывод TX PIC имеющий уровень 5 вольт с выводом RX модуля bluetooth имеющим уровень 3 вольт, через резистор 220 Ом, без понижения напряжения.
Контакты для программирования PIC
При помощи мультиметра, контакты для программирования PIC, нашлись на штырьках соединения верхней платы, слева от антенны bluetooth модуля:

Исследуем bluetooth модуль
Он построен на чипе СС2562F256 и EEPROM T24C128A объемом 16Кбайт.
Даташит на СС2562F256 найти не удалось. Буквы TI намекают на Texas Instruments, но на самом деле это неизвестный китайский клон.
Поиск в google подсказал, что данный bluetooth модуль называется EC04-B (также известный как EDPA) и был задуман как удешевленная альтернатива модулю BC04 (BlueCore 4) компании CSR.
Пытаясь найти обновленную прошивку, я обратился в интернет магазин где его продают, но мне ответили, что никаких прошивок у них нет и модуль отлично работает. Таким образом мне однозначно дали понять, что покупка нового EC04-B для замены неисправного, не имеет смысла, ведь обновленной прошивки под него нет, а на заводской (по крайней мере у меня) он виснет.
Покупка TTL адаптера для подключиться к bluetooth модулю через контакты TX/RX
Введя в строку поиска на aIiexpress USB TO TTL FT232RL и используя сортировку по цене и бесплатной доставке, я приобрел первый попавшийся, самый дешевый адаптер.
Это универсальное устройство, умеет быть TTL адаптером, SPI программатором bluetooth модулей BC03, BC04, HC05 и даже SPI программатором ATmega162 (заменяет USBasp):


Не смотря на дешевизну, адаптер имеет джампер (перемычку) выбора уровней выходных сигналов и целых три красных светодиода. Cправа от чипа расположены светодиоды TX и RX, а в правом верхнем углу, индикатор питания.
После получения TTL адаптера, я первым делом, скачал и поставил официальные драйвера с сайта FTDI CDM v2.12.28 WHQL Certified, которые больше не кирпичат фейковые китайские чипы FT232RL, как это было раньше.
Далее проверил чип FT232RL в MProg:

Неизменяемый EEPROM и серийный номер A50285BI, подтвердили фейковость чипа. Несмотря на это, судя по качеству шлифовки индексной метки чипа, клон качественный.
Отпаиваем bluetooth модуль EC04 от платы для проверки
Прошивка bluetooth модуля EC04, общается с PIC на скорости 38400 бит/c и эта настройка хранится в EEPROM T24C128A.
Подключившись к отпаянному EC04 TTL адаптером c джампером в положении 3V, установив в putty скорость 38400 и подав питание на модуль, я увидел в терминале строку с версией прошивки: BOLUTEK, SPP V1.1
ВАЖНО! Прошивка bluetooth модуля ожидает команды, имеющие CR+LF символы как завершение строки и переданные одним пакетом. Для настройки этого в Putty, необходимо войти в Change Settings…>Terminal и включить опции: "Implicit LF in every CR", "Local echo Force on" и "Local line editing Force off". Как альтернативу, можно использовать HTerm, в котором такое поведение включено по умолчанию.
Так как эти все нюансы во время теста я не знал, проверить реакцию bluetooth модуля на AT команды через RX/TX контакты мне не удалось.
Проверяем, не искажается ли информация передаваемая PIC
Подключив TTL адаптер к контактам TX/RX PIC18F25K80, вместо отпаянного EC04, я убедился, что искажения информации при вводе команды ATPPS, а также зависаний после некоторого времени не наблюдается.
Вердикт: в искажении информации и зависании bluetooth соединения виноват исключительно bluetooth модуль EC04.
Приводим в порядок уровни сигналов TX/RX
Изучив замечательный документ ELM and Bluetooth я понял, что нужно организовать делитель напряжения с 5В на TX выводе PIC, чтоб получить 3,3В на RX вводе модуля bluetooth.
Используя SMD резисторы найденные на старой компьютерной материнской плате, я заменил резистор на выходе TX PIC c 220 Ом на 2,2 кОм, подпаяв к нему еще один на 4,7 кОм, второй вывод которого припаял на землю.
На что заменить EC04?
Первой мыслью было заменить EC04 на BC04, состоящий из связки чип СSR BC417 + Flash объемом 1 Мбайт, которые часто устанавливают в bluetooth адаптеры HC04, HC05 и HC06 используемые с Arduino, а также в клоны адаптера VAS 5054A.
Расположение выводов RX, TX, 3,3 вольт и GND модуля EC04, полностью совпадает с модулем BC04.
Разбираемся с разновидностями bluetooth чипов СSR BC4* и BC3*
Британская компания CSR (Cambridge Silicon Radio), до поглощения ее компанией Qualcomm в 2015 году, выпускала следующие чипы:
BC352239 (BC03) BlueCore 3-Multimedia External, Bluetooth v1.2, проект pdw (paddywack) / elv (elvis)
BC358239 (BC03) BlueCore 3-Multimedia, Bluetooth v1.2, проект kal (kalimba)
BC417143 (BC04) BlueCore 4-External стандарт Bluetooth v2.0+EDR, проект cyt (coyote)
Для каждого из этих чипов существует два типа прошивки native и vm
Для vm прошивки, пользователь может разработать свое приложение, которое работает в виртуальной машине.
Именно под этот режим и написана прошивка spp_uart из проекта Deep OBD.
Каждую из прошивок native и vm, можно скомпилировать под доступный объем памяти flash чипа:
compact — содержит только стек и поэтому подходит для flash размером от 4 Мбит.
unified — содержит загрузчик и bluetooth стек, включающий в себя всё, начиная от Host Controller Interface (HCI), до Radio Frequency COMMunication (RFCOMM), но требует flash размером 8 Мбит.
Для проектов coyote (BC417), elvis (BC352) и kalimba (BC358) доступны прошивки native unified и vm unified.
Для проектов jumpingjack и paddywack (BC352) доступны только прошивки vm compact.
Все перечисленные выше прошивки, входят в дистрибутив интерактивной среды разработки приложений BlueLab 4.1 и после установки, находятся в папке \BlueLab41\firmware.
Когда существовал сайт www.csrsupport.com, там можно было скачивать обновленные версии прошивок для BlueLab 4.1. После покупки компании Qualcomm'ом, сайт отключили.
Если у кого-то есть прошивки c www.csrsupport.com/BluetoothFirmware не только под проект coyote 23263_cyt_8unified_fl_bt3.0_23i_0911261257_encr56_oem_prod.zip, но и под другие проекты, большая просьба поделиться.
Покупаем новый модуль bluetooth
Как и планировалось, на aIiexpress, я приобрел bluetooth модуль HC-05:


Как видно на фото, модуль достался мне со сломанной ножкой EN, что неприятно, но не смертельно. Присутствует кнопка для замыкания VCC на ножку 34 (PIO11/KEY), которую нажимают и держат при подаче питания на адаптер, чтоб прошивка перешла в режим AT команд. Когда прошивка находится в режиме AT команд, светодиод должен начать моргать медленно, с паузой в 2 секунды.
Приятным сюрпризом оказалось присутствие на обратной стороне платы точек ведущих на SPI контакты для считывания и программирования прошивки.
Как выяснится позже после тестирования, чип bluetooth здесь перемаркирован и на самом деле это BC352239 (BC03). У настоящего BC417143, надпись csr над логотипом, а в перемаркированном, справа от логотипа.
BC352239 тоже отличный чип, но в отличие от BC417143 (BC04) не поддерживает bluetooth v2.0 EDR (скорость до 3 Мбит/c), это bluetooth v1.2 (скорость до 1 Мбит/с).
Flash Spansion AL008J70BF102 тоже, что-то перемаркированное. Реальный объем 6 Мбит, вместо 8 Мбит у оригинала.
Регулятор напряжения 85AD (Si9185), использован для питания чипа напряжением 1.8В. Не смотря на то, что модуль толерантен к питанию от 2 до 6В, не следует забывать, что уровни RX/TX должны быть 3В.
Тест bluetooth модуля HC-05
Выставив на FT232RL адаптере джампер на 3,3В, я подсоединил его к HC-05 по схеме VCC-VCC, GND-GND, RX-TX, TX-RX и с помощью мини-USB кабеля подключил FT232RL адаптер, к голубому USB3.0 разъему ноутбука.
Адаптер сразу определился Windows 10 и после автоматической установки драйвера виртуального COM порта, красный светодиод на HC-05, начал быстро моргать индицируя работу в модуля в транспортном (прозрачном) режиме.
На ноутбуке в "Диспетчере устройств" Windows я посмотрел номер виртуального COM порта, запустил putty и введя номер COM порта и скорость 9600, соединился с модулем BC04.
На смартфоне в bluetooth окружении, я нашел и подсоединился к устройству HC-05, введя пароль 1234.
Далее запустил Serial Bluetooth Terminal и послал пробные строки. Они успешно отобразились в putty на ноутбуке. Ура, bluetooth модуль работает! Потестировав его некоторое время я убедился, что он работает стабильно и не виснет, соединение не рвется, и в отличии от старого модуля EC04, при выключении/включении bluetooth на смартфоне, соединение устанавливается быстро и без повторного ввода пароля.
Изучаем режим AT команд прошивки модуля BC04
Для входа в режим AT команд на адаптерах HC05 c bluetooth прошивками СSR, нужно выключить питание адаптера, нажать и удерживать кнопку подающую VCC на ножку 34 (PIO11/KEY) чипа, включить питание и дождаться пока светодиод на модуле не начнет медленно мигать с интервалом в 2 сек.
ВАЖНО! Для работы с bluetooth модулем в режиме AT команд putty не подходит, так как не умеет посылать AT команды одной строкой с CR+LF. Идеально подходит HTerm.
Запускаем Hterm, выбираем COM порт, выставляем скорость 9600 и нажимаем Connect.
Выставляем опции "Newline at" CR+LF, отключаем "Show newline characters" и устанавливаем "Send on enter" CR+LF
Команды вводятся только заглавными буквами.
AT выдает OK
AT+VERSION выдает VERSION:3.0-20170601
AT+UART выдает +UART:9600,0,0 имеет смысл сразу переключить на 38400 введя AT+UART=38400,0,0
AT+PSWD выдает +PIN:"1234"
AT+ORGL — сбрасывает настройки на заводские.
AT+NAME выдает +NAME:HC-05, но после сброса +NAME:H-C-2010-06-01
AT+ROLE выдает +ROLE:0
AT+ADDR выдает +ADDR:19:7:346
Полный список можно посмотреть здесь
Создание резервной копии прошивки BC04
Cкачиваем и устанавливаем bluesuite 2.6.11.1937
Скачиваем csr-spi-ftdi-0.5.3.zip
Из csr-spi-ftdi-0.5.3.zip, берем usbspi.dll находящийся в папке lib-win32 и заменяем им файлы в
c:\Program Files (x86)\QTIL\BlueSuite 2.6.11\usbspi.dll и c:\Program Files (x86)\QTIL\BlueSuite 2.6.11\x64\usbspi.dll
Качаем и запускаем Zadig 2.4, выбираем "List all devices" и заменяем FTDI драйвер на libusbK (v3.0.7.0).
Подпаиваемся к четырем точкам на обратной стороне платы HC-05 и подключаем их к FT232RL по схеме CS# (CSB) — DTR, MOSI — RI, MISO — DSR (RSD), CLK — RTS:

Питание берем с FT232RL, выставив джампер на 3V.
Под правами админа запускаем cmd и читаем ID bluetooth чипа:
c:\Program Files (x86)\QTIL\BlueSuite 2.6.11>e2cmd info
e2cmd, version 2.6.11.1937 Release
Copyright © 2007-2018 Qualcomm Technologies International, Ltd.
All Rights Reserved.
Qualcomm Technologies International, Ltd. Confidential and Proprietary.
13:26:32.128657: all:spi.c:558:spi_init: csr-spi-ftdi 0.5.3, git rev 80b2ad0
Chip ID — 0x07e2
Chip Name — BC3 Audio Flash (pdw)
Unable to calculate addressing mode of EEPROM
*** FTDI Statistics ********************************************************
csr-spi-ftdi version: 0.5.3 (git rev 80b2ad0)
Time open: 8.95 s
Time in xfer: 8.64 s (96.46% of open time)
Reads: 233 (46432 bytes, 199.28 bytes avg read size)
Writes: 332 (47108 bytes, 141.89 bytes avg write size)
Xfer data rate: 10.57 KB/s (93540 bytes in 8.64 s)
IOPS: 65.00 IO/s (565 IOs in 8.64 s)
FTDI chip: FT232R (3), buffer size: 384 bytes
FTDI stats: 955.00 xfers/s (0.00 short reads/s,
8255 xfers/1 short reads in 8.64 s,
14.00 xfers/IO, 363.00 bytes/xfer)
SPI max clock: 1000 kHz, min clock: 666 kHz, slowdowns: 1
****************************************************************************
Читаем версию чипа:
c:\Program Files (x86)\QTIL\BlueSuite 2.6.11> BlueFlashCmd.exe chipver
blueflashcmd, version 2.6.11.1937 Release
Copyright © 2002-2018 Qualcomm Technologies International, Ltd.
All Rights Reserved.
Qualcomm Technologies International, Ltd. Confidential and Proprietary.
17:03:17.089485: all:spi.c:558:spi_init: csr-spi-ftdi 0.5.3, git rev 80b2ad0
GBL_CHIP_VERSION = 0x07e2
Result:
*** FTDI Statistics ********************************************************
csr-spi-ftdi version: 0.5.3 (git rev 80b2ad0)
Time open: 0.03 s
Time in xfer: 0.00 s (23.53% of open time)
Reads: 4 (8 bytes, 2.00 bytes avg read size)
Writes: 2 (6 bytes, 3.00 bytes avg write size)
Xfer data rate: 1.71 KB/s (14 bytes in 0.00 s)
IOPS: 750.00 IO/s (6 IOs in 0.00 s)
FTDI chip: FT232R (3), buffer size: 384 bytes
FTDI stats: 1500.00 xfers/s (0.00 short reads/s,
12 xfers/0 short reads in 0.00 s,
2.00 xfers/IO, 40.00 bytes/xfer)
SPI max clock: 1000 kHz, min clock: 1000 kHz, slowdowns: 0
****************************************************************************
Success
Проверяем версию и размер flash чипа и прошивки:
c:\Program Files (x86)\QTIL\BlueSuite 2.6.11> BlueFlashCmd.exe identify
blueflashcmd, version 2.6.11.1937 Release
Copyright © 2002-2018 Qualcomm Technologies International, Ltd.
All Rights Reserved.
Qualcomm Technologies International, Ltd. Confidential and Proprietary.
17:04:24.714259: all:spi.c:558:spi_init: csr-spi-ftdi 0.5.3, git rev 80b2ad0
Resetting XAP
Identifying XAP
Flash identity: size = 96 sectors (6 Mbit), man_id = 0x0000, dev_id = 0x0000
Firmware ID (loader)="elv_8unified_fl_bt2.1_23g_0903311011_native_encr56 2009-03-31"
Firmware ID (stack)="pdw_6compact_fs_fl_bt2.1_23g_0903311011_encr56_nodfu 2009-03-31"
Result: Usable flash size: 96 sectors, 6 megabit.
*** FTDI Statistics ********************************************************
csr-spi-ftdi version: 0.5.3 (git rev 80b2ad0)
Time open: 14.39 s
Time in xfer: 13.93 s (96.79% of open time)
Reads: 408 (75518 bytes, 185.09 bytes avg read size)
Writes: 569 (75074 bytes, 131.94 bytes avg write size)
Xfer data rate: 10.55 KB/s (150592 bytes in 13.93 s)
IOPS: 70.00 IO/s (977 IOs in 13.93 s)
FTDI chip: FT232R (3), buffer size: 384 bytes
FTDI stats: 956.00 xfers/s (0.00 short reads/s,
13332 xfers/8 short reads in 13.93 s,
13.00 xfers/IO, 361.00 bytes/xfer)
SPI max clock: 1000 kHz, min clock: 666 kHz, slowdowns: 1
****************************************************************************
Success
Сравниваем версии Chip ID, Flash ID и прошивок под BlueCore 3 и 4 (BC03 и BC04):
Chip ID — 0x07e2, Chip Name — BC3 Audio Flash (pdw)
Flash identity: size = 96 sectors (6 Mbit), man_id = 0x0000, dev_id = 0x0000
Firmware ID (loader)="elv_8unified_fl_bt2.1_23g_0903311011_native_encr56 2009-03-31"
Firmware ID (stack)="pdw_6compact_fs_fl_bt2.1_23g_0903311011_encr56_nodfu 2009-03-31"
Chip ID — 0x4826, Chip Name — BC3 MM (kal)
Flash identity: size = 128 sectors (8 Mbit), man_id = 0x00c2, dev_id = 0x225b
Firmware ID (loader)="bc3k_8unified_fl_bt2.1_23g_0903311011_native_encr56 2009-03-31"
Firmware ID (stack)="bc3k_8unified_fl_bt2.1_23g_0903311011_native_encr56 2009-03-31"
Chip ID — 0x4543, Chip Name — BC4-EXT (cyt)
Flash identity: size = 128 sectors (8 Mbit), man_id = 0x00c2, dev_id = 0x225b
Firmware ID (loader)="cyt_8unified_fl_bt3.0_23i_1002111152_native_encr56 2010-02-11"
Firmware ID (stack)="cyt_8unified_fl_bt3.0_23i_1002111152_native_encr56 2010-02-11"
Делаем 3 раза подряд резервную копию прошивки:
c:\Program Files (x86)\QTIL\BlueSuite 2.6.11>BlueFlashCmd.exe dump bc352-fw-backup
blueflashcmd, version 2.6.11.1937 Release
Copyright © 2002-2018 Qualcomm Technologies International, Ltd.
All Rights Reserved.
Qualcomm Technologies International, Ltd. Confidential and Proprietary.
13:07:45.751942: all:spi.c:558:spi_init: csr-spi-ftdi 0.5.3, git rev 80b2ad0
Resetting XAP
Dumping flash contents
100%
"Dump" successful
Result: Dumping to csr-fw-backup.xpv complete.
*** FTDI Statistics ********************************************************
csr-spi-ftdi version: 0.5.3 (git rev 80b2ad0)
Time open: 89.53 s
Time in xfer: 83.18 s (92.90% of open time)
Reads: 2750 (866848 bytes, 315.22 bytes avg read size)
Writes: 3496 (80841 bytes, 23.12 bytes avg write size)
Xfer data rate: 11.13 KB/s (947689 bytes in 83.18 s)
IOPS: 75.00 IO/s (6246 IOs in 83.18 s)
FTDI chip: FT232R (3), buffer size: 384 bytes
FTDI stats: 1022.00 xfers/s (0.00 short reads/s,
85060 xfers/2 short reads in 83.18 s,
13.00 xfers/IO, 357.00 bytes/xfer)
SPI max clock: 1000 kHz, min clock: 666 kHz, slowdowns: 1
****************************************************************************
Success
Побайтно сравниваем дампы между собой:
fc /b bc352-fw-backup bc352-fw-backup2 >diff1.txt</b> и fc /b bc352-fw-backup2 bc352-fw-backup3 >diff2.txt
Открываем diff1.txt и diff2.txt и убеждаемся что все копии совпали.
Сохраняем резервную копию настроек:
c:\Program Files (x86)\QTIL\BlueSuite 2.6.11>pscli.exe dump bc352.psr
pscli, version 2.6.11.1937 Release
Copyright © 2001-2018 Qualcomm Technologies International, Ltd.
All Rights Reserved.
Qualcomm Technologies International, Ltd. Confidential and Proprietary.
13:12:54.682969: all:spi.c:558:spi_init: csr-spi-ftdi 0.5.3, git rev 80b2ad0
pscli dump csr-pskeys.psr : concluded with Success
*** FTDI Statistics ********************************************************
csr-spi-ftdi version: 0.5.3 (git rev 80b2ad0)
Time open: 33.51 s
Time in xfer: 32.50 s (96.96% of open time)
Reads: 30220 (99036 bytes, 3.28 bytes avg read size)
Writes: 27204 (88063 bytes, 3.24 bytes avg write size)
Xfer data rate: 5.62 KB/s (187099 bytes in 32.50 s)
IOPS: 1766.00 IO/s (57424 IOs in 32.50 s)
FTDI chip: FT232R (3), buffer size: 384 bytes
FTDI stats: 1913.00 xfers/s (0.00 short reads/s,
62178 xfers/4 short reads in 32.50 s,
1.00 xfers/IO, 101.00 bytes/xfer)
SPI max clock: 1000 kHz, min clock: 1000 kHz, slowdowns: 0
****************************************************************************
Прошиваем в BC04 прошивку spp_uart из проекта DeepOBD
1. Качаем и устанавливаем BlueLab41 в c:\BlueLab41. В диалоговом окне установки снимаем галочку с SPI драйвера.
2. Делаем подмену c:\BlueLab41\tools\bin\usbspi.dll на файл из csr-spi-ftdi-0.5.3.zip который мы уже качали раньше для BlueSuite.
3. Скачиваем архив с исходниками Deep OBD
4. Из архива папку \ediabaslib-master\EdiabasLib\CanAdapterElm\Bluetooth\spp_uart извлекаем в c:\BlueLab41\
5. В файле c:\BlueLab41\spp_uart\compile.bat меняем путь с:
C:/Programs/BlueLab41/tools/bin/make -R BLUELAB=C:/Programs/BlueLab41/tools -f spp_uart.release.mak %*
на: C:/BlueLab41/tools/bin/make -R BLUELAB=C:/BlueLab41/tools -f spp_uart.release.mak %*
Так как spp_uart по умолчанию изменяет следующие параметры:
PSKEY_BDADDR &0001 = 0000 0346 0007 0019 -> 0024 b764 005d 0019
PSKEY_LC_MAX_TX_POWER &0017 = 0003 -> 0012
PSKEY_LC_DEFAULT_TX_POWER &0021 = 0004 -> 0012
PSKEY_USB_BCD_DEVICE &007d = 5940 -> 5825
PSKEY_UART_BAUDRATE &01be = 009d// 38.4 kbaud -> 01d8// 115.2 kbaud
PSKEY_UART_CONFIG_USR &01c2 = 08a8 -> 0880
PSKEY_ANA_FTRIM &01f6 = 001d -> 001f
PSKEY_ANA_FREQ &01fe = 3e80 -> 6590
Имеет смысл подредактировать spp_uart.psr, убрав строки PSKEY_BDADDR, PSKEY_ANA_FTRIM, PSKEY_ANA_FREQ, или вставить в них свои значения из файла bc352.psr созданного ранее.
Тогда не придется менять эти параметры в PSTool.exe после прошивки.
6. Запускаем BlueLab 4.1-Release (xIDE3) иконкой с рабочего стола, заходим в Project>Open Workspace… и открываем C:/BlueLab41/spp_uart/spp_uart.xiw
7. Если имеем bluetooth модуль с размером flash 8 Мбит, пропускаем этот шаг. Так как у меня flash 6 Мбит, я в Project>Properties>Build System>General>Firmware двойным кликом, из меню выбрал Compact (no loader or HID, other restrictions) и нажал OK.
8. Нажимаем F7 (делаем Build) для создания mak файла и далее закрываем BlueLab.
9. От имени администратора запускаем cmd и переходим в папку C:/BlueLab41/spp_uart/
10. Для программирования, подключаем адаптер FT232RL к ПК/ноутбуку по USB порту, а bluetooth модуль к FT232RL через SPI контакты, вводим compile clean, а затем compile flash. Процесс в зависимости от чипа адаптера например может выглядеть так:
c:\BlueLab41\spp_uart>compile clean
C:/BlueLab41/tools/bin/remove image/vm.app merge.xpv merge.xdv
C:/BlueLab41/tools/bin/remove spp_uart.app spp_uart.dbg spp_uart.sym spp_uart.xap spp_uart.psr_ spp_uart.map
C:/BlueLab41/tools/bin/remove image.fs ./depend/generate_at_resp ./depend/handle_at_command ./depend/handle_system ./depend/main ./depend/spp_dev_auth ./depend/spp_dev_init ./depend/spp_dev_inquire ./depend/spp_uart_leds ./depend/spp_uart_parse
C:/BlueLab41/tools/bin/remove generate_at_resp.o handle_at_command.o handle_system.o main.o spp_dev_auth.o spp_dev_init.o spp_dev_inquire.o spp_uart_leds.o spp_uart_parse.o spp_uart_leds.c spp_uart_parse.c spp_uart_leds.h spp_uart_parse.h spp_uart_leds.button_ spp_uart_parse.button_ spp_uart_leds.led_ spp_uart_parse.led_
C:/BlueLab41/tools/bin/remove depend/flags.compile depend/flags.link depend/flags.firmware depend/image.lst
c:\BlueLab41\spp_uart>compile flash
16:14:42.909798: all:spi.c:558:spi_init: csr-spi-ftdi 0.5.3, git rev 80b2ad0
*** FTDI Statistics ********************************************************
csr-spi-ftdi version: 0.5.3 (git rev 80b2ad0)
Time open: 4.32 s
Time in xfer: 3.87 s (89.63% of open time)
Reads: 294 (10352 bytes, 35.21 bytes avg read size)
Writes: 425 (11076 bytes, 26.06 bytes avg write size)
Xfer data rate: 5.39 KB/s (21428 bytes in 3.87 s)
IOPS: 185.00 IO/s (719 IOs in 3.87 s)
FTDI chip: FT232R (3), buffer size: 384 bytes
FTDI stats: 610.00 xfers/s (5.00 short reads/s,
2369 xfers/23 short reads in 3.87 s,
3.00 xfers/IO, 291.00 bytes/xfer)
SPI max clock: 100 kHz, min clock: 100 kHz, slowdowns: 0
****************************************************************************
C:/BlueLab41/tools/bin/xap-local-xap-gcc-3.3.3 -BC:/BlueLab41/tools/lib/gcc-lib/xap-local-xap/3.3.3\\ -mno-leaf-optim -E -x c -DNO_DEBUG spp_uart_leds.led -o spp_uart_leds.led_
C:/BlueLab41/tools/bin/ledparse spp_uart_leds.led_ spp_uart_leds
Successfully created files spp_uart_leds.c and spp_uart_leds.h from spp_uart_leds.led_
C:/BlueLab41/tools/bin/genparse spp_uart_parse spp_uart_parse.parse
C:/BlueLab41/tools/bin/xap-local-xap-gcc-3.3.3 -BC:/BlueLab41/tools/lib/gcc-lib/xap-local-xap/3.3.3\\ -mno-leaf-optim -g -O -fno-builtin-memcpy -ansi -pedantic -Wall -Wmissing-prototypes -Wstrict-prototypes -Wsign-compare -Wredundant-decls -Werror -IC:/BlueLab41/tools/include/firmware -IC:/BlueLab41/tools/include/standard -IC:/BlueLab41/tools/include/profiles/BlueLab4.1-Release -Wp, -MD, ./depend/generate_at_resp -Wp, -MQ, generate_at_resp.o -DNO_DEBUG -c generate_at_resp.c -o generate_at_resp.o
C:/BlueLab41/tools/bin/xap-local-xap-gcc-3.3.3 -BC:/BlueLab41/tools/lib/gcc-lib/xap-local-xap/3.3.3\\ -mno-leaf-optim -g -O -fno-builtin-memcpy -ansi -pedantic -Wall -Wmissing-prototypes -Wstrict-prototypes -Wsign-compare -Wredundant-decls -Werror -IC:/BlueLab41/tools/include/firmware -IC:/BlueLab41/tools/include/standard -IC:/BlueLab41/tools/include/profiles/BlueLab4.1-Release -Wp, -MD, ./depend/handle_at_command -Wp, -MQ, handle_at_command.o -DNO_DEBUG -c handle_at_command.c -o handle_at_command.o
C:/BlueLab41/tools/bin/xap-local-xap-gcc-3.3.3 -BC:/BlueLab41/tools/lib/gcc-lib/xap-local-xap/3.3.3\\ -mno-leaf-optim -g -O -fno-builtin-memcpy -ansi -pedantic -Wall -Wmissing-prototypes -Wstrict-prototypes -Wsign-compare -Wredundant-decls -Werror -IC:/BlueLab41/tools/include/firmware -IC:/BlueLab41/tools/include/standard -IC:/BlueLab41/tools/include/profiles/BlueLab4.1-Release -Wp, -MD, ./depend/handle_system -Wp, -MQ, handle_system.o -DNO_DEBUG -c handle_system.c -o handle_system.o
C:/BlueLab41/tools/bin/xap-local-xap-gcc-3.3.3 -BC:/BlueLab41/tools/lib/gcc-lib/xap-local-xap/3.3.3\\ -mno-leaf-optim -g -O -fno-builtin-memcpy -ansi -pedantic -Wall -Wmissing-prototypes -Wstrict-prototypes -Wsign-compare -Wredundant-decls -Werror -IC:/BlueLab41/tools/include/firmware -IC:/BlueLab41/tools/include/standard -IC:/BlueLab41/tools/include/profiles/BlueLab4.1-Release -Wp, -MD, ./depend/main -Wp, -MQ, main.o -DNO_DEBUG -c main.c -o main.o
C:/BlueLab41/tools/bin/xap-local-xap-gcc-3.3.3 -BC:/BlueLab41/tools/lib/gcc-lib/xap-local-xap/3.3.3\\ -mno-leaf-optim -g -O -fno-builtin-memcpy -ansi -pedantic -Wall -Wmissing-prototypes -Wstrict-prototypes -Wsign-compare -Wredundant-decls -Werror -IC:/BlueLab41/tools/include/firmware -IC:/BlueLab41/tools/include/standard -IC:/BlueLab41/tools/include/profiles/BlueLab4.1-Release -Wp, -MD, ./depend/spp_dev_auth -Wp, -MQ, spp_dev_auth.o -DNO_DEBUG -c spp_dev_auth.c -o spp_dev_auth.o
C:/BlueLab41/tools/bin/xap-local-xap-gcc-3.3.3 -BC:/BlueLab41/tools/lib/gcc-lib/xap-local-xap/3.3.3\\ -mno-leaf-optim -g -O -fno-builtin-memcpy -ansi -pedantic -Wall -Wmissing-prototypes -Wstrict-prototypes -Wsign-compare -Wredundant-decls -Werror -IC:/BlueLab41/tools/include/firmware -IC:/BlueLab41/tools/include/standard -IC:/BlueLab41/tools/include/profiles/BlueLab4.1-Release -Wp, -MD, ./depend/spp_dev_init -Wp, -MQ, spp_dev_init.o -DNO_DEBUG -c spp_dev_init.c -o spp_dev_init.o
C:/BlueLab41/tools/bin/xap-local-xap-gcc-3.3.3 -BC:/BlueLab41/tools/lib/gcc-lib/xap-local-xap/3.3.3\\ -mno-leaf-optim -g -O -fno-builtin-memcpy -ansi -pedantic -Wall -Wmissing-prototypes -Wstrict-prototypes -Wsign-compare -Wredundant-decls -Werror -IC:/BlueLab41/tools/include/firmware -IC:/BlueLab41/tools/include/standard -IC:/BlueLab41/tools/include/profiles/BlueLab4.1-Release -Wp, -MD, ./depend/spp_dev_inquire -Wp, -MQ, spp_dev_inquire.o -DNO_DEBUG -c spp_dev_inquire.c -o spp_dev_inquire.o
C:/BlueLab41/tools/bin/xap-local-xap-gcc-3.3.3 -BC:/BlueLab41/tools/lib/gcc-lib/xap-local-xap/3.3.3\\ -mno-leaf-optim -g -O -fno-builtin-memcpy -ansi -pedantic -Wall -Wmissing-prototypes -Wstrict-prototypes -Wsign-compare -Wredundant-decls -Werror -IC:/BlueLab41/tools/include/firmware -IC:/BlueLab41/tools/include/standard -IC:/BlueLab41/tools/include/profiles/BlueLab4.1-Release -Wp, -MD, ./depend/spp_uart_leds -Wp, -MQ, spp_uart_leds.o -DNO_DEBUG -c spp_uart_leds.c -o spp_uart_leds.o
C:/BlueLab41/tools/bin/xap-local-xap-gcc-3.3.3 -BC:/BlueLab41/tools/lib/gcc-lib/xap-local-xap/3.3.3\\ -mno-leaf-optim -g -O -fno-builtin-memcpy -ansi -pedantic -Wall -Wmissing-prototypes -Wstrict-prototypes -Wsign-compare -Wredundant-decls -Werror -IC:/BlueLab41/tools/include/firmware -IC:/BlueLab41/tools/include/standard -IC:/BlueLab41/tools/include/profiles/BlueLab4.1-Release -Wp, -MD, ./depend/spp_uart_parse -Wp, -MQ, spp_uart_parse.o -DNO_DEBUG -c spp_uart_parse.c -o spp_uart_parse.o
C:/BlueLab41/tools/bin/xap-local-xap-gcc-3.3.3 -BC:/BlueLab41/tools/lib/gcc-lib/xap-local-xap/3.3.3\\ -mno-leaf-optim -g -O -fno-builtin-memcpy -Xlinker -s0 -lconnection -lspp -lregion -lservice -lbdaddr -lsdp_parse -LC:/BlueLab41/tools/lib/BlueLab4.1-Release/vm generate_at_resp.o handle_at_command.o handle_system.o main.o spp_dev_auth.o spp_dev_init.o spp_dev_inquire.o spp_uart_leds.o spp_uart_parse.o -o spp_uart.app
Pass 1 (18482) Pass 2 (3419) Pass 3 (3323) Pass 4 (3285) Pass 5 (2856) Pass 6 (2656) Pass 7 (2397) Pass 8 (1771) Pass 9 (1544) Pass 10 (1377) Pass 11 (1221) Pass 12 (962) Pass 13 (711) Pass 14 (597) Pass 15 (558) Pass 16 (356) Pass 17 (0)
Words: code=21631 const=1476 globals=105 decimal
Using calculated stack size of 90.
C:/BlueLab41/tools/bin/createpath image
C:/BlueLab41/tools/bin/copyfile spp_uart.app image/vm.app
C:/BlueLab41/tools/bin/packfile image image.fs
C:/BlueLab41/tools/bin/vmbuilder -size 6144 merge.xpv C:/BlueLab41/firmware/vm/compact/paddywack/stack_unsigned.xpv image.fs
Filesystem uses 23166 words (87426 words of flash left with this firmware)
Merged files written to merge
C:/BlueLab41/tools/bin/xap-local-xap-gcc-3.3.3 -BC:/BlueLab41/tools/lib/gcc-lib/xap-local-xap/3.3.3\\ -mno-leaf-optim -E -x c -DNO_DEBUG spp_uart.psr -o spp_uart.psr_
C:/BlueLab41/tools/bin/pscli -trans 'SPITRANS=USB SPIPORT=1 SPIMAXCLOCK=100' Raw HCI_onchip -m spp_uart.psr_
16:14:56.638512: all:spi.c:558:spi_init: csr-spi-ftdi 0.5.3, git rev 80b2ad0
pscli -trans "SPITRANS=USB SPIPORT=1 SPIMAXCLOCK=100" Raw HCI_onchip -m spp_uart.psr_ : concluded with Success
*** FTDI Statistics ********************************************************
csr-spi-ftdi version: 0.5.3 (git rev 80b2ad0)
Time open: 2.79 s
Time in xfer: 2.64 s (94.78% of open time)
Reads: 1607 (6434 bytes, 4.00 bytes avg read size)
Writes: 1452 (4686 bytes, 3.23 bytes avg write size)
Xfer data rate: 4.10 KB/s (11120 bytes in 2.64 s)
IOPS: 1154.00 IO/s (3059 IOs in 2.64 s)
FTDI chip: FT232R (3), buffer size: 384 bytes
FTDI stats: 1294.00 xfers/s (3.00 short reads/s,
3428 xfers/8 short reads in 2.64 s,
1.00 xfers/IO, 109.00 bytes/xfer)
SPI max clock: 100 kHz, min clock: 25 kHz, slowdowns: 5
****************************************************************************
C:/BlueLab41/tools/bin/blueflashcmd -trans 'SPITRANS=USB SPIPORT=1 SPIMAXCLOCK=100' merge
CSR BlueFlash Tool (Command Line) BlueSuite-2.1.1-Release
Copyright © 2002-2008 Cambridge Silicon Radio Ltd.
Resetting XAP
Burning Image:
100%
Result: Finished OK, 68 sectors erased, 68 sectors flashed, 114.69 seconds
Running Code!
*** FTDI Statistics ********************************************************
csr-spi-ftdi version: 0.5.3 (git rev 80b2ad0)
Time open: 121.04 s
Time in xfer: 107.13 s (88.51% of open time)
Reads: 4483 (20258 bytes, 4.52 bytes avg read size)
Writes: 5707 (583190 bytes, 102.19 bytes avg write size)
Xfer data rate: 5.50 KB/s (603448 bytes in 107.13 s)
IOPS: 95.00 IO/s (10190 IOs in 107.13 s)
FTDI chip: FT232R (3), buffer size: 384 bytes
FTDI stats: 585.00 xfers/s (9.00 short reads/s,
62683 xfers/989 short reads in 107.13 s,
6.00 xfers/IO, 309.00 bytes/xfer)
SPI max clock: 100 kHz, min clock: 25 kHz, slowdowns: 34
****************************************************************************
Success
rm spp_uart_leds.led_
Проверяем версию новой прошивки:
c:\Program Files (x86)\QTIL\BlueSuite 2.6.11> BlueFlashCmd.exe identify
blueflashcmd, version 2.6.11.1937 Release
Copyright © 2002-2018 Qualcomm Technologies International, Ltd.
All Rights Reserved.
Qualcomm Technologies International, Ltd. Confidential and Proprietary.
16:25:43.371128: all:spi.c:558:spi_init: csr-spi-ftdi 0.5.3, git rev 80b2ad0
Resetting XAP
Identifying XAP
Flash identity: size = 96 sectors (6 Mbit), man_id = 0x0000, dev_id = 0x0000
Firmware ID (loader)="elv_8unified_fl_bt2.1_23g_0903311011_native_encr56 2009-03-31"
Firmware ID (stack)="pdw_6compact_fs_fl_bt2.1_23g_0901221700_encr56_nodfu 2009-01-22"
Result: Usable flash size: 96 sectors, 6 megabit.
*** FTDI Statistics ********************************************************
csr-spi-ftdi version: 0.5.3 (git rev 80b2ad0)
Time open: 4.58 s
Time in xfer: 4.15 s (90.61% of open time)
Reads: 362 (20554 bytes, 56.78 bytes avg read size)
Writes: 520 (20058 bytes, 38.57 bytes avg write size)
Xfer data rate: 9.54 KB/s (40612 bytes in 4.15 s)
IOPS: 212.00 IO/s (882 IOs in 4.15 s)
FTDI chip: FT232R (3), buffer size: 384 bytes
FTDI stats: 967.00 xfers/s (0.00 short reads/s,
4023 xfers/3 short reads in 4.15 s,
4.00 xfers/IO, 324.00 bytes/xfer)
SPI max clock: 1000 kHz, min clock: 666 kHz, slowdowns: 1
****************************************************************************
Success
Видим что стек прошитый в BlueLab, более старой версии (22.01.2009), чем тот, который был в адаптере с завода (31.03.2009).
11. После завершения компиляции и прошивки, ОБЯЗАТЕЛЬНО, необходимо изменить параметры. Для этого запускаем c:\Program Files (x86)\QTIL\BlueSuite 2.6.11\PSTool.exe, выбираем SPI BCCMD, Port FT232R A50285BI, нажимаем OK.
12. Выбираем в меню Bootmode>Bootmode 1 и слева в списке находим Host Interface и нажимаем на него. Справа нажимаем "ENTRY NOT PRESENT — Click to add" и из списка выбираем "VM access to the UART" нажимаем кнопку Set
13. Выбираем в меню Bootmode>none, слева в списке находим Host Interface и нажимаем на него. Справа выбираем из списка "UART link running BCSP" и нажимаем кнопку Set
14. Слева в списке, находим параметр Crystal frequency. Копируем сюда значение которое находится в файле bc352.psr (который мы создали раньше, когда делали резервную копию) в параметре PSKEY_ANA_FREQ &01fe = xxxx, где xxxx нужное нам значение. Нажимаем Set.
15. Слева в списке, находим параметр Crystal frequency trim. Копируем сюда значение которое находится в файле csr-pskeys.psr в параметре PSKEY_ANA_FTRIM &01f6 = xx. Обращаем внимание, что xx надо перевести в десятичную форму. Можно использовать калькулятор Windows в режиме инженера :). Нажимаем Set.
16. Слева в списке, находим параметр User configuration data 0. Там будут какие-то цифры. Все удаляем и вставляем строку "0031 0032 0033 0034" без кавычек. Нажимаем Set.
17. Закрываем PSTool, отключаем USB кабель и подключаем снова.
18. Находим по bluetooth на смартфоне HC-05 устройство и подключаемся через Serial Bluetooth Terminal. Вводим пароль 1234.
После прошивки, светодиод на модуле перестанет мигать, это нормально. В SPP_UART прошивке нет поддержки алгоритма мигания светодиода.
Подключение модуля BC03 к ELM327
Отпаяв BC03 с платы HC05 и припаяв его в ELM327 адаптер, меня ждал сюрприз. На TX выводе bluetooth модуля было напряжение 1В вместо стандартных 3В.
Оказывается у меня UART раньше работал только по тому, что необходимые 3В на TX вывод модуля, приходили с FT232RL. Как оказалось, у FT232RL TX и RX даже в неподключенном состоянии имеют уровни 3В.
Пришлось припаять резистор 10 кОм между TX модуля и питанием 3,3В
AT команды прошивки spp_uart
Как следует из описания кастомной прошивки с открытым исходным кодом spp_uart, для bluetooth модулей BC03/BC04, она дает возможность без замыкания на модуле pin34 (PIO11/KEY) на Vcc, управлять настройками bluetooth модуля по воздуху, без использования TTL адаптера.
Для этого, после подключения к адаптеру по bluetooth, первой посланной командой должна быть AT+CONF,
обязательно заглавными буквами, одним пакетом, и заканчиваться должна CR+LF.
Serial Bluetooth Terminal для Android и HTerm для Windows умеют это делать.
После ответа ОК, можно менять скорость соединения с PIC (AT+UART), bluetooth имя (AT+NAME), пароль (AT+PSWD), смотреть MAC адрес (AT+ADDR) и т.д. Полный перечень команд можно посмотреть здесь.
Так как в PIC все еще оставалась старая китайская прошивка ELM327 v1.5, через AT+CONF я сменил PSKEY_UART_BAUDRATE на 38400, командой AT+UART:38400,0,0
Выход из командного режима в транспортный AT+DATA.
Если нужно еще раз войти в режим настроек, просто разрываем bluetooth соединение, соединяемся еще раз и вводим AT+CONF.
Результаты замены bluetooth модуля:
Не смотря на то, что вместо BC04, мне достался перемаркированный BC03 с урезанным объемом flash памяти 6 Мбит и TX выводом на 1 вольт (требующим подтяжки резистором 10 кОм до 3В), результатом я очень доволен.
Список полученных преимуществ по сравнению со старым EC04:
1. Соединение по bluetooth больше не зависает и не теряет информацию полученную от PIC.
2. Разрыв и повторное соединение с модулем происходит быстро и не требует повторного ввода пароля.
3. Стало возможным менять прошивку модуля bluetooth
4. За счет поднятия мощности в параметрах PSKEY_LC_MAX_TX_POWER и PSKEY_LC_DEFAULT_TX_POWER увеличилась дальность приема
5. Стало возможным конфигурировать параметры bluetooth модуля по воздуху через AT+CONF
Замена китайской прошивки ELM327 v1.5 в PIC18F25K80 на Deep OBD ELM327 v1.5
Снова aIiexpress и я заказываю такой программатор PICkit3 (можно и Arduino Nano на ATmega328):

В комплекте качественный толстый красный мини USB кабель и 6-ти контактный ленточный кабель для прошивки

Чипы на плате:
Microchip PIC24FJ256 — 16-Bit, General Purpose Flash Microcontrollers with Peripheral Pin Select
ST M95256 — 256-Kbit serial SPI bus EEPROM with high-speed clock
Adesto AT25SF041 — 4-Mbit, 2.5V Minimum SPI Serial Flash Memory with Dual-I/O and Quad-I/O Support
TI LM358 Low-Power, Dual-Operational Amplifier

Также достался адаптер-переходник для программирования чипов:


Распиновка разъема PICkit3 выглядит следующим образом:

Для того, чтоб прошить прошивку в PIC18F25K80, я скачал и запустил установщик MPLAB® X IDE v5.25. В окне "Select Applications" нужно снять все галочки и выбрать только "MPLAB IPE", "8-bit MCUs" и "Other devices". После установки запускаем IPE, подключаем PICkit3 к USB порту ноутбука, в "Device" выбираем PIC18F25K80, нажимаем "Apply", затем нажимаем "Connect" и в логе должна быть следующая картина:
Connecting to MPLAB PICkit 3…
Currently loaded firmware on PICkit 3
Firmware Suite Version…01.28.90 *
Firmware type…Midrange
Now Downloading new Firmware for target device: PIC18F25K80
Downloading bootloader
Bootloader download complete
Programming download…
Downloading RS…
RS download complete
Programming download…
Downloading AP…
AP download complete
Programming download…
После этого уже при повторных соединениях с программатором было видно, что в PICkit3 уже находится обновленная прошивка:
Connecting to MPLAB PICkit 3…
Currently loaded firmware on PICkit 3
Firmware Suite Version…01.56.00
Firmware type…PIC18F
После необходимо в Settings>Advanced Mode и ввести пароль microchip. Затем войти в Production, поставить галочку Allow Export Hex и вернуться в Operate.
Считываем китайскую прошивку ELM327 v1.5 из чипа PIC18F25K80
Обязательно подаем питание 12В на ELM327 через OBD2 разъем, нажимаем кнопку Read и прикасаемся 5-ю контактами ленточного кабеля из комплекта PICkit3 к контактам на верхней плате ELM327, согласно распиновки на фото платы bluetooth выше. Если контакт хороший, в логе отобразятся строки:
Target voltage detected
Target device PIC18F25K80 found.
Device Revision ID = 4
Reading…
The following memory area(s) will be read:
program memory: start address = 0x0, end address = 0x7fff
configuration memory
EEData memory
User Id Memory
Read complete
Сохраняем резервную копию китайской прошивки ELM327 v1.5
Через File>Export>Hex я охранил китайскую прошивку размером 95191 байт и контрольной суммой 03A2:
Exporting hex file…
Hex File successfully created at C:/ELM327/PIC18F25K80.hex
Exporting hex file…
Hex File successfully created at C:/Users/Leo/Desktop/Fabia/ELM327/PIC18F25K80.hex
Обязательно вытираем содержимое PIC18F25K80 перед записью новой прошивки
Нажимаем Erase, прикасаемся контактами от шнура программатора к 5-ти контактам на плате ELM327 Mini и получаем подтверждение:
Device Erased…
Прошиваем в PIC18F25K80 прошивку Deep OBD BMW
Я распаковал Binaries-20190610_2.zip и загрузил файл \CanAdapterElm\spp_uart\CanAdapterElm.X.production.unified.hex, имеющий размер 88601 байт и контрольную сумму D607, в MPLAB X IPE v5.25 через File Import Hex, нажал Program, прикоснулся контактами кабеля программатора к 5-ти контактам на плате ELM327 Mini и увидел в логе следующее:
Programming…
The following memory area(s) will be programmed:
program memory: start address = 0x0, end address = 0x7fff
configuration memory
Programming/Verify complete
2019-08-27 18:16:28 +0200 — Programming complete
Запускаем на всякий случай верификацию
Нажимаем Verify и прикасаемся контактами кабеля программатора к 5-ти контактам на плате ELM327 Mini:
Verifying…
The following memory areas(s) will be verified:
program memory: start address = 0x0, end address = 0x7fff
configuration memory
EEData memory
User Id Memory
Verification successful.
Конфигурируем скорость обмена между bluetooth модулем и прошивкой Deep OBD BMW
Так как прошивка Deep OBD BMW в отличии от прошивки ELM327 v1.5 общается с bluetooth модулем не на скорости 38400, а на 115200, я соединился с ELM327 Mini по bluetooth при помощи Serial Bluetooth Terminal, послал команду AT+CONF, сменил скорость командой AT+UART:115200,0,0 и вышел из режима AT команд в режим данных командой AT+DATA.
Затем в параметрах Serial Bluetooth Terminal переключил режим терминала в HEX, отправил байты 82 F1 F1 FE FE 60 и получил в ответ 82 F1 F1 FE FE 60 82 F1 F1 FE 81 31, что означало, что прошивка под Deep OBD BMW работает.
Далее я установил на смартфон Deep OBD из Google Play и перешил из него ELM327 Mini в прошивку Deep OBD ELM327 v1.5.
Снова запустил Serial Bluetooth Terminal и проверил команды ATZ, ATI, ATPPS. Все работало отлично и без искажения информации.
Повторная проверка в ELM327 Identifier показала, что команды v1.0-1.4, как и раньше поддерживаются. Тест в ELMScan Adapter Validator можно посмотреть здесь.
Подведение итогов:
1. Благодаря прошивке Deep OBD ELM327 v1.5 и прошивке bluetooth модуля, скорость обмена между PIC и bluetooth модулем, увеличена в 3 раза до 115200 бод/с.
2. В Deep OBD ELM327 v1.5 исправлен баг старой китайской прошивки, где после команды ATZ прилетал байт 0xFF.
3. Прошивку Deep OBD ELM327 v1.5 можно перешивать в Deep OBD BMW и наоборот по воздуху, через приложение Deep OBD на смартфоне.
Возможности и отличия прошивок Deep OBD BMW и Deep OBD ELM327 v1.5:
1. Обе прошивки включают в себя бутлоадер, позволяющий по воздуху, через bluetooth соединение, обновлять прошивку и/или переключаться между прошивками Deep OBD BMW и Deep OBD ELM327 v1.5 (открытый исходный код).
2. Прошивка Deep OBD BMW при помощи бесплатного приложения для Android, умеет диагностировать автомобили марки BMW по протоколу BMW-FAST, а также автомобили VAG по протоколам KPW2000, KWP1281 and TP2.0 (использовались VAG до 2012 года), что оригинальная прошивка ELM327 v1.4 не умеет.
3. Deep OBD ELM327 v1.5, это китайская прошивка ELM327 v1.5 с устраненными багами.
Коротко: Deep OBD это возможность организовать работу адаптера ELM327 в двух режимах — классическом ELM327 v1.5 или Deep OBD BMW/VAG, с возможностью диагностики специфических протоколов BMW/VAG, а при условии прошивки bluetooth модуля кастомной прошивкой еще и конфигурировать настройки bluetooth модуля по воздуху.
Выводы:
Мне удалось модернизировать ELM327 Mini прошив его корректной прошивкой и заменив Bluetooth модуль. Теперь адаптер отлично работает в связке с Android смартфоном и/или ноутбуком.
Так как у меня получился адаптер с Bluetooth модулем v1.2, c Apple iPhone/iPad он работать не будет, так как iOS поддерживает соединение исключительно с устройствами Bluetooth v4.0 LE (BLE).
Адаптер ELM327 Mini для iPhone
Раньше, проверенным и рекомендуемым адаптером для беспроблемной работы с iPhone был Viecar Bluetooth 4 белого цвета с коробочкой, но с 05.2023 г. пошли "обновленные" версии адаптера с китайской прошивкой ELM327 v1.5 и поэтому лучше приобрести качественный китайский ELM327 Mini имеющий на борту BLE модуль и сразу обновить его бесплатной оригинальной прошивкой ELM327L v2.3.
Всем только качественных ELM327 адаптеров!


Comments 102
Есть еще в этой стране профи и можно узнать/понять ( с их помощью, причем бесплатно…). Спасибо.
Блин, ну ты голова, вот это я понимаю — разобрался, моё почтение!👍
Всё начиналось так просто…
Адаптер, название, платы, элементы.
Всё как бы понятно, но это обман! 😂
Далее пошло что-то на высокоразвитом, потом на инженерном, далее программисты подключились, аааа!😅
Пол 4-го ночи, а Я читаю как прошить кривой китайский адаптер из 13-го года, которого у меня нет, с помощью программаторов, которых тоже нет, и не могу оторваться!
Искренне сопереживая и радуясь автору, когда эта железяка откликнулась!))
Ай чертяка, ай молодец!😁
С твоим талантом, книги надо писать!))
P.s. — А не пробовал/думал использовать выход RTS под управление релюшкой, дабы входы/контакты переключать на разъёме, между например HS-CAN/MS-CAN/MM-CAN?
Нет, не пробовал.
Доброго времени суток!
Ft232rl если без джампера, какой уровень будет 5 или 3.3в? Сгорел блютуз модуль, хочу переделать на USB. Получается нужно удалить резисторы на 220 Ом, соединить напрямую PIC и FT232, и выставить джампер на 5 вольт?
Надо померять на самом адаптере tx.
Приветствую!
Не подскажешь как все же можно перешить "Неизменяемый eeprom и серийник A50285BI".
Никак не получается перешить. Купил таких FTDI много, жалко деньги на ветер выкидывать.
К сожалению не знаю
Печально то, что заказывая очередную партию у китайцев FTDI я получить могу опять подделку и при этом потерять как минимум месяц времени.
Может быть знаешь где заказать можно нормальные FTDI?
Есть elm327 версии 1.2, двухплатный, на pic18f24k80, есть оригинальная последняя прошивка на elm327.
Если прошивки на китайцах с выключенной защитой и их можно слить, то можно попробовать залить оригинальную прошивку, а блютус выкинуть нафиг, заменив на адаптер с ft232
Помогите найти зацепку. Пытаюсь прошить синюю двухплатную elm327 прошивкой Deep OBD, по инструкции github.com/uholeschak/edi…e_ELM327_HC04_Firmware.md
Адаптеры на pic18f25k80, один с bt-модулем BK3231, другой yc1021. Сохранил родную прошивку, заливаю соответствующую новую прошивку, в итоге оба адаптера не работают. Что более странно, после заливки в них родных сохранённых прошивок тоже не работают — к адаптерам можно только подключиться по bt, а в программах пишет, что неопознанное устройство. Elm327 Identifier пишет "Неизвестное устройство: оно не отвечает на команду инициализации". Такое ощущение, что pic18f25k80 перестаёт общаться с bt модулями, хотя читается/очищается/прошивается/верифицируется без проблем. В чём может быть причина?
Скорость обмена между модулем и прошивкой в pic
А эта скорость задаётся в самой прошивке? Ведь при заливке обратно сохранённой родной прошивки ничего не меняется, устройство не опознается никакими программами
Да, в записи я описал как менял скорость в прошивке spp_uart. Это прошивка блютус модуля, а не пик.
Но всё равно не сходится вот что: если я заливаю обратно родную прошивку, в которой задана старая скорость чипа, по логике должно работать, но ничего не меняется( Именно это странно
Скорость прошивки в pic должна совпадать со скоростью прошивки в модуле bluetooth, иначе будет то, что сейчас.
Это я уже понял, я не могу понять другого — почему не работает после заливки в pic её начальной прошивки? Ведь теперь скорость совпадает. Значит проблема ещё в чём-то.
lprot
Скорость прошивки в pic должна совпадать со скоростью прошивки в модуле bluetooth, иначе будет то, что сейчас.
И ещё очень странно, что мистер Holeshchak в своих инструкциях ничего не упомянул о необходимости прошивки bt модулей — ведь во всех его прошивках pic скорость поднимается с 38 до 118🙄
А может кто знает (прошивал данный elm) какие по цветам проводки к какому входу программатора pickit3 подключать?
В записи же цоколевка есть на фото модуля блютуз.
Мне именно чип pic18f25k80 прошить нужно. ЕЕпром блютуз модуля я прошил уже прищепкой. На моей плате БТ модуль YC1021 и у него есть еепром чип 24C32. К нему и подключался прищепкой. Прошил версией которая поддерживает двойной режим 2.0/3.0 и BLE. Теперь мой elm может про БТ соединяться с айфоном.
Ты не понял меня. Посмотри на фото платы блютуз и слева там цоколевка PIC под PICkit3.
Здравствуйте, подскажите как прошить elm327 двухплатный? Специально искал такой, чтобы были контакты для подключения программатора (фото прилагаю). Прошивать буду программтором pickit3. Нужно ли при пошивки подавать питание на elm327 ?
Хорошо когда есть люди которые вместо Zхерней занимаются полезным делом. Спасибо . очень помогли. Лежало несколько лет ОБДешки с неисправными блютуз модулями. Я уже пытался припаять другие SPP модули но не помогло . И тут у вас увидел что скорость то модуля то не та. Поменял на 38400 и ура все модули ожили.
Привет, очень много чего интересного прочитал, но я в этом не силен, привела меня одна штука на эту статью. USB to RS232.
www.drive2.ru/l/9795512/?…sclid=l4znf2znn3471338362
у меня старенькая машинка и елм327 не подойдет как я понимаю, вычитал что можно диагностику сделать через USB to COM, а потом увидел на авито такой переходник Кабель USB to RS232 возможно через него добиться подключения?
Привет, лучше всего посмотреть на сайтах упомянутых программ, какие типы адаптеров они поддерживают.
Доброго времени. Я все это время занимался разработкой софта на касиру и тут меня также постигла учесть купить дешевый переходник транслятор (назвать диагностер рука не поднимается). Только вот его в рашке взял (как всегда машина не едет, ошибки, не стал ждать с алика).
За статью мое почтение.
Вообще для этого чипа есть плата developer, но ради одного устройства ее не имеет смысла брать. А вот при небольшом потоке уже осмысленно.
На VM почти все строится чтобы не разбираться с железом (китайца этим грешат, так проше им).
С меня + вам.
Привет, все верно ;)
буду поглядывать на ваши разработки. Сам то не особо умею все так хорошо расписывать =))
Может конечно что то опишу, но в моих записях я и сам порой подолгу ищу что от чего)))
Главное начать, а там читатели поправят ;)
тоже купить elm327 но он не работает в программе elm scan Toyota потому что не определяется как elm327 как мне сказал разработчик приложения, адаптер просто определяется как OBDII поэтому не будет работать в приложении. Подскажите как я могу его перепрошить или что с ним сделать чтобы изменить его имя с OBDII на ELM327 это же можно сделать без специального оборудования как то?
Проще и дешевле купить адаптер Viecar.
А можно ссылку на него? А скажите где имя адаптера зашито вообще? Команда AT+NAME не исправит ничего?
Имя адаптера зашито в прошивке bluetooth модуля. Если она поддерживает командный режим и изменение имени, то по идее можно изменить — это надо спросить у продавца адаптера. По поводу viecar, в конце статьи есть ссылка на его описание, а купить его проще всего на aIiexpress. Но по поводу покупки нового адаптера, лучше спросить автора программы под Toyota, которую вы пытаетесь использовать.
мега труд!
А если оставить FTDI, функционал не изменится? Прошить только PIC.
Можно и так.
Привет, не шьется чип, выдает ошибку. Родная прошивка сливается, заливается. И ещё как ты прислонял шлейф к чипу, очень интересно, я все глаза убил когда припаивался к нему ))
Ну просто прижал пальцами к гребенке и шил :)
если китайский клон, на правильном чипе и работает без проблем по Bluetooth со смартом, стоит ли заморачиваться и шить ELM372 1.5, покупая программатор? использую его только на своем гольфе его
Если не теряет данные, смысла заморачиваться нет.
А можно ли заменить модуль блютуз на вай-фай, просто подключив его по Rx, Tx и питанию? И ли новый модуль надо ещё согласовывать с основной платой elm327?
Можно.
Спасибо))
Здравствуйте! У меня к OBD2 подключен STM32 через модуль CAN шины. У него одна единственная задача — индикация круиз-контроля. Справляется на УРА. Хочу через модуль Bluetooth забирать инфу о скорости, температуре двигателя, давлении масла и т.д. Что посоветуете и с чего надо начать? Программатор STM32 есть. Модуль Bluetooth тоже через него можно прошивать? А самое главное скетч для STM32 где взять?
К сожалению не подскажу. Не имел дела с STM32.
И такой вопрос можно ли в Deep OBD BMW1.5 прописать стандартную скорость 38кБ?
Можно, это делается AT командами в командном режиме.
Добрый день!
А я вот что то не соображу — а будет ли работать, например CarScanner, с адапретом если у него скорость будет 115кБ, он же под стандартный ELM с 38кБ работает. Т.е. прошьюсь под Deep OBD ELM1.5. — у которого 115кБ, подцеплю USB-UART, без BT. Ну в терминалке AT комндами понятно — выставлю скрость 115кБ — все работать будет. А Там Торк или Карсканнер — там посмотрел — скорость не выбрать.
Будет.
Заказал PicKit. Надеюсь получится.
А такой вопрос: Deep OBD BMW — он как обычный ELM не работает? Т.е. стандартный AT команды 327го не исполняет? Или под BMW и 1.5 нужно каждый раз перешиваться? А то, что-то всё мудрено с прошивкой БТ модуля, если просто увеличить скорость AT командой на постоянку, да и всё. Я пробовал на BT модуле JDY30 там и скорость и имя и пароль менять можно AT командами.
Deep OBD BMW — это совсем другая прошивка и комманды ELM327 не поддерживает. Зато поддерживает BMW протоколы. Купи два модуля один используй под BMW, второй под остальное и не нужно перешиваться. Но перешиваться можно по вайфай. Пароль и скорость тоже можно менять по вайфай.
Ok, спасибо! Поэкспериментирую.
Здравствуйте, купил себе elm327 c Bluetooth, адаптер не работает, не появляется блютуз при подключении. Разобрал и увидел что на плате блютуз оторван они смд компонент, вроде это конденсатор. Оторван так что половина осталась на плате и обратно его не припаять. Вы не можете подсказать какой конденсатор нужно поставить? Не хотелось бы из-за такой мелочи заказывать ещё один адаптер.
Привет, честно говоря не знаю. Нужно либо искать у кого такой же модуль блютуз и попросить измерить емкость, либо просто купить целый bt модуль как сделал я в статье и заменить.
Понял, спасибо.
Kcenobait
Здравствуйте, купил себе elm327 c Bluetooth, адаптер не работает, не появляется блютуз при подключении. Разобрал и увидел что на плате блютуз оторван они смд компонент, вроде это конденсатор. Оторван так что половина осталась на плате и обратно его не припаять. Вы не можете подсказать какой конденсатор нужно поставить? Не хотелось бы из-за такой мелочи заказывать ещё один адаптер.
Похоже, он не оторван, а криво установлен. Надо прозвонить его верхний вывод (1) с площадкой под него на плате (2). Если контакт есть, то дело не в модуле. Если нет — запаять и проверить
Он оторван, просто я положил его на свое место чтобы сделать фото. Уже едет другой адаптер, решил не заморачиваться с перепайкой блютуз модуля.
Не осилил, ни чего не понял, но очень интересно)
Афигеть. Я устал читать статью, это не то что её написать и ещё при этом ремонтировать программировать адаптер за 300 рублей.
Здравствуйте. Есть у меня вот такой ELM 327 (покупал лет 7 назад).
Изначально был Wi-Fi, но не работал. марку модуля могу вспомнить. Но модуль я выбросил и припаял внешний UART на FT232 тогда по кабелю заработал.
Можно ли на Алиэкспрессе купить какой-то готовый модуль BlueTooth 4.0 или Wi-Fi чтобы просто припаять и восстановить Wi-Fi или сделать адаптер "блютусным" для подключения к Carista с iPhone?
Если этот адаптер успешно заработал с ft232, то будет работать и с bluetooth модулем bc04. Как его запрограммировать, я собственно и пытался показать в статье на личном опыте :)
Я не смогу повторить то что сделали Вы в этой статье.
Т.е. я не смогу купить готовый БТ-модуль 4.0 и и просто припаять его к 4 контактам: TX, RX "+" и "-" вместо удаленного Wi-Fi модуля. Верно? Любой модуль надо будет перепрограммировать. У меня вот такой стоял. cloud.mail.ru/public/2iXY/uLaLqr4Vi
Будет зависеть от того, какая прошивка залита в BC04. Мне залили непонятно что, поэтому я исправил на правильную.
Мне не нужен БТ 2.0. Мне нужен БТ 4.0.
про BT4.0 не знаю, надо эту тему изучать, но надеюсь я камень заложил :)
Почему для такой работы Вы сразу не купили модуль с версией BlueTooth 4.0? Это же более перспективно и потребление гораздо меньше.
У ELM327 нет перспектив, он устарел. Поддерживает скорость обмена по CAN только до 500Кбит/c, короткие пакеты CAN. Скорость работы PIC c BT модулем макс 115200. Сейчас уже CAN FD пошел, поэтому BT4.0 на ELM327 считаю бессмысленным. Даже с BC3 на 1Мбит ELM327 прекрасно работает :)
Т.е. вот такой можно брать только на свой страх и риск. aliexpress.ru/item/33023862957.html
Я описал свой опыт с модулями которые имеют на борту чип CCxxxx. Лучше взять проверенное решение BC04, проживет дольше.
Новые китайские клоны научились теперь и "ELM327 Identifier" обманывать. Верно?
Точнее будет сказать некоторые нечистые на руку производители с самого начала лили в свои elm327 клоны, левые прошивки.
Здравствуйте! Спасибо за грандиозный обзор и инструкцию! Подскажите, пожалуйста, где искать папку lib-win32, что бы оттуда взять usbspi.dll?
Пожалуйста, подправил ссылку :)
Спасибо! А может еще подскажете, как прикрутить к BlueSuite известный программатор ch341a, он SPI поддерживает, но драйвера, которые для FTDI (usbspi.dll) к нему естественно не подходят. Вобщем, застопорился на этом.
Я видел github.com/puppywang/csr-spi-ch341, что кто-то пытался адаптировать usbspi.dll написанный для ft232r под работу с ch341a, но по ходу ничего не вышло. Поэтому наверно проще купить ft232r :)
занятно, спасибо за инфу :)
Отличная статья! Однозначно в закладки=)
Вот бы еще выкачать прошивку из OBDEleven там по сути такой же ELM1.5 адаптер со специфичной прошивкой PIC18F25K80
А для чего нужно выкачивать?
Что бы взять прошивку оригинального OBDEleven и зашить в китайский ELM327 и получить из него полноценный OBDEleven
а вот вы о чем)
так открою вам секрет, все волшебство не в адапторе ю. а в программе)))
Верно. Но программа к сожалению работает Только со своими родными адаптерами и без перепрошивки ELM327, увы, ничего не выйдет.
И это не проблема, допустим мне нужно поменять режим п.п. через телефон и что я сделаю? Первый этап сниффер шины кан, второй этап получив команды я вношу их в программу. И всё.
И вот программа умеет менять режим))) с обычным elm, но только с правильным чипом.
Все это уже не проблема, проблема только в написании приложения)
Многие уже над этим работают, так уж цена на обделевен упадёт, да и так сейчас акция стоимость в районе 7 тыс. рублей.
Так смысл не в том чтобы писать свои программы и изобретать что то. А смысл в том чтобы пользоваться вполне себе готовой программой OBDEleven с китайским прошитым ELM327 (конечно же с правильным PIC). Вышло бы гораздо дешевле оригинального решения. А так конечно за 5.5-7к можно купить оригинальное устройство и пользоваться на здоровье.
b1oz
Отличная статья! Однозначно в закладки=)
Вот бы еще выкачать прошивку из OBDEleven там по сути такой же ELM1.5 адаптер со специфичной прошивкой PIC18F25K80
ага у кого есть залейте прошивки и фото плат адаптера OBDEleven все будут в восторге
по железу …как и простои мини елм327.
b1oz
Отличная статья! Однозначно в закладки=)
Вот бы еще выкачать прошивку из OBDEleven там по сути такой же ELM1.5 адаптер со специфичной прошивкой PIC18F25K80
там у каждого адаптера свой серийный номер который проверяется при подключении. даже если у вас и будет прошивка и прошьёте елм, адаптер не будет работать.
Титанический труд! Браво)) Пригодится ли это на практике…
Конечно пригодится, здесь все секреты и разработки прошивки для bluetooth модулей, как прошить и все в одном месте.
А как же приложение iCan, которое работает со всеми вагами и есть возможность подгружать базу по авто? Оно только правда для iOs. Видит все блоки, измеряемые величины, можно даже некоторые блоки кодировать, только обязательное условие именно елм 1.5
Спасибо за информацию, я не знал про существование iCan Mobile. Жаль что доступно только для iOS. Согласно описанию, приложение работает исключительно по TP2.0 протоколу и получается, что работать с этим протоколом можно и на штатной ELM1.5 прошивке. Я подкорректировал статью. Тем не менее, прошивка Deep OBD BMW позволяет диагностировать машины по протоколам KWP и BMW, что оригинальная прошивка ELM327 делать не позволяет, о чем собственно даже указано на сайте ELM www.elmelectronics.com/products/ics/obd/
Для использования Carista подойдёт любой из дешёвых китайских устройств, так получается?
Что посоветуете взять, чисто для мобильной диагностики. Odis у самого есть.
Carista поддерживает как родной адаптер так и любой китайский ELM327. Главное чтоб прошивка была в нем не фейковая. А то есть прошивки которые сообщают что они ELM 1.5, а AT команды не выполняют при этом.
Для мобильной диагностики — если под этим подразумевать посмотреть ошибки с нормальной расшифровкой, лучше одиса нет так как только в нем полная база. Из альтернатив мне по описанию нравится OBDeleven, не знаю как он на деле так как у меня его нет. Но я считаю так как цены на китайские клоны стали адекватные, надо в арсенале иметь все на всякий случай :)
У меня тоже есть и одис и vcp оригинал. Но obdeleven это однозначно наиболее удобное карманное средство первого выбора. Конечно для специальных целей вроде прошивки блоков или сложных процедур калибровок требуются более серьёзные приборы.
Но кодирование, базовые функции, адаптации, измерения, закрытый доступ (включая brutеforece поиск логинов), тестирование исполнительных механизмов — с этим всем obdeleven справляется на ура. Кроме того он запоминает все действия и информацию по блокам которой касался, и эта информация доступна даже оффлайн без машины. Можно сделать скан машины или полную резервную копию блока со всеми адаптациями.
Ну и вишенкой супер дизайн и хорошая юзабельность.
Звучит неплохо, каковы финансовые вложения в это решение? Существуют ли клоны адаптера, вылеченные версии? Пожалуйста в личку если затрагиваю "неудобную" тему.
Я знаю только obdeleven.com/ Ещё можно купить на ебее, как я и сделал, но продавец помоему тот же самый)
По адаптеру — могу разобрать и сфоткать свою первую версию, сейчас уже вторая в продаже
Это было бы очень интересно, кинь ссылку пожалуйста на обзор, когда сделаешь
Спасибо, отличная статья! Прям руки зачесались проверить все эти Deep OBD)) хотя вряд-ли оно сопоставимо с моим obdeleven.
Obdeleven это совсем другой клас клиентского приложения. Я бы сравнил его функциональные возможности с VCDS. Но по железу адаптер скорей всего ничем не отличается кроме прошивки.
По функционалу и возможностям obdeleven превосходит vcds. По базе данных и тот и другой не полны, но иногда удачно дополняют друг друга.
С этого момента поподробней пожалуйста. Есть ли где незаангажированный разбор адаптера и приложения? Фраза превосходит меня честно говоря настораживает, так как есть с чем сравнить, Carista, VCDS 19.6.1/Вася 19.5, ODIS-S/E…
такого подробного разбора ещё не встречал, — великолепно
но вместо допиливания китайских адаптеров, можно купить построенный на оригинальной схеме или улучшенные аналоги
например я просто взял
1) 20$ bt адаптер ELM-совместимый от Carista www.amazon.com/dp/B00YVHGTBM
2) 30$ usb адаптер ELM-совместимый от ScanTool www.amazon.com/ScanTool-4…Diagnostic/dp/B005ZWM0R4/
ещё хороший вариант — ELS27 ~60$ els27.ru