Bridge Bluetooth Mesh and LoRa Networks

What You're Building

📱
BitChat App
Android Phone
Bluetooth
📡
Heltec V3
BitChat Bridge
LoRa
SenseCAP Solar
LoRa Repeater

BitChat

Bluetooth mesh chat app with IRC-style interface. Works offline, peer-to-peer, with end-to-end encryption.

MeshCore

Lightweight LoRa mesh protocol for long-range communication. Multi-hop routing extends range for miles.

The Bridge

Messages on the #mesh channel are relayed between BitChat (Bluetooth) and MeshCore (LoRa) networks.

Required Hardware

📻

Heltec LoRa32 V3

Bridge Device

  • ESP32-S3 MCU
  • SX1262 LoRa Radio
  • Built-in OLED display
  • USB-C for flashing
Buy Heltec V3

SenseCAP Solar Node P1

LoRa Repeater

  • nRF52840 MCU
  • SX1262 LoRa Radio
  • 5W Solar Panel
  • Battery powered (18650)
Buy SenseCAP
📱

Android Phone

BitChat Client

  • Android 8.0+
  • Bluetooth LE support
  • USB debugging (for ADB install)
Note: You'll also need a USB-C cable for flashing and a computer running Windows, macOS, or Linux.

Download Firmware & App

📡

Heltec V3 BitChat Bridge

Firmware that bridges BitChat (Bluetooth) to MeshCore (LoRa)

ESP32-S3 jooray fork
Official Releases

SenseCAP Solar Repeater

Standard MeshCore repeater firmware for LoRa mesh

nRF52840 MeshCore
Official Releases
📱

BitChat Android APK

Bluetooth mesh chat app for Android

Android 8.0+ permissionlesstech
Official Releases
Alternative Downloads: We also maintain a mirror of tested firmware builds:
Web Flasher: You can also flash devices directly in your browser:

Step 1: Flash Heltec V3 (Bridge)

The Heltec V3 will serve as the bridge between BitChat (Bluetooth) and MeshCore (LoRa). This device needs special "BitChat Bridge" firmware.

1.1

Connect Heltec V3 to Computer

Use a USB-C cable to connect your Heltec V3 to your computer. The device should power on and show the Heltec logo on the OLED display.

Connect USB-C Cable
1.2

Open Web Flasher

Open Chrome or Edge browser (WebSerial required) and navigate to:

Or use the ESP Web Flasher:

1.3

Put Device in Flash Mode

To enter bootloader/flash mode on the Heltec V3:

  1. Hold down the BOOT button
  2. While holding BOOT, press and release RST
  3. Release the BOOT button

The OLED display should go blank, indicating bootloader mode.

1.4

Flash the Firmware

In the web flasher:

  1. Click Connect and select the serial port (usually "USB JTAG/Serial")
  2. Select Erase to clear existing firmware (recommended)
  3. Upload the downloaded firmware-merged.bin at address 0x0
  4. Click Program
Tip: If you downloaded a .zip, extract it first. Use the merged binary file for easiest flashing.
1.5

Verify Flash Success

After flashing completes:

  1. Press the RST button to reboot
  2. The OLED should display "MeshCore" and device info
  3. The device is now ready for configuration

Command Line Alternative

If you prefer the command line, use esptool:

# Install esptool
pip install esptool

# Flash (replace /dev/ttyUSB0 with your port)
esptool.py --chip esp32-s3 -p /dev/ttyUSB0 \
  write_flash 0x0 firmware-merged.bin

Step 2: Flash SenseCAP Solar P1 (Repeater)

The SenseCAP Solar P1 uses an nRF52840 chip and is flashed differently. It will serve as your LoRa mesh repeater.

2.1

Enter DFU Mode

To put the SenseCAP Solar into DFU (Device Firmware Upgrade) mode:

  1. Connect the device via USB-C
  2. Double-press the RST (Reset) button quickly
  3. A new USB drive named XIAO-SENSE should appear on your computer
Important: The double-press must be quick (within ~500ms). If the drive doesn't appear, try again.
2.2

Flash the Firmware

Flashing nRF52 devices is as simple as drag-and-drop:

  1. Extract the downloaded sensecap_solar_repeater.zip
  2. Find the .uf2 file inside
  3. Drag and drop the .uf2 file onto the XIAO-SENSE drive
  4. The device will automatically flash and reboot
Drag UF2 to XIAO-SENSE drive
2.3

Verify Flash Success

After the device reboots:

  • The XIAO-SENSE drive will disappear
  • The device LED may blink to indicate activity
  • The repeater is now operational

Command Line Alternative

Using adafruit-nrfutil:

# Install nrfutil
pip install adafruit-nrfutil

# Flash (replace /dev/ttyACM0 with your port)
adafruit-nrfutil --verbose dfu serial \
  --package firmware.zip \
  -p /dev/ttyACM0 -b 115200 \
  --singlebank --touch 1200

Step 3: Configure Devices

Both devices need basic configuration. The most important setting is the LoRa frequency for your region.

Configure Heltec V3 Bridge

Connect via USB serial console or use the MeshCore web config tool:

Essential Commands

# Set your region's frequency
set freq 869.525      # EU: 869.525 MHz
# set freq 906.875    # US: 906.875 MHz
# set freq 916.875    # AU/NZ: 916.875 MHz

# Set device name
set name "MyBridge"

# Set location (optional, for maps)
set lat 51.5074
set long -0.1278

# Change admin password (default: "password")
password mynewpassword

# Save and reboot
reboot
BitChat Note: The bridge firmware automatically handles BitChat BLE connections. No additional BitChat-specific configuration is needed.

Configure SenseCAP Solar Repeater

Connect via USB serial or use the web config tool:

Essential Commands

# Set your region's frequency (MUST match bridge!)
set freq 869.525      # EU: 869.525 MHz

# Set repeater name
set name "SolarRepeater1"

# Set location (important for repeaters)
set lat 51.5074
set long -0.1278

# Change admin password
password mynewpassword

# Save and reboot
reboot
Critical: The frequency MUST match between all devices on your mesh network!

Regional Frequency Reference

Region Frequency Band
Europe (EU)869.525 MHz868 MHz
United States (US)906.875 MHz915 MHz
Australia/NZ (ANZ)916.875 MHz915 MHz
Japan (JP)920.625 MHz920 MHz
Korea (KR)921.125 MHz920 MHz

Step 4: Install BitChat App

4.1

Install the APK

You can install BitChat from:

For direct APK installation:

  1. Enable "Install from unknown sources" in Android settings
  2. Download and open the APK file
  3. Tap "Install"
4.2

Grant Permissions

When first launching BitChat, grant these permissions:

  • Bluetooth - Required for mesh networking
  • Location - Required for Bluetooth scanning on Android
  • Notifications - For message alerts
4.3

Connect to Bridge

BitChat will automatically discover nearby devices:

  1. Make sure your Heltec V3 bridge is powered on
  2. Open BitChat app
  3. The bridge should appear as a nearby peer
  4. BitChat connects automatically via BLE
Note: BitChat does NOT require Bluetooth pairing. If your phone has previously paired with a MeshCore device, unpair it in Bluetooth settings.
4.4

Join #mesh Channel

To communicate with MeshCore users, join the bridged channel:

/j #mesh

Messages sent to #mesh will be relayed to the MeshCore network!

Step 5: Test Your Setup

Verification Checklist

Useful Test Commands

In BitChat App:

/j #mesh       # Join the bridged channel
/w             # List online users
/channels      # Show discovered channels
Hello MeshCore!  # Send a test message

On MeshCore (via serial/app):

# Check peers
peers

# Send to #mesh
msg #mesh Hello BitChat!

Troubleshooting

BitChat doesn't see the bridge device
  • Make sure Heltec V3 is powered on
  • Check that you flashed the BitChat Bridge firmware (not regular companion)
  • Unpair any existing MeshCore devices in Bluetooth settings
  • Restart Bluetooth on your phone
Messages not reaching MeshCore network
  • Verify frequencies match on all devices
  • Make sure you're in the #mesh channel
  • Check that the SenseCAP repeater is online
  • Try moving devices closer together for testing
Can't enter DFU mode on SenseCAP
  • Double-press RST button faster (within 500ms)
  • Try a different USB cable
  • Connect directly to computer (not through a hub)
Web flasher can't connect to Heltec V3
  • Use Chrome or Edge browser (WebSerial required)
  • Make sure device is in bootloader mode (BOOT+RST)
  • Try a different USB port
  • Install CH340/CP210x drivers if needed