Включение и просмотр CAN‑логов на Android

Короткий ответ: чаще всего нужно root‑устройство или доступ по ADB, приложение/сниффер для OBD‑адаптера и запись через logcat или экспорт из приложения — затем файлы открывают в текстовом редакторе или парсят скриптом для анализа. Ниже — конкретные шаги и команды, чтобы начать за 10–20 минут.

Что такое CAN‑лог и зачем он нужен

CAN‑лог — запись пакетов шины CAN (ID + данные) между ECU автомобиля. На Android его используют для:

  • диагностики (DTC), поиска причин ошибок;
  • мониторинга параметров (обороты, температура, давление);
  • разработки и тестирования приложений, которые работают с OBD‑адаптерами.

Формат: строки с ID и байтами данных в hex. Без логов вы лишаетесь возможности воспроизвести редкую проблему и проанализировать её постфактум.

Как включить CAN‑лог на Android — пошагово

  1. Подготовка
  • Подключите OBD‑II адаптер к машине и спарьте с телефоном (Bluetooth/Wi‑Fi/USB).
  • Если нужен полный доступ к системным логам — подготовьте root (Magisk) или используйте ADB с ПК и включите "Отладку по USB".
  1. Быстрая запись через ADB (без привязки к конкретному приложению)
  • На ПК: adb devices adb logcat -b all | grep -i can > can_log.txt
  • На устройстве (Termux): pkg update && pkg install android-tools logcat -b all | grep -i can > /sdcard/can_log_$(date +%Y%m%d_%H%M%S).log &
  1. Если приложение поддерживает логирование
  • В настройках приложения (Torque, Car Scanner и т.п.) включите extended/verbose logging и экспорт логов в CSV/ZIP.
  • Логи приложений обычно лежат в /sdcard/Android/data// или в папке экспорта внутри приложения.
  1. Постоянная запись в фоне (root предпочтителен)
  • Скрипт для фоновой записи: logcat -c && nohup logcat *:V > /sdcard/canbus_$(date +%Y%m%d_%H%M%S).log 2>&1 &

Для быстрой отладки записывайте короткие сессии (5–10 минут) — объём логов растёт очень быстро.

Где хранить и как смотреть логи, базовый разбор

Обычные места:

  • /sdcard/Android/data// — логи конкретного приложения (CSV, txt).
  • /data/log/ или /data/local/ — системные дампы (требуется root).
  • /proc/last_kmsg — сообщения ядра (при падении системы).

Открыть: adb pull /sdcard/can_log.txt или скопировать через файловый менеджер (для системных — нужен root).

Пример строки и простая расшифровка: CAN: 0x7E0 [8] 01 0C 00 00 00 00 00 00

  • 0x7E0 — ID блока (ECU)
  • байты 3–4 (01 0C) — пример запроса RPM; расчёт зависит от PID (обычно RPM = ((A*256)+B)/4)

Парсинг в Termux (пример на Python):

import re
with open('/sdcard/can_log.txt') as f:
    for line in f:
        m = re.search(r'0x([0-9A-Fa-f]+) \[[0-9]\] ([0-9A-Fa-f ]+)', line)
        if m:
            print(f"ID: 0x{m.group(1)}, Data: {m.group(2).strip()}")

Не записывайте и не экспериментируйте с CAN в движении без понимания последствий — можно нарушить работу автомобиля. Длительная запись может перегревать адаптер и быстро разряжать телефон.

Частые ошибки

  • Ничего не видно в логах: проверьте, что адаптер подключён и использует правильную скорость (обычно 500 kb/s) и шину (HS/LS).
  • Нет прав на чтение системных логов: нужен root или включённый ADB с разрешением от устройства.
  • Логи пустые в приложении: включите verbose/extended logging в настройках приложения.
  • Переполнение памяти: настроьте ротацию логов и автоматическое удаление старых файлов.

FAQ

  • Нужно ли root всегда? Нет. Для базовой работы достаточно ADB + разрешений или логирования внутри приложения; для системных дампов и полного захвата требуется root.
  • Как быстро найти конкретный PID в логе? Фильтруйте по ID устройства или используйте регулярные выражения по известным паттернам PID.
  • Можно ли парсить в реальном времени? Да — запускайте logcat с grep и направляйте вывод в парсер на Python/Node.js.

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