Skip to content

Releases: TheThingsNetwork/lorawan-stack

v3.27.2

14 Sep 14:01
Compare
Choose a tag to compare

Added

  • Locations retrieved from gateway status messages are now be displayed in the gateway map in the Console, even when they are not received through a secure connection.

Fixed

  • Fix gateway connection stats being stuck at Connecting until the first uplink is processed in the Console.

v3.27.1

29 Aug 12:03
Compare
Choose a tag to compare

Added

  • Add support for administrative_contact and technical_contact in the Console.
  • Reimplement move away prompt in payload formatter views in the Console.
  • Add telemetry collection for the CLI. A background process was added to the CLI in order to send the following information: Operating System, Architecture, Binary version and Golang version. The message is sent every 24 hours and it contains an unique random number as an identifier. It is enabled by default and in order to disable it, set telemetry.enable to false in the CLI configuration. For more information, consult the documentation here.
  • Add telemetry collection for the IdentityServer. A background task was added in the Identity Server which is responsible for collecting information regarding the amount of each entity in the database, this has the purpose of allowing us to better understand how users are interacting with the system, an example being if tenants are using Organizations or just Users. All information is sent every 24 hours and it contains an identifier composed of the URLs present in the following configuration fields console.ui.[is|gs|ns|as|js].base-url. It is enabled by default and in order to disable it, set telemetry.enable to false in the Stack configuration. For more information, consult the documentation here.

Fixed

  • OAuth clients created by an admin no longer trigger an email requesting approval from one of the tenant's admins.
  • Broken network routing policy links in the Packet Broker panel of the admin panel in the Console.
  • Application Server downlink related events now contain the complete set of end device identifiers, and the received at timestamp is now provided at all times.
  • Wrong order of breadcrumbs in the device views of the Console.

v3.27.0

31 Jul 16:56
Compare
Choose a tag to compare

Added

  • The as-db purge command to purge unused data from the Application Server database.
  • RPCs and CLI command to delete a batch of end devices within an application.
    • Check ttn-lw-cli end-devices batch-delete for more details.
  • Add UserInput component to the Console to handle user id input fields by implementing an autosuggest.
  • The Identity Server configuration has a new optional restriction regarding adminstrative and technical contacts of entities. This limits the action of an user or organization to set these contacts only to themselves, it is disabled by default but it is possible to enable it by setting is.collaborator-rights.set-others-as-contacts as false.

Changed

  • Instead of retrying application downlinks indefinitely, the Application Server now retries them for a configured number of times. Each ApplicationDownlink message contains the attempt and max_attempts fields to indicate the current and maximum number of attempts for a specific application downlink.
  • The Application Server configuration has the as.downlinks.confirmation.default-retry-attempts and as.downlinks.confirmation.max-retry-attempts fields that configure the allowed number of retries for application downlinks. The default values are 8 for the as.downlinks.confirmation.default-retry-attempts and 32 for the as.downlinks.confirmation.max-retry-attempts.
  • The as.downlinks.confirmation.default-retry-attempts field is used for all application downlinks that were scheduled before this change and for every application downlink that does not have the max_attempts field set. On the other hand, the as.downlinks.confirmation.max-retry-attempts field ensures that the max_attempts field's upper bound is contained and does not exceed its value.
  • The number of historical frames considered for the multi-frame query window size in the LoRa Geolocation Services integration. The window size is now limited between 1 and 16 frames with 16 being the default value.
  • Packet Broker Agent now subscribes as Home Network to all DevAddr prefixes. This is to support NetID delegation where DevAddr blocks of other NetIDs should be routed to the cluster of a different NetID.

Deprecated

  • The as.uplink-storage.limit configuration option.

Removed

  • Command-line interface support for listing QR code formats and generating QR codes. This is considered the responsibility of a LoRaWAN Join Server.

Fixed

  • End device data stream not being closed when navigating away from end device pages, which could cause event streams stopping to work due to too many open connections.

v3.26.2

11 Jul 08:42
Compare
Choose a tag to compare

Added

  • New Admin Panel in the Console.

Fixed

  • Removing user invitations not working in the user management panel for administrators.
  • Fix payload formatter page launching malformed requests in the Console.
  • Fix end device claiming issues in the Console and improve error messaging.
  • HTTP API routes for parsing QR codes for the QR Generator service. We exercise our right to break compatibility with third party HTTP clients since this is a bug.
    • /qr-code/end-devices/parse is changed to /qr-codes/end-devices/parse.
    • /qr-code/end-devices/{format_id}/parse is changed to /qr-codes/end-devices/{format_id}/parse.

v3.26.1

20 Jun 21:43
Compare
Choose a tag to compare

Added

  • Support claim in device import in the Console.

v3.26.0

06 Jun 15:42
Compare
Choose a tag to compare

Added

  • Support for scanning a QR code that only contains the hexadecimal encoded DevEUI.
  • Experimental flag ns.adr.auto_narrow_steer. When enabled, end devices which do not have an explicit channel steering mode will be steered towards the LoRa narrow channels.

Fixed

  • Console not applying webhook field masks when creating a webhook from a template that has field masks set.
  • LoRa Basics Station PONG messages will now contain the application payload of the associated PING, as required by the WebSockets specification.
    • This fix enables PING/PONG behavior for non reference implementations of the LNS protocol.
  • Fix crash of "Edit webhook" view due to invalid Authorization header encoding in the Console.

v3.25.2

16 May 10:05
Compare
Choose a tag to compare

Added

  • Experimental channel steering API, which allows steering end devices from the wide (250kHz or 500kHz) channels towards the narrow (125kHz) channels.
    • This API is mainly relevant for end devices operating in the US915 and AU915 regions, as they may join via a wide channel, but users may want to steer them towards the narrow channels.
    • The new settings can be found under mac-settings.adr.mode.dynamic.channel-steering.
    • mac-settings.adr.mode.dynamic.channel-steering.mode.lora-narrow steers the end devices towards the LoRa modulated narrow channels.
    • mac-settings.adr.mode.dynamic.channel-steering.mode.disabled does not steer the end devices - end devices are left to operate in their currently active channels, wide or narrow.
    • The default behavior is to avoid steering the end devices, but this is subject to change in future versions. Consider explicitly specifying a certain behavior (lora-narrow or disabled) if you depend on not steering the end devices.

Changed

  • Uplink and downlink message frequencies are now validated and zero values are dropped.
    • Such traffic would have always been dropped by the Network Server, but it is now dropped in the Gateway Server.
    • Simulated uplink traffic now requires a frequency value as well.

Fixed

  • Multiple ADR algorithm bugs:
    • An off-by-one error which caused the ADR algorithm to not take into consideration the signal qualities of the uplink which confirmed a parameter change. In effect, this fix improves the quality of the link budget estimation.
    • A flip-flop condition which caused the algorithm to swap back and forth between a higher and a lower transmission power index every 20 uplinks. In effect, this fix will cause the algorithm to change the transmission power index less often.
    • A condition mistake which caused the algorithm to avoid increasing the transmission power if it would not completely fix the missing link budget. In effect, this will cause the algorithm to increase the transmission power in situations in which the link budget deteriorates rapidly.
  • In fixed channel plans such as US915 and AU915, the the associated wide (500kHz) channel is now enabled by default.

v3.25.1

18 Apr 08:43
Compare
Choose a tag to compare

Added

  • Fallback end device version identifiers to be used while importing end devices using the Console.

Changed

  • The Things Stack is now built with Go 1.20.

Deprecated

  • --with-claim-authentication-code flag for the end device create command via the CLI. Users must use a valid claim authentication code that is registered on a Join Server instead of generating one during end device creation.

Fixed

  • Attempting to claim an end device with a generated DevEUI will now result in an error.
  • Claiming an end device using command line flags.
  • 24 hour stack components deadlock when the default clustering mode is used.

v3.25.0

05 Apr 08:56
Compare
Choose a tag to compare

🚧 This release contains a critical bug which renders component communication unusable after 24 hours. The fix will be part of the v3.25.1 release. 🚧.

Added

  • Optional Network Server database migration that removes obsolete last invalidation keys is now available.
  • LoRaWAN Application Layer Clock Synchronization support.
    • It is available using the alcsync-v1 application package.
    • Can be enabled using the Console by visiting the application settings and ticking the Use Application Layer Clock Synchronization checkbox. By default, the package will operate on FPort 202.
  • Drop uplink frames with CRC failure.

Deprecated

  • Returning special float values, such as NaN and Infinity as part of the decoded payloads.
    • While the concepts of NaN and Infinity are part of JavaScript, JSON does not have a dedicated value for such values.
    • Historically we have rendered them in their string form, i.e. "NaN" and "Infinity", but this form is not standard nor accepted by the standard libraries of most programming languages (at least by default).
    • Most usages of NaN are actually result of operations with the JavaScript concept of undefined, and are not intentional. Mathematical operations that interact with undefined return NaN - for example undefined * 5 is NaN. It is not hard to reach undefined in JavaScript, as array access to undefined indices is undefined, and payload decoders generally work by consuming the frame payload bytes.
    • Future The Things Stack versions may not render such values, or may discard the decoded payload completely. The deprecation discussion can be tracked on GitHub.

Removed

  • Automatic migrations of the Network Server database using ns-db migrate from versions prior to v3.24 are removed. Migrating from prior versions should be done through v3.24 instead.

v3.24.2

09 Mar 10:23
Compare
Choose a tag to compare

Deprecated

  • Device claiming that transfer devices between applications is now deprecated and will be removed in a future version of The Things Stack. Device claiming on Join Servers, including The Things Join Server, remains functional. This deprecates the following components:
    • API for managing application claim authorization (EndDeviceClaimingServer.AuthorizeApplication and EndDeviceClaimingServer.UnauthorizeApplication)
    • CLI commands to manage application claim settings (ttn-lw-cli application claim [authorize|unauthorize])

Fixed

  • The CLI now continues deleting devices when unclaiming from the Join Server fails. This resembles the behavior in the Console. This no longer stops devices from being deleted if the Join Server is unavailable or the claim is not held.
  • Organization API Keys' rights no longer are considered invalid during fetch operations. If the proper right is attached to said API key it is possible to fetch all fields of an entity, previous to this fix only public safe fields were fetchable.