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
.