πŸ“Œ This is Part 2 of the series. Part 1: Theory explains why this matters.


πŸ“¦ Unboxing and Preparation

Heltec V4 Contents

ComponentPurpose
Board ~60Γ—30 mmESP32-S3R2 + SX1262, OLED 128Γ—64, USB-C
Antenna (IPEX)Connect to ANT port - mandatory!
USB-C cablePower + flashing + debugging
Pins (optional)For external sensors/antennas

⚠️ Important: without antenna connected, the radio module may be damaged. Always attach antenna before powering on.

Heltec V4 Specifications

ComponentDescription
MCUESP32-S3R2 (WiFi + Bluetooth)
LoRa TransceiverSemtech SX1262
Frequencies863–870 MHz (EU), 902–928 MHz (US)
Display0.96" OLED 128Γ—64
PowerUp to +28Β±1 dBm (High Power option)
Power SupplyUSB-C + optimized LiPo management
ConnectorsUSB-C, U.FL/IPEX for LoRa, 1.25-8Pin GNSS, 1.25-2Pin Solar
Form FactorPin-compatible with V3/V3.1

⚑ Flashing: Web Flasher

Official flasher: https://flasher.meshtastic.org

Requirements

RequirementWhy
Chromium-based browser (Chrome, Edge, Brave)Web Serial API works only there
Serial port accessOn Linux - user must be in dialout group
Battery disconnectedDuring flashing - USB power only

🐧 Linux: Serial Port Permissions

If you see:

[09:52:42.841] Serial: serial_io_handler.cc:157 Failed to open serial port: FILE_ERROR_ACCESS_DENIED

Fix:

# Add user to dialout group
sudo usermod -a -G dialout $USER

# Apply changes (re-login or)
newgrp dialout

# Verify access
ls -l /dev/ttyUSB*  # or /dev/ttyACM*

πŸ”§ Flashing Process

  1. Disconnect battery and USB from the board
  2. Open web flasher, select:
    • Device: Heltec V4
    • Firmware: 2.7.21 (or latest stable/beta)
    • Variant: Full erase and install
  3. Click Erase Flash and Install
  4. Hold the PRG button on the board
  5. While holding PRG, plug in the USB cable
  6. Observe: brief red flash β†’ USB JTAG appears in port dropdown
  7. Release PRG, select USB JTAG, click Connect
  8. Wait for flashing to complete (terminal shows progress)
  9. After Leaving... message, press the RST button (reset)

πŸ’‘ If flasher doesn’t detect the port - try another cable (not all support data), another USB port, or restart the browser.


πŸ”Œ First Connection: Three Ways

After flashing, the board reboots and starts Meshtastic.

Connection Options

InterfaceHow to ConnectWhen to Use
BluetoothMeshtastic app (Android/iOS) β†’ scan devicesPortable node, one active connection
Wi-FiNode creates AP β†’ connect to your network β†’ IP shown on screenStationary node, multiple devices simultaneously
USB/COMConnect via terminal (PuTTY, screen)Home node, debugging, direct access

⚠️ Bluetooth: only one active connection.
Wi-Fi: multiple devices can connect simultaneously (convenient for stationary nodes).
USB: reliable for setup and debugging, no wireless connection required.

  1. Install Meshtastic (Android) or iOS version
  2. Launch, grant location and Bluetooth permissions
  3. Tap + β†’ select your node (by name Meshtastic_XXXX)
  4. Confirm pairing

Setup via Wi-Fi

  1. Node screen displays IP address (usually 192.168.1.x)
  2. Connect to node’s Wi-Fi network (password shown on screen)
  3. Open http://<node_ip> in browser
  4. Configure via web interface

πŸ’‘ IP Address: node gets address from your router (not 192.168.4.1!). Exact address displayed on OLED screen.


πŸ‘€ User Configuration

Core Parameters

ParameterValueNote
Long Name[PE] ponfertatoFull name (up to 20 characters)
Short NameponfShort name (maximum 4 characters)
RoleCLIENT or CLIENT_MUTEFor cities with >200 nodes - CLIENT_MUTE

πŸ’‘ ShortName: strictly 4 characters! This is the identifier in messages.


🌐 MQTT Setup for ONEmesh (RU)

ONEmesh - map of Meshtastic devices in Russia. Connecting to their MQTT server lets your node appear on the map and exchange data with other participants.

πŸ” MQTT transmits: messages, device metrics, location (if enabled) to the map and Telegram chats according to region/city settings.

Core Parameters

ParameterValueNote
MQTT Addressmqtt.onemesh.ruCommunity server
UsernameonemeshDefault; onemeshz / onemeshd - for downlink
PasswordonecatShared for all
Encryption enabledYesIf channels have PSK
JSON enabledNoNot needed for map
TLS enabledYesIf not working - try No
Root topicmsh/RU/XXXXXX = city code (list)
Proxy to clientYes (Bluetooth) / No (Wi-Fi)Depends on connection method
Map reportsYesSend position to map
I agreeYesAccept terms
Precision729 mCoordinate precision on map
Map report interval3600 s (1 hour)Minimum interval

πŸ’‘ Tip: if “Save” button is inactive - fill settings in stages: first basics (address, login, password), then map, then extra options.

Username Modes

UsernameDownlinkWhen to Use
onemesh❌ DisabledMost users - safe mode
onemeshzβœ… Zero-hopIf you need internet data but won’t rebroadcast over radio
onemeshdβœ… FullOnly for integrations, connecting network segments; not recommended for regular nodes

⚠️ Using onemeshd with Downlink enabled adds load to the radio network. Use consciously.


πŸ“‘ LoRa and Channel Settings

LoRa Section

ParameterValueWhy
RegionRussiaAuto-sets 433 MHz frequency and MQTT root topic
Hop limit5Max message hops; increase for large networks
Ignore MQTTNoAccept packets that came via internet
OK to MQTTYesAllow neighbors to forward your data to map

πŸ” If you change region - verify Root topic in MQTT updated automatically.

Channels

Configure the Primary channel:

ParameterValueNote
PSKAQ==Base encryption key; required if MQTT encryption is on
Uplink enabledYesSend data from this channel to MQTT
Downlink enabledNoReceive data from MQTT (enable only with onemeshz/onemeshd)
Position enabledYesTransmit coordinates via this channel
Precise locationNoHide exact coordinates from other nodes
Precision182 mPosition precision in channel

βœ… Setting one channel with PSK, Position enabled, and Precision is enough - even without MQTT, a neighboring node can forward your data.


πŸ“ Position Settings

GPS Device

ParameterValueRecommendation
Fixed positionEnabled (if no GPS)Enter coordinates manually
Latitude57.74213199999996Latitude (no trailing zeros)
Longitude40.9780224Longitude (no trailing zeros)
Altitude265Altitude in meters

πŸ’‘ Coordinates: enter without trailing zeros (e.g., 57.742, not 57.74200).

Position Packet

ParameterValueWhy
Position broadcast interval3600–43200 s (1–12 h)In dense cities - 6–12 h to reduce load
Smart positionYesSends more often when moving, less when stationary
Smart interval30 secondsMinimum interval when position changes rapidly

πŸ” For privacy: reduce Precision in channel and Map precision, or set fixed coordinates away from real location.


βš™οΈ Additional Modules

Environment Module

ParameterValueWhy
EnabledYesSend neighbor data to map
Update interval14400 s (4 h)Minimum interval
Transmit over LoRaNoDon’t load radio network; data goes via MQTT

πŸ—ΊοΈ Map will show layers “Who heard this device” and “Who this device heard”.

Device Settings

ParameterValueWhen to Use
RoleCLIENT_MUTEIn cities with >200 nodes - safe mode without rebroadcast
CLIENTIf network is small or you have good antenna/location
Rebroadcast modeCORE_PORTNUMS_ONLYFor large networks; ALL - for small ones
Broadcast interval3 hoursInterval for node information transmission

Timezone

ParameterValue
TimezoneGMT+3 (Moscow)
Use phone timezoneEnabled (if configuring from phone)

πŸ”§ Optimal Flashing Process

For Heltec V4 (Bootloader Workaround)

Due to a Heltec V4 bootloader quirk, the standard order doesn’t always work. Optimal process:

  1. Disconnect battery and USB from the board
  2. Open web flasher
  3. Select device: Heltec V4, firmware: 2.7.21
  4. Click Erase Flash and Install
  5. Hold the PRG button on the board
  6. While holding PRG, plug in the USB cable
  7. Observe: brief red flash β†’ USB JTAG appears in port dropdown
  8. Release PRG, select USB JTAG, click Connect
  9. Wait for flashing to complete
  10. After Leaving... message, press the RST button (reset)

πŸ’‘ Note: this process is described in meshtastic/firmware#8543


πŸ“€ First Messages Between Two Nodes

Preparation

  1. Flash both boards per instructions above
  2. On each, configure:
    • Same region (Russia)
    • Same channel with identical PSK (AQ==)
    • Position enabled: Yes (for testing)
  3. Place nodes 10–50 m apart (for initial test)

Test

  1. On first node in app: Messages β†’ + β†’ type text β†’ Send
  2. On second node: incoming message should appear
  3. Check Map tab - if MQTT is enabled, both nodes should appear on map within an hour

Troubleshooting

SymptomCheckFix
No messagesVerify channels have same PSKCopy key exactly, no spaces
Node not on mapCheck MQTT enabled, Map reports, internet on phone/nodeReboot node (RST), wait 1–2 report cycles
MQTT connection errorVerify TLS enabled, root topicTry disabling TLS; ensure Root topic = msh/RU/XXX
No radio connectionCheck antenna, region, Hop limitAttach antenna, set Region: Russia, Hop limit: 5

πŸ†˜ Help and Community