Включение и просмотр CAN‑логов на Android
Короткий ответ: чаще всего нужно root‑устройство или доступ по ADB, приложение/сниффер для OBD‑адаптера и запись через logcat или экспорт из приложения — затем файлы открывают в текстовом редакторе или парсят скриптом для анализа. Ниже — конкретные шаги и команды, чтобы начать за 10–20 минут.
Что такое CAN‑лог и зачем он нужен
CAN‑лог — запись пакетов шины CAN (ID + данные) между ECU автомобиля. На Android его используют для:
- диагностики (DTC), поиска причин ошибок;
- мониторинга параметров (обороты, температура, давление);
- разработки и тестирования приложений, которые работают с OBD‑адаптерами.
Формат: строки с ID и байтами данных в hex. Без логов вы лишаетесь возможности воспроизвести редкую проблему и проанализировать её постфактум.
Как включить CAN‑лог на Android — пошагово
- Подготовка
- Подключите OBD‑II адаптер к машине и спарьте с телефоном (Bluetooth/Wi‑Fi/USB).
- Если нужен полный доступ к системным логам — подготовьте root (Magisk) или используйте ADB с ПК и включите "Отладку по USB".
- Быстрая запись через 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 &
- Если приложение поддерживает логирование
- В настройках приложения (Torque, Car Scanner и т.п.) включите extended/verbose logging и экспорт логов в CSV/ZIP.
- Логи приложений обычно лежат в /sdcard/Android/data/
/ или в папке экспорта внутри приложения.
- Постоянная запись в фоне (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 вашего автомобиля.