Forcing an RFM95 node onto 868.1 MHz only, for a bench test against Hermetry LoRaWAN
Setting up a test bench for a temperature logger we want to deploy in a cold room at our EU site. Hardware: Feather M0 with RFM95W (868), MCCI LMIC 4.1, OTAA, device registered in Hermetry with DevEUI/JoinEUI/AppKey.
Problem: the only gateway on my bench is a single-channel board from a dev kit (ESP32 + SX1276) listening on 868.1 MHz, SF7. Our proper gateway is still in customs. The node joins maybe one time in four and after that uplinks show up in the frames log sporadically. I’d like the node to transmit on 868.1 only so I can get on with firmware work this week.
Is there a clean way in LMIC to pin it to one frequency? I’ve seen people edit lmic_eu868.c. Also: the single-channel board runs a packet forwarder that sends UDP to a server address. I typed in the network server address from the LoRaWAN page and it does show up, kind of, but nothing in Hermetry lists it as a gateway. Is that related?
Can’t you just do LoRa.begin(868.1E6) and done? That’s how I set mine.
That’s the plain LoRa library, Kevin. LMIC does LoRaWAN, it picks channels itself.
What’s a single channel gateway vs a normal one? Is it just cheaper?
Single-channel boards listen on one frequency and one spreading factor. A real LoRaWAN gateway listens on eight channels and all SFs at once. LoRaWAN nodes hop channels on purpose, so a single-channel board only catches the frames that happen to land on its frequency.
Laura, two separate things are going on.
Joins: on EU868, join requests use the three default channels, 868.1, 868.3 and 868.5. Your node picks one of the three at random, so a single-channel board on 868.1 hears roughly a third of the joins. That’s your “one in four”. The join accept then hands the node five more channels (867.1 to 867.9), so after joining it hops over eight.
You can pin it after the join for a bench test. In MCCI LMIC, in the EV_JOINED handler:
case EV_JOINED:
// bench only: keep channel 0 (868.1), drop the others
for (int ch = 1; ch < 9; ch++) {
LMIC_disableChannel(ch);
}
LMIC_setLinkCheckMode(0);
break;
Don’t edit lmic_eu868.c, and don’t ship this to the field. It can’t help the join itself.
The UDP part is the real blocker though. Hermetry doesn’t support the legacy UDP packet forwarder at all, gateways connect with Basics Station or as a licensed router. So that board was never going to be a gateway in your organisation, which is why it isn’t listed. What you saw in the frames log came from somewhere else. Is there another gateway in the building? Ours picked up a neighbour’s frames before we added our own.
Bench option that works today: any cheap 8-channel indoor gateway that runs Basics Station. Ours cost less than the cold room sensors.
we use the same Feather setup at the hotel, an 8-channel Basics Station indoor unit was about the price of two Feathers
Kstewart got it. There is a Basics Station gateway in the QA lab on the floor above, registered in our org by the QA team. That’s what heard my “sporadic” frames, my dev kit board never forwarded a single one. Borrowed it for the bench, removed the single-channel board, removed the channel hack. Joins first time, uplinks every 60 s on all eight channels. The 868.1 trick did work in between, for the record.
- You must be logged in to reply to this topic.
Join the conversation
Sign in to ask and answer, like helpful posts and mark the reply that solved your problem. Every contribution earns points and levels.

