Android jak sprawdzić historię połączeń bluetooth
adb shell dumpsys bluetooth_manager,/data/misc/bluetooth/. Dlaczego nie ma łatwo dostępnej historii
• Android przechowuje tylko to, co jest niezbędne do ponownego łączenia (adres MAC, klucze parowania); szczegółowe daty i czasy nie są eksponowane z powodów prywatności i oszczędności zasobów.
• Od Androida 12 obowiązują dodatkowe uprawnienia (BLUETOOTH_CONNECT, BLUETOOTH_SCAN), które ograniczają aplikacjom możliwość samodzielnego zbierania danych.
Metody uzyskania informacji (od najprostszej)
a) Ustawienia → Bluetooth/Połączone urządzenia
• Widoczne: nazwa, ikonka typu urządzenia, czasem lakoniczne „Ostatnio”.
• Brak osi czasu.
b) ADB bez roota (wymaga aktywacji „Debugowanie USB”)
adb shell dumpsys bluetooth_manager # lista zdarzeń (sekcja Connection Events:)
adb logcat | grep -i bluetooth # bieżące logi
• dumpsys przechowuje zwykle 20–40 ostatnich zdarzeń z informacją „time = xx ms ago”.
c) Bluetooth HCI Snoop Log (opcja programisty)
• Włącz: Ustawienia → System → Opcje programisty → „Włącz dziennik śledzenia Bluetooth HCI”.
• Plik btsnoop_hci.log zapisuje się w /sdcard/ lub /data/misc/bluetooth/.
• Odczyt: adb pull /sdcard/btsnoop_hci.log i analiza w Wireshark (profil Bluetooth).
• Loguje dopiero od chwili aktywacji; duża szczegółowość (adresy MAC, profile, znaczniki czasu).
d) Funkcje/OEM-owe (Samsung)
• Kod dialera *#9900# → dumpstate/logcat → copy to sdcard tworzy plik dumpstate…txt, zawierający m.in. log Bluetooth.
• Ustawienia → Połączenia → Bluetooth → „Ustawienia zaawansowane” → „Historia sterowania Bluetooth” – pokazuje tylko, która aplikacja włączyła/wyłączyła BT, nie historię urządzeń.
e) Root / dostęp do plików systemowych
• /data/misc/bluedroid/bt_config.conf – dla każdego sparowanego urządzenia przechowuje LinkKey, Type, Address i Timestamp (Unix epoch); można odczytać ostatnią datę parowania.
• Starsze logi w katalogach /data/log/bt/, /data/misc/bluetooth/logs/ (rotowane, wymagają roota).
f) Aplikacje monitorujące (np. Bluetooth Log Collector, MatLog)
• Działają od momentu instalacji, korzystają z uprawnień logcat lub Accessibility, mogą więc tworzyć własną historię; nie odzyskają przeszłości.
Teoretyczne podstawy
• Stos Bluetooth w Androidzie (Fluoride od A 8.0, wcześniej Bluedroid) udostępnia usługę BluetoothManagerService, która zapisuje wybrane zdarzenia do EventLogger.
• Wydarzenia przechowywane są w RAM (bufor pierścieniowy) i mogą zostać wyczyszczone po restarcie lub rotacji logu.
Praktyczne zastosowania
• Diagnostyka zrywania połączeń (analiza HCI).
• Audyty bezpieczeństwa – wykrywanie nieautoryzowanych urządzeń.
• Tworzenie własnych aplikacji audytowych – nasłuch BluetoothAdapter.ACTION_CONNECTION_STATE_CHANGED.
Przykładowa procedura krok-po-kroku (bez roota)
adb devices – upewnij się, że telefon jest widoczny. adb shell dumpsys bluetooth_manager > bt_events.txt Connection Events:
0: 2023-09-12 14:23:56 AA:BB:CC:DD:EE:FF HEADSET Connected
1: 2023-09-12 13:05:21 11:22:33:44:55:66 A2DP Disconnected
btatt || btl2cap.dumpsys bluetooth_manager wystarczy. dumpsys nie jest standardowo udostępniany aplikacjom spoza ADB; zwykła aplikacja z Play Store nie odczyta tych danych bez uprawnień shell. bt_config.conf zmian wartości Timestamp = vs. realny czas systemowy. bluetoothdumper, reconbt, btmon (BlueZ) – adaptacja do Androida.Android nie archiwizuje dla użytkownika pełnej historii połączeń Bluetooth. Możesz:
adb shell dumpsys bluetooth_manager.