Experimental · Heltec V4 · Seeed T1000-E · 21 Aug 2026

BitChat bridge

The repeater also operates as a BitChat gateway. A phone with the BitChat app connects to the node with Bluetooth. Messages move in two directions between BitChat channels and MeshCore hashtag channels. You set the channels by name.

Boards: Heltec V4 · Seeed T1000-E V4 build 87a0c36b T1000-E build 48a49b93 Experimental

# What the bridge does

The bridge is in the repeater. The repeater work does not change: the node repeats all packets as before. The bridge adds a BLE service for the BitChat app.

DirectionBehavior
BitChat → MeshCoreA message from a BitChat phone shows on the MeshCore channel with a 📱 mark and the sender name. A plain message goes to the default channel. A message that starts with a channel tag goes to that channel: #test hello sends "hello" to the MeshCore #test channel.
MeshCore → BitChatA message from a MeshCore channel shows in the BitChat app as <sender> text. A message from a channel that is not the default shows in the app's main chat with a tag: [#name] <sender> text.

The two builds

BoardContent
Heltec V4The car-node repeater plus the bridge. The bridge is always on.
Seeed T1000-EThe Dual-Node firmware plus the bridge. Repeater mode = car node plus the bridge. Companion mode = the app connection plus the Meshtastic presence. Five presses of the button change the mode. The bridge operates in repeater mode only.
This firmware is experimental. It did not have a radio test with the BitChat app. Do not install it on a node that must stay in service. The known limits are below.

# Channel commands

Use the serial CLI in repeater mode. A channel name is sufficient: the firmware computes the channel key from the name. The maximum is 4 channels. The first channel is the default channel. At the first start, the list contains #mesh.

CommandFunction
bitchat or bitchat listShow the channel list. The * mark shows the default channel.
bitchat add #nameAdd a channel.
bitchat del #nameRemove a channel.
bitchat statusShow the BLE state, the client state, and the message counts.
Note: Only hashtag channels are possible. A private channel with a random key has no name rule, so the bridge cannot make its key.

# On the phone

The bridge was made for the BitChat Android app and its v2.0 protocol. Get the app from bitchat.app.

  1. Set Bluetooth to on. Stay near the node. BLE has a short range.
  2. Do not pair the phone with the node in the Bluetooth settings. BitChat does not use a pairing. If the phone had a MeshCore BLE connection to this node before, remove that pairing. An old pairing is the most frequent cause when the node does not show.
  3. On the T1000-E, put the node in repeater mode (5 presses of the button). The bridge operates in repeater mode only. On the V4, the bridge is always on.
  4. Open the app and wait some seconds. The node sends its name each 4 seconds. The node shows in the peer list.
  5. Send a message in the app's #mesh channel. The message shows on the MeshCore #mesh channel with a 📱 mark. Messages from MeshCore show in the app as <sender> text.
  6. To send into an added channel, start the message with the channel tag: #test hello sends "hello" to MeshCore #test. Messages FROM that channel show in the app's main chat with the same tag: [#test] <sender> text.

When the node does not show in the app

CheckAction
Old Bluetooth pairingRemove the pairing for this node in the phone's Bluetooth settings. This is the most frequent cause.
ClockThe app drops a node with a clock that is more than 10 minutes wrong. Make sure that the node's clock is correct.
SignalMove nearer to the node. The app rejects a weak signal.

# Download and installation

Heltec V4 (car node + bridge)

# Update a board that has the firmware (settings stay):
esptool.py --chip esp32s3 write_flash 0x10000 meshcore-carnode-bitchat-heltec-v4-87a0c36b.bin

# New board, or full erase (settings are removed):
esptool.py --chip esp32s3 write_flash 0x0 meshcore-carnode-bitchat-heltec-v4-87a0c36b-full.bin

Seeed T1000-E (Dual-Node + bridge)

Settings-loss fix (21 Aug 2026): an earlier build on this page caused a T1000-E to lose all its settings. Cause: the bridge held too much memory in both modes, and a failed filesystem mount erased the filesystem. This build corrects both: the bridge memory exists only in repeater mode, and the firmware never erases a filesystem that exists. Make a record of your settings before you install any experimental build.

How to install the .uf2 file (T1000-E)

  1. Push and hold the button on the T1000-E.
  2. Hold the button. Connect the magnetic cable two times, quickly.
  3. Make sure that the green light is on. A drive with the name T1000-E shows on the computer.
  4. Copy the .uf2 file to the T1000-E drive. The board installs the firmware and starts again.
  5. To use the bridge, press the button five times to go to repeater mode.
Note: Make a check of a file before you install it. Use the command sha256sum -c SHA256SUMS.txt in the folder with the files.

Known limits

LimitEffect
Test stateThe #mesh channel had a full test with the BitChat app on hardware (both directions). The other functions did not have a full test.
Channels in the appThe BitChat app does not have named channels. All bridged traffic shows in the app's main chat. Messages from other MeshCore channels carry a [#name] tag; to send into such a channel, start the message with its tag (#name text).
T1000-E long messagesThe T1000-E cannot unpack a long BitChat message (more than approximately 256 bytes).
No direct messagesThe bridge moves channel messages only. It does not move BitChat direct messages.