GitHub - skittleson/bluetooth-wos: Bluetooth Wall of Sheep

2 min read Original article ↗

Bluetooth "Wall of Sheep"

Python Issues

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

Interactive app

✅ 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, and pyinstaller
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

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

📑 References