Get your BLE bridge running in 5 minutes!
# Check Docker is installed
docker --version
# Check Bluetooth is running
sudo systemctl status bluetooth
# If not running, start it
sudo systemctl start bluetoothdocker pull ghcr.io/yeraze/meshtastic-ble-bridge:latestExpected output:
latest: Pulling from yeraze/meshtastic-ble-bridge
...
Status: Downloaded newer image for ghcr.io/yeraze/meshtastic-ble-bridge:latest
docker run --rm --privileged \
-v /var/run/dbus:/var/run/dbus \
ghcr.io/yeraze/meshtastic-ble-bridge:latest --scanExample output:
Scanning for Meshtastic devices...
Found: Meshtastic_b431 (DA:AB:E8:9C:B4:31)
Found: Yble_4c70 (48:CA:43:59:4C:71)
Copy the MAC address of your device!
Some devices require pairing. If so:
bluetoothctlIn bluetoothctl:
power on
agent on
default-agent
scan on
# Wait for your device to appear
pair AA:BB:CC:DD:EE:FF # Use your MAC address
# Enter PIN when prompted (often 123456)
trust AA:BB:CC:DD:EE:FF
exit
Replace AA:BB:CC:DD:EE:FF with your device's MAC address:
docker run -d --name ble-bridge \
--privileged \
-p 4403:4403 \
--restart unless-stopped \
-v /var/run/dbus:/var/run/dbus \
-v /var/lib/bluetooth:/var/lib/bluetooth:ro \
ghcr.io/yeraze/meshtastic-ble-bridge:latest AA:BB:CC:DD:EE:FF# Check container status
docker ps | grep ble-bridge
# View logs
docker logs -f ble-bridgeYou should see:
✅ Connected to BLE device
✅ TCP server listening on 0.0.0.0:4403
MESHTASTIC_NODE_IP=localhost
MESHTASTIC_NODE_PORT=4403MESHTASTIC_NODE_IP=<bridge-machine-ip>
MESHTASTIC_NODE_PORT=4403# From the MeshMonitor machine
telnet <bridge-ip> 4403If it connects, you're ready! Press Ctrl+] then type quit to exit telnet.
# Check logs
docker logs ble-bridge
# Common issues:
# - BLE adapter not found: sudo systemctl start bluetooth
# - Permission denied: Ensure --privileged flag is used
# - Device not found: Check device is in range and BLE enabled# Check bridge container is running
docker ps | grep ble-bridge
# Check port is exposed
docker port ble-bridge
# Should show: 4403/tcp -> 0.0.0.0:4403
# Check firewall
sudo ufw status
sudo ufw allow 4403/tcp # If using ufw# Restart the bridge with verbose logging
docker stop ble-bridge
docker rm ble-bridge
docker run -d --name ble-bridge \
--privileged \
-p 4403:4403 \
--restart unless-stopped \
-v /var/run/dbus:/var/run/dbus \
-v /var/lib/bluetooth:/var/lib/bluetooth:ro \
ghcr.io/yeraze/meshtastic-ble-bridge:latest AA:BB:CC:DD:EE:FF --verbose
# Watch logs
docker logs -f ble-bridge- See
docs/README_BLE_BRIDGE.mdfor detailed usage - See
docs/DEPLOY_BLE_BRIDGE.mdfor production deployment - See
docs/CLAUDE_BLE_BRIDGE.mdfor development/technical details
docker stop ble-bridge
docker rm ble-bridgeCheck the full documentation in the docs/ directory or visit:
- MeshMonitor: https://github.com/Yeraze/meshmonitor
- Meshtastic: https://meshtastic.org