Nearby is a developer-focused reference Android app that scans for and decodes
three of the most common discovery protocols on a wireless LAN:
• Bluetooth Low Energy (BLE) — passive and active scanning, advertising payload decode, GATT service / characteristic enumeration on connect.
• Multicast DNS / DNS-SD (RFC 6762) — service browse on 224.0.0.251:5353,
including TXT record decode and IPv4 resolution.
• SSDP / UPnP — M-SEARCH on 239.255.255.250:1900, NOTIFY parsing, and optional
fetch of the device description XML from the LOCATION header.
It is built as a teaching artefact for embedded firmware developers and Android
engineers who want to see, in one place, what bytes a wireless device is
actually emitting and how the platform parses them. Every screen in the app
links back to the source file that produced it.
Features
• Live scanner with merged BLE / mDNS / SSDP feed and per-protocol filter chips.
• RSSI sorting, MAC / vendor / name search.
• Tap a device for a detailed view: hex dump of the raw scan record, decoded
AD structures, GATT services with READ / WRITE / NOTIFY flags, mDNS PTR / SRV
/ TXT records, full SSDP description XML.
• Favorites tab — pin devices to keep across scans and app restarts. Devices
not currently visible are flagged "Not nearby".
• Logs tab — chronological event stream of every scan callback, useful when
debugging timing-sensitive devices.
• Configurable scan window, scan interval, active-vs-passive mode, M-SEARCH MX,
duplicate filtering — all persisted via DataStore.
• Light / dark / system theming.
• Share device info as a plain-text file via the Android share sheet.
• Fully open source under MIT. No tracking, no analytics, no ads, no account.
Source: https://github.com/rajeshpachaikani/nearby
Permissions explained
• Bluetooth scan / connect — required for BLE discovery and GATT inspection.
We declare `usesPermissionFlags="neverForLocation"` so the OS never derives
location from BLE results.
• Location (Android 6 – 11 only) — legacy requirement for BLE scanning on older
Android versions. Not requested on Android 12+.
• Internet, network state, Wi-Fi state, multicast lock — required for mDNS and
SSDP, both of which rely on multicast UDP on the local network.
What this app does NOT do
• Does not connect to the internet for any purpose other than receiving
multicast traffic on your local Wi-Fi.
• Does not collect, transmit or store any personal data.
• Does not log RSSI, MACs or device names off-device.
Suggested for
• Embedded firmware engineers building BLE peripherals, Matter / Thread
bridges, UPnP gateways or mDNS-advertised IoT devices.
• Android engineers learning the BluetoothLeScanner / NsdManager APIs.
• Network administrators auditing what is broadcasting on a network segment.