Сканер OBD2 в OpenWrt

С появлением в автомобилях OBD2 (On-Board Diagnostics) на рынке появилось множество моделей различных сканеров, которые позволяют подключаться и заглядывать в «мозги» автомобиля. Некоторые из вас наверняка собирали на коленке свой первый Kline адаптер для того, чтобы разобраться самому о причинах индикации CHECK ENGINE на панели. Поэтому этот раздел, наверное, в большей степени будет интересен автомобилистам, которые наверняка раньше и представить себе не могли, что машину можно продиагностировать с помощью домашнего роутера ))).

На этапе конфигурации OpenWrt нужно отметить следующие модули:
Kernel modules:
USB Support:
kmod-usb-serial
kmod-usb-serial-ftdi

На момент написания статьи в состав OpenWrt не входит утилит для работы с obd2. Поэтому предлагаю рассмотреть программу Freediag вот отсюда http://freediag.sourceforge.net/. Стоит отметить, что эта программа давно не обновлялась. Не знаю, может я плохо искал, но сложилось впечатление, что поддержка в linux obd2 очень слабая. Надеюсь, конечно, что «через некоторое время» проблем с софтом для данной тематики также не будет. Итак, скачиваем её и собираем, используя кросс-компилятор.

Загружаемся и устанавливаем пакеты:

root@OpenWrt:/# opkg install kmod-usb-serial-ftdi
Installing kmod-usb-serial-ftdi (2.6.36.2-1) to root...
Downloading ftp://ftp:ftp@192.168.0.9/kmod-usb-serial-ftdi_2.6.36.2-1_brcm47xx.ipk.
Installing kmod-usb-serial (2.6.36.2-1) to root...
Downloading ftp://ftp:ftp@192.168.0.9/kmod-usb-serial_2.6.36.2-1_brcm47xx.ipk.
Configuring kmod-usb-serial.
Configuring kmod-usb-serial-ftdi.

Подключаем сканер OBD2 к разъему для диагностики в вашем автомобиле. Должен загореться синенький светодиод внутри корпуса сканера OBD2. Подключаем сканер OBD2 в USB-порт и смотрим вывод dmesg:


root@OpenWrt:/# dmesg
ftdi_sio ttyUSB0: FTDI USB Serial Device converter now disconnected from ttyUSB0
ftdi_sio 1-1.3:1.0: device disconnected
usb 1-1.3: new full speed USB device using ohci_hcd and address 6
ftdi_sio 1-1.3:1.0: FTDI USB Serial Device converter detected
usb 1-1.3: Detected FT232RL
usb 1-1.3: Number of endpoints 2
usb 1-1.3: Endpoint 1 MaxPacketSize 64
usb 1-1.3: Endpoint 2 MaxPacketSize 64
usb 1-1.3: Setting MaxPacketSize 64
usb 1-1.3: FTDI USB Serial Device converter now attached to ttyUSB0

Сканер OBD2 определился в системе как устройство ttyUSB0 .

Запускаем Freediag. В основе Freediag лежит утилита scantool, поэтому запускаем scantool.

root@OpenWrt:/# ./scantool
scantool: version 0.3
scantool: Type HELP for a list of commands
scantool: Type SCAN to start ODBII Scan
scantool: Then use MONITOR to monitor real-time data
scantool>

Документация на Freediag scantool есть как на сайте, так и в директории с исходным кодом. Поэтому доступный набор команд можно посмотреть там. Команда scan — запускает сканирование.

scantool> scan
Trying SAEJ1850-VPW ... failed!
Trying SAEJ1850-PWM ... failed!
Trying ISO14230_FAST ... Failed to open hardware interface failed!
Trying ISO14230_FAST !ISO9141-2
Connection to ECU established
MIL light OFF, 0 stored DTC(s)

Сканер OBD2