Android'de CAN Günlüklerini Açma ve Görüntüleme
Kısa cevap: Çoğu zaman root erişimi veya ADB üzerinden bağlantı, OBD adaptörü için bir uygulama/sniffer ve logcat ile kayıt veya uygulamadan dışa aktarma gerekir; ardından dosyalar metin düzenleyicide açılır veya analiz için bir betikle ayrıştırılır. Aşağıda 10–20 dakikada başlamanız için somut adımlar ve komutlar yer almaktadır.
CAN günlüğü nedir ve neden gereklidir
CAN günlüğü, araçtaki ECU'lar arasındaki CAN veri yolu paketlerinin (ID + veriler) kaydıdır. Android'de şu amaçlarla kullanılır:
- arıza teşhisi (DTC), hata nedenlerini bulma;
- parametrelerin izlenmesi (devir, sıcaklık, basınç);
- OBD adaptörleriyle çalışan uygulamaların geliştirilmesi ve test edilmesi.
Format: hex biçiminde ID ve veri baytlarını içeren satırlar. Günlükler olmadan nadir görülen bir sorunu yeniden oluşturup sonradan analiz etme imkanınız olmaz.
Android'de CAN günlüğünü nasıl açarsınız — adım adım
- Hazırlık
- OBD-II adaptörünü araca bağlayın ve telefonla eşleştirin (Bluetooth/Wi-Fi/USB).
- Sistem günlüklerine tam erişim gerekiyorsa root (Magisk) hazırlayın veya PC ile ADB kullanarak "USB Hata Ayıklama"yı etkinleştirin.
- ADB ile hızlı kayıt (belirli bir uygulamaya bağlı kalmadan)
- PC'de: adb devices adb logcat -b all | grep -i can > can_log.txt
- Cihazda (Termux): pkg update && pkg install android-tools logcat -b all | grep -i can > /sdcard/can_log_$(date +%Y%m%d_%H%M%S).log &
- Uygulama günlüklemeyi destekliyorsa
- Uygulama ayarlarında (Torque, Car Scanner vb.) geniş/ayrıntılı günlüklemeyi (extended/verbose logging) etkinleştirin ve günlükleri CSV/ZIP olarak dışa aktarın.
- Uygulama günlükleri genellikle /sdcard/Android/data/
/ dizininde veya uygulamanın içindeki dışa aktarma klasöründe bulunur.
- Arka planda sürekli kayıt (root tercih edilir)
- Arka plan kaydı için betik: logcat -c && nohup logcat *:V > /sdcard/canbus_$(date +%Y%m%d_%H%M%S).log 2>&1 &
Hızlı hata ayıklama için kısa oturumlar (5–10 dakika) kaydedin; günlük boyutu çok hızlı büyür.
Günlükleri nerede saklamalı ve nasıl görüntülemeli, temel inceleme
Yaygın konumlar:
- /sdcard/Android/data/
/ — belirli bir uygulamanın günlükleri (CSV, txt). - /data/log/ veya /data/local/ — sistem dökümleri (root gerekir).
- /proc/last_kmsg — çekirdek mesajları (sistem çöktüğünde).
Açmak için: adb pull /sdcard/can_log.txt veya dosya yöneticisiyle kopyalayın (sistem dosyaları için root gerekir).
Örnek satır ve basit çözümleme: CAN: 0x7E0 [8] 01 0C 00 00 00 00 00 00
- 0x7E0 — blok kimliği (ECU)
- 3–4. baytlar (01 0C) — örnek RPM isteği; hesaplama PID'e bağlıdır (genellikle RPM = ((A*256)+B)/4)
Termux'ta ayrıştırma (Python örneği):
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()}")
Sonuçlarını anlamadan hareket halindeyken CAN ile kayıt yapmayın veya deneme yapmayın; aracın çalışmasını bozabilirsiniz. Uzun süreli kayıt adaptörü aşırı ısıtabilir ve telefonu hızla boşaltabilir.
Sık karşılaşılan hatalar
- Günlüklerde hiçbir şey görünmüyor: Adaptörün bağlı olduğundan, doğru hızı (genellikle 500 kb/s) ve veri yolunu (HS/LS) kullandığından emin olun.
- Sistem günlüklerini okuma izni yok: Root veya cihazdan onaylanmış etkin ADB gerekir.
- Uygulamada günlükler boş: Uygulama ayarlarında verbose/extended günlüklemeyi etkinleştirin.
- Bellek dolması: Günlük rotasyonu yapılandırın ve eski dosyaları otomatik olarak silin.
SSS
- Root her zaman gerekli mi? Hayır. Temel kullanım için ADB + izinler veya uygulama içi günlükleme yeterlidir; sistem dökümleri ve tam yakalama için root gerekir.
- Günlükte belirli bir PID'i hızlıca nasıl bulursunuz? Cihaz kimliğine göre filtreleyin veya bilinen PID desenlerine göre düzenli ifadeler kullanın.
- Gerçek zamanlı ayrıştırma yapılabilir mi? Evet; logcat'i grep ile çalıştırıp çıktıyı Python/Node.js ayrıştırıcısına yönlendirin.
Bu adımlar, Android'de CAN trafiği kaydını açmanıza, dosyaları kaydetmenize ve ilk analizi yapmanıza olanak tanır. Kısa bir oturumla başlayın ve aracınızın belirli PID'lerine göre ayrıştırmayı kademeli olarak karmaşıklaştırın.