Releases: TheThingsNetwork/lorawan-stack
Releases · TheThingsNetwork/lorawan-stack
v3.28.2
Added
- Rate limiting classes for individual HTTP paths.
- Rate limiting keys for HTTP endpoints now contain the caller API key ID when available. The caller IP is still available as a fallback.
- Allow users to set multiple frequency plans only in the same band in the Console.
Changed
- Server side events replaced with single socket connection using the native WebSocket API.
- Gateways now disconnect if the Gateway Server address has changed.
- This enables CUPS-enabled gateways to change their LNS before the periodic CUPS lookup occurs.
- The LoRa Basics Station discovery endpoint now verifies the authorization credentials of the caller.
- This enables the gateways to migrate to another instance gracefully while using CUPS.
Fixed
- Batch gateway rights assertions when multiple membership chains are available (for example, both via a user and an organization).
v3.28.1
Added
- The
http.client.transport.compressionexperimental flag. It controls whether the HTTP clients used by the stack support gzip and zstd decompression of server responses. It is enabled by default. - The
http.server.transport.compressionexperimental flag. It controls whether the HTTP servers used by the stack support gzip compression of the server response. It is enabled by default.
Changed
- The Things Stack is now built with Go 1.21.
- Statistics for gateways are now fetched in a single request.
Fixed
- Resolve scroll jumps when selecting different tabs of a table in the Console.
BatchGetGatewayConnectionStatsRPC rights check in certain cases.
v3.28.0
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.
- The Network Server ID (NSID, EUI-64) used in LoRaWAN Backend Interfaces is now included in the application uplink message network metadata as well as in the Backend Interfaces
HomeNSAnsmessage that Identity Server returns to clients. The NSID is configurable viais.network.ns-id. - It is now possible to trigger a resending of the email validation email from within the Console. The new action is part of the error screen that users see when they log into the Console without having their contact info validated yet (and the network requires validation before usage).
- Updated Japanese translations for the Console and backend.
--grpc.correlation-ids-ignore-methodsconfiguration option, which allows certain gRPC methods to be skipped from the correlation ID middleware which adds a correlation ID with the name of the gRPC method. Methods bear the format used by--grpc.log-ignore-methods, such as/ttn.lorawan.v3.GsNs/HandleUplink.- Support for setting multiple frequency plans for gateways from the Console.
- The
ns-db purgecommand to purge unused data from the Network Server database.
Changed
- Users can now request a new email for the account validation from time to time instead of once per validation, the interval between email requests is determined by
is.user-registration.contact-info-validation.retry-intervaland by default it is an hour. - Traffic related correlation IDs have been simplified. Previously one correlation ID per component was added as traffic passed through different stack components. Now a singular correlation ID relating to the entry point of the message will be added (such as
gs:uplink:xxxfor uplinks, oras:downlink:xxxfor downlinks), and subsequent components will no longer add any extra correlation IDs (such asns:uplink:xxxoras:up:xxx). The uplink entry points arepbaandgs, while the downlink entry points arepba,nsandas. - Packet Broker Agent uplink tokens are now serialized in a more efficient manner.
- The Network Server now stores only the most recent uplinks tokens.
- The Application Server webhook health system now records failures only every retry interval while in monitor mode, as opposed to recording every failure.
- Monitor mode in this context refers to situations in which either
--as.webhooks.unhealthy-attempts-thresholdor--as.webhooks.unhealthy-retry-intervalare less or equal to zero. In such situations, the Application Server will record failures but will not stop the execution of the webhooks. - Using a retry interval of zero and a non zero attempts threshold restores the previous behavior.
- Monitor mode in this context refers to situations in which either
Fixed
- Providing fixed downlink paths to the
ttn-lw-cli devices downlink {push|replace}commands using the-class-b-c.gatewaysparameter. The gateways IDs are comma separated, and the antenna indexican be provided by suffixing the ID with:i(i.e.my-gateway:0for antenna index 0). The group indexjcan be provided by suffixing the ID with:j(i.e.my-gateway:0:1for antenna index 0 and group index 1). The antenna index is mandatory if a group index is to be provided, but optional otherwise. - Gateway registration without gateway EUI not working.
- Listing deleted entities is now fixed for both admin and standard users, which previously returned an
account_not_founderror. - Update to an user's
PrimaryEmailAddressvia a non admin now invalidates thePrimaryEmailAddressValidatedAtas it was intended. - Negative number support in Cayenne LPP.
- Fix panic in snapcraft CLI deployment, commands will no longer generate a panic error message when telemetry is enabled.
v3.27.2
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
Connectinguntil the first uplink is processed in the Console.
v3.27.1
Added
- Add support for
administrative_contactandtechnical_contactin 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.enableto 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, settelemetry.enableto 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
Added
- The
as-db purgecommand 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-deletefor more details.
- Check
- Add
UserInputcomponent 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-contactsas false.
Changed
- Instead of retrying application downlinks indefinitely, the Application Server now retries them for a configured number of times. Each
ApplicationDownlinkmessage contains theattemptandmax_attemptsfields to indicate the current and maximum number of attempts for a specificapplication downlink. - The Application Server configuration has the
as.downlinks.confirmation.default-retry-attemptsandas.downlinks.confirmation.max-retry-attemptsfields that configure the allowed number of retries for application downlinks. The default values are8for theas.downlinks.confirmation.default-retry-attemptsand32for theas.downlinks.confirmation.max-retry-attempts. - The
as.downlinks.confirmation.default-retry-attemptsfield is used for all application downlinks that were scheduled before this change and for every application downlink that does not have themax_attemptsfield set. On the other hand, theas.downlinks.confirmation.max-retry-attemptsfield ensures that themax_attemptsfield'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.limitconfiguration 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
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/parseis changed to/qr-codes/end-devices/parse./qr-code/end-devices/{format_id}/parseis changed to/qr-codes/end-devices/{format_id}/parse.
v3.26.1
Added
- Support claim in device import in the Console.
v3.26.0
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
PONGmessages will now contain the application payload of the associatedPING, as required by the WebSockets specification.- This fix enables
PING/PONGbehavior for non reference implementations of the LNS protocol.
- This fix enables
- Fix crash of "Edit webhook" view due to invalid Authorization header encoding in the Console.
v3.25.2
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-narrowsteers the end devices towards the LoRa modulated narrow channels.mac-settings.adr.mode.dynamic.channel-steering.mode.disableddoes 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-narrowordisabled) 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.