LoRa Network Server Changelog

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

    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