Bluetooth "Wall of Sheep"
Bluetooth "Wall of Sheep" is a lightweight Python application that scans for nearby Bluetooth devices and displays them in a live-updating, interactive board. It's ideal for demonstrating Bluetooth visibility and presence tracking in real-time.
✨ Demo
✅ Features
🔍 Core Features
- Live discovery of nearby Bluetooth devices
- Interactive “Wall of Sheep” display with metadata
- Company identification via public device listing
- Real-time CSV export of scanned device data
📏 Device Intelligence
- Estimates distance using RSSI and TX Power
- Highlights persistent devices ("stick around")
- Removes transient devices to handle address randomization
- Detects and hides device MAC addresses for privacy
🔧 Configurable Behavior
- Adjustable timeout for inactive devices
- Toggle address visibility
🚀 Quick Start
⚙️ Requirements
- Python 3.8+
- Linux or macOS (Bluetooth support)
pip,uv, andpyinstaller
pip install uv uv venv uv pip sync requirements.txt uv run index.py
Development
python -m pylint $(git ls-files '*.py')
🛠️ Build Portable
pyinstaller index.py -F -n bluetooth-wos
🛣️ Roadmap
- Resolve services by name
- Estimates distance from transmitter and receiver of a device given ONLY RSSI if know distance values are present.
- Configurable columns
- Fingerprint devices that keep changing MAC addresses
- Show adv data
- Interactive way to go into service data
- Resolve common service->characteristics such as temp/humidity
- attempt to keep same indexes of current devices
- Load spinner on first load. It's boring to see nothing in a table
- no coloring option
🤝 Contributing
Contributions, issues and feature requests are welcome.
Feel free to check issues page if you want to contribute.
Author
👤 Spencer Kittleson
- Github: @skittleson
- LinkedIn: @skittleson
- Blog: DoCodeThatMatters
- X: @skittleson
- StackOverflow: spencer
Show your support
⭐️ this repository if this project helped you! It motivates me a lot! 👋
Buy me a coffee ☕: skittles
Built with ♥
- python
- rich
- bleak
- ruamel.yaml
