Uploads node advertisements to map.meshcore.dev for network visualization.
- Configure Bot - Edit
config.ini:
[MapUploader]
enabled = true- Restart Bot - The service starts automatically and uploads node adverts with GPS coordinates
[MapUploader]
enabled = true # Enable map uploader
api_url = https://map.meshcore.dev/api/v1/uploader/node # API endpoint
min_reupload_interval = 3600 # Minimum seconds between re-uploads (1 hour)
verbose = false # Detailed debug loggingThe service needs your device's private key to sign uploads. It will automatically fetch the key from your device if supported.
Manual Configuration:
private_key_path = /path/to/private_key.txt- Listens for ADVERT packets on the mesh network
- Verifies packet signature using Ed25519
- Filters invalid packets:
- Missing GPS coordinates (lat/lon)
- Coordinates exactly 0.0 (invalid)
- CHAT adverts (only nodes are uploaded)
- Duplicate/replay attacks
- Uploads valid node adverts to the map with your radio parameters
- Prevents spam - Only re-uploads the same node after
min_reupload_interval
- Repeaters
- Room servers
- Sensors
- Other non-CHAT adverts with GPS coordinates
{
"params": {
"freq": 915000000,
"cr": 8,
"sf": 9,
"bw": 250000
},
"links": ["meshcore://DEADBEEF..."]
}- CHAT adverts (companion devices)
- Nodes without GPS coordinates
- Nodes with invalid coordinates (0.0, 0.0)
- Duplicate packets (same node within
min_reupload_interval)
All uploads are signed with your device's private key to ensure authenticity:
- Ed25519 signature proves you received the packet
- Radio parameters show your device config
- Raw packet data allows independent verification
Security: Map operators can verify uploads came from legitimate devices.
Check logs:
tail -f meshcore_bot.log | grep MapUploaderCommon issues:
enabled = falsein config- Missing dependencies:
pip install aiohttp cryptography - No private key available
- Check for adverts - Service only uploads when it receives ADVERT packets
- Verify coordinates - Nodes must have valid GPS coordinates
- Check signature - Service logs "signature verification failed" for invalid packets
- Check interval - Same node won't re-upload within
min_reupload_interval
Error: "Could not obtain private key"
Solutions:
- Ensure your device firmware supports private key export
- Manually provide key via
private_key_path - Check file permissions if using file path
The service tracks seen adverts to prevent duplicates. Old entries are automatically cleaned:
- Hourly cleanup removes entries older than
2 × min_reupload_interval - Safety limit: Keeps only 5000 most recent entries if dictionary grows beyond 10,000
Your device's radio settings are included in all uploads:
- freq: Frequency in Hz
- cr: Coding rate
- sf: Spreading factor
- bw: Bandwidth in Hz
Uploads use the meshcore:// URI scheme with hex-encoded raw packet data for verification.
Q: Will this upload my location? A: No. Only node adverts (repeaters, sensors) with GPS coordinates are uploaded. CHAT adverts are never uploaded.
Q: How often does it upload?
A: Only when new node adverts are received. Same node won't re-upload within min_reupload_interval (default: 1 hour).
Q: What if my device doesn't support private key export?
A: You'll need to manually provide the private key via private_key_path.
Q: Can I use a different map server?
A: Yes, change api_url to point to your own map.meshcore.dev instance.
Q: Does it upload all packets? A: No. Only ADVERT packets from nodes with valid GPS coordinates.