LoRa Network Server Changelog

2.5.4 (July 2021)

  • lora-network-server v2.5.4
  • lora-lens-server v2.5.4
  • lora-query v1.0.6

General Changes

  • Add support for jsoncpp 1.9.2

Bug Fixes

  • Default frequency 922.9 MHz in JSON config for packet forwarder updated for KR920 when dual cards are installed
  • Default App downlink publishing to network server is fixed, MQTT messages were not passed through properly

2.4.22 (Jan 2021)

  • lora-network-server v2.4.22
  • lora-lens-server v2.4.22
  • lora-query v1.0.6

General Changes

  • Packets with proprietary MType are output to the MQTT/UDP
  • Added support for AS923 country selection: JAPAN1, JAPAN2
  • Set PKF antenna gain and adjust tx power with antenna gain

2.4.12 (Oct 2020)

  • lora-network-server v2.4.12
  • lora-lens-server v2.4.12
  • lora-query v1.0.6

General Changes

  • Support for LoRaWAN 1.0.2, 1.0.3 and 1.0.4
  • ISM2400 dual card support
  • Duty-cycle settings available for all channel plans
  • Added AS923-1, AS923-2 and AS923-3 channel plan support
  • Allow payload with first downlink is space is available to send with MAC commands

2.3.8 (2020)

  • lora-network-server v2.3.8
  • lora-lens-server v2.3.8
  • lora-query v1.0.6

General Changes

  • Added ISM2400 ChannelPlan

Bug Fixes

  • Fixes for LoRaWAN 1.0.4
    • AppNonce was transmitted with incorrect endianness
    • Save multicast session flag to database
    • Include 1.0.4 devices with 1.0.3 and 1.1 features (US/AU-CFLIST, ADR, DwellTime, MaxEIRP, TxParam)
  • FSK packet crash during geo-location MQTT emit

2.3.0 (Dec 2 2019)

  • lora-network-server v2.3.0
  • lora-lens-server v2.3.0
  • lora-query v1.0.6

General Changes

  • Added file output options to packet commands

Bug Fixes

  • BugFix: Correct global_conf.json generation when LBT is enabled in packet forwarder mode

Known Issues

  • Local JoinServer: Join Nonce endianness is reversed, will not work with LoRaWAN 1.0.4 counter validation at end-device

2.2.41 (Nov 18 2019)

  • lora-network-server v2.2.41
  • lora-lens-server v2.2.41
  • lora-query v1.0.6

General Changes

  • Added spectral scan support with reporting to Lens
  • Added option to send payload data to Lens
  • Added multicast support for Class B
  • Added multicast field to device session: 0:none, 1:ClassB, 2:ClassC
    • No longer need to set Uplink Counter to 1 for multicast sessions to schedule downlinks
    • Session can be modified for managing Multicast sessions
  • Add LoRaWAN 1.0.4 support
    • Added Join Server nonce counters
      • Includes validation of end-device DevNonce counter if LoRaWAN 1.0.4 support is specified in Device Profile
    • Use AU/US LinkAdrReq sub-band channel mask commands if LoRaWAN 1.0.4 support is specified in Device Profile
    • Network profile redundancy is used to track the number of allowed downlinks per uplink FCnt
      • If the expected number of duplicates has already been received no further downlinks will be scheduled

Bug Fixes

  • BugFix: deadlock would occur when an MQTT Downlink message was processed while sending a frame to gateways via UDP.

2.2.30 (Aug 2019)

  • lora-network-server v2.2.30
  • lora-lens-server v2.2.30
  • lora-query v1.0.4

General Changes

  • Added RSSI and SNR to the geolocation MQTT message
  • AS923 – do not add disabled channels to LBT list

Bug Fixes

  • Fix MQTT race-condition in keep-alive and queue push
  • Fix MQTT reset, add disconnect if keep-alive expires
  • Fix MQTT queue lock

Known Issues

  • AU/US Downlink sent in response to uplink using DR6/DR4 uses incorrect datarate if Rx1 Offset > 1
  • Deadlock can occur when an MQTT Downlink message was processed while sending a frame to gateways via UDP.

2.2.27 (Jul 2019)

Component Versions

  • lora-network-server v2.2.27
  • lora-lens-server v2.2.27
  • lora-query v1.0.4

General Changes

  • Added MQTT keepalive pub/sub testing and connection repair
  • Added LENS check-in on startup to retrieve Traffic Management Policy
  • Added reset to gateway cached TMST/TMMS values if IP/Port change is detected cause would be packet forwarder restart
  • Check for TxDwellTime=1 before sending TxParam setup for DR below minimum
  • Reject messages from Gateways reporting all 0’s or F’s as gateway ID
  • AS923 Remove 923.6 if TxDwellTime=0 and LBT is enabled, cannot be used in Japan with dwelltime=0
  • IN865 FSK frequency did not match channel sent do end-device after joining
  • EU868 Adjust tx power output maximum levels to EIRP (14 ERP = 16 EIRP and 27 ERP = 29 EIRP)

Bug Fixes

  • Fixed datarate index calculation to incorporate packet direction to tell difference between AU/US DR4 and DR12
    affecting window priority scheduling between Rx1 and Rx2. Rx2 was being favored although using a slower datarate.
  • Fix 0,0,0 GPS location update sent to Lens
  • Fix for downlink scheduling of packets to Class B/C with Rx1 or Rx2 specified. Class A Rx1 or Rx2 should be used if txwnd is not 0 when downlink is scheduled.
  • Fix for device update command to change device class with JSON input
  • Fix for Device Profile “preset frequencies” for defaulting device session
  • Fix server restarting every 10 minutes with USB card if TRACE logging is not enabled.

2.1.18 (Mar 2019)

Component Versions

  • lora-network-server v2.1.18
  • lora-lens-server v2.1.18
  • lora-query v1.0.4

General Changes

  • Do not DR6 and DR7 channels if Max ADR DR is lower
  • Do not send DeviceTimeAns to LW 1.0.2 devices in first downlink

Bug Fixes

  • AU/US fix: Send ADR command with correct channel mask on first downlink

2.1.12 (Feb 2019)

Component Versions

  • lora-network-server v2.1.12
  • lora-lens-server v2.1.12
  • lora-query v1.0.4

General Changes

  • LoRaWAN 1.0.3 – Enabled using Device Profiles
  • Class B support for GNSS enabled Conduits®
  • Added DeviceTimeReq MAC command support
  • RU864 Channel Plan
  • Dual-card support for additional channels or 16 channel mode in US/AU

Bug Fixes

2.1.5 (August 2018)

Component Versions

  • lora-network-server v2.1.5
  • lora-lens-server v2.1.5
  • lora-query v1.0.4

Bug Fixes

  • AS923 tx frequency allowed down to 915 MHz for New Zealand

2.1.4 (August 2018)

Component Versions

  • lora-network-server v2.1.4
  • lora-lens-server v2.1.4
  • lora-query v1.0.4

Notes

  • Included in upgrade to AEP 1.6.0 and not available for AEP v1.4.x systems
  • Upgrade to 2.1.4 cannot be rolled back. The database migration cannot be undone. Stop the network server and backup the database in /var/config/lora/lora-network-server.db if you want the possibility to go back to 2.0.19.

General Changes

  • Lens Check-ins
    • periodic check-in to lens for updates
  • Gateway Key authentication to Lens
  • End-Device Profiles
    • profile information provided on join
      • Conduit will request profile from Lens if it does not have the profile or has been updated
  • Network Profiles
    • profile information provided on join
      • Conduit will request profile from Lens if it does not have the profile or has been updated
    • Send MAC commands to configure end-devices to network profile settings after join
      • Ping Slot Datarate
      • Ping Slot Frequency
      • Beacon Frequency
      • Tx Param
      • Rx Param
      • Rx Timing
      • Duty Cycle
      • New Channel
      • Downlink Channel
      • Device Time
  • Policy Manager – update policies from Lens
  • Traffic Manager – filter for join requests based on deveui and joineui
  • Session Management – keep in sync with network profile
  • Channel Plan Support
    • IN865 – remove use of DR6 per LW 1.0.2
    • AS923 – reduced minimum frequency to 915 MHz for additional channels

 

Enhancements

  • Improved downlink scheduling using gateway clock (tmst)
  • Dual-card support, choose MTAC-LORA card based on selected channel plan if 868 and 915 cards are installed.
  • LoRa v2.1 Gateway support with geolocation MQTT messages to report fine timestamp, 3rd party service to resolve device location from timestamps required

Bug Fixes

  • Packets deleted from the downlink queue were still being sent to the end-device, the packet was only removed from the database – fixed to remove packets from the queue in memory and database
  • MQTT clear did not remove packets from the database queue – fixed to remove packets from database via MQTT message
  • MQTT null message was never popped from the queue causing tight loop and eventual crash, null message should only be caused by low system memory

Known Issues

    • AS923 gateway cannot transmit below 920 MHz

2.0.19 (March 2018)

Component Versions

      • lora-network-server v2.0.19
      • lora-lens-server v2.0.19
      • lora-query v1.0.4

General Changes

      • Support for 2000 devices and 10 remote gateways
      • Attempt to schedule class C downlink up to 5 seconds out
      • Move missed packets and acks from gateway stats to network stats

Enhancements

      • Restart lora services if a packet forwarder has not been seen in 10 minutes
      • Add ChannelMask config setting for use with multiple gateways on different FSB settings
      • Emit queue_full message via MQTT/UDP to applications
      • Publish application message with AppPort in topic for MQTT filtering.
      • New lora-query commands, see lora-query -x help See Lora Network Server

Bug Fixes

      • Create correct Join Accept for some JoinEUI values such as 1234567890abcdef, Join accept packets with invalid length were created
      • Application specific MQTT messages had devEUI output twice, lora/<APP-EUI>/<DEV-EUI>/<PORT>/up and lora/<APP-EUI>/<DEV-EUI>/up

Known Issues

      • Packets deleted from the downlink queue are still being sent to the end-device, the packet is only removed from the database.
      • MQTT clear does not remove packets from the database queue
      • MQTT null message are never popped from the queue causing tight loop and eventual crash, null message should only be caused by low system memory

1.0.43 (November 2017)

Changes

      • Add channel for 923.6 for AS923 in 3rd MAC command sent to end-device after join
      • Send AS923 commands after join in one downlink packet if downlink dwelltime is set to 0

Bug Fixes

      • Fix: Include 13 byte header size in max packet calculations to conform with regional time-on-air regulations
      • Fix: Send AS923 commands after join in three downlink packets if downlink dwelltime is set to 1 to fit in DR2

Known Issues

      • AS923 – ADR cannot be used with DR6 and DR7, incorrect channel mask is set to be able to use the max DR

1.0.42 (October 2017)

Changes

      • Update default LBT threashold to -80 for AS923 according to Japan regulations
      • Enforce downlink payload sizes according by datarate according to channel plan
      • One uplink packet must be receieved before scheduling Class C downlink after a join
      • Filter duplicate packets received on wrong channels by comparing RSSI/SNR. Duplicates were seen when end-devices are transmitting close to GW.

Bug Fixes

      • Fix: use byte copy routine to stop alignment trap logged on join
      • Fix: Calculation for max gateway tx power per channel plan with antenna gain. US915, AU915, IN865 plans

Known Issues

      • Downlink packet size is not including packet header, downlink packets can exceed regional time-on-air regulations

1.0.41 (September 2017)

Changes

      • Allow Class C packets to be sent without waiting for uplink after server reset
      • Add IN865 Channel Plan
      • MQTT username and password options

Bug Fixes

      • Fix: Only one packet will be scheduled with Channel Mask or Additional Channels in first downlink. This packet will be sent until device ACK’s receipt.

Known Issues

      • No enforcement of downlink payload sizes, work-around is to use lowest packet size of datarates used in selected Channel Plan

1.0.37 (June 2017)

Changes

      • GlobalConf: set sxOffset default to -162 according to MTAC-LORA-H calibration
      • AU915: Allow Datarates 0-6 for uplink according to LoRaWAN Regional Parameters 1.0.2 – Sec 2.7.7

Bug Fixes

          • Fix: AS923 downlink datarate constrained to max 5 and min according to downlink dwell time per LoRaWAN Regional Parameters 1.0.2 – Sec 2.7.7
          • Fix: If device class is configured in DB use class setting, default to class A if not found
          • Fix: Correct ADR channel mask, KR920 if LBT is enabled or default frequency used for additional channels only 7 channels are created

Known Issues

          • Multiple packets for first downlink to set end-device channels and datarates through ADR or AddChannel commands may be scheduled multiple times. Downlink packets will not be cleared until ACK’d by end-device

1.0.35 (May 2017)

Changes

          • EU868
            • Force 869.4 as additional frequency base if configured above 868.8
              • There are only 4 possible additional channels due to Alarm band restrictions in 868-870 MHz
              • 869.4 => Channels 868.8, 869.0, 869.525, 869.8
        • Use 1% duty-cycle if additional frequencies are between 865-868
      • MTAC-LORA: set default rssi_offset to -162 according to MTAC_LORA_H calibration testing

Bug Fixes

      • Fix: Allow disable duty-cycle when scheduling downlinks for testing

1.0.32 (May 2017)

Changes

      • EU868 Channels above 868.8 changed to avoid using alarm bands. Only two frequency settings will be possible 869.2 or 869.4. If setting is 869.1-869.2 then 869.2 will be used. If setting is above 869.2 then 869.4 will be used.
        • 869.2 => Channels 868.8, 869.0, 869.2, 869.525
        • 869.4 => Channels 869.0, 869.2, 869.525, 869.8
      • Add “database backup” command to command interface (UDP:6677) to force write of database to flash

Bug Fixes

      • Fix: Network server can schedule downlink in response to uplink with counter past 16-bit max, full support for 32-bit uplink/downlink counters
      • Fix: Allow negative antenna gain for long wire attenuation adjustments

1.0.31 (April 2017)

Changes

      • Add tx_notch_freq setting for EU868 and IN865 in global_conf.json
      • Add support for LBT configuration of packet forwarder
      • FSK report 10 for SNR

Bug Fixes

      • Fix: When additional channels is set to 0 do not set radio_1 to disabled, packet forwarder would not start
      • Fix: Link check answer compute margin from demodulation floor based on packet SF
      • Fix: Downlink scheduled to unknown dot was sent to last scheduled dot, downlink will be dropped

Known Issues

      • Bug: Downlink will not be scheduled with uplink counter rolls over 16-bit max
      • Bug: Negative Antenna gain are not accepted, network server cannot start with this configuration

1.0.26 (March 2017)

Changes

      • Add joinDelay and rx1Delay settings
      • Add support for AS923 and KR920 Channel plans
        • AS923 MaxEIRP and dwelltime settings
        • AS923 DL Channels are not configurable
        • KR920 LBT is not supported
      • Set channel mask in first downlink packet for AU915 and US915
      • Add zero touch activation option for unique appkeys without pre-registration
      • Add ‘device keygen [APPEUI]’ command for zero touch appkey generation
      • Reduce default database backup interval to 1 hour

Bug Fixes

      • Fix: Max lease-time max 49 days fixed to allow 64-bit value in ms
      • Fix: Use DR2 for AS923 RX2 join downlink
      • Fix: Fix CRC for lora packets broken in 1.0.25
      • Fix: FSK mode must enable CRC for end-device to receive
      • Fix: Remove override of JoinTime for private mode, it will already be set
      • Fix: seed RNG with current time
      • Fix: send downlinks with CRC disabled per LoRaWAN
      • Fix: Verify NetworkID is matched to AppEUI in Join Packet
      • Fix: Fail MIC check if invalidKey is set

Known Issues

      • Bug: Downlink scheduled to unknown dot will be sent to last scheduled dot
      • IPK install files to be used with mLinux 3.4 or AEP 1.4 or greater.

1.0.13 (Sep 8 2016)

Changes

      • Change duty-cycle algorithm to use sliding window with configurable window size from 1 minute to 24 hours default: 1 hour
      • Added support for LoRaWAN 1.0.1 AU915 channel plan
      • Beacon to use 16-bit CRC-CCITT
      • Accept messages from packet forwarder protocol v2, no handling of extra protocol messages
      • ADR use 0007 channel mask for when EU868 has only 3 channels enabled
      • Check global queue for scheduling conflicts and use Rx2 if possible
      • Remove separate settings for EU and US min/max datarates and create single min/max datarate setting

Bug Fixes

      • lost ack required downlink packets, ignore duplicate ack frames
      • ack required downlink data packets had incremented seqno when ack not received, do not increment seq no until ack received
      • crash after 65k packets due to stat counter rollover
      • crash in scheduling, added lock to downlink scheduling queue
      • crash on join, delete nodes from database properly add copy constructor to node info retrieved from database
      • downlink seqno not reset on join, uplink and downlink seqno are now reset to 0 on join
      • US915 responds to DR4 on wrong frequency in public mode, server now responds on correct frequency according to uplink frequency used

Known Issues

      • Maximum lease-time is ~49 days because of 32-bit rollover
      • Downlink packets are sent with CRC enabled, LoraWAN specifies CRC should not be used for downlink packets

1.0.8

Changes

      • ADR support with configuration of ADRStep as SNR difference between datarates (default:3dB)
      • Antenna gain is configurable to use none default antennas and adhere to regulations
      • Class C downlink scheduling
      • Node configuration with unique APP-EUI and APP-KEY settings
      • Test options to disable duty-cycle or rx windows
      • Added MQTT topics for joined, packet_recv, packet_sent, queue_full, clear events and commands

Bug Fixes

      • Downlink frame counter 16-bit rollover
      • Duplicate filtering
      • Backup database after network settings are changed

0.0.9

Changes

      • Configurable port for downstream packets
        • Queue data with {"port": 1, "data":"Q==="}
        • Also allows MacCommands to be sent on port 0
      • Port now in upstream packets from MQTT/UDP
      • Config allows disabling of Rx windows
      • Added configuration of ADR thresholds
      • LinkCheckAns now returns SNR margin based on received SF demod floor
      • ACK is sent on duplicate packet received

Bug Fixes

      • Node with address FFFFFFFF in database could cause segfault when node would join
        • Added code to remove all nodes with FFFFFFFF address on start-up
        • Added check to CommandParser to not allow adding node with this address
        • AppPortUp and AppPortDown defaults were set to opposite of documentation and mPower defaults

Known Issues

      • Manually joined nodes will not be reloaded from database after restart of network server or reboot of device
      • Downlink counter is not reset when device re-joins

 

0.0.8

Changes

      • Ack’s for downstream packets
        • Queue data with {"data":"Q===","ack":true}

Bug Fixes

      • Prepend NwkID before looking for existing address in database
      • Retransmit ack for duplicate packets
      • Response for US915 – DR4 follows Table 22: Data rate mapping in LoRaWAN r1.0
      • Duty Cycle time on air calculation matches mDot calculations

Known Issues

 

0.0.7

Changes

      • added “joined” and “class” topics for MQTT and UDP messages
      • use NetID 7 LSB for network address prefix

Bug Fixes

      • EU868 RX2 bandwidth 125 kHz
      • Use timeOnAir function for duty cycle

Known Issues

 

0.0.6

Changes

      • Save/load server stats on stop/start
      • Enforce 150 ms networkLeadTime

Bug Fixes

      • Mqtt downstream message non-json format does not crash server
      • Fixed alignment trap on join

Known Issues

 

0.0.5

Changes

      • LSB byte order for EUI in join packet
      • 915 RX windows use same datarate scheme as public
      • Rx1DatarateOffset and Rx2Datarate configurable and sent to mDot in join response
      • Public/Private setting changes sync word for packet-forwarder
      • Ping changed to MacCommand
      • Node list is cleared if network eui or key changes
      • Scheduler will look for room to fit a larger payload

Bug Fixes

      • Queued app data will only be popped off if sent in packet, was causing some data loss
      • Increased default network lead time to 150 ms, some packets were not sent to packet forwarder soon enough

Known Issues

      • Use only with mDot 0.0.15 and after
      • Breaks compatibility with mDot 0.0.14 and prior
      • mDot 0.0.14 can work partially in 868 mode or with 915 set to +TXDR=9

 

0.0.4

Changes

      • Allow variable band to ignore duty cycle if under 7dBm
      • Use NetID to compute session keys

Bug Fixes

      • Packet counting corrected
      • Full config is displayed by command port ‘config’ command
      • Zero out timestamp fields
      • Fixed

Known Issues