A cross‑platform Graphical User Interface (GUI) tool to discover Bluetooth Low Energy (BLE) devices, connect to them, and extract detailed information (manufacturer, model, serial number, firmware, battery level, and all readable characteristics). Also supports limited classic Bluetooth discovery (Linux: full scan, Windows: paired devices only).
- BLE scanning – finds all advertising BLE devices
- Deep device interrogation – reads all available characteristics (Device Information, Battery, etc.)
- Parallel connections – speeds up scanning of many devices
- Export results – save as TXT, JSON, or CSV (rich columns)
- Stop button – cancel scan at any time
- Platform awareness
- Windows: classic Bluetooth shows only paired devices (active scan not possible)
- Linux: requires
hcitoolfor classic scanning (BLE works without it)
- Live output – see discovered devices and connection progress in real time
- Clear Output button – keeps log manageable
- Custom logo & icon – professional branding
- Python 3.7 or later
bleak– BLE libraryPillow– for logo display (optional, falls back to text)
Install with:
pip install bleak PillowInstall bluez-utils:
sudo apt install bluez-utils # Debian/Ubuntupython bt_scanner_gui.py-
Install PyInstaller:
pip install pyinstaller -
Run the build command (Windows example):
python -m PyInstaller --onefile --windowed --name "BTScanner" --icon=BluetoothDeviceScannerIcon.ico --add-data "BluetoothDeviceScannerLogo.png;." --add-data "BluetoothDeviceScannerIcon.ico;." --hidden-import PIL --hidden-import PIL.Image --hidden-import PIL.ImageTk bt_scanner_gui.py- The executable will be in the
distfolder.
Note for Linux/macOS: replace semicolons
;with colons:in--add-data.
-
Max Devices – limit the number of devices processed (0 = unlimited)
-
Scan Time (sec) – how long to listen for advertisements
-
Min RSSI (dBm) – ignore signals weaker than this (e.g., -80)
-
Parallel connections – number of simultaneous BLE connections
-
Include Classic Bluetooth – on Windows: paired devices only; on Linux: full scan (requires
hcitool) -
Start Scan / Stop – start or cancel the scan
-
Save .TXT / .JSON / .CSV – export results after scan
-
Clear Output – erase the log
-
TXT – full characteristic dump for each device, human‑readable
-
JSON – complete structured data, ideal for scripting
-
CSV – flattened summary with columns:
Type, Address, Name, RSSI, TX Power, Connectable, Manufacturer, Model Number, Serial Number, Firmware Revision, Hardware Revision, Software Revision, PnP ID, System ID, Battery Level, Advertised Service UUIDs, Manufacturer Data, Error
| Platform | BLE | Classic Bluetooth |
|---|---|---|
| Windows | Full support | Only already paired devices are listed (Windows does not allow active classic discovery) |
| Linux | Full support | Full scan via hcitool – install bluez-utils |
| macOS | Full support (via CoreBluetooth) | Not supported |
-
No Bluetooth adapter found?
Ensure Bluetooth is enabled and the adapter is working. The app does not pre‑check the adapter – if scanning fails, an error message will appear.
-
Linux classic scan doesn’t work
Install
bluez-utils:sudo apt install bluez-utils
You may also need to run the executable withsudoif permission is denied. -
Logo or icon not showing in the built
.exeMake sure you used--add-datacorrectly and that the files are in the same folder when building. -
CSV columns are too many The CSV is designed for data analysis. Use JSON or TXT for full detail.
MIT – free to use, modify, and distribute.
bleak – cross‑platform BLE library
PyInstaller – for making standalone executables
For issues or feature requests, please open an issue on the repository.
"To <div> or not to <div>, that is the question." — Brage1025
