Added
gs_gateways_disconnected_totalmetric, counting gateway disconnections by protocol and by the error the connection was disconnected with. This makes disconnection reasons (such as gateways disappearing without a close handshake, or missing too many pongs) observable as a rate, instead of only through logs.ttgc.managed-gateway-euisconfiguration option: Gateway EUI prefixes of managed gateways, defaulting to the EUI prefix of The Things Industries managed gateways. Gateways outside these prefixes are reported as not managed in the claiming info.ttgc.lbscups.lns-portconfiguration option: the LoRa Basics Station LNS port of the Gateway Server, defaulting to8887.- Downlink scheduling on all antennas of a gateway. Previously, only the first antenna could be used as a downlink path, and uplinks received on any other antenna had their downlink path disabled.
events.redis.store.expire-limiter-sizeconfiguration option: how many entity event streams thePEXPIRErate limiter tracks, at 8 bytes each, defaulting to4194304(32 MiB). A negative value refreshes the TTL on every event.
Changed
- In the Semtech UDP Packet Forwarder protocol,
PUSH_ACKandPULL_ACKare only sent after the gateway has connected to the Gateway Server and the gateway’sPUSH_DATAorPULL_DATArespectively has been accepted. - Don’t log a
Task failedwarning in GS for every task attached to a gateway connection when that connection is closed. The tasks that run for the lifetime of a gateway connection now stop without an error when the connection is closed, and the disconnection is logged once, asDisconnected, including the reason. This removes several duplicate warnings per gateway disconnection, which were particularly noisy for gateways on unreliable backhaul. - Websocket close errors on the LoRa Basics Station frontend (such as
websocket: close 1006 (abnormal closure): unexpected EOF, which is what a gateway disappearing without a close handshake looks like) are now reported as the defined errorpkg/gatewayserver/io/semtechws:websocket_closed, with the close code as an attribute and the original error as the cause. As a result, thegs.gateway.disconnectevent for these disconnections now carries structured error details instead of a plain string; consumers that parse the event data should expect theErrorDetailsformat.
Fixed
- Federated (OIDC/SSO) login no longer fails with
unverified_emailfor identity providers such as Okta that omit theemail_verifiedclaim from the ID token and only provide it via the userinfo endpoint. When the ID token contains an email address but noemail_verifiedclaim, the verification status is now retrieved from the userinfo endpoint, provided the userinfo subject and email address match the ID token. An explicitemail_verified: falsein the ID token is still rejected. - Parsing of the
rctxfield in theupinfoobject of upstream messages received via the LoRa Basics Station LNS protocol. The field name was misspelled asrtcx, so the radio context reported by gateways was ignored. The antenna index in the uplink metadata now reflects the reported radio context and is echoed back in class A downlinks, instead of always being 0. - The antenna gain sent to LoRa Basics Station gateways in the router configuration. Each board’s radio configuration now uses the gain of its own antenna instead of applying the first antenna’s gain to all boards, and fractional gains are no longer truncated.
- Memory of event-publishing components (most visibly the Application Server and Network Server) no longer grows with the number of entities. The
PEXPIRErate limiting added in v3.36.2 kept an entry per entity; it now uses a fixed-size table.PEXPIREload and event history retention are unchanged.