"Add a counterpoise". I see it all the time. Is it folklore, or are there real benefits? Can I get a couple more dB out of my repeater, or are the effects not even measurable?

So, an experiment...

The question

Does adding a counterpoise to a stock 915 MHz stub antenna on a Meshtastic node measurably improve the link, and by enough to recommend?

"Measurably" means a consistent change in received signal at a fixed reference node, larger than the inter-run variability. "Enough to recommend" is the part I'm least sure about, so I'll pick a threshold before I start: if it isn't worth 3 dB, it isn't worth telling a beginner to add a wire to their SMA connector.

Why a counterpoise should matter here

A stub antenna is a monopole. It's half of an antenna. The other half is whatever the SMA shield is connected to: the board's ground plane, the battery, the USB cable, and, if you're holding the radio, you. On a handheld node your hand is probably doing most of the work. Set the node down on a plastic table and that coupling goes away, the feedpoint impedance moves, and the pattern changes to whatever the little PCB ground plane gives you.

A quarter-wave wire at 915 MHz is short: λ/4 is 82 mm. That's an easy rat tail to cut and test. Four of them drooping at 45° under a stub antenna is a textbook ground-plane antenna.

None of that tells me how much better it gets in practice. That's what the measurements are for.

Two experiments

Companion node: rat tail vs hand vs table

Device under test is a stock ESP32 LoRa board with the stub antenna it shipped with. Four configurations:

  1. Handheld. Node held the way you'd actually hold it while reading the screen. This is probably the baseline.
  2. On a hard surface. Node standing on a non-conductive surface. This could be the baseline for a pocket-sized companion node BLEd to the phone app mode.
  3. Rat tail, on a hard surface. Same as 2, plus a λ/4 wire dangling off the SMA shield, hanging down.
  4. Rat tail, handheld. I'll also try the rat tail while handheld, but I expect that to be a wash: my hand is already the counterpoise.

Roof repeater: 4-wire radials vs rat tail

The roof node is a stub antenna in a plastic enclosure on a pole. Three configurations:

  1. Stock. A baseline. My homebrew enclosure, a charged battery, no connected wires, no connected solar panel (because I don't have one yet, otheriwse I'd include it).
  2. Single rat tail hanging down inside or beside the enclosure.
  3. Four λ/4 radials at the SMA base, fanned at 90° and drooped about 45°.

Method

First, I'll point the NanoVNA at the antennae. I honestly don't really have full comprehension of that little wizardbox yet, but I'll give it ago. I think I'm looking for a good SWR at 915±5 MHz.

But who cares what the wizardbox says. We need to test transmission. The over-the-air numbers are the ones that count.

Test 1: Companion

  • Fixed reference node. A second Meshtastic node, placed once and never touched. It's the receiver for every run. Its own antenna and position are constants, so they cancel out of the comparison.
  • Beacon, don't chat. Turn the device-under-test's position or node-info broadcast interval down so it transmits every minute or so, and collect a batch of packets per configuration. I'm thinking 15 to 20 per run. Reset the interval afterwards; nobody wants my test node flooding the local mesh.
  • Direct link only. Hop limit low enough that packets aren't being relayed through someone else's repeater on the way. The RSSI and SNR I want are for the last hop into the reference node, and if that hop is somebody else's roof, the numbers are meaningless.
  • Log RSSI and SNR at the reference. The app shows both per received packet. The CLI or the serial debug log will be less tedious for 20 packets a run, and I'd rather export a table than transcribe screenshots.
  • One variable at a time. Swap the counterpoise, nothing else. Same antenna, same orientation, same battery state, same spot on the table.
  • Get out of the way. A human body is a very effective 915 MHz absorber and reflector. For every "not handheld" run I'll walk away, wait, then let the packets go.
  • A few distances. At least three: something short and obviously line-of-sight, something at the edge of the neighbourhood, and something where the link is marginal. Improvements matter most at the margin, and a 3 dB gain that only shows up at 50 metres isn't interesting.
  • A few days. Repeat the full set on different days and at different times. If the day-to-day scatter swamps the configuration-to-configuration difference, that's the answer, and it's still worth publishing.
  • Randomise the order. Don't always run the baseline first. If the battery sags or the neighbour's Wi-Fi wakes up, I don't want it to land on one configuration every time.

What I'll report per configuration: mean and spread of RSSI and SNR, number of packets sent vs received, and the VNA sweep. Comparisons are deltas against the baseline at the same distance on the same day.

AI's recommendations for experimental controls

  • Packet loss hides in the average. At a marginal distance, the worst packets never arrive, so the received-packet RSSI looks better than it is. Delivery ratio has to be reported alongside signal level.
  • Multipath. Moving the node 10 cm can swing the received signal by several dB at 915 MHz. Mark the spot and put it back in exactly the same place and orientation.
  • Orientation. A stub antenna is not omnidirectional in any useful sense once it's attached to a board. Keep the node pointed the same way.
  • The rest of the mesh. Other nodes transmitting on the same channel raise the noise floor and cause collisions. Note the time and the amount of local traffic, and prefer quiet hours.
  • Weather. Rain on the roof enclosure, wet ground under the radials, that kind of thing. Note it; don't try to control it.
  • Me. I want the counterpoise to work. Fixing the threshold and the protocol before taking data is the defence against that.

If you've done this and have results, I'd love to see them before I start. Otherwise, back with data later...

72s, friends.

Table of Contents