Communication END-NODE AU915 Class C

I have to say that the same devices, for the EU868 band work perfectly.

We have configured Gateway in the AU915 Band and works perfectly with Class A devices.

With Class C devices, the END-NODEs link to the platform, but the messages that I send from the API do not reach the END-NODEs.

I do not know if the configuration is not correct, because I can not find the reason not to communicate.

Configuration loraserver.toml is very basic:

log_level=4

[postgresql]
dsn=“postgres://loraserver_ns:xxxxxxxxxxxxxx@localhost/loraserver_ns?sslmode=disable”

[network_server]
net_id=“000000”

[network_server.band]
name=“AU_915_928”

[network_server.network_settings]
enabled_uplink_channels=[0, 1, 2, 3, 4, 5, 6, 7]

Configuration END-NODES is the following:

Device Profile:

MAC Version: 1.0.2
Regional Param: B
Max EIRP: 30

Service Profile:
Device-status request frequency: 1
Minimum allowed data-rate : 0
Maximum allowed data-rate : 5

Anyone have experience in AU915 and configuration?

Not sure if it’s causing your problem, but the maximum DR for AU915 is 13 (see https://lora-alliance.org/sites/default/files/2018-05/lorawan_regional_parameters_v1.0.2_final_1944_1.pdf).

Thanks for your reply, I will try to test this configuration.
The strange thing is that Class A and Class C devices send messages automatically, the problem is when I do a Downlink to the devices.
It is something of a secure configuration, since in European band EU868 same devices work perfectly.

Can you show us the logs of your package_forwarder, lora_gateway_bridge and lora app server when you send downlink? your downlink should appear in all this module first, before thinking about radio problem !

When I send DOWNLINK these are the data that I can see in the Gateway LoRa:

[1913][09:56:06]##### END #####
[1913][09:56:06]INFO: [main] up and main diff 11 ms
[1913][09:56:06]INFO: [main] down and main diff 7437 ms
[1913][09:56:06]JSON up: {“stat”:{“time”:“2019-07-02 13:56:06 UTC”,“lati”:-33.36807,“long”:-70.69711,“alti”:551,“rxnb”:2,“rxok”:1,“rxfw”:1,“ackr”:0.0,“dwnb”:0,“txnb”:0,“cpur”:52.8,“memr”:35.3}}
[1913][09:56:06]WARNING: [up] ignored out-of sync ACK packet
[1913][09:56:06]INFO: [up] thread up use 50 ms,lost ack:1
[1913][09:56:09]INFO: [down] PULL_ACK received in 124 ms
[1913][09:56:19]INFO: [down] PULL_ACK received in 123 ms
[1913][09:56:29]INFO: [down] PULL_ACK received in 123 ms
[1913][09:56:31]INFO: [down] PULL_RESP received - token[91:224] :slight_smile:
[1913][09:56:31]JSON down: {“txpk”:{“imme”:true,“rfch”:0,“powe”:27,“ant”:0,“brd”:0,“freq”:923.3,“modu”:“LORA”,“datr”:“SF12BW500”,“codr”:“4/5”,“ipol”:true,“size”:32,“data”:“YHU92wGKBAADAAAAcAMh/wABYzxXZ3R/3plaBJ2c7XI=”}}
[1913][09:56:31]INFO: [down] a packet will be sent in “immediate” mode
[1913][09:56:31]INFO: RF Power adjusted to 5 from 15
[1913][09:56:32]INFO: send pkt to mote: 01DB3D75 (fcnt=4)
[1913][09:56:32]INFO:[jit] lgw_send done: count_us=1139616453,data:[60 75 3d db 01 8a 04 00 03 00 00 00 70 03 21 ff 00 01 63 3c 57 67 74 7f de 99 5a 04 9d 9c ed 72 ]
[1913][09:56:36]INFO: Disabling GPS mode for concentrator’s counter…
[1913][09:56:36]INFO: host/sx1301 time offset=(1562074652s:618995µs) - drift=321µs
[1913][09:56:36]INFO: Enabling GPS mode for concentrator’s counter.
[1913][09:56:36]# SX1301 time (PPS): 1143753144
[1913][09:56:36]# Valid time reference (age: 0 sec)
[1913][09:56:36]# GPS coordinates: latitude -33.36818, longitude -70.69719, altitude 554 m
[1913][09:56:36]##### END #####

I also see the DOWNLINK in loraserver and loraserver-gateway:

– Reboot –
Jul 02 14:55:33 LSAU915 systemd[1]: Started LoRa Gateway Bridge.
Jul 02 14:55:34 LSAU915 lora-gateway-bridge[887]: time=“2019-07-02T14:55:34Z” level=info msg=“starting LoRa Gateway Bridge” docs=“https://www.loraserver.io/lora-gateway-bridge/” version=3.0.1
Jul 02 14:55:34 LSAU915 lora-gateway-bridge[887]: time=“2019-07-02T14:55:34Z” level=info msg=“backend/semtechudp: starting gateway udp listener” addr=“0.0.0.0:1700”
Jul 02 14:55:34 LSAU915 lora-gateway-bridge[887]: time=“2019-07-02T14:55:34Z” level=info msg=“integration/mqtt: connected to mqtt broker”
Jul 02 14:55:38 LSAU915 lora-gateway-bridge[887]: time=“2019-07-02T14:55:38Z” level=info msg=“integration/mqtt: publishing event” event=stats qos=0 topic=gateway/0602e4956e4b1649/event/stats
Jul 02 14:55:42 LSAU915 lora-gateway-bridge[887]: time=“2019-07-02T14:55:42Z” level=info msg=“integration/mqtt: subscribing to topic” qos=0 topic=“gateway/0602e4956e4b1649/command/#”
Jul 02 14:56:07 LSAU915 lora-gateway-bridge[887]: time=“2019-07-02T14:56:07Z” level=info msg=“integration/mqtt: publishing event” event=stats qos=0 topic=gateway/0602e4956e4b1649/event/stats
Jul 02 14:56:37 LSAU915 lora-gateway-bridge[887]: time=“2019-07-02T14:56:37Z” level=info msg=“integration/mqtt: publishing event” event=stats qos=0 topic=gateway/0602e4956e4b1649/event/stats
Jul 02 14:56:49 LSAU915 lora-gateway-bridge[887]: time=“2019-07-02T14:56:49Z” level=info msg=“integration/mqtt: publishing event” event=up qos=0 topic=gateway/0602e4956e4b1649/event/up
Jul 02 14:57:07 LSAU915 lora-gateway-bridge[887]: time=“2019-07-02T14:57:07Z” level=info msg=“integration/mqtt: publishing event” event=stats qos=0 topic=gateway/0602e4956e4b1649/event/stats
Jul 02 14:57:10 LSAU915 lora-gateway-bridge[887]: time=“2019-07-02T14:57:10Z” level=info msg=“integration/mqtt: publishing event” event=up qos=0 topic=gateway/0602e4956e4b1649/event/up
Jul 02 14:57:37 LSAU915 lora-gateway-bridge[887]: time=“2019-07-02T14:57:37Z” level=info msg=“integration/mqtt: publishing event” event=stats qos=0 topic=gateway/0602e4956e4b1649/event/stats
Jul 02 14:58:07 LSAU915 lora-gateway-bridge[887]: time=“2019-07-02T14:58:07Z” level=info msg=“integration/mqtt: publishing event” event=stats qos=0 topic=gateway/0602e4956e4b1649/event/stats
Jul 02 14:58:37 LSAU915 lora-gateway-bridge[887]: time=“2019-07-02T14:58:37Z” level=info msg=“integration/mqtt: publishing event” event=stats qos=0 topic=gateway/0602e4956e4b1649/event/stats
Jul 02 14:58:42 LSAU915 lora-gateway-bridge[887]: time=“2019-07-02T14:58:42Z” level=info msg=“integration/mqtt: downlink frame received” topic=gateway/0602e4956e4b1649/command/down
Jul 02 14:58:42 LSAU915 lora-gateway-bridge[887]: time=“2019-07-02T14:58:42Z” level=info msg=“integration/mqtt: publishing event” event=ack qos=0 topic=gateway/0602e4956e4b1649/event/ack


Jul 02 14:55:33 LSAU915 systemd[1]: Started LoRa Server.
Jul 02 14:55:34 LSAU915 loraserver[866]: time=“2019-07-02T14:55:34Z” level=info msg=“starting LoRa Server” band=AU_915_928 docs=“https:/www.loraserver.io/” net_id=000000 version=3.0.2
Jul 02 14:55:34 LSAU915 loraserver[866]: time=“2019-07-02T14:55:34Z” level=info msg=“disabling all channels”
Jul 02 14:55:34 LSAU915 loraserver[866]: time=“2019-07-02T14:55:34Z” level=info msg=“enabling channels” channels="[0 1 2 3 4 5 6 7]"
Jul 02 14:55:34 LSAU915 loraserver[866]: time=“2019-07-02T14:55:34Z” level=info msg=“storage: setting up storage module”
Jul 02 14:55:34 LSAU915 loraserver[866]: time=“2019-07-02T14:55:34Z” level=info msg=“storage: setting up Redis connection pool”
Jul 02 14:55:34 LSAU915 loraserver[866]: time=“2019-07-02T14:55:34Z” level=info msg=“storage: connecting to PostgreSQL”
Jul 02 14:55:34 LSAU915 loraserver[866]: time=“2019-07-02T14:55:34Z” level=warning msg=“storage: ping PostgreSQL database error, will retry in 2s” error=“dial tcp 127.0.0.1:5432: connect: connection refused”
Jul 02 14:55:36 LSAU915 loraserver[866]: time=“2019-07-02T14:55:36Z” level=info msg=“storage: applying PostgreSQL data migrations”
Jul 02 14:55:36 LSAU915 loraserver[866]: time=“2019-07-02T14:55:36Z” level=info msg=“storage: PostgreSQL data migrations applied” count=0
Jul 02 14:55:36 LSAU915 loraserver[866]: time=“2019-07-02T14:55:36Z” level=info msg=“gateway/mqtt: connecting to mqtt broker” server=“tcp://localhost:1883”
Jul 02 14:55:36 LSAU915 loraserver[866]: time=“2019-07-02T14:55:36Z” level=info msg=“no geolocation-server configured”
Jul 02 14:55:36 LSAU915 loraserver[866]: time=“2019-07-02T14:55:36Z” level=info msg=“configuring join-server client” ca_cert= server=“http://localhost:8003” tls_cert= tls_key=
Jul 02 14:55:36 LSAU915 loraserver[866]: time=“2019-07-02T14:55:36Z” level=info msg=“backend/gateway: connected to mqtt server”
Jul 02 14:55:36 LSAU915 loraserver[866]: time=“2019-07-02T14:55:36Z” level=info msg=“gateway/mqtt: subscribing to gateway event topic” qos=0 topic=gateway/+/event/+
Jul 02 14:55:36 LSAU915 loraserver[866]: time=“2019-07-02T14:55:36Z” level=info msg=“starting api server” bind=“0.0.0.0:8000” ca-cert= tls-cert= tls-key=
Jul 02 14:55:36 LSAU915 loraserver[866]: time=“2019-07-02T14:55:36Z” level=info msg=“starting downlink device-queue scheduler”
Jul 02 14:55:36 LSAU915 loraserver[866]: time=“2019-07-02T14:55:36Z” level=info msg=“starting multicast scheduler”
Jul 02 14:55:38 LSAU915 loraserver[866]: time=“2019-07-02T14:55:38Z” level=info msg=“gateway/mqtt: gateway stats packet received” gateway_id=0602e4956e4b1649
Jul 02 14:55:38 LSAU915 loraserver[866]: time=“2019-07-02T14:55:38Z” level=info msg=“gateway updated” gateway_id=0602e4956e4b1649
Jul 02 14:55:38 LSAU915 loraserver[866]: time=“2019-07-02T14:55:38Z” level=info msg=“metrics saved” aggregation="[MINUTE HOUR DAY MONTH]" name=“gw:0602e4956e4b1649”
Jul 02 14:56:07 LSAU915 loraserver[866]: time=“2019-07-02T14:56:07Z” level=info msg=“gateway/mqtt: gateway stats packet received” gateway_id=0602e4956e4b1649
Jul 02 14:56:07 LSAU915 loraserver[866]: time=“2019-07-02T14:56:07Z” level=info msg=“gateway updated” gateway_id=0602e4956e4b1649
Jul 02 14:56:07 LSAU915 loraserver[866]: time=“2019-07-02T14:56:07Z” level=info msg=“metrics saved” aggregation="[MINUTE HOUR DAY MONTH]" name=“gw:0602e4956e4b1649”
Jul 02 14:56:37 LSAU915 loraserver[866]: time=“2019-07-02T14:56:37Z” level=info msg=“gateway/mqtt: gateway stats packet received” gateway_id=0602e4956e4b1649
Jul 02 14:56:37 LSAU915 loraserver[866]: time=“2019-07-02T14:56:37Z” level=info msg=“gateway updated” gateway_id=0602e4956e4b1649
Jul 02 14:56:37 LSAU915 loraserver[866]: time=“2019-07-02T14:56:37Z” level=info msg=“metrics saved” aggregation="[MINUTE HOUR DAY MONTH]" name=“gw:0602e4956e4b1649”
Jul 02 14:56:38 LSAU915 loraserver[866]: time=“2019-07-02T14:56:38Z” level=info msg=“finished unary call with code OK” grpc.code=OK grpc.method=GetDevice grpc.service=ns.NetworkServerService grpc.start_time=“2019-07-02T14:56:38Z” grpc.time_ms=0.561 peer.address=“127.0.0.1:34816” span.kind=server system=grpc
Jul 02 14:56:38 LSAU915 loraserver[866]: time=“2019-07-02T14:56:38Z” level=info msg=“finished unary call with code OK” grpc.code=OK grpc.method=GetDeviceProfile grpc.service=ns.NetworkServerService grpc.start_time=“2019-07-02T14:56:38Z” grpc.time_ms=3.303 peer.address=“127.0.0.1:34816” span.kind=server system=grpc
Jul 02 14:56:43 LSAU915 loraserver[866]: time=“2019-07-02T14:56:43Z” level=info msg=“finished unary call with code OK” grpc.code=OK grpc.method=GetGatewayStats grpc.service=ns.NetworkServerService grpc.start_time=“2019-07-02T14:56:43Z” grpc.time_ms=0.525 peer.address=“127.0.0.1:34816” span.kind=server system=grpc
Jul 02 14:56:47 LSAU915 loraserver[866]: time=“2019-07-02T14:56:47Z” level=info msg=“finished unary call with code OK” grpc.code=OK grpc.method=GetGatewayStats grpc.service=ns.NetworkServerService grpc.start_time=“2019-07-02T14:56:47Z” grpc.time_ms=0.421 peer.address=“127.0.0.1:34816” span.kind=server system=grpc
Jul 02 14:56:49 LSAU915 loraserver[866]: time=“2019-07-02T14:56:49Z” level=info msg=“gateway/mqtt: uplink frame received”
Jul 02 14:56:49 LSAU915 loraserver[866]: time=“2019-07-02T14:56:49Z” level=error msg=“processing uplink frame error” data_base64=QDHRMgAAJgwEOE/cOgiRl3h5 error=“get device-session error: device-session does not exist or invalid fcnt or mic”
Jul 02 14:56:50 LSAU915 loraserver[866]: time=“2019-07-02T14:56:50Z” level=info msg=“finished unary call with code OK” grpc.code=OK grpc.method=GetDevice grpc.service=ns.NetworkServerService grpc.start_time=“2019-07-02T14:56:50Z” grpc.time_ms=1.282 peer.address=“127.0.0.1:34816” span.kind=server system=grpc
Jul 02 14:56:51 LSAU915 loraserver[866]: time=“2019-07-02T14:56:51Z” level=info msg=“finished unary call with code OK” grpc.code=OK grpc.method=GetDeviceProfile grpc.service=ns.NetworkServerService grpc.start_time=“2019-07-02T14:56:51Z” grpc.time_ms=0.602 peer.address=“127.0.0.1:34816” span.kind=server system=grpc
Jul 02 14:57:07 LSAU915 loraserver[866]: time=“2019-07-02T14:57:07Z” level=info msg=“gateway/mqtt: gateway stats packet received” gateway_id=0602e4956e4b1649
Jul 02 14:57:07 LSAU915 loraserver[866]: time=“2019-07-02T14:57:07Z” level=info msg=“gateway updated” gateway_id=0602e4956e4b1649
Jul 02 14:57:07 LSAU915 loraserver[866]: time=“2019-07-02T14:57:07Z” level=info msg=“metrics saved” aggregation="[MINUTE HOUR DAY MONTH]" name=“gw:0602e4956e4b1649”
Jul 02 14:57:10 LSAU915 loraserver[866]: time=“2019-07-02T14:57:10Z” level=info msg=“gateway/mqtt: uplink frame received”
Jul 02 14:57:10 LSAU915 loraserver[866]: time=“2019-07-02T14:57:10Z” level=error msg=“processing uplink frame error” data_base64=QBBUNQEAowcELQY0VizpXyHv error=“get device-session error: device-session does not exist or invalid fcnt or mic”
Jul 02 14:57:37 LSAU915 loraserver[866]: time=“2019-07-02T14:57:37Z” level=info msg=“gateway/mqtt: gateway stats packet received” gateway_id=0602e4956e4b1649
Jul 02 14:57:37 LSAU915 loraserver[866]: time=“2019-07-02T14:57:37Z” level=info msg=“gateway updated” gateway_id=0602e4956e4b1649
Jul 02 14:57:37 LSAU915 loraserver[866]: time=“2019-07-02T14:57:37Z” level=info msg=“metrics saved” aggregation="[MINUTE HOUR DAY MONTH]" name=“gw:0602e4956e4b1649”
Jul 02 14:58:07 LSAU915 loraserver[866]: time=“2019-07-02T14:58:07Z” level=info msg=“gateway/mqtt: gateway stats packet received” gateway_id=0602e4956e4b1649
Jul 02 14:58:07 LSAU915 loraserver[866]: time=“2019-07-02T14:58:07Z” level=info msg=“gateway updated” gateway_id=0602e4956e4b1649
Jul 02 14:58:07 LSAU915 loraserver[866]: time=“2019-07-02T14:58:07Z” level=info msg=“metrics saved” aggregation="[MINUTE HOUR DAY MONTH]" name=“gw:0602e4956e4b1649”
Jul 02 14:58:37 LSAU915 loraserver[866]: time=“2019-07-02T14:58:37Z” level=info msg=“gateway/mqtt: gateway stats packet received” gateway_id=0602e4956e4b1649
Jul 02 14:58:37 LSAU915 loraserver[866]: time=“2019-07-02T14:58:37Z” level=info msg=“gateway updated” gateway_id=0602e4956e4b1649
Jul 02 14:58:37 LSAU915 loraserver[866]: time=“2019-07-02T14:58:37Z” level=info msg=“metrics saved” aggregation="[MINUTE HOUR DAY MONTH]" name=“gw:0602e4956e4b1649”
Jul 02 14:58:42 LSAU915 loraserver[866]: time=“2019-07-02T14:58:42Z” level=info msg=“finished unary call with code OK” grpc.code=OK grpc.method=GetNextDownlinkFCntForDevEUI grpc.service=ns.NetworkServerService grpc.start_time=“2019-07-02T14:58:42Z” grpc.time_ms=1.02 peer.address=“127.0.0.1:34816” span.kind=server system=grpc
Jul 02 14:58:42 LSAU915 loraserver[866]: time=“2019-07-02T14:58:42Z” level=info msg=“device-queue item created” dev_eui=ffffff100000a647 f_cnt=12
Jul 02 14:58:42 LSAU915 loraserver[866]: time=“2019-07-02T14:58:42Z” level=info msg=“finished unary call with code OK” grpc.code=OK grpc.method=CreateDeviceQueueItem grpc.service=ns.NetworkServerService grpc.start_time=“2019-07-02T14:58:42Z” grpc.time_ms=3.694 peer.address=“127.0.0.1:34816” span.kind=server system=grpc
Jul 02 14:58:42 LSAU915 loraserver[866]: time=“2019-07-02T14:58:42Z” level=info msg=“device-queue deleted” id=9
Jul 02 14:58:42 LSAU915 loraserver[866]: time=“2019-07-02T14:58:42Z” level=info msg=“pending mac-command block set” cid=LinkADRReq commands=2 dev_eui=ffffff100000a647
Jul 02 14:58:42 LSAU915 loraserver[866]: time=“2019-07-02T14:58:42Z” level=info msg=“gateway/mqtt: publishing gateway command” command=down gateway_id=0602e4956e4b1649 qos=0 topic=gateway/0602e4956e4b1649/command/down
Jul 02 14:58:42 LSAU915 loraserver[866]: time=“2019-07-02T14:58:42Z” level=info msg=“device-session saved” dev_addr=01db3d75 dev_eui=ffffff100000a647
Jul 02 14:58:42 LSAU915 loraserver[866]: time=“2019-07-02T14:58:42Z” level=info msg=“finished streaming call with code OK” grpc.code=OK grpc.method=StreamFrameLogsForDevice grpc.service=ns.NetworkServerService grpc.start_time=“2019-07-02T14:56:13Z” grpc.time_ms=149029.88 peer.address=“127.0.0.1:34816” span.kind=server system=grpc
Jul 02 14:58:42 LSAU915 loraserver[866]: time=“2019-07-02T14:58:42Z” level=info msg=“finished streaming call with code OK” grpc.code=OK grpc.method=StreamFrameLogsForDevice grpc.service=ns.NetworkServerService grpc.start_time=“2019-07-02T14:56:38Z” grpc.time_ms=123699.17 peer.address=“127.0.0.1:34816” span.kind=server system=grpc
Jul 02 14:58:42 LSAU915 loraserver[866]: time=“2019-07-02T14:58:42Z” level=info msg=“backend/gateway: downlink tx acknowledgement received” gateway_id=0602e4956e4b1649

Has anyone made a configuration for AU915? : - /

I appreciate any help.

Hello everyone, in the end I managed to get the AU915 class C sensors working correctly.

I share with you the configuration that has worked for me, in case someone else needs it:

loraserver.toml:

[general]
# Log level
#
# debug=5, info=4, warning=3, error=2, fatal=1, panic=0
log_level=4


# PostgreSQL settings.
#
# Please note that PostgreSQL 9.5+ is required.
[postgresql]
# PostgreSQL dsn (e.g.: postgres://user:password@hostname/database?sslmode=disable).
#
# Besides using an URL (e.g. 'postgres://user:password@hostname/database?sslmode=disable')
# it is also possible to use the following format:
# 'user=loraserver dbname=loraserver sslmode=disable'.
#
# The following connection parameters are supported:
#
# * dbname - The name of the database to connect to
# * user - The user to sign in as
# * password - The user's password
# * host - The host to connect to. Values that start with / are for unix domain sockets. (default is localhost)
# * port - The port to bind to. (default is 5432)
# * sslmode - Whether or not to use SSL (default is require, this is not the default for libpq)
# * fallback_application_name - An application_name to fall back to if one isn't provided.
# * connect_timeout - Maximum wait for connection, in seconds. Zero or not specified means wait indefinitely.
# * sslcert - Cert file location. The file must contain PEM encoded data.
# * sslkey - Key file location. The file must contain PEM encoded data.
# * sslrootcert - The location of the root certificate file. The file must contain PEM encoded data.
#
# Valid values for sslmode are:
#
# * disable - No SSL
# * require - Always SSL (skip verification)
# * verify-ca - Always SSL (verify that the certificate presented by the server was signed by a trusted CA)
# * verify-full - Always SSL (verify that the certification presented by the server was signed by a trusted CA and the server host name matches the one in the certificate)
dsn="postgres://loraserver_ns:xxxxxxxxxxxx@localhost/loraserver_ns?sslmode=disable"

# Automatically apply database migrations.
#
# It is possible to apply the database-migrations by hand
# (see https://github.com/brocaar/loraserver/tree/master/migrations)
# or let LoRa App Server migrate to the latest state automatically, by using
# this setting. Make sure that you always make a backup when upgrading Lora
# App Server and / or applying migrations.
automigrate=true


# Redis settings
#
# Please note that Redis 2.6.0+ is required.
[redis]
# Redis url (e.g. redis://user:password@hostname/0)
#
# For more information about the Redis URL format, see:
# https://www.iana.org/assignments/uri-schemes/prov/redis
url="redis://localhost:6379"

# Max idle connections in the pool.
max_idle=10

# Idle timeout.
#
# Close connections after remaining idle for this duration. If the value
# is zero, then idle connections are not closed. You should set
# the timeout to a value less than the server's timeout.
idle_timeout="5m0s"

# Max active connections in the pool.
#
# When zero, there is no limit on the number of connections in the pool.
max_active=0


# Network-server settings.
[network_server]
# Network identifier (NetID, 3 bytes) encoded as HEX (e.g. 010203)
net_id="000000"

# Time to wait for uplink de-duplication.
#
# This is the time that LoRa Server will wait for other gateways to receive
# the same uplink frame. Valid units are 'ms' or 's'.
# Please note that this value has influence on the uplink / downlink
# roundtrip time. Setting this value too high means LoRa Server will be
# unable to respond to the device within its receive-window.
deduplication_delay="200ms"

# Device session expiration.
#
# The TTL value defines the time after which a device-session expires
# after no activity. Valid units are 'ms', 's', 'm', 'h'. Note that these
# values can be combined, e.g. '24h30m15s'.
device_session_ttl="744h0m0s"

# Get downlink data delay.
#
# This is the time that LoRa Server waits between forwarding data to the
# application-server and reading data from the queue. A higher value
# means that the application-server has more time to schedule a downlink
# queue item which can be processed within the same uplink / downlink
# transaction.
# Please note that this value has influence on the uplink / downlink
# roundtrip time. Setting this value too high means LoRa Server will be
# unable to respond to the device within its receive-window.
get_downlink_data_delay="100ms"


  # LoRaWAN regional band configuration.
  #
  # Note that you might want to consult the LoRaWAN Regional Parameters
  # specification for valid values that apply to your region.
  # See: https://www.lora-alliance.org/lorawan-for-developers
  [network_server.band]
  # LoRaWAN band to use.
  #
  # Valid values are:
  # * AS_923
  # * AU_915_928
  # * CN_470_510
  # * CN_779_787
  # * EU_433
  # * EU_863_870
  # * IN_865_867
  # * KR_920_923
  # * RU_864_870
  # * US_902_928
  name="AU_915_928"

  # Enforce 400ms dwell time
  #
  # Some band configurations define the max payload size for both dwell-time
  # limitation enabled as disabled (e.g. AS 923). In this case the
  # dwell time setting must be set to enforce the max payload size
  # given the dwell-time limitation. For band configuration where the dwell-time is
  # always enforced, setting this flag is not required.
  dwell_time_400ms=false

  # Enforce repeater compatibility
  #
  # Most band configurations define the max payload size for both an optional
  # repeater encapsulation layer as for setups where a repeater will never
  # be used. The latter case increases the max payload size for some data-rates.
  # In case a repeater might used, set this flag to true.
  repeater_compatible=false


  # LoRaWAN network related settings.
  [network_server.network_settings]
  # Installation margin (dB) used by the ADR engine.
  #
  # A higher number means that the network-server will keep more margin,
  # resulting in a lower data-rate but decreasing the chance that the
  # device gets disconnected because it is unable to reach one of the
  # surrounded gateways.
  installation_margin=10

  # RX window (Class-A).
  #
  # Set this to:
  # 0: RX1, fallback to RX2 (on RX1 scheduling error)
  # 1: RX1 only
  # 2: RX2 only
  rx_window=0

  # Class A RX1 delay
  #
  # 0=1sec, 1=1sec, ... 15=15sec. A higher value means LoRa Server has more
  # time to respond to the device as the delay between the uplink and the
  # first receive-window will be increased.
  rx1_delay=1

  # RX1 data-rate offset
  #
  # Please consult the LoRaWAN Regional Parameters specification for valid
  # options of the configured network_server.band.name.
  rx1_dr_offset=0

  # RX2 data-rate
  #
  # When set to -1, the default RX2 data-rate will be used for the configured
  # LoRaWAN band.
  #
  # Please consult the LoRaWAN Regional Parameters specification for valid
  # options of the configured network_server.band.name.
  rx2_dr=-1

  # RX2 frequency
  #
  # When set to -1, the default RX2 frequency will be used.
  #
  # Please consult the LoRaWAN Regional Parameters specification for valid
  # options of the configured network_server.band.name.
  rx2_frequency=-1

  # Downlink TX Power (dBm)
  #
  # When set to -1, the downlink TX Power from the configured band will
  # be used.
  #
  # Please consult the LoRaWAN Regional Parameters and local regulations
  # for valid and legal options. Note that the configured TX Power must be
  # supported by your gateway(s).
  downlink_tx_power=-1

  # Disable mac-commands
  #
  # When set to true, LoRa Server will not handle and / or schedule any
  # mac-commands. However, it is still possible for an external controller
  # to handle and / or schedule mac-commands. This is intended for testing
  # only.
  disable_mac_commands=true

  # Disable ADR
  #
  # When set, this globally disables ADR.
  disable_adr=false

  # Enable only a given sub-set of channels
  #
  # Use this when ony a sub-set of the by default enabled channels are being
  # used. For example when only using the first 8 channels of the US band.
  # Note: when left blank, all channels will be enabled.
  #
  # Example:
  # enabled_uplink_channels=[0, 1, 2, 3, 4, 5, 6, 7]
  enabled_uplink_channels=[0, 1, 2, 3, 4, 5, 6, 7]


  # Extra channel configuration.
  #
  # Use this for LoRaWAN regions where it is possible to extend the by default
  # available channels with additional channels (e.g. the EU band).
  # The first 5 channels will be configured as part of the OTAA join-response
  # (using the CFList field).
  # The other channels (or channel / data-rate changes) will be (re)configured
  # using the NewChannelReq mac-command.
  #
  # Example:
  # [[network_server.network_settings.extra_channels]]
  # frequency=867100000
  # min_dr=0
  # max_dr=5

  # [[network_server.network_settings.extra_channels]]
  # frequency=867300000
  # min_dr=0
  # max_dr=5

  # [[network_server.network_settings.extra_channels]]
  # frequency=867500000
  # min_dr=0
  # max_dr=5

  # [[network_server.network_settings.extra_channels]]
  # frequency=867700000
  # min_dr=0
  # max_dr=5

  # [[network_server.network_settings.extra_channels]]
  # frequency=867900000
  # min_dr=0
  # max_dr=5


  # Class B settings
  [network_server.network_settings.class_b]
  # Ping-slot data-rate.
  ping_slot_dr=0

  # Ping-slot frequency (Hz)
  #
  # Set this to 0 to use the default frequency plan for the configured region
  # (which could be frequency hopping).
  ping_slot_frequency=0


  # Rejoin-request settings
  #
  # When enabled, LoRa Server will request the device to send a rejoin-request
  # every time when one of the 2 conditions below is met (frame count or time).
  [network_server.network_settings.rejoin_request]
  # Request device to periodically send rejoin-requests
  enabled=false

  # The device must send a rejoin-request type 0 at least every 2^(max_count_n + 4)
  # uplink messages. Valid values are 0 to 15.
  max_count_n=0

  # The device must send a rejoin-request type 0 at least every 2^(max_time_n + 10)
  # seconds. Valid values are 0 to 15.
  #
  # 0  = roughly 17 minutes
  # 15 = about 1 year
  max_time_n=0


  # Scheduler settings
  #
  # These settings affect the multicast, Class-B and Class-C downlink queue
  # scheduler.
  [network_server.scheduler]
  # Scheduler interval
  #
  # The interval in which the downlink scheduler for multicast, Class-B and
  # Class-C runs.
  scheduler_interval="1s"

    # Class-C settings.
    [network_server.scheduler.class_c]
    # Downlink lock duration
    #
    # Contains the duration to lock the downlink Class-C transmissions
    # after a preceeding downlink tx (per device).
    downlink_lock_duration="2s"


  # Network-server API
  #
  # This is the network-server API that is used by LoRa App Server or other
  # custom components interacting with LoRa Server.
  [network_server.api]
  # ip:port to bind the api server
  bind="0.0.0.0:8000"

  # ca certificate used by the api server (optional)
  ca_cert=""

  # tls certificate used by the api server (optional)
  tls_cert=""

  # tls key used by the api server (optional)
  tls_key=""


  # Backend defines the gateway backend settings.
  #
  # The gateway backend handles the communication with the gateway(s) part of
  # the LoRaWAN network.
  [network_server.gateway.backend]
    # Backend
    #
    # This defines the backend to use for the communication with the gateways.
    # Use the section name of one of the following gateway backends.
        # Valid options are:
    #  * mqtt
    #  * gcp_pub_sub
    #  * azure_iot_hub
    type="mqtt"


    # MQTT gateway backend settings.
    #
    # This is the backend communicating with the LoRa gateways over a MQTT broker.
    [network_server.gateway.backend.mqtt]
    # MQTT topic templates for the different MQTT topics.
    #
    # The meaning of these topics are documented at:
    # https://www.loraserver.io/lora-gateway-bridge/
    #
    # The default values match the default expected configuration of the
    # LoRa Gateway Bridge MQTT backend. Therefore only change these values when
    # absolutely needed.

    # Event topic template.
    event_topic="gateway/+/event/+"

    # Command topic template.
    #
    # Use:
    #   * "{{ .GatewayID }}" as an substitution for the LoRa gateway ID
    #   * "{{ .CommandType }}" as an substitution for the command type
    command_topic_template="gateway/{{ .GatewayID }}/command/{{ .CommandType }}"

    # MQTT server (e.g. scheme://host:port where scheme is tcp, ssl or ws)
    server="tcp://localhost:1883"

    # Connect with the given username (optional)
    username=""

    # Connect with the given password (optional)
    password=""

    # Quality of service level
    #
    # 0: at most once
    # 1: at least once
    # 2: exactly once
    #
    # Note: an increase of this value will decrease the performance.
    # For more information: https://www.hivemq.com/blog/mqtt-essentials-part-6-mqtt-quality-of-service-levels
    qos=0

    # Clean session
    #
    # Set the "clean session" flag in the connect message when this client
    # connects to an MQTT broker. By setting this flag you are indicating
    # that no messages saved by the broker for this client should be delivered.
    clean_session=true

    # Client ID
    #
    # Set the client id to be used by this client when connecting to the MQTT
    # broker. A client id must be no longer than 23 characters. When left blank,
    # a random id will be generated. This requires clean_session=true.
    client_id=""

    # CA certificate file (optional)
    #
    # Use this when setting up a secure connection (when server uses ssl://...)
    # but the certificate used by the server is not trusted by any CA certificate
    # on the server (e.g. when self generated).
    ca_cert=""

    # TLS certificate file (optional)
    tls_cert=""

    # TLS key file (optional)
    tls_key=""


    # Google Cloud Pub/Sub backend.
    #
    # Use this backend when the LoRa Gateway Bridge is configured to connect
    # to the Google Cloud IoT Core MQTT broker (which integrates with Pub/Sub).
    [network_server.gateway.backend.gcp_pub_sub]
    # Path to the IAM service-account credentials file.
    #
    # Note: this service-account must have the following Pub/Sub roles:
    #  * Pub/Sub Editor
    credentials_file=""

    # Google Cloud project id.
    project_id=""

    # Uplink Pub/Sub topic name (to which Cloud IoT Core publishes).
    uplink_topic_name=""

    # Downlink Pub/Sub topic name (for publishing downlink frames).
    downlink_topic_name=""

    # Uplink retention duration.
    #
    # The retention duration that LoRa Server will set on the uplink subscription.
    uplink_retention_duration="24h0m0s"


    # Azure IoT Hub backend.
    #
    # Use this backend when the LoRa Gateway Bridge is configured to connect
    # to the Azure IoT Hub MQTT broker.
    [network_server.gateway.backend.azure_iot_hub]

    # Events connection string.
    #
    # This connection string must point to the Service Bus Queue to which the
    # IoT Hub is forwarding the (uplink) gateway events.
    events_connection_string=""

    # Commands connection string.
    #
    # This connection string must point to the IoT Hub and is used by LoRa Server
    # for sending commands to the gateways.
    commands_connection_string=""


  # Geolocation settings.
  #
  # When set, LoRa Server will use the configured geolocation server to
  # resolve the location of the devices.
  [geolocation_server]
  # Server.
  #
  # The hostname:ip of the geolocation service (optional).
  server=""

  # CA certificate used by the API client (optional).
  ca_cert=""

  # TLS certificate used by the API client (optional).
  tls_cert=""

  # TLS key used by the API client (optional).
  tls_key=""


# Metrics collection settings.
[metrics]
# Timezone
#
# The timezone is used for correctly aggregating the metrics (e.g. per hour,
# day or month).
# Example: "Europe/Amsterdam" or "Local" for the the system's local time zone.
timezone="Local"

  # Metrics stored in Redis.
  #
  # The following metrics are stored in Redis:
  # * gateway statistics
  [metrics.redis]
  # Aggregation intervals
  #
  # The intervals on which to aggregate. Available options are:
  # 'MINUTE', 'HOUR', 'DAY', 'MONTH'.
  aggregation_intervals=["MINUTE", "HOUR", "DAY", "MONTH"]

  # Aggregated statistics storage duration.
  minute_aggregation_ttl="2h0m0s"
  hour_aggregation_ttl="48h0m0s"
  day_aggregation_ttl="2160h0m0s"
  month_aggregation_ttl="17520h0m0s"


# Join-server settings.
[join_server]
# Resolve JoinEUI (experimental).
# Default join-server settings.
#
# When set to true, LoRa Server will use the JoinEUI to resolve the join-server
# for the given JoinEUI. LoRa Server will fallback on the default join-server
# when resolving the JoinEUI fails.
resolve_join_eui=false

# Resolve domain suffix.
#
# This configures the domain suffix used for resolving the join-server.
resolve_domain_suffix=".joineuis.lora-alliance.org"


  # Join-server certificates.
  #
  # Example:
  # [[join_server.certificates]]
  # # JoinEUI.
  # #
  # # The JoinEUI of the joinserver to to use the certificates for.
  # join_eui="0102030405060708"

  # # CA certificate (optional).
  # #
  # # Set this to validate the join-server server certificate (e.g. when the
  # # certificate was self-signed).
  # ca_cert="/path/to/ca.pem"

  # # TLS client-certificate (optional).
  # #
  # # Set this to enable client-certificate authentication with the join-server.
  # tls_cert="/path/to/tls_cert.pem"

  # # TLS client-certificate key (optional).
  # #
  # # Set this to enable client-certificate authentication with the join-server.
  # tls_key="/path/to/tls_key.pem"


  # Default join-server settings.
  #
  # This join-server will be used when resolving the JoinEUI is set to false
  # or as a fallback when resolving the JoinEUI fails.
  [join_server.default]
  # hostname:port of the default join-server
  #
  # This API is provided by LoRa App Server.
  server="http://localhost:8003"

  # ca certificate used by the default join-server client (optional)
  ca_cert=""

  # tls certificate used by the default join-server client (optional)
  tls_cert=""

  # tls key used by the default join-server client (optional)
  tls_key=""


  # Join-server KEK set.
  #
  # These KEKs (Key Encryption Keys) are used to decrypt the network related
  # session-keys received from the join-server on a (re)join-accept.
  # Please refer to the LoRaWAN Backend Interface specification
  # 'Key Transport Security' section for more information.
  #
  # Example (the [[join_server.kek.set]] can be repeated):
  # [[join_server.kek.set]]
  # # KEK label.
  # label="000000"

  # # Key Encryption Key.
  # kek="01020304050607080102030405060708"


  # Network-controller configuration.
  [network_controller]
  # hostname:port of the network-controller api server (optional)
  server=""

  # ca certificate used by the network-controller client (optional)
  ca_cert=""

  # tls certificate used by the network-controller client (optional)
  tls_cert=""

  # tls key used by the network-controller client (optional)
  tls_key=""

lora-app-server:

[general]
# Log level
#
# debug=5, info=4, warning=3, error=2, fatal=1, panic=0
log_level=4

# The number of times passwords must be hashed. A higher number is safer as
# an attack takes more time to perform.
password_hash_iterations=100000


# PostgreSQL settings.
#
# Please note that PostgreSQL 9.5+ is required.
[postgresql]
# PostgreSQL dsn (e.g.: postgres://user:password@hostname/database?sslmode=disable).
#
# Besides using an URL (e.g. 'postgres://user:password@hostname/database?sslmode=disable')
# it is also possible to use the following format:
# 'user=loraserver dbname=loraserver sslmode=disable'.
#
# The following connection parameters are supported:
#
# * dbname - The name of the database to connect to
# * user - The user to sign in as
# * password - The user's password
# * host - The host to connect to. Values that start with / are for unix domain sockets. (default is localhost)
# * port - The port to bind to. (default is 5432)
# * sslmode - Whether or not to use SSL (default is require, this is not the default for libpq)
# * fallback_application_name - An application_name to fall back to if one isn't provided.
# * connect_timeout - Maximum wait for connection, in seconds. Zero or not specified means wait indefinitely.
# * sslcert - Cert file location. The file must contain PEM encoded data.
# * sslkey - Key file location. The file must contain PEM encoded data.
# * sslrootcert - The location of the root certificate file. The file must contain PEM encoded data.
#
# Valid values for sslmode are:
#
# * disable - No SSL
# * require - Always SSL (skip verification)
# * verify-ca - Always SSL (verify that the certificate presented by the server was signed by a trusted CA)
# * verify-full - Always SSL (verify that the certification presented by the server was signed by a trusted CA and the server host name matches the one in the certificate)
dsn="postgres://loraserver_as:T3lc0nsur6199@localhost/loraserver_as?sslmode=disable"

# Automatically apply database migrations.
#
# It is possible to apply the database-migrations by hand
# (see https://github.com/brocaar/lora-app-server/tree/master/migrations)
# or let LoRa App Server migrate to the latest state automatically, by using
# this setting. Make sure that you always make a backup when upgrading Lora
# App Server and / or applying migrations.
automigrate=true


# Redis settings
#
# Please note that Redis 2.6.0+ is required.
[redis]
# Redis url (e.g. redis://user:password@hostname/0)
#
# For more information about the Redis URL format, see:
# https://www.iana.org/assignments/uri-schemes/prov/redis
url="redis://localhost:6379"

# Max idle connections in the pool.
max_idle=10

# Idle timeout.
#
# Close connections after remaining idle for this duration. If the value
# is zero, then idle connections are not closed. You should set
# the timeout to a value less than the server's timeout.
idle_timeout="5m0s"


# Application-server settings.
[application_server]
# Application-server identifier.
#
# Random UUID defining the id of the application-server installation (used by
# LoRa Server as routing-profile id).
# For now it is recommended to not change this id.
id="6d5db27e-4ce2-4b2b-b5d7-91f069397978"


  # JavaScript codec settings.
  [application_server.codec.js]
  # Maximum execution time.
  max_execution_time="100ms"


  # Integration configures the data integration.
  #
  # This is the data integration which is available for all applications,
  # besides the extra integrations that can be added on a per-application
  # basis.
  [application_server.integration]
  # Enabled integrations.
  #
  # Enabled integrations are enabled for all applications. Multiple
  # integrations can be configured.
  # Do not forget to configure the related configuration section below for
  # the enabled integrations. Integrations that can be enabled are:
  # * mqtt              - MQTT broker
  # * aws_sns           - AWS Simple Notification Service (SNS)
  # * azure_service_bus - Azure Service-Bus
  # * gcp_pub_sub       - Google Cloud Pub/Sub
  enabled=["mqtt"]


  # MQTT integration backend.
  [application_server.integration.mqtt]
  # MQTT topic templates for the different MQTT topics.
  #
  # The meaning of these topics are documented at:
  # https://www.loraserver.io/lora-app-server/integrate/data/
  #
  # The following substitutions can be used:
  # * "{{ .ApplicationID }}" for the application id.
  # * "{{ .DevEUI }}" for the DevEUI of the device.
  #
  # Note: the downlink_topic_template must contain both the application id and
  # DevEUI substitution!
  uplink_topic_template="application/{{ .ApplicationID }}/device/{{ .DevEUI }}/rx"
  downlink_topic_template="application/{{ .ApplicationID }}/device/{{ .DevEUI }}/tx"
  join_topic_template="application/{{ .ApplicationID }}/device/{{ .DevEUI }}/join"
  ack_topic_template="application/{{ .ApplicationID }}/device/{{ .DevEUI }}/ack"
  error_topic_template="application/{{ .ApplicationID }}/device/{{ .DevEUI }}/error"
  status_topic_template="application/{{ .ApplicationID }}/device/{{ .DevEUI }}/status"
  location_topic_template="application/{{ .ApplicationID }}/device/{{ .DevEUI }}/location"

  # Retained messages configuration.
  #
  # The MQTT broker will store the last publised message, when retained message is set
  # to true. When a client subscribes to a topic with retained message set to true, it will
  # always receive the last published message.
  uplink_retained_message=false
  join_retained_message=false
  ack_retained_message=false
  error_retained_message=false
  status_retained_message=false
  location_retained_message=false

  # MQTT server (e.g. scheme://host:port where scheme is tcp, ssl or ws)
  server="tcp://localhost:1883"

  # Connect with the given username (optional)
  username="loraserver_as"

  # Connect with the given password (optional)
  password="T3lc0nsur6199"

  # Quality of service level
  #
  # 0: at most once
  # 1: at least once
  # 2: exactly once
  #
  # Note: an increase of this value will decrease the performance.
  # For more information: https://www.hivemq.com/blog/mqtt-essentials-part-6-mqtt-quality-of-service-levels
  qos=0

  # Clean session
  #
  # Set the "clean session" flag in the connect message when this client
  # connects to an MQTT broker. By setting this flag you are indicating
  # that no messages saved by the broker for this client should be delivered.
  clean_session=true

  # Client ID
  #
  # Set the client id to be used by this client when connecting to the MQTT
  # broker. A client id must be no longer than 23 characters. When left blank,
  # a random id will be generated. This requires clean_session=true.
  client_id=""

  # CA certificate file (optional)
  #
  # Use this when setting up a secure connection (when server uses ssl://...)
  # but the certificate used by the server is not trusted by any CA certificate
  # on the server (e.g. when self generated).
  ca_cert=""

  # TLS certificate file (optional)
  tls_cert=""

  # TLS key file (optional)
  tls_key=""


  # AWS Simple Notification Service (SNS)
  [application_server.integration.aws_sns]
  # AWS region.
  #
  # Example: "eu-west-1".
  # See also: https://docs.aws.amazon.com/general/latest/gr/rande.html.
  aws_region=""

  # AWS Access Key ID.
  aws_access_key_id=""

  # AWS Secret Access Key.
  aws_secret_access_key=""

  # Topic ARN (SNS).
  topic_arn=""


  # Azure Service-Bus integration.
  [application_server.integration.azure_service_bus]
  # Connection string.
  #
  # The connection string can be found / created in the Azure console under
  # Settings -> Shared access policies. The policy must contain Manage & Send.
  connection_string=""

  # Publish mode.
  #
  # Select either "topic", or "queue".
  publish_mode=""

  # Publish name.
  #
  # The name of the topic or queue.
  publish_name=""


  # Google Cloud Pub/Sub integration.
  [application_server.integration.gcp_pub_sub]
  # Path to the IAM service-account credentials file.
  #
  # Note: this service-account must have the following Pub/Sub roles:
  #  * Pub/Sub Editor
  credentials_file=""

  # Google Cloud project id.
  project_id=""

  # Pub/Sub topic name.
  topic_name=""


  # Settings for the "internal api"
  #
  # This is the API used by LoRa Server to communicate with LoRa App Server
  # and should not be exposed to the end-user.
  [application_server.api]
  # ip:port to bind the api server
  bind="0.0.0.0:8001"

  # ca certificate used by the api server (optional)
  ca_cert=""

  # tls certificate used by the api server (optional)
  tls_cert=""

  # tls key used by the api server (optional)
  tls_key=""

  # Public ip:port of the application-server API.
  #
  # This is used by LoRa Server to connect to LoRa App Server. When running
  # LoRa App Server on a different host than LoRa Server, make sure to set
  # this to the host:ip on which LoRa Server can reach LoRa App Server.
  # The port must be equal to the port configured by the 'bind' flag
  # above.
  public_host="localhost:8001"


  # Settings for the "external api"
  #
  # This is the API and web-interface exposed to the end-user.
  [application_server.external_api]
  # ip:port to bind the (user facing) http server to (web-interface and REST / gRPC api)
  bind="0.0.0.0:8080"

  # http server TLS certificate (optional)
  tls_cert="/etc/lora-app-server/certs/cert.pem"

  # http server TLS key (optional)
  tls_key="/etc/lora-app-server/certs/key.pem"

  # JWT secret used for api authentication / authorization
  # You could generate this by executing 'openssl rand -base64 32' for example
  jwt_secret="S3OZtFUY+SI2dvoEo2PXBCUbQ0/ftsqwsJfmrY3s2sc="

  # Allow origin header (CORS).
  #
  # Set this to allows cross-domain communication from the browser (CORS).
  # Example value: https://example.com.
  # When left blank (default), CORS will not be used.
  cors_allow_origin=""

  # when set, existing users can't be re-assigned (to avoid exposure of all users to an organization admin)"
  disable_assign_existing_users=false


  # Settings for the remote multicast setup.
  [application_server.remote_multicast_setup]
  # Synchronization interval.
  sync_interval="1s"

  # Synchronization retries.
  sync_retries=3

  # Synchronization batch-size.
  sync_batch_size=100


  # Settings for the fragmentation-session setup.
  [application_server.fragmentation_session]
  # Synchronization interval.
  sync_interval="1s"

  # Synchronization retries.
  sync_retries=3

  # Synchronization batch-size.
  sync_batch_size=100



# Join-server configuration.
#
# LoRa App Server implements a (subset) of the join-api specified by the
# LoRaWAN Backend Interfaces specification. This API is used by LoRa Server
# to handle join-requests.
[join_server]
# ip:port to bind the join-server api interface to
bind="0.0.0.0:8003"

# CA certificate (optional).
#
# When set, the server requires a client-certificate and will validate this
# certificate on incoming requests.
ca_cert=""

# TLS server-certificate (optional).
#
# Set this to enable TLS.
tls_cert=""

# TLS server-certificate key (optional).
#
# Set this to enable TLS.
tls_key=""


# Key Encryption Key (KEK) configuration.
#
# The KEK meganism is used to encrypt the session-keys sent from the
# join-server to the network-server.
#
# The LoRa App Server join-server will use the NetID of the requesting
# network-server as the KEK label. When no such label exists in the set,
# the session-keys will be sent unencrypted (which can be fine for
# private networks).
#
# Please refer to the LoRaWAN Backend Interface specification
# 'Key Transport Security' section for more information.
[join_server.kek]

  # Application-server KEK label.
  #
  # This defines the KEK label used to encrypt the AppSKey (note that the
  # AppSKey is signaled to the NS and on the first received uplink from the
  # NS to the AS).
  #
  # When left blank, the AppSKey will be sent unencrypted (which can be fine
  # for private networks).
  as_kek_label=""

  # KEK set.
  #
  # Example (the [[join_server.kek.set]] can be repeated):
  # [[join_server.kek.set]]
  # # KEK label.
  # label="000000"

  # # Key Encryption Key.
  # kek="01020304050607080102030405060708"