Skip to content

Releases: TheThingsNetwork/lorawan-stack

v3.17.2

30 Jan 19:53
v3.17.2
d34a4d0
Compare
Choose a tag to compare

Added

  • Add configurable storage limit to device's DevNonce in the JoinServer. Can be configured using the option js.dev-nonce-limit.
  • Fix copy button in API key modal in the Console.
  • Enable copying and format transformations of byte values in the event previews in the Console.
  • Attribute administrative_contact on "gateway eui taken" error to help users resolve gateway EUI conflicts.
  • Add retry capability for cli requests. Can be configured with the options found in retry-config, some of the configuration options are retry-config.max and retry-config.default-timeout.

Changed

  • Webhook maximum header value length extended to 4096 characters.
  • Limited the end device event types that are included in application event streams to only application layer events, errors and warnings. Other end device events can still be received when subscribing to end device device events.

Fixed

  • CLI Completion and Documentation commands no longer try to make a server connection.
  • When an end device has both NwkKey and AppKey provisioned in the Join Server, NwkKey is used for MIC and session key derivation when activating the device in LoRaWAN 1.0.x. This is per LoRaWAN 1.1 specification.
  • Gateway Server will no longer report the gateways as being both connected and disconnected at the same time.

v3.17.1

12 Jan 12:44
v3.17.1
10da115
Compare
Choose a tag to compare

Docker images

  • docker pull thethingsnetwork/lorawan-stack:3.17
  • docker pull thethingsnetwork/lorawan-stack:3.17.1
  • docker pull ghcr.io/thethingsnetwork/lorawan-stack:3.17
  • docker pull ghcr.io/thethingsnetwork/lorawan-stack:3.17.1

v3.17.0

07 Jan 10:50
v3.17.0
2955907
Compare
Choose a tag to compare

Docker images

  • docker pull thethingsnetwork/lorawan-stack:3.17
  • docker pull thethingsnetwork/lorawan-stack:3.17.0
  • docker pull ghcr.io/thethingsnetwork/lorawan-stack:3.17
  • docker pull ghcr.io/thethingsnetwork/lorawan-stack:3.17.0

v3.16.3

23 Dec 19:25
v3.16.3
ac27169
Compare
Choose a tag to compare

Fixed

  • CLI panic when getting devices.
  • Application uplink processing serialization behavior in the Application Server.

Docker images

  • docker pull thethingsnetwork/lorawan-stack:3.16
  • docker pull thethingsnetwork/lorawan-stack:3.16.3
  • docker pull ghcr.io/thethingsnetwork/lorawan-stack:3.16
  • docker pull ghcr.io/thethingsnetwork/lorawan-stack:3.16.3

v3.16.2

17 Dec 09:09
v3.16.2
ff220a3
Compare
Choose a tag to compare

Added

  • User defined antenna gain for LBS gateways.
  • Webhooks now have a health status associated with them. Webhooks that fail successively are now disabled for a period of time.
    • Failure in this context means that the HTTP endpoint returned a non-2xx status code.
    • A successful HTTP request will reset the failure counter.
    • The number of allowed successive failures and cooldown period can be configured using the --as.webhooks.unhealthy-attempts-threshold and --as.webhooks.unhealthy-retry-interval configuration options.
  • Webhook enabled path validation in the Console.

Changed

  • Increased the maximum gRPC message size to 16MB.
  • Gateways which have been deleted are now automatically disconnected by the Gateway Server.

Fixed

  • Access to application payload formatters for users with RIGHT_APPLICATION_SETTINGS_BASIC right.
  • End device mac settings handling in the Console.
  • Uplink and downlink counters display on end device activity in the Console.
  • Join settings handling in JS-only deployments in the Console.
  • Configuring Packet Broker listed option when Packet Broker Agent is configured with a Packet Broker tenant API key.
  • Contact info validation through the Account app.

Docker images

  • docker pull thethingsnetwork/lorawan-stack:3.16
  • docker pull thethingsnetwork/lorawan-stack:3.16.2
  • docker pull ghcr.io/thethingsnetwork/lorawan-stack:3.16
  • docker pull ghcr.io/thethingsnetwork/lorawan-stack:3.16.2

v3.16.1

26 Nov 11:55
v3.16.1
2bcb5da
Compare
Choose a tag to compare

Added

  • Support for fine timestamps and frequency offsets sent by gateways with SX1303 concentrator using the legacy UDP protocol.
  • Support for resetting end device session context and MAC state in the Console.
  • The Content-Security-Policy header (that was previously behind the webui.csp feature flag) is now enabled by default.
  • Default Cache-Control: no-store headers.
  • Cache-Control: public, max-age=604800, immutable headers for hashed static files.
  • Experimental support for BasicStation GPS timestamps which use the wrong precision (milliseconds instead of microseconds).
    • The Gateway Server will attempt to determine the correct GPS timestamp from the provided gpstime based on the time at which the upstream message has been received.
    • This workaround will be available until the related gateway vendors will release patches for this issue.
  • Firmware version of The Things Kickstarter Gateway are written to the gateway attributes upon receiving a valid status message.
  • Desired mac settings to end device general settings in the Console.

Changed

  • Gateway server disconnects LoRa Basics Station gateways that stop sending pongs to server pings. This does not apply to gateways that don't support pongs.
  • The new plugin for reading/writing JSON in our API (that was previously behind the jsonpb.jsonplugin feature flag) is now enabled by default. All API responses should be equivalent, but in some cases object fields may be in a different order.

Fixed

  • The reported sub-band's downlink_utilization in gateway connection stats now represents the utilization of the available duty-cycle time.
  • Missing fields when admins list non-owned entities.
  • Using the correct timestamp when retreiving the "Last activity" data point for Gateways on initial page loads in the Console.
  • Events reappearing in the end device data view after clearing them when navigating back and forth.

Docker images

  • docker pull thethingsnetwork/lorawan-stack:3.16
  • docker pull thethingsnetwork/lorawan-stack:3.16.1
  • docker pull ghcr.io/thethingsnetwork/lorawan-stack:3.16
  • docker pull ghcr.io/thethingsnetwork/lorawan-stack:3.16.1

v3.16.0

12 Nov 12:47
v3.16.0
e94cb6f
Compare
Choose a tag to compare

Added

  • ttn_lw_as_subscription_sets_publish_success_total and ttn_lw_as_subscription_sets_publish_failed_total metrics to track the number of subscription set publish attempts.
  • Application Server advanced distribution settings:
    • as.distribution.global.individual.subscription-blocks controls if the Application Server should block while publishing traffic to individual global subscribers (such as MQTT clients).
    • as.distribution.global.individual.subscription-queue-size controls how many uplinks the Application Server should buffer for an individual global subscriber. Note that when the buffer is full, the Application Server will drop the uplinks if --as.distribution.global.individual.subscription-blocks is not enabled. Use a negative value in order to disable the queue.
    • as.distribution.local.broadcast.subscription-blocks controls if the Application Server should block while publishing traffic to broadcast local subscribers (such as webhooks and application packages matching).
    • as.distribution.local.broadcast.subscription-queue-size controls how many uplinks the Application Server should buffer for an broadcast local subscriber. Has the same semantics as --as.distribution.global.individual.subscription-queue-size.
    • as.distribution.local.individual.subscription-blocks controls if the Application Server should block while publishing traffic to individual local subscribers (such as PubSub integrations).
    • as.distribution.local.individual.subscription-queue-size controls how many uplinks the Application Server should buffer for an individual local subscriber. Has the same semantics as --as.distribution.global.individual.subscription-queue-size.
  • ttn_lw_gs_txack_received_total, ttn_lw_gs_txack_forwarded_total and ttn_lw_gs_txack_dropped_total metrics, which track the transmission acknowledgements from gateways.
  • gs.txack.receive, gs.txack.drop and gs.txack.forward events, which track the transmission acknowledgements from gateways.
  • ttn-lw-stack as-db migrate command to migrate the Application Server database. This command records the schema version and only performs migrations if on a newer version.
    • Use the --force flag to force perform migrations.
  • Server-side event filtering with the names field.

Changed

  • Gateway Server default UDP worker count has been increased to 1024, from 16.
  • Application Server webhooks and application packages default worker count has been increased to 1024, from 16.
  • Application Server no longer sets the end device's session.started_at and pending_session.started_at. The session start time should be retrieved from the Network Server, per API specification.
    • This requires an Application Server database migration (ttn-lw-stack as-db migrate) to clear the started_at field in existing (pending) sessions.
  • Console changing to server-side event filtering (used to be client-side).

Removed

  • The ttn_lw_gs_status_failed_total, ttn_lw_gs_uplink_failed_total metrics. ttn_lw_gs_status_dropped_total and ttn_lw_gs_uplink_dropped_total should be used instead, as they contain the failure cause.
  • The gs.status.fail and gs.up.fail events. gs.status.drop and gs.up.drop should be used instead, as they contain the failure cause.
  • The data_rate_index field in uplink message metadata. Observe the fully described data rate in the data_rate field instead.
  • LoRaWAN data rate index reported to LoRa Cloud DMS.
  • Dockerfile doesn't define environmental variables TTN_LW_BLOB_LOCAL_DIRECTORY, TTN_LW_IS_DATABASE_URI and TTN_LW_REDIS_ADDRESS anymore. They need to be set when running the container: please refer to docker-compose.yml for example values.
  • CockroachDB from development tooling as well as config option within docker-compose.yml.
    • This also changes the default value of the --is.database-uri option, so it can connect to the development Postgres database by default.

Fixed

  • Handling of NaN values in our JSON API.
  • Receiver metadata from more than one antenna is now available in messages received from Packet Broker.
  • Unhelpful error message when aborting the OIDC Login in the Console.
  • Parsing of multi-word description search queries.

Docker images

  • docker pull thethingsnetwork/lorawan-stack:3.16
  • docker pull thethingsnetwork/lorawan-stack:3.16.0
  • docker pull ghcr.io/thethingsnetwork/lorawan-stack:3.16
  • docker pull ghcr.io/thethingsnetwork/lorawan-stack:3.16.0

v3.15.3

26 Oct 12:09
v3.15.3
6695f5c
Compare
Choose a tag to compare

Fixed

  • Gateway disconnection when location updates from status messages are enabled.

Docker images

  • docker pull thethingsnetwork/lorawan-stack:3.15
  • docker pull thethingsnetwork/lorawan-stack:3.15.3
  • docker pull ghcr.io/thethingsnetwork/lorawan-stack:3.15
  • docker pull ghcr.io/thethingsnetwork/lorawan-stack:3.15.3

v3.15.2

22 Oct 12:43
v3.15.2
ed6dd0a
Compare
Choose a tag to compare

⚠️ Known Issues

  • Gateways that report location updates via status messages may sporadically disconnect. Use v3.15.3 instead.

Added

  • tls.cipher-suites config option to specify used cipher suites.
  • Support for enhanced security policies of Packet Broker services.
  • Handling of MAC and PHY versions in end device forms based on selected frequency plan in the Console.
  • Support for scheduling downlink messages as JSON in the Console.
  • Support for Packet Broker authentication through LoRaWAN Backend Interfaces. This adds the following configuration options:
    • interop.public-tls-address: public address of the interop server. The audience in the incoming OAuth 2.0 token from Packet Broker is verified against this address to ensure that other networks cannot impersonate as Packet Broker;
    • interop.packet-broker.enabled: enable Packet Broker to authenticate;
    • interop.packet-broker.token-issuer: the issuer of the incoming OAuth 2.0 token from Packet Broker is verified against this value.
  • Support for LoRaWAN Backend Interfaces in Identity Server to obtain an end device's NetID, tenant ID and Network Server address with the use of a vendor-specifc extension (VSExtension). This adds the following configuration options:
    • is.network.net-id: the NetID of the network. When running a Network Server, make sure that this is the same value as ns.net-id.
    • is.network.tenant-id: the Tenant ID in the host NetID. Leave blank if the NetID that you use is dedicated for this Identity Server.
  • Configuration option experimental.features to enable experimental features.
  • Tooltip descriptions for "Last activity" values (formerly "Last seen") and uplink/downlink counts in the Console.
  • Status pulses being triggered by incoming data in the Console.
  • Packet broker page crashing when networks with a NetID of 0 are present.
  • Allowing to toggle visibility of sensitive values in text inputs in the Console.
  • Webhook failed event.

Changed

  • Searching for entity IDs is now case insensitive.
  • Renamed entitie's "Last seen" to "Last activity" in the Console.
  • The database queries for determining the rights of users on entities have been rewritten to reduce the number of round-trips to the database.
  • The default downlink path expiration timeout for UDP gateway connections has been increased to 90 seconds, and the default connection timeout has been increased to 3 minutes.
    • The original downlink path expiration timeout was based on the fact that the default PULL_DATA interval is 5 seconds. In practice we have observed that most gateways actually send a PULL_DATA message every 30 seconds instead in order to preserve data transfer costs.
  • The default duration for storing (sparse) entity events has been increased to 24 hours.

Removed

  • Option to select targeted stack components during end device import in the Console.

Fixed

  • LoRaWAN Backend Interfaces 1.1 fields that were used in 1.0 (most notably SenderNSID and ReceiverNSID). Usage of NSID is now only supported with LoRaWAN Backend Interfaces 1.1 as specified.
  • Connection status not being shown as toast notification.
  • Registering and logging in users with 2 character user IDs in the Account App.
  • Frequency plan display for the gateway overview page in the Console.
  • Profile settings link not being present in the mobile menu in the Console.
  • Calculation of "Last activity" values not using all available data in the Console.
  • Layout jumps due to length of "Last activity" text.
  • Invalid session handling in Network Layer settings form in the Console.

Security

  • Network Servers using LoRaWAN Backend Interfaces to interact with the Join Server can now provide a single Network Server address in the X.509 Common Name of the TLS client certificate (the old behavior) or multiple Network Server addresses in the X.509 DNS Subject Alternative Names (SANs). DNS names have precedence over an address in the Common Name.

Docker images

  • docker pull thethingsnetwork/lorawan-stack:3.15
  • docker pull thethingsnetwork/lorawan-stack:3.15.2
  • docker pull ghcr.io/thethingsnetwork/lorawan-stack:3.15
  • docker pull ghcr.io/thethingsnetwork/lorawan-stack:3.15.2

v3.15.1

01 Oct 13:07
v3.15.1
88c63e4
Compare
Choose a tag to compare

Added

  • Packet Broker gateway visibility management (default settings only). See ttn-lw-cli packetbroker home-networks gateway-visibilities --help for more information.

Changed

  • The Gateway Server worker pools may now drop workers if they are idle for too long.
  • FPort = 0 uplinks are no longer decoded by the Application Server, and the Network Server no longer provides the frame payload to the Application Server for these messages.

Fixed

  • Emails to admins about requested OAuth clients.
  • session handling for joined OTAA end devices in the Console.
  • Empty Join Server address handling in end device creation form in the Console.
  • Data Rate to data rate index matching for uplinks and downlinks.

Docker images

  • docker pull thethingsnetwork/lorawan-stack:3.15
  • docker pull thethingsnetwork/lorawan-stack:3.15.1
  • docker pull ghcr.io/thethingsnetwork/lorawan-stack:3.15
  • docker pull ghcr.io/thethingsnetwork/lorawan-stack:3.15.1