Releases: TheThingsNetwork/lorawan-stack
Releases · TheThingsNetwork/lorawan-stack
v3.9.0
Added
- API Authentication and authorization via session cookie.
- ⚠ This requires a database schema migration (
ttn-lw-stack is-db migrate
) because of the added and modified columns. - This changes the
AuthInfo
API response.
- ⚠ This requires a database schema migration (
- Skipping payload crypto on application-level via application link's
skip_payload_crypto
field. - Authentication method, ID and Remote IP in events metadata.
- Service data messages published by integrations. Can be consumed using the bundled MQTT server, Webhooks or Pub/Sub integrations.
- Application package application-wide associations support.
- LoRaCloud DAS application package server URL overrides support.
- Key vault caching mechanism (see
--key-vault.cache.size
and--key-vault.cache.ttl
options). - Generic encryption/decryption to KeyVault.
- Option to ignore log messages for selected gRPC method on success (see
grpc.log-ignore-methods
option). - CLI auto-completion support (automatically enabled for installable packages, also see
ttn-lw-cli complete
command). - Options to disable profile picture and end device picture uploads (
is.profile-picture.disable-upload
andis.end-device-picture.disable-upload
). - Options to allow/deny non-admin users to create applications, gateways, etc. (the the
is.user-rights.*
options). - Admins now receive emails about requested user accounts that need approval.
- Support for synchronizing gateway clocks via uplink tokens. UDP gateways may not connect to the same Gateway Server instance.
- Consistent command aliases for CLI commands.
- Laird gateway documentation.
- Option to allow unauthenticated Basic Station connections (
gs.basic-station.allow-unauthenticated
)- ⚠ Without this option, Basic Station gateways that do not use authentication will not be allowed to connect.
- Option to require TLS on connections to Redis servers (see
redis.tls.require
and related options). - Documentation for
cache
options. - Documentation for the Gateway Server MQTT protocol.
- Add user page in console.
- Troubleshooting guide.
- API to get configuration from the Identity Server (including user registration options and password requirements).
- Synchronize gateway time by uplink token on downstream in case the Gateway Server instance is not handling the upstream gateway connection.
- Work-around for Basic Station gateways sending uplink frames with no
xtime
.
Changed
- Remove version from hosted documentation paths.
- Gateway connection stats are now stored in a single key.
- The example configuration for deployments with custom certificates now also uses a CA certificate.
- Increase Network Server application uplink buffer queue size.
ttn-lw-cli use
command no longer adds default HTTP ports (80/443) to the OAuth Server address.- Suppress the HTTP server logs from the standard library. This is intended to stop the false positive "unexpected EOF" error logs generated by health checks on the HTTPS ports (for API, BasicStation and Interop servers).
- Automatic collapse and expand of the sidebar navigation in the Console based on screen width.
- The header of the sidebar is now clickable in the Console.
- Overall layout and behavior of the sidebar in the Console improved.
- Improved layout and screen space utilization of event data views in the Console.
- Allow setting all default MAC settings of the Network Server. Support setting enum values using strings where applicable.
Deprecated
- End device
skip_payload_crypto
field: it gets replaced byskip_payload_crypto_override
.
Fixed
- Inconsistent error message responses when retrieving connection stats from GS if the gateway is not connected.
- Empty form validation in the Console.
- CLI crash when listing application package default associations without providing an application ID.
- Decoding of uplinks with frame counters exceeding 16 bits in Application Server.
- Validation of keys for gateway metrics and version fields.
- Read only access for the gateway overview page in the Console.
- Fix an issue that frequently caused event data views crashing in the Console.
- Application Server contacting Join Server via interop for fetching the AppSKey.
- Low color contrast situations in the Console.
- Application Server pub/sub integrations race condition during shutdown.
- Console webhook templates empty headers error.
- Console MQTT URL validation.
- AFCntDown from the application-layer is respected when skipping application payload crypto.
- RTT usage for calculating downlink delta.
- Synchronize concentrator timestamp when uplink messages arrive out-of-order.
Docker images
docker pull thethingsnetwork/lorawan-stack-dev:f2316b56126c6f4e84f43fb3da632b743f4871e3
docker pull thethingsnetwork/lorawan-stack:3.9
docker pull thethingsnetwork/lorawan-stack:3.9.0
v3.9.0-rc4
Docker images
docker pull thethingsnetwork/lorawan-stack-dev:154ed01e7606072106b0a3b906e6a6254c55c745
v3.8.7
Docker images
docker pull thethingsnetwork/lorawan-stack:3.8
docker pull thethingsnetwork/lorawan-stack:3.8.7
docker pull thethingsnetwork/lorawan-stack-dev:db1c3316855b8bdd90e6effefd55e01bf4e801e5
v3.8.6
Docker images
docker pull thethingsnetwork/lorawan-stack-dev:47abc33b52430f86c079b9da87be9b080cd952e2
docker pull thethingsnetwork/lorawan-stack:3.8
docker pull thethingsnetwork/lorawan-stack:3.8.6
v3.8.5
Added
- Option to reset end device payload formatters in the Console.
- Service discovery using DNS SRV records for external Application Server linking.
- Functionality to set end device attributes in the Console.
- Event description tooltip to events in the Console.
- CLI support for setting and unsetting end device location (see
--location.latitude
,--location.longitude
,--location.altitude
and--location.accuracy
options). - Functionality to allow admin users to list all applications and gateways in the Console.
- Ursalink UG8X gateway documentation.
- Intercom, Google Analytics, and Emojicom feedback in documentation.
- LORIX One gateway documentation.
- Display own user name instead of ID in Console if possible.
- Option to hide rarely used fields in the Join Settings step (end device wizard) in the Console.
Changed
- JSON uplink message doc edited for clarity.
- The CLI snap version uses the
$SNAP_USER_COMMON
directory for config by default, so that it is preserved between revisions. - Defer events subscriptions until there is actual interest for events.
- End device creation form with wizard in the Console.
Removed
- Requirement to specify
frequency_plan_id
when creating gateways in the Console.
Fixed
- Endless authentication refresh loop in the Console in some rare situations.
- Logout operation not working properly in the Console in some rare situations.
- Handling API key deletion event for applications, gateways, organizations and users.
- Organization API key deletion in the Console.
- CLI now only sends relevant end device fields to Identity Server on create.
- Maximum ADR data rate index used in 1.0.2a and earlier versions of AU915 band.
- End device events stream restart in the Console.
- CLI was unable to read input from pipes.
- Timezones issue in claim authentication code form, causing time to reverse on submission.
Docker images
docker pull thethingsnetwork/lorawan-stack-dev:974fab231425da504c5523018b18f9a1833af76d
docker pull thethingsnetwork/lorawan-stack:3.8
docker pull thethingsnetwork/lorawan-stack:3.8.5
v3.8.4
Added
- Metrics for log messages, counted per level and namespace.
- Allow suppressing logs on HTTP requests for user-defined paths (see
--http.log-ignore-paths
option). - Redux state and actions reporting to Sentry
- Serving frontend sourcemaps in production
- Frequency plan documentation.
- LoRa Basics Station documentation.
Changed
- Suppress a few unexpected EOF errors, in order to reduce noise in the logs for health checks.
Fixed
- Packet Broker Agent cluster ID is used as subscription group.
- LinkADR handling in 72-channel bands.
- Data uplink metrics reported by Application Server.
Docker images
docker pull thethingsnetwork/lorawan-stack-dev:d63f7de74fb54cbc354140d2477ad0a7e1c49f61
docker pull thethingsnetwork/lorawan-stack:3.8
docker pull thethingsnetwork/lorawan-stack:3.8.4
v3.8.3
Added
- Favicon to documentation pages.
- Draft template for documentation.
Changed
- Late scheduling algorithm; Gateway Server now takes the 90th percentile of at least the last 5 round-trip times of the last 30 minutes into account to determine whether there's enough time to send the downlink to the gateway. This was the highest round-trip time received while the gateway was connected.
Fixed
- Downlink scheduling to gateways which had one observed round-trip time that was higher than the available time to schedule. In some occassions, this broke downlink at some point while the gateway was connected.
Docker images
docker pull thethingsnetwork/lorawan-stack:3.8
docker pull thethingsnetwork/lorawan-stack:3.8.3
docker pull thethingsnetwork/lorawan-stack-dev:b5b911f6dcbd9bbe9214c60b64252b862956b404
v3.8.2
Since releases v3.8.0
and v3.8.1
have been retracted, we're now listing the changes from those releases under the v3.8.2
release.
Added
- Console logout is now propagated to the OAuth provider.
- This requires a database migration (
ttn-lw-stack is-db migrate
) because of the added columns. - To set the
logout-redirect-uris
for existing clients, the CLI client can be used, e.g.:ttn-lw-cli clients update console --logout-redirect-uris "https://localhost:8885/console" --redirect-uris "http://localhost:1885/console"
.
- This requires a database migration (
- Packet Broker Agent to act as Forwarder and Home Network. See
pba
configuration section. - JavaScript style guide to our
DEVELOPMENT.md
documentation. - Schedule end device downlinks in the Console.
- Support for repeated
RekeyInd
. (happens when e.g.RekeyConf
is lost) - Validate the
DevAddr
when switching session as a result of receivingRekeyInd
. - Error details for failed events in the Console.
Unknown
andOther cluster
connection statuses to the gateways table in the Console.- LoRaWAN 2.4 GHz band
ISM2400
. - Unset end device fields using the CLI (see
--unset
option) - Join EUI and Dev EUI columns to the end device table in the Console.
- CLI creates user configuration directory if it does not exist when generating configuration file.
- Upgrading guide in docs.
- Glossary.
- Event details in the Console traffic view.
- Gateway Server events for uplink messages now contain end device identifiers.
- Setting custom gateway attributes in the Console.
- Pub/Sub documentation.
- Return informative well-known errors for standard network and context errors.
- Error notification in list views in the Console.
- Latest "last seen" info and uplink frame counts for end devices in the Console.
- Latest "last seen" info for applications in the Console.
Changed
- Conformed JavaScript to new code style guide.
- Removed login page of the Console (now redirects straight to the OAuth login).
- Network Server now records
LinkADRReq
rejections and will not retry rejected values. - Improved
NewChannelReq
,DLChannelReq
andLinkADRReq
efficiency. - For frames carrying only MAC commands, Network Server now attempts to fit them in FOpts omitting FPort, if possible, and sends them in FRMPayload with FPort 0 as usual otherwise.
- Submit buttons are now always enabled in the Console, regardless of the form's validation state.
- Disabled ADR for
ISM2400
band. - Network Server will attempt RX1 for devices with
Rx1Delay
of 1 second, if possible. - Network Server will not attempt to schedule MAC-only frames in ping slots or RXC windows.
- Network Server will only attempt to schedule in a ping slot or RXC window after RX2 has passed.
- Network Server will schedule all time-bound network-initiated downlinks at most RX1 delay ahead of time.
- Network Server now uses its own internal clock in
DeviceTimeAns
. - Troubleshooting section of
DEVELOPMENT.md
- Change console field labels from
MAC version
andPHY version
toLoRaWAN version
andRegional Parameters version
and add descriptions
Fixed
- Handling of device unsetting the ADR bit in uplink, after ADR has been started.
- Invalid
oauth-server-address
in CLI config generated byuse
command when config file is already present. - Network Server now properly handles FPort 0 data uplinks carrying FOpts.
- Data rate 4 in version
1.0.2-a
of AU915. - Incorrect
TxOffset
values used by Network Server in some bands. - OAuth authorization page crashing.
- Byte input in scheduling downlink view.
- OAuth client token exchange and refresh issues when using TLS with a RootCA.
- Join Server and Application Server device registries now return an error when deleting keys on
SET
operations. The operation was never supported and caused an error onGET
instead. - Clearing end device events list in the Console.
- Some views not being accessible in the OAuth app (e.g. update password).
LinkADRReq
scheduling.- Unsetting NwkKey in Join Server.
- CSRF token validation issues preventing login and logout in some circumstances.
- Typo in Application Server configuration documentation (webhook downlink).
- Unset fields via CLI on Join Server, i.e.
--unset root-keys.nwk-key
. - Reconnecting UDP gateways that were disconnected by a new gateway connection.
- ADR in US915-like bands.
Docker images
docker pull thethingsnetwork/lorawan-stack-dev:a5b0a3895ec46c176973acf2a38d27dcd2e91cd4
docker pull thethingsnetwork/lorawan-stack:3.8
docker pull thethingsnetwork/lorawan-stack:3.8.2
v3.7.2
Added
- CLI can now dump JSON encoded
grpc_payload
field for unary requests (see--dump-requests
flag). - Template ID column in the webhook table in the Console.
- Select all field mask paths in CLI get, list and search commands (see
--all
option). - Create webhooks via webhook templates in the Console.
ns.up.data.receive
andns.up.join.receive
events, which are triggered when respective uplink is received and matched to a device by Network Server.ns.up.data.forward
andns.up.join.accept.forward
events, which are triggered when respective message is forwarded from Network Server to Application Server.ns.up.join.cluster.attempt
andns.up.join.interop.attempt
events, which are triggered when the join-request is sent to respective Join Server by the Network Server.ns.up.join.cluster.success
andns.up.join.interop.success
events, which are triggered when Network Server's join-request is accepted by respective Join Server.ns.up.join.cluster.fail
andns.up.join.interop.fail
events, which are triggered when Network Server's join-request to respective Join Server fails.ns.up.data.process
andns.up.join.accept.process
events, which are triggered when respective message is successfully processed by Network Server.ns.down.data.schedule.attempt
andns.down.join.schedule.attempt
events, which are triggered when Network Server attempts to schedule a respective downlink on Gateway Server.ns.down.data.schedule.success
andns.down.join.schedule.success
events, which are triggered when Network Server successfully schedules a respective downlink on Gateway Server.ns.down.data.schedule.fail
andns.down.join.schedule.fail
events, which are triggered when Network Server fails to schedule a respective downlink on Gateway Server.- Specify gRPC port and OAuth server address when generating a CLI config file with
ttn-lw-cli use
(see--grpc-port
and--oauth-server-address
options).
Changed
- Styling improvements to webhook and pubsub table in Console.
- Gateway location is updated even if no antenna locations had been previously set.
- Renamed
ns.application.begin_link
event tons.application.link.begin
. - Renamed
ns.application.end_link
event tons.application.link.end
. ns.up.data.drop
andns.up.join.drop
events are now triggered when respective uplink duplicate is dropped by Network Server.- Network Server now drops FPort 0 data uplinks with non-empty FOpts.
- Frontend asset hashes are loaded dynamically from a manifest file instead of being built into the stack binary.
- Removed
Cache-Control
header for static files. - Sort events by
time
in the Console.
Removed
ns.up.merge_metadata
event.ns.up.receive_duplicate
event.ns.up.receive
event.
Fixed
- End device claim display bug when claim dates not set.
- DeviceModeInd handling for LoRaWAN 1.1 devices.
- Do not perform unnecessary gateway location updates.
- Error display on failed end device import in the Console.
- Update password view not being accessible
- FOpts encryption and decryption for LoRaWAN 1.1 devices.
- Application Server returns an error when trying to delete a device that does not exist.
- Network Server returns an error when trying to delete a device that does not exist.
- Retrieve LNS Trust without LNS Credentials attribute.
- Too strict webhook base URL validation in the Console.
- Webhook and PubSub total count in the Console.
- DevEUI is set when creating ABP devices via CLI.
- CLI now shows all supported enum values for LoraWAN fields.
- Application Server does not crash when retrieving a webhook template that does not exist if no template repository has been configured.
- Application Server does not crash when listing webhook templates if no template repository has been configured.
- Error display on failed end device fetching in the Console.
- Various inconsistencies with Regional Parameters specifications.
Docker images
docker pull thethingsnetwork/lorawan-stack:3.7.2
v3.7.0
Added
- Update gateway antenna location from incoming status message (see
update_location_from_status
gateway field and--gs.update-gateway-location-debounce-time
option).- This requires a database migration (
ttn-lw-stack is-db migrate
) because of the added columns.
- This requires a database migration (
- Access Tokens are now linked to User Sessions.
- This requires a database migration (
ttn-lw-stack is-db migrate
) because of the added columns.
- This requires a database migration (
- Edit application attributes in Application General Settings in the Console
- New
use
CLI command to automatically generate CLI configuration files.
Fixed
- Fix organization collaborator view not being accessible in the Console.
- Error display on Data pages in the Console.
- Fix too restrictive MQTT client validation in PubSub form in the Console.
- Fix faulty display of device event stream data for end devices with the same ID in different applications.
- Trailing slashes handling in webhook paths.
Docker images
docker pull thethingsnetwork/lorawan-stack:latest
docker pull thethingsnetwork/lorawan-stack:3
docker pull thethingsnetwork/lorawan-stack:3.7
docker pull thethingsnetwork/lorawan-stack:3.7.0
docker pull thethingsnetwork/lorawan-stack-dev:3c5048bc9913e032118f4ee3a252e5cb90a70b87