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
- Added Join Server nonce counters
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
- profile information provided on join
- 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
- profile information provided on join
- 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
- Force 869.4 as additional frequency base if configured above 868.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
- Queue data with
- 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}
- Queue data with
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