Free tech learning for everyone, from basics to pro

IoT LabsLabsBeginner

Lab: scanning Bluetooth Low Energy devices you own

In short: Bluetooth Low Energy devices broadcast small adverts that anyone nearby can receive. In this lab you scan for your own devices, see what names, addresses and identifiers they leak, and learn which design choices protect privacy.

Aim and what you need

Bluetooth Low Energy (BLE) is used by fitness bands, tags, sensors and smart locks. Devices send advertising packets several times a second so phones can find them. The aim is to see that traffic for your own device and judge what it gives away.

  • A Linux laptop or Raspberry Pi with Bluetooth (the BlueZ stack is standard), or Windows or macOS for the Python part.
  • Python 3 and the bleak library.
  • A BLE device you own, for example a fitness band, a sensor or an ESP32.

Ethics and law: scanning picks up other people's devices too. Do not record, track or connect to devices you do not own. Filter your results to your own device and delete raw scan logs. Logging identifiers that can be linked to people may fall under data protection law such as the UK GDPR.

BLE discovery in this labYour deviceadvertisesAdvert packetname, UUIDsScannerlaptop or PiFilteryour MAC onlyNoteswhat leaks
Figure 1. Devices broadcast short advertising packets; your scanner receives them and you keep only your own device.

Steps

  1. Check Bluetooth is up, then scan with bluetoothctl and note your device's address.
  2. Show its details, then stop the scan.
  3. Install bleak and run the script, replacing the filter with your device's name or address.
  4. Move the device closer and further away and watch the RSSI (received signal strength) change.
  5. Check the device's app for privacy options, such as hiding its name or turning off always-on advertising.
rfkill list bluetooth
sudo systemctl status bluetooth
bluetoothctl
  power on
  scan on
  devices
  info <your-device-address>
  scan off
  quit

python3 -m venv ble-env
source ble-env/bin/activate
pip install bleak

# scan_mine.py
import asyncio
from bleak import BleakScanner

MY_NAME = "<part-of-your-device-name>"

async def main():
    found = await BleakScanner.discover(timeout=10.0, return_adv=True)
    for address, (device, adv) in found.items():
        if adv.local_name and MY_NAME in adv.local_name:
            print(address, adv.local_name, adv.rssi, adv.service_uuids, adv.manufacturer_data)

asyncio.run(main())

python3 scan_mine.py
What an advert can revealDevice namemay include ownerAddressfixed or randomRSSIrough distanceService UUIDsdevice typeManufacturervendor dataTimingpresence pattern
Figure 2. Even without connecting, advertising data can identify and track a device unless it is designed with privacy in mind.

How to verify and interpret

Your device should appear with its name, an RSSI value (for example -55 dBm close by and -85 dBm across the house) and one or more service UUIDs (universally unique identifiers) that hint at what it does. Run the scan a few times over an hour. If the address changes, the device uses random private addresses, which make tracking harder. If the address and a personal name such as "Sam's band" stay the same, anyone nearby can recognise and follow it.

ObservationWhat it means
Rotating addressPrivacy feature working
Fixed public address and personal nameEasy to track; rename it
Advertises all the timeVisible even when unused
Connects without pairingWeak security; check firmware and settings

Troubleshooting and clean-up

  • No adapter: rfkill unblock bluetooth, or check the USB dongle is supported.
  • Permission errors: on Linux your user may need to be in the bluetooth group.
  • Device not seen: many devices stop advertising once paired with a phone; turn phone Bluetooth off briefly.
  • No name shown: some names are in the scan response, so scan a little longer.

Deactivate and delete the virtual environment if you no longer need it, delete scan output and rename any device that shows your real name.

Practice

What does a changing BLE address over time tell you?
The device uses random private addresses, a privacy feature that makes tracking harder.
Why filter the scan to your own device?
Scans capture nearby people's devices; recording or tracking them raises privacy and legal issues.
What does RSSI give you?
Received signal strength, a rough indicator of how close the device is.

Key takeaways

  • BLE devices broadcast adverts anyone nearby can receive.
  • Adverts can reveal names, identifiers and presence.
  • Random private addresses reduce tracking.
  • Scan and record only your own devices.
  • Rename devices that broadcast personal names.
Tracks your learning on this device only. See your progress on the learning paths.

About the author

Mohamed Fayas

Founder of FM TecHub. CCNA certified, with a BTEC HND in Network Engineering, and BEng (Hons) in Computer Networking and Cloud Security. He writes practical, plain-English guides on networking, security and cloud.

More about the author

Original content written by Mohamed Fayas for FM TecHub. © 2026 FM TecHub. You're welcome to share a link to this page; please don't copy the text elsewhere without permission.

Stay up to date by email

New notes, tools and security news from FM TecHub, explained simply. Free.

We only use your email to send these updates. See our privacy policy.