Single Channel Packet Forwarder part 1 [Deprecated]

…but it seems easy to disable them again, in the EV_JOINED event (for LMiC nodes)? (But you might want to somehow leave listening to SF9 in place; TTN will very likely send downlinks in RX2, and using SF9, like the Join Accept message will also tell your node.)

Yes, please surprise us! Nice work so far!

Yes, disabling the channels in the EV_JOINED event does the trick: all messages are sent on channel 0 now.

My node is an Arduino Pro Micro, running the LMIC port of matthijskooijman. In the LMIC library the frequency and SF are hardcoded for RX2. So there is no need to be careful about what channels to disable…

Sorry to ask newbie question, is Single Channel Gateway meaning can only support 1 end module ? Anybody has tried to use with more than 1 end module/node ?

No,a Single Channel Gateway only listens on one channel with one datarate. It will receive messages from all nodes that use that channel and that datarate.


Thanks @jbraam, Based on people experience here, how many nodes can a Single Channel Gateway can support ?

I had 4 nodes working with it.
But for me it’s only a testing environment, because ACK is not supported (look [here])(ACK is supported or not?)

That very much depends on how much data each node sends, and how often.

The TTN Fair Access Policy maximum of 30 seconds airtime per node, per day, is based on on supporting at least 1,000 nodes per gateway, using 8 frequencies. So that would probably translate to 125 single-channel nodes for a single-channel gateway, if they send 30 seconds per day. (Regular, multi-channel nodes will be alternating the frequencies they use, so would only see 1/8th of their traffic being received by a single-channel gateway.)

In many other places, 8-channel gateways are advertised to support over 10,000 nodes.

But beware: those nodes cannot send at the same time, and there’s no synchronization in place. So if multiple nodes send simultaneously, data will be lost. But that’s the same for multi-channel gateways, when multiple nodes are sending simultaneously using the same frequency and spreading factor.


I published my Lua Single Channel gateway on GitHub.

It is still in its early stage, but it listens on EU channel 0, SF7BW125. Upload messages work, so sending messages to nodes and OTAA is possible (works for me :slight_smile: )


Thanks @arjanvanb I understand much better now. What you described " no synchronization in place" is class-A, right ? What is the solution ? Is it class-B ? Is it possible to implement class-B with Single Channel Gateway ?

12 posts were split to a new topic: Creating an OpenWrt gateway

Does LUA single channel work with SX1272?
Also could not understand if single_chan_pkt_fwd works with downlink messages.

Not at the moment, in order to save space, I removed all SX1272 code. There are only a few places where the SX1272 differs from the SX1276 so it won’t be a big change. I have no SX1272, so I cannot test. Feel free to add SX1272 support via github!

1 Like

i am not good in coding. If someone else can help?

I’ve a problem with my gateway:

I can see that the Gateway receives packages at the terminal of the RPI, but I can’t see the messages at the TTN dashboard.
As a node I use a RN2483.

Does someone have an idea where the problem could be?

Thank you.

Would be really nice to have the download and OTAA functons added to the ESP8266/Arduino code now that you’ve shown its possible and how to do it in LUA.


First thing to check: Is the gateway connected to staging? Not the ‘old’ environment? (Check the IP addresses you are sending to, for Europe it should be

More information in this thread.

1 Like


Thank you very much! I used the wrong IP, now everything is working as expected!

Got mine working as well!

Gateway based on RPI and SX1272
Node based on Arduino nano and RN2483:

So what ranges do you get?
I get 200 to 250 meters from the attic with a dead spot where there are too many houses (walls) in between.

As you’re connecting through WiFi, then if it might drop the connection you might want to start it using:

while true; do date; sudo ./single_chan_pkt_fwd; sleep 2; done;

(The date is only for logging a bit; the sleep is just there to ensure you can easily kill it by pressing Ctrl+C twice.)