blog

Build a Handheld RNode (Portable Off-Grid Communicator)

Build a portable, battery-powered RNode communicator in a 3D-printed case. Complete bill of materials, assembly instructions, and phone pairing guide.

Build a Handheld RNode (Portable Off-Grid Communicator)

This is Part 7 of a 12-part series on building private, resilient communication networks with Reticulum, LoRa, and associated tools.


A bare development board on your desk works, but it's not exactly field-ready. In this guide, we'll build a proper handheld RNode — battery-powered, in a 3D-printed case, with an external antenna connector. Pair it with Sideband on your phone and you have a pocket-sized encrypted radio communicator.

The Build

This build uses the LilyGO LoRa32 v2.1 board — the same one from Part 5. It's the most popular choice for handheld RNodes because it's cheap, has an OLED display, and fits perfectly in the open-source 3D-printed case designed by Mark Qvist.

The finished device: - Fits in your hand or clips to a bag - Runs on a rechargeable LiPo battery (charges via USB) - Connects to your phone via Bluetooth or USB - Transmits on 868/915 MHz (or 433 MHz variant) with up to 17 dBm (50 mW) - Has an OLED status display and optional RGB status LED

Bill of Materials

Item Approx. Cost Notes
LilyGO LoRa32 v2.1 (u.FL version) $12-18 Get the u.FL/IPEX antenna connector version if possible
3.7V LiPo battery, 1.25mm JST $5-10 700mAh (standard case) or 1100mAh (large case)
SMA antenna (868/915 MHz) $3-8 Or reuse the one that comes with the board
6x M2x6mm screws $1-2 From any hardware store or online
3D-printed case parts ~$2-5 in filament PETG recommended for durability
NeoPixel RGB LED (optional) $2-3 Adafruit NeoPixel mini-button PCB works perfectly
USB cable $2-3 Micro-USB for this board

Total cost: approximately $25-45 depending on what you already have.

Board Version Note

The u.FL (also labeled IPX or IPEX) antenna connector version is preferred because it comes with an SMA-to-u.FL pigtail that mounts cleanly in the case. If you can only get the SMA connector version, you'll need to desolder the SMA connector and move a small zero-ohm jumper resistor to activate the u.FL connector instead. The resistor sits next to the antenna connectors — rotate it 90° so it "points" at the u.FL connector, or just bridge the gap with a solder blob.

Battery Sizing

The case comes in three bottom-shell variants:

Case Version Max Battery Size Capacity
No Battery USB power only
Standard 50 x 25 x 6 mm ~700 mAh
Large 50 x 25 x 12 mm ~1100 mAh

The battery must be a single-cell 3.7V LiPo with a 1.25mm JST connector. The board has built-in charging circuitry — plug in USB and it charges automatically.

Step 1: 3D Print the Case

Download the STL files from the official parts package.

Parts to print:

File Material Notes
Case_Top.stl PETG (any color) Top shell, holds OLED display
Case_Bottom_Small_Battery.stl PETG Standard bottom shell (or choose Large/No Battery variant)
Case_Battery_Door.stl PETG Snap-fit battery door
Power_Switch.stl PETG Small slider for the power switch
LED_Window.stl Translucent material Light guide for NeoPixel LED
LED_Guide.stl Translucent material Light guide for power/charging LEDs

Print settings: - Layer height: 0.15mm - No scaling needed — parts are dimensioned to fit precisely - Supports: not needed for most parts

Step 2: Prepare the Board

  1. Remove the acrylic OLED riser. Carefully unscrew and remove the small acrylic standoff that holds the OLED display above the board. The display will mount directly into a slot in the case instead. Be gentle with the ribbon cable.

  2. If using the SMA version: Desolder the SMA connector and move the antenna selector jumper to the u.FL position (see Board Version Note above).

Step 3: Flash the Firmware

If you haven't already flashed the board (Part 5), do it now:

rnodeconf --autoinstall

When prompted for the device type, select Handheld RNode v2.x and the correct frequency band for your board.

If the board is already flashed as a generic RNode, you can re-flash it as a Handheld variant to get the correct display orientation and settings.

Step 4: Optional — Wire the NeoPixel LED

The NeoPixel provides visual status feedback: color-coded for idle, TX, RX, and errors.

  1. Cut three wires to reach from the NeoPixel mounting position (top of case) to the board
  2. Solder to the NeoPixel PCB: V+, GND, DATA
  3. Solder to the board:
  4. V+ → 3.3V pin
  5. GND → GND pin
  6. DATA → GPIO 12

The Adafruit NeoPixel mini-button PCBs fit exactly into the circular slot in the top shell.

Step 5: Assembly

  1. Mount the SMA pigtail. Insert the SMA-to-u.FL pigtail into the antenna slot in the top of the bottom shell. The hex nut should seat into the hex cutout and self-lock when you screw on an antenna.

  2. Route the pigtail cable through the matching groove in the case.

  3. Install the power switch slider into its slot on the bottom-left of the bottom shell.

  4. Slide the board in. Align the board's power switch with the slider and click it into place.

  5. Connect the u.FL pigtail to the u.FL connector on the board.

  6. Mount the NeoPixel (if using) into the circular slot in the top shell.

  7. Mount the OLED display into the rectangular slot in the top shell.

  8. Close the case. Place the top shell onto the bottom shell, aligning the screw holes. Insert the 6 M2x6mm screws. The holes are self-threading on first use — don't overtighten.

  9. Connect the battery (if using) to the JST connector on the board.

  10. Snap the battery door into place.

  11. Screw on your antenna.

Done. Flip the power switch and your handheld RNode is live.

Step 6: Pair with Your Phone

Enable Bluetooth on the RNode (connect via USB first):

rnodeconf -b /dev/ttyUSB0
rnodeconf -p /dev/ttyUSB0

Then pair it with your Android phone in Bluetooth settings. Open Sideband, configure the RNode interface with your LoRa parameters, and enable Bluetooth connectivity.

Disconnect USB. Your phone now communicates with the RNode wirelessly, and the RNode communicates with the world over LoRa. Slip the RNode in your pocket or clip it to your bag.

Usage Tips

  • Battery life: Expect 8-24+ hours depending on battery size and transmit activity. The board draws very little power when idle.
  • Antenna matters more than power. A proper quarter-wave whip antenna will outperform the stock rubber duck by a wide margin. For 868 MHz, that's about 8.6 cm of wire.
  • Keep the antenna vertical for best omnidirectional coverage.
  • The OLED display shows connection status, frequency, and activity. It will dim/sleep after a timeout to save power.
  • Charging: Plug in USB to charge the battery. The board handles charge management automatically. You can use the device while charging.

What's Next

You have a portable, battery-powered, encrypted radio communicator. In the next guide, we'll set up a Transport Node — a relay that extends the network's reach by forwarding traffic for other users.


Previous: [Part 6 — Go Off-Grid: Connect Sideband or MeshChat to Your RNode] Next: [Part 8 — Run a Transport Node (Be a Relay for Your Community)]

← back to index