Skip to content

Releases: TheThingsNetwork/lorawan-stack

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.

v3.24.1

16 Feb 10:06
Compare
Choose a tag to compare

Added

  • Network Server ID (NSID) used for Backend Interfaces interoperability via the ns.interop.id and dcs.edcs.ns-id configuration options.
    • In the Network Server, ns.interop.id acts as a fallback value for sender-ns-id in Join Server interoperability configuration.
  • Key vault cache time-to-live for errors configuration option key-vault.cache.error-ttl. This defaults to key-vault.cache.ttl.

Deprecated

  • Device Claiming Server configuration option dcs.edcs.network-server.home-ns-id. Use dcs.edcs.ns-id instead.

Fixed

  • Key unwrap caching.
  • Desired RX1 delay and desired beacon frequency not being possible to set for OTAA devices.

Security

  • Fix open redirect vulnerability for Console/Account App logins.

v3.24.0

02 Feb 11:18
Compare
Choose a tag to compare

Added

  • List of end-devices can now be sorted by last_seen_at field. Unseen devices will be shown last.
  • End devices now contain lora_alliance_profile_ids field.
  • Add source config option for TLS certificates in LoRaWAN Backend Interfaces interop client configuration. This value can be file (existing behavior) or key-vault.

Changed

  • serial_number field is now moved to the root of the end device structure. vendor_id and vendor_profile_id are now moved to the lora_alliance_profile_ids.
    • This requires a database schema migration (ttn-lw-stack is-db migrate) because of added columns and views.

Deprecated

  • Configuring certificate authorities per LoRaWAN Backend Interfaces SenderID (interop.sender-client-ca) is now deprecated and support will be removed in a future version of The Things Stack.

Removed

  • The device version identifiers no longer have the serial_number, vendor_id and vendor_profile_id fields.

v3.23.2

18 Jan 17:24
Compare
Choose a tag to compare

Changed

  • Deletion of the last admin user or removal of its admin status via an update operation now returns an error.
  • Do not allow to remove the collaborator of an entity if it is the last collaborator (in the Console).

Fixed

  • When searching for end-devices, specifying last_seen_at as the field in which the devices will be sorted by no longer returns an error.
  • Errors during removal of collaborators the application collaborator form not being forwarded to the user in the Console.
  • Importing devices via CSV no longer skips the first header column when BOM bytes are present.

v3.23.1

14 Dec 17:19
Compare
Choose a tag to compare

Added

  • List of end-devices can now be sorted by last_seen_at field. Unseen devices will be shown last.

Fixed

  • It is now allowed to set 0 for ping slot frequency and beacon frequency in the Network Layer Settings of the end device general settings in the Console.
  • MAC parameters that have the desired_ will be hidden from the end device general settings for multicast end devices in the Console.

v3.23.0

30 Nov 10:26
Compare
Choose a tag to compare

Added

  • The Things Join Server 2.0 (type ttjsv2) for claiming with Device Claiming Server.
  • All Join Servers with a /64 JoinEUI prefix are contacted concurrently with LoRaWAN Backend Interfaces interoperability. This should only be used with ambiguous JoinEUIs and when migrating Join Servers.

Changed

  • Gateway EUI is no longer unset when deleting a gateway, meaning it could be recovered if no other gateway claimed it. This requires a schema migration (ttn-lw-stack is-db migrate) because of the change in the database's gateway_eui_index.
  • The new database driver is no longer specific to the Identity Server and is now activated using the db.pgdriver feature flag (instead of is.pgdriver).

Removed

  • The Things Join Server 1.0 (type ttjs) for claiming with Device Claiming Server. Use The Things Join Server 2.0 (type ttjsv2) instead.

Fixed

  • Devices with pending session and MAC state may now successfully be imported.
  • Client creation with an organization API key will no longer send an email without user information to the admins. Instead, the API key name will be used and if that is empty the API key ID will be the default.
  • Allow providing DevEUI for ABP end devices with a LoRaWAN specification lower or equal to 1.0.4 in the end device onboarding screen in the Console.
  • Faulty field validation for byte payloads in the uplink payload formatter panel in the Console.

v3.22.2

10 Nov 14:20
Compare
Choose a tag to compare

Added

  • The is.gormstore experimental flag has been added. Swaps the underlying Identity Server store implementation if set to true.

Changed

  • Class B and C downlinks will no longer be automatically retried indefinitely if none of the gateways are available at the scheduling moment, and the downlink paths come from the last uplink.
    • This was already the behavior for downlinks which had their downlink path provided explicitly using the class_b_c.gateways field.
    • The downlinks will be evicted from the downlink queue and a downlink failure event will be generated. The failure event can be observed by the application using the downlink_failed message, which is available in all integrations.
  • Event history and payload storage TTL has now 1% jitter.
  • The underlying store implementation has been changed to be by default based on bun instead of gorm. The previous store implementation can be reactivated using the is.gormstore experimental flag.

Removed

  • The is.bunstore experimental flag has been removed.

Fixed

  • Do not require AppKey when skipping Join Server registration in end device onboarding in the Console.
  • Fix auto generation of device ID when using DevEUI generator in the Console.
  • Fix several device onboarding issues with ABP in the Console.
    • Do not ask for a JoinEUI.
    • Reinitialize form properly when switching between ABP and OTAA.
  • Issue with pasting values into byte input at the wrong position in the Console.

v3.22.1

19 Oct 13:23
Compare
Choose a tag to compare

Changed

  • Option to ignore logs from selected gRPC methods now supports ignoring logs for selected errors on method.
    Examples:
    • --grpc.log-ignore-methods="/ttn.lorawan.v3.GsNs/HandleUplink": log is skipped when no error occurs.
    • --grpc.log-ignore-methods="/ttn.lorawan.v3.GsNs/HandleUplink:pkg/networkserver:duplicate_uplink;pkg/networkserver:device_not_found": log is skipped when either pkg/networkserver:duplicate_uplink or pkg/networkserver:device_not_found error occurs (but not on success).
    • --grpc.log-ignore-methods="/ttn.lorawan.v3.GsNs/HandleUplink:;pkg/networkserver:duplicate_uplink": log is skipped on success or when pkg/networkserver:duplicate_uplink error occurs.
  • The Gateway Server now takes into consideration the extra duty cycle checks present in the LoRa Basics Station forwarder. Previously the Gateway Server may accept the scheduling of downlinks which the packet forwarder would silently drop.
    • Note that in some rare cases in which the LoRa Basics Station duty cycle is stricter than the windowed approach used by The Things Stack, the scheduling will fail and this will be visible via ns.down.data.schedule.fail events. Note that this is actually a positive outcome - it allows the Network Server to schedule the downlink via another gateway, while previously the downlink would be scheduled but get silently dropped on the gateway.

v3.22.0

06 Oct 09:11
Compare
Choose a tag to compare

Added

  • Add more specific rights for OAuth clients.

Changed

  • The flow for adding end devices has been updated in the Console.
    • Device QR codes can now be scanned to speed up end device onboarding.
    • Claiming end devices from external Join Servers is now possible seemlessly from the same onboarding flow.
  • LoRa coding rate now defined in DataRate instead of Band.
  • The Network Server will now schedule a potentially empty downlink in order to stop end devices from sending sticky MAC commands.
  • Factory preset frequencies may now be provided for bands with fixed channel plans, such as US915 or AU915. The factory preset frequencies are interpreted as the only channels which are enabled at boot time.
  • TxParamSetupReq MAC command priority has been increased.
  • DevStatusReq MAC command priority has been lowered.

Removed

  • Removed coding rate from TxSettings as it is now defined in DataRate.

Fixed

  • --mac-settings.adr.mode.disabled, --mac-settings.adr.mode.dynamic and --mac-settings.adr.mode.static flags of the end-device update command.
  • Pagination in sessions and access tokens tables in the Console.
  • LinkADRReq MAC command generation for LoRaWAN 1.0 and 1.0.1 end devices.
  • LinkADRReq no longer attempts to enable channels which have not yet been negotiated with the end device.
  • Downlink path selection for uplinks which are not LoRa modulated.
  • Issues with byte inputs in the Console.
    • Pasting values into the input leading to issues in some cases.
    • Values being typed double on android phones.
  • Console showing deleted collaborator after successful deletion in application collaborator list.
  • Console crashing after deleting an organization.