v3.23.1

Getting Started Devices Gateways Integrations Reference
Get The Things Stack

Reference

    Overview
  • Adaptive Data Rate
  • API
  • Application Packages
  • Billing with Stripe
  • Command-Line Interface
  • Components
  • Configuration
  • Data Formats
  • Data Retention and Privacy
  • Email Templates
  • Federated Authentication
  • Frequency Plans
  • FUOTA
  • Gateway RTT
  • Glossary
  • ID and EUI Constraints
  • Last Activity
  • LoRa Basics Station Implementation Guide
  • LoRaWAN Backend Interfaces Interoperability
  • LoRaWAN Specification and Regional Parameters
  • Networking
  • Packet Broker Routing
  • Packet Forwarders
  • Purging Entities
  • Rate Limiting
  • Resource Limiting
  • Root Certificates
  • Telemetry
  • Tenant Management
  • Web UI Branding

LoRaWAN Backend Interfaces Interoperability

The Things Stack Network Server and Application Server can use LoRaWAN Backend Interfaces 1.0 and 1.1 with LoRaWAN Join Servers.

The Things Stack reads configuration from a file system. The root should contain config.yml, which contains Join Servers.

join-servers:
  - file: './path/js.yml'     # relative path to a file containing Join Server configuration
    components: ['as', 'ns']  # optional selector for components (new in 3.21.0)
    join-euis:                # list of Join EUI prefixes the Join Server should handle
    - '11AA000000000000/16'   # in this example, the first 16 bits, so all JoinEUIs starting with 11AA

All paths are relative to the config.yml file they are defined in.

The Things Stack Network Server always first tries the cluster-local Join Server. If the cluster-local Join Server does not accept the join-request, a Join Server is contacted via the LoRaWAN Backend Interfaces interoperability.

In case JoinEUI prefixes overlap, the most specific prefix takes precedence. 0000000000000000/0 prefix matches all JoinEUIs. Use this prefix if you wish to define a Join Server interoperability configuration for all other join-requests. For example:

join-servers:
  - file: './fallback/js.yml'
    join-euis:
    - '0000000000000000/0'

The Join Server configuration provides means to configure how the components interact with the Join Server. The configuration supports multiple options:

scheme: 'https'                          # URL scheme. Defaults to https
fqdn: 'thethings.example'                # FQDN of the Join Server
port: 443                                # port to connect at. Defaults to 443
protocol: 'BI1.0'                        # Backend Interfaces protocol to use (BI1.0 or BI1.1)
paths:                                   # custom URI paths to use for various requests. Defaults to /
  join: 'some/path'                      # the URI path to use for JoinReq
  rejoin: 'some/other/path'              # the URI path to use for RejoinReq
  app-s-key: 'other/path'                # the URI path to use for AppSKeyReq
  home-ns: 'somepath'                    # the URI path to use for HomeNSReq
sender-ns-id: '1122334455667788'         # Backend Interfaces 1.1 NSID
basic-auth:                              # HTTP Basic Authentication (optional)
  username: 'user'                       # HTTP Basic username
  password: 'secret'                     # HTTP Basic password
tls:                                     # TLS configuration to use (optional)
  source: 'file'                         # TLS client certificate source (file or key-vault)
  root-ca: 'path/to/clientca.pem'        # path to CA file to verify TLS server certificate (optional)
  certificate: 'path/to/clientcert.pem'  # path to TLS client certificate
  key: 'path/to/clientkey.pem'           # path to TLS client key
headers:                                 # HTTP headers to send, defined as key-value map
  Some-Header: 'SomeValue'

If tls.source is set to key-vault, The Things Stack uses its Key Vault configuration to load the TLS client certificate.

Interoperability with The Things Join Server

The Things Join Server is a stand-alone LoRaWAN Join Server that can be deployed by device makers, distributors and integrators.

An example interoperability repository supporting The Things Join Server operated by The Things Industries could look like this:

# config.yml
join-servers:
  ...
  - file: './tti/ns-js.yml'
    components: ['ns']
    join-euis:
    - 'EC656E0000000000/24'

  - file: './tti/as-js.yml'
    components: ['as']
    join-euis:
    - 'EC656E0000000000/24'
  ...
# tti/ns-js.yml
fqdn: 'join.cloud.thethings.industries'
protocol: 'BI1.1'
sender-ns-id: 'ABCDEF0000000001'
tls:
  source: 'key-vault'
# tti/as-js.yml
fqdn: 'join.cloud.thethings.industries'
protocol: 'BI1.1'
tls:
  source: 'key-vault'

Interoperability with Semtech Join Server

Semtech Join Server is a hosted LoRaWAN Join Server by Semtech for use with pre-provisioned LoRa Edge modems.

An example interoperability repository supporting Semtech Join Server could look like this:

# config.yml
join-servers:
  ...
  - file: './semtech/js.yml'
    join-euis:
    - '0016C00000000000/24'
  ...
# semtech/js.yml
fqdn: 'js.loracloud.com'
port: 7009
protocol: 'BI1.0'
paths:
  join: 'api/v1/rens/rens-1::2/lbi_joinreq'  # replace 'rens-1::1' by the RENS issued by Semtech
tls:
  source: 'file'
  root-ca: './ca.pem'                        # path to the CA issued by Semtech
  certificate: './cert.pem'                  # path to the TLS client certificate issued by Semtech
  key: './key.pem'                           # path to the TLS client key issued by Semtech
← LoRa Basics Station Implementation Guide LoRaWAN Specification and Regional Parameters →

On this page

  • Interoperability with The Things Join Server
  • Interoperability with Semtech Join Server

The Things Stack

Getting Started

Devices

Gateways

Integrations

Reference

Contributing

GitHub

Forum

About Us

The Things Network

The Things Industries

About this page

Last changed by Johan Stokking on 24 Jan 2023.
Document TLS client configuration (#1031)

Edit on Github