LoRa Transport (Planned)¶
This page documents the planned LoRa integration for Mycel, based on research completed January 2026.
Status: Researched - Not Yet Implemented
LoRa integration has been validated as technically feasible. Implementation is planned for a future release.
Overview¶
LoRa (Long Range) radio provides kilometer-scale mesh communication for areas without cellular coverage. Mycel plans to integrate LoRa via the Meshtastic ecosystem.
| Property | Value |
|---|---|
| Range | 1-15 km (line-of-sight) |
| Data Rate | 36-700 bytes/sec (depending on settings) |
| Frequency | Sub-GHz ISM bands (868/915 MHz) |
| Hardware | External LoRa module ($20-40) |
| Implementation | Via Meshtastic device API |
Why LoRa?¶
Current Mycel transports have range limitations:
| Transport | Range | Limitation |
|---|---|---|
| Nearby Connections (BLE) | 30-50m | Short range |
| Nearby Connections (WiFi) | Up to 200m | Requires WiFi hardware |
| Nostr Relays | Global | Requires internet |
LoRa fills the gap: kilometer-scale offline communication.
Meshtastic Integration¶
Why Meshtastic?¶
Meshtastic is an open-source LoRa mesh project with:
- Proven multi-hop mesh routing (3-hop flooding)
- Support for arbitrary binary payloads
- Extensive hardware compatibility
- Active community and ongoing development
Integration Approach¶
Mycel will treat Meshtastic as an external transport (like a modem):
┌─────────────┐ BLE/USB ┌─────────────────┐ LoRa ┌─────────────┐
│ Mycel App │ ◄──────────────► │ Meshtastic Node │ ◄──────────► │ Other Nodes │
└─────────────┘ └─────────────────┘ └─────────────┘
Benefits:
- No firmware development required
- Meshtastic handles mesh routing
- License isolation (GPL firmware, Apache app)
- Leverage existing community testing
License Compatibility¶
| Component | License | Our Approach |
|---|---|---|
| Meshtastic firmware | GPL v3 | Runs on external hardware |
| Meshtastic Python lib | GPL v3 | Reference only, not included |
| Mycel LoRa bridge | Apache 2.0 | Clean-room implementation |
By treating Meshtastic as an external device (like a printer or modem), Mycel maintains Apache 2.0 licensing.
Hardware Options¶
Users will need a LoRa module to use this transport. Recommended devices:
| Device | Price | Interface | Range | Notes |
|---|---|---|---|---|
| Heltec WiFi LoRa 32 V3 | ~$20 | USB-C, BLE | 5-10 km | Recommended starter |
| LilyGO TTGO LoRa32 | ~$25 | USB, BLE | 3-10 km | OLED display included |
| RAK WisBlock RAK4631 | ~$35 | USB, BLE | 5-15 km | Modular, expandable |
| LilyGO T-Beam | ~$40 | USB, BLE | 3-10 km | Includes GPS |
All devices use the Semtech SX1262 or SX1276 LoRa chipset and are supported by Meshtastic firmware.
Connection Methods¶
| Method | Pros | Cons |
|---|---|---|
| BLE | Low phone power, device runs on battery | Requires pairing |
| USB OTG | Simple setup | Drains phone battery |
Technical Specifications¶
Payload Capacity¶
| Setting | Data Rate | Airtime (250B) | Range |
|---|---|---|---|
| SF7 @ 125kHz | ~700 B/s | 0.4 sec | 2-3 km |
| SF9 @ 125kHz | ~150 B/s | 1.7 sec | 5-8 km |
| SF12 @ 125kHz | ~36 B/s | 7 sec | 10-15 km |
Mycel DTN bundles (~250 bytes) fit within a single LoRa packet.
Regulatory Compliance¶
LoRa operates in unlicensed ISM bands worldwide:
| Region | Frequency | Power Limit | Duty Cycle |
|---|---|---|---|
| Europe (EU868) | 863-870 MHz | 14 dBm (25 mW) | 1% |
| North America (US915) | 902-928 MHz | 30 dBm (1 W) | 400ms dwell |
| Australia (AU915) | 915-928 MHz | 30 dBm | No limit |
| Asia (AS923) | 920-923 MHz | 16 mW | LBT required |
| India | 865-867 MHz | 27 dBm | No formal limit |
Duty Cycle Limits
In Europe, the 1% duty cycle means ~36 seconds of airtime per hour per channel. This is sufficient for delay-tolerant messaging but prevents continuous transmission.
Implementation Plan¶
Phase 1: BLE Bridge¶
- Implement Meshtastic BLE protocol in Mycel
- Device discovery and pairing UI
- Send/receive DTN bundles via private port
- Basic testing with 2-3 nodes
Phase 2: Routing Integration¶
- Register LoRa as transport with
TransportKind.MID_RANGE - Configure routing priority (below Nearby, above Nostr for local)
- Handle MTU constraints (chunk larger messages)
- Implement retry logic for duty cycle limits
Effort Estimate¶
| Phase | Duration | Dependencies |
|---|---|---|
| Phase 1 | 4-6 weeks | Meshtastic protocol docs |
| Phase 2 | 2-3 weeks | Phase 1 complete |
Alternative: Custom LoRa Stack¶
Building a custom LoRa mesh (without Meshtastic) was evaluated but not recommended:
| Aspect | Meshtastic | Custom |
|---|---|---|
| Development time | 4-6 weeks | 4-6 months |
| Mesh routing | Included | Must implement |
| Hardware support | 50+ devices | Must add each |
| Community testing | Yes | No |
| Maintenance | Shared | Full ownership |
Custom development may be revisited if Meshtastic proves unsuitable.
Related Projects¶
- Meshtastic - LoRa mesh firmware
- MeshCore - Alternative LoRa mesh (emerging)
- Reticulum - General-purpose mesh networking
- LXMF - Lightweight mesh messaging on Reticulum
See also: Nearby Connections | Nostr Transport | Roadmap