Can't get Laird RG1xx Basics Station Forwarder working with TTN

Hi, Thanks for replying. I was just typing… I’m indeed using TTN (and not TTI), thus via . And for configuration my gateways on the TTN side I use These still use the V2 version of the stack, like you state at the end of the message :wink:

I also see your statement regarding upgrading to the TTN V3 stack, I’ll try that using the documentation at: The Things Network upgrade to V3

(and of course watch the opening keynote :))

I hope the documentation on TTN will also be updated soon (which I can understand takes a while on the community driven TTN)

Thanks! I’ll let you the results after taking some time for adapting to the changes.

Mmm I’m now in the ‘forest’ of documentation that should lead me to a working Gateway.

At Configuration and Update Server (CUPS) | The Things Stack for LoRaWAN, chapter " Configure CUPS to Send the LNS API Key" it is pointed out that I should use the command line interface of TTN V3 to “We need to configure CUPS in The Things Stack to transmit the LNS API key when a gateway connects…” Why is this not supported in the web interface? For ‘normal’ users it takes a lot of hassle to get things done in this way… Still want to be a happy user ofcourse, But the documentation in this form is way to difficult for average users who just want to add there gateway to the community network. If we want to build a community network, things should be simpler imho.

btw the documentation at Configuration and Update Server (CUPS) | The Things Stack for LoRaWAN uses steps that can be only completed fom a linux command line, like:

$ export GTW_ID="your-gateway-id"
$ export LNS_KEY="your-lns-api-key"
$ export SECRET=$(echo -n $LNS_KEY | xxd -ps -u -c 8192)
$ ttn-lw-cli gateways update $GTW_ID --lbs-lns-secret.value $SECRET

The export command does not exist in windows. Nor does the xxd command that is uses after the pipe.
So im trying in my mingw environment now… (for average users… not very doable).

I’m getting error: error:cmd/ttn-lw-cli/commands:unauthenticated (not authenticated with either API key or OAuth access token)
at this step.

So i tried “$ttn-lw-cli.exe login” (both in mingw as in windows cmd shell) to log in/get the oath token. my browser opened when running the command but it cant connect to the said url at localhost.
Thus I’m stuck at the moment.

In the ‘old’ situation (TTN) I could manage everything from the web UI of the TTN console. Which was much more user friendly.


Hello @benolayinka, you mentioned one should

[…] use the DST Root X3 certificate as this gateway doesn’t support concatenated .pem files

But that works for a custom deployment of the stack right? How to connect the gateway to TTS v3 Cloud (community)?

I tested even extracting the The Things Industries Root CA from ca.pem but it doesn’t seem to work. Maybe I’m missing something ?

I need a FQDN and a server running The Things Stack?

I just want to add my Laird to the network.

I am trying the same, but on a Linux machine.

I configured manually the .ttn-lw-cli.yml file.

I had error initialli because I thought that oauth-server-address was using port 8887, but instead is on 443.

configuration file:
oauth-server-address: ‘
identity-server-grpc-address: ‘’
gateway-server-grpc-address: ‘’
network-server-grpc-address: ‘’
application-server-grpc-address: ‘’
join-server-grpc-address: ‘’
device-claiming-server-grpc-address: ‘’
device-template-converter-grpc-address: ‘’
qr-code-generator-grpc-address: ‘’

One has to login before command
ttn-lw-cli gateways update $GTW_ID --lbs-lns-secret.value $SECRET"
I opened manually the browser with address on terminal since it didn’t arrive to open.
I got the json answer with lbs_lns_secret key_id f.

Had yet to finish, since have other things to do now.

1 Like


I think I got it working. I am still having this issue below:

Drop uplink message - Host cluster failed to handle message: No device matches uplink

Try this!

Add the Gateway to the console:

Per: Adding Gateways | The Things Stack for LoRaWAN


Create CUPS API key for your gateway with the following rights:

  • View gateway information

  • Edit basic gateway settings

  • Retrieve secrets associated with a gateway

Create LNS API Key with the following rights:

  • Link as Gateway to a Gateway Server for traffic exchange, i.e. write uplink and read downlink

Create the CUPS Key (I did this on a Raspberry Pi)

$ export CUPS_KEY="your-cups-api-key"
$ echo "Authorization: Bearer $CUPS_KEY" | perl -p -e 's/\r\n|\n|\r/\r\n/g'  > cups.key

Create the LNS Key

$ export LNS_KEY="your-lns-api-key"
$ echo "Authorization: Bearer $LNS_KEY" | perl -p -e 's/\r\n|\n|\r/\r\n/g'  > lns.key

Setup Laird (I am using, I think would work as well.)

Semtech Basic Station

CUPS Server Address:

LNS Server Address:

  • wss://

CUPS and LNS Server Cert:


  • Generated above


  • Generated above

Thanks! I did something like this before, going to see where i did different.

Yep, you are 100% right, and we are adding this as soon as we can.

ttn-lw-cli login shouldn’t connect to localhost - you need to configure it to use TTN v3. Do ttn-lw-cli use the CLI | The Things Stack for LoRaWAN

Once you’ve got that, you’ll be able to use it to add the LNS key. Again, really sorry that this is still a CLI only command, we’re building this in to the console now.


Your gateway is working! This means that it received a packet for a device that is not registered in TTN or your own deployment.

1 Like

Thanks @benolayinka for the tips, I’ve got my RG191 across from v2 to v3 (in AU) with basic station forwarding - the instructions above with CUPS were helpful for me. Its mostly working, although I note a few issues on device joins via this gateway using v3 stack which I did not have when I was using v2 - a little unreliable and takes my device a few attempts to join the network, so I need to troubleshoot this issue separately. But I don’t intend to go back to v2 given it will become read-only shortly.
Just a hint to those having issues with not having linux. I installed the windows binaries for the CLI support and then used GIT BASH shell to give me xxd etc. It worked well, hope this information helps someone else trying to get their gateway going with CUPS.

1 Like

It’s possible to get it working only using LNS, which is easier if maybe a little less stable in the O(5 years) timeframe.

I followed the instructions in the Laird App Note here. There’s a bug in the instructions though, and then another bug which compounds it:

It says

For Unix based OS - “\r” must be added to end of key for proper line endings

but then gives the command
Echo -e "Authorization: Bearer NNSXS.xxxxx\n">tc.key

Which is wrong. Do what it says, not what it did. The correct command is:
echo -e "Authorization: Bearer NNSXS.xxxxx\r">tc.key

The second bug is that if you upload a key file with the same name it doesn’t seem to stick – rename it to tc2.key and upload it and it’ll be fine. And it’ll go to the configured band plan and not the one hardcoded on the device (important for RG191s sold into other countries prior to this hard-setting and country-specific versioning).

If you do this key file incorrectly there is an error in the log (bottom lines, turn on auto-updating) saying the key file is in the wrong format but it wasn’t updating the first time I uploaded everything (and in fact locked itself into online state but didn’t do anything). Rebooting helped.

For anyone else finding this forum post.
I’ve managed to get a Laird RG191 working on the TTNv3 using the semtech forwarder.
In my case I am using AU915 bandplan and the gateway won’t let me as it seems to stay forced in region “US” when manually configured. The trick is that you have to download the LoRa config (json file), modify the frequencies and then reupload the config. The web config will stil complain about the incorrect radio frequencies, but it does work.

If you need further detail, or the JSON file, It’s on my blog at Laird RG191 gateway on TTNv3 (AU915) –

Thanks John, that’s really interesting and useful. I still can’t get the config backup to work (I get a validation error) and I’ve never raised a ticket to find out why. Possibly it doesn’t like my LAN/Wifi config.

Out of interest why are you persisting with the Semtech forwarder? It’s definitely workable to get a RG191 US working on AU915 with the Basics Station on TTS CE (v3), and it auto-configures based on the TTS bandplan (despite the web restriction) which is nice.

@bwooce I’m only using the semtech forwarder as I was finding a lack of documentation how to get them working any other way.
Would be great if you have step by step docs on how to do it - I only have 5x RG191 gateways so don’t want to have to spend too much time getting them working. Most of my gateways are all MikroTik now

I’ve upgraded one of my gateways to firmware gatwick-laird- and following the instructions in the Laird App Note, taking note of the two bugs with the EOL and filename for the key, but having issues.

I’ve set the lns server to wss://

For the LNS Server Certificate File I’m using isrgrootx1.pem, but have also tried cacert.pem and The-Things-Stack-cert_ca_minnimal_no-comment.pem.

My key file is named tc2.key and contains:
Authorization: Bearer NNSXS.MYAPIKEY{LF}
Where {LF} is a line feed (ASCII DECIMAL 10 or HEX 0A)

It’s not connecting to TTN v3 though.
The logging doesn’t show much - sighnature verification failed in weblcm and other than that reconnect backoffs getting bigger and bigger.

Will take a look and compare my config.

I fully agree that remote ones are safer left on the Semtech UDP forwarder, they will absolutely reboot and while recent upgrades didn’t zero out my config I have had it happen…

That’s a later firmware than I just upgraded to (, must be new. Still, shouldn’t be an issue.

LNS server is correct.

The app note got changed to printf "Authorization: Bearer NNSXS.xxxxx\n">tc.key but I still think that’s wrong.

That should be {CR} or \r or ASCII DECIMAL 13 or HEX 0D. I’ve hexdump’d my tc2.key file and it definitely ends in 0d 0a

There was an error in the log somewhere about this when I had the wrong line ending. Of course I can’t remember it though, sorry.

So I’d try making a tc3.key file (to avoid any latent filename bug, but that’s possibly fixed) and try again?

1 Like

Thanks, the CrLf (0x0d, 0x0a) got it working.

My WORKING settings are now;
LNS Server: wss://
Server Certificate File: isrgrootx1.pem (from
Key File: As per app note, with windows line ending (0x0D,0x0A)

Can also confirm that the upgrade from → will result in a factory reset, but is safe to do remotely provided the gateway is able to get settings via DHCP, or you are able to remotely access the default IP if DHCP is not available


Laird has put new firmware online (GA6,, and a manual for connecting to TTN v3.
I skipped the CUPS configuration part of the manual, and now the GW is connected to TTN (hurraay!)

Latest Firmware (as of 6 Juli 2021), see

The manual from Laird, that helped me with connecting the RG1xx GW to TTN (EU), see

I used the ISRG Root X1 certificate for the LNS server, see

And I made sure that the LNS key file (tc.key) contains ONE line only, and ends with CRLF using notepad++.

Disclaimer: I did not connect any LoraWAN devices yet.

Next step: try out CUPS… ehm maybe. It looks complicated, and the GW is already working.
Whats the ‘what’s in it for me’ for using CUPS?. What does it do with regards to “Make it easier …”?

Great that it’s working!

In the short term, CUPS won’t improve your experience. CUPS allows remote reconfiguration, so the gateway first connects to a CUPS server, from which it retrieves an LNS address and credentials. In the future, this will allow you to point all of your gateways to a new network server remotely, just by updating the CUPS server.

If you do want to try it, the complex instructions for configuring CUPS here are now outdated → Application Note - Setting up Basic station on the Things Stack v3 | Laird Connectivity

We’ve added a feature in the Console to allow you to configure an LNS API key → Configuration and Update Server (CUPS) | The Things Stack for LoRaWAN. Previously, this was only possible to do via the command line, which is why the Laird CUPS instructions have a long section about installing the CLI. You should be able to configure CUPS using just the instructions here → Configuration and Update Server (CUPS) | The Things Stack for LoRaWAN.

1 Like