Skip to content

Releases: eclipse-hono/hono

2.5.0

18 Jan 06:32
Compare
Choose a tag to compare

New Features

  • A more generic format for storing the OpenTelemetry trace context information in an AMQP 1.0 message can now be
    configured, writing the corresponding properties in the message application properties. This is for example relevant
    when using AMQP 1.0 messaging in connection with Eclipse Ditto, resulting in combined traces of Hono and Ditto.
    Please refer to the ${prefix}.useLegacyTraceContextFormat connection property documentation in the
    Hono Client Configuration Guide for additional information.
  • The JDBC based Device Registry implementation now has limited support for filter criteria when searching devices.
    Please refer to the Device Registry User Guide for details.
  • The Device Registry Management API's search Devices operation now supports restricting the result set to gateway or
    edge devices only using the newly added isGateway query parameter.

Fixes & Enhancements

  • When running in a Kubernetes cluster with nodes using cgroups v2, the hono.command_internal.* Kafka topics were not
    being cleaned up. This has been fixed. Note that the solution requires the Hono protocol adapter pods to have
    a service account with an assigned RBAC role that allows to perform get on the pods resource.
  • When using Pub/Sub messaging, there were potentially issues concerning the AMQP connection between protocol adapter
    and command router, leading for example to timeouts when MQTT devices subscribed/unsubscribed to the command topic.
    This has been fixed.
  • The integration tests now use Apache Kafka 3.5.0 in Raft mode which no longer requires running a separate Apache Zookeeper
    instance and thus simplifies test setup and configuration.
  • The command line client was still trying to connect to the insecure ports of the Sandbox. This has been changed so that
    the client now uses the TLS endpoints and requires the user to specify a trust store for validating the server certificate.
  • All components now use Quarkus 3.2.9.Final.
  • The CoAP adapter now uses Californium 3.10.0.

Deprecations

  • According to the MongoDB Software Lifecycle Schedule support
    for MongoDB 4.4 will end Feb 2024.
    Until that date the MongoDB based Device Registry will be tested with MongoDB 4.4, 5.0, 6.0 and 7.0 in the CI workflows.
    However, support for MongoDB 4.4 in Hono has been deprecated and will be removed in a future version altogether.
    Users are encouraged to migrate to MongoDB 6.0 or later.

2.4.0

21 Aug 06:01
Compare
Choose a tag to compare

New features

  • Hono now supports using Google Pub/Sub as the messaging infrastructure. The Admin Guide and the API documentation have
    been amended with corresponding information on how to configure Hono and applications for using Pub/Sub.
  • Hono's MQTT and HTTP adapters now support using JSON Web Tokens (JWT) for authentication. In particular, the adapters
    allow devices that have been connected to Google's IoT Core endpoints to connect to Hono instead. The User Guides have
    been amended with corresponding information regarding configuration and usage.
  • The CoAP adapter now allows clients to retrieve the CoAP adapter's current time by means of including a query parameter
    and/or request option.
  • The HTTP protocol adapter now supports authenticating devices using the JWT based authentication scheme employed by
    Google IoT Core.
  • The command router now has experimental support for routing commands received via Google Pub/Sub to connected devices.
  • The authentication identifier being created for devices that are using client certificate based auto-provisioning can now
    be specified as a pattern based on fields from the certificate's subject DN.

Fixes & Enhancements

  • The JDBC based device registry now supports searching for tenants and devices including paging. However, sorting is not
    implemented (yet) and the number of filter predicates is (currently) limited to one.
  • The MQTT adapter failed to close a connection with a client after the JWT used by the client for authentication had expired.
    This has been fixed.
  • Hono could not be built using Maven 3.9.0 and newer. This has been fixed.

2.3.0

23 Feb 06:19
Compare
Choose a tag to compare

New features

  • Hono services and adapters could be started locally (not in containers) for development/test purposes.
  • The MQTT adapter now has experimental support for authenticating devices using the JWT based authentication scheme
    employed by Google IoT Core.
  • The protocol adapters now have experimental support for using Google Pub/Sub as the messaging infrastructure.
    Support is currently limited to publishing downstream events and telemetry messages to Pub/Sub.
  • The JDBC based registry now supports the Device Registry Management API's search Tenants and search Devices
    operations. However, sorting and filtering is not yet implemented.

Fixes & Enhancements

  • The MQTT adapter did forward command messages for devices behind a gateway when the gateway subscription was
    targeting the gateway itself with topic name command//[<gateway-id>]/req/#. This has been fixed.
    For a subscription with such a topic name, only commands for the gateway itself are forwarded, not commands for
    devices, that the gateway acts on behalf of.
  • The LoRaWAN adapter now transforms all devEUIs hex encoded and upper case. All LoRaWAN devices should therefore be
    registered upper case and hex encoded.

2.2.0

29 Nov 14:14
Compare
Choose a tag to compare

New features

  • All Hono components now support reading ECC based keys from PEM files that contain the Base64
    encoded DER-encoding of an ECPrivateKey as described in
    RFC 5915, Section 4.
  • The build process now supports creating container images for the arm64 platform. Please refer to the
    Developer Guide for details.
  • The LoraWAN protocol adapter has been extended with support for Chirpstack V4 provider.
  • Hono components now support producing JSON formatted log messages. Please refer to the
    Admin Guide for details.
  • Hono components can now be configured to use the OTEL Jaeger Remote Sampler extension which allows
    the sampling strategy to be retrieved from a Jaeger back-end dynamically during runtime.
    Please refer to the Admin Guide for details.

Fixes & Enhancements

  • Documentation for versions up to 1.11 is removed as outdated.
  • Optimized handling of MQTT and AMQP protocol adapter shutdown. The purpose is removal of redundant
    operations for devices which maintain a permanent connection during the restarting of adapter
    instances. This prevents delays and possible errors due the higher rate of invocations of the
    unregister Command Consumer operation on the Command Router service.
    When shutting down, the adapters no longer explicitly unregister Command Consumers and no longer send
    disconnectedTtdEvents. Instead, the Command Router now sends the connectedTtdEvent and
    disconnectedTtdEvent on behalf of the protocol adapters.
    The Command Router now also sends a disconnectedTtdEvent when a command is received that is
    targeted at a device that got disconnected (and didn't reconnect) when a protocol adapter was
    shut down. This happens only once - during the processing of the first command.
    The Command Router configuration now also requires hono.messaging configuration if AMQP 1.0
    based messaging infrastructure is being used.
  • The Mongo DB based device registry is now continuously tested to work with Mongo DB 5.0.

2.1.1

18 Oct 08:30
Compare
Choose a tag to compare

Fixes & Enhancements

  • A vulnerability in the CoAP adapter has been fixed which could have been exploited by malicious devices causing a
    denial of service.
  • The MQTT adapter's user guide has been improved to be more specific about the topic names being used for publishing
    commands to gateway devices.

2.0.3

18 Oct 08:31
Compare
Choose a tag to compare

Fixes & Enhancements

  • A vulnerability in the CoAP adapter has been fixed which could have been exploited by malicious devices causing a
    denial of service.
  • The MQTT adapter's user guide has been improved to be more specific about the topic names being used for publishing
    commands to gateway devices.

2.1.0

01 Sep 14:30
Compare
Choose a tag to compare

New features

  • The tracing configuration has been extended to now also support a rate-limiting sampler. See the Monitoring & Tracing guide for details.
  • Add new metric for tracking the total number of Tenants in Hono.
  • The Auth server component now provides an HTTP endpoint for retrieving the keys that applications should use for
    validating the signature of tokens issued by the Auth server. The keys are being transferred by means of a
    JSON Web Key set as defined by RFC 7517. The Device Registry and
    Command Router components will use this endpoint to periodically download the keys if no key material has been configured
    explicitly.
  • The handling of messages that have no payload and/or no content type has been harmonized across the protocol adapters.
    Adapters now uniformly accept messages from devices that have no payload if the device explicitly sets a non-empty content
    type on the message. Messages with a non-empty payload can be uploaded without specifying a content type. In the messages
    being forwarded to downstream consumers, the adapters will either use the devices's default content type, if defined, or
    otherwise fall back to application/octet-stream in such cases.
  • A Linux x86_64 executable of the command line client has been added to the downloads page.

Fixes & Enhancements

  • The CoAP adapter did not properly consider the reduced minimum RAM requirements for starting up when running as a
    native executable on a SubstrateVM. This could have resulted in the adapter not starting up at all, if configured
    with less than ~150MB of RAM. This has been fixed.
  • The HTTP protocol adapter and Device Registry now support a configuration property for explicitly setting a request's
    idle timeout. The timeout is configured with the property idleTimeout. This determines if a request will time out
    and be closed if no data is received or sent within the idle timeout period. The idle timeout is in seconds.
    A zero value means no timeout is used.
  • The MQTT adapter skipped command or error (the first one) subscription if both were requested for the same device.
    This has been fixed.
  • On startup, Hono components could get into a state that caused certain Kafka client metrics to not get reported.
    This has been fixed.
  • Default messaging type changed to Kafka. Changed related documentation pages.
  • The native executable based Lora adapter container image failed to forward Lora meta information in messages being
    sent downstream. This has been fixed.
  • The Command Router component might not have reached the ready state in case the Kafka broker got restarted during
    Command Router startup. This has been fixed.
  • The mechanism used by the Command Router component to determine the state of protocol adapter instances has been
    improved.
  • The CoAP adapter returned a 500 error code for PUT requests without a device identifier in the URI path. This has
    been fixed, now returning a response with a 404 error code instead.
  • The command line client no longer throws an NPE when trying to upload an empty message without a content type to the
    AMQP adapter.

2.0.2

30 Aug 12:15
Compare
Choose a tag to compare

Fixes & Enhancements

  • The default value for the HTTP protocol adapter hono.http.idleTimeout configuration property has been increased
    from 60 to 75 seconds. This means HTTP requests with a hono-ttd value of 60 seconds (which is the tenant
    configuration max-ttd default) will not cause the idle timeout to be reached.
  • The mechanism used by the Command Router component to determine the state of protocol adapter instances has been
    improved.
  • The CoAP adapter returned a 500 error code for PUT requests without a device identifier in the URI path. This has
    been fixed, now returning a response with a 404 error code instead.

2.0.1

21 Jul 13:22
Compare
Choose a tag to compare

Fixes & Enhancements

  • The CoAP adapter did not properly consider the reduced minimum RAM requirements for starting up when running as a
    native executable on a SubstrateVM. This could have resulted in the adapter not starting up at all, if configured
    with less than ~150MB of RAM. This has been fixed.
  • The HTTP protocol adapter and Device Registry now support a configuration property for explicitly setting the idle timeout.
    The timeout is configured with the property idleTimeout. This determines if a connection will timeout and be closed
    if no data is received or sent within the idle timeout period. The idle timeout is in seconds.
    A zero value means no timeout is used.
  • The MQTT adapter skipped command or error (the first one) subscription if both are requested for the same device. This has been fixed.
  • On startup, Hono components could get into a state that caused certain Kafka client metrics to not get reported.
    This has been fixed.
  • The native executable based Lora adapter container image failed to forward Lora meta information in messages being
    sent downstream. This has been fixed.
  • Default messaging type changed to Kafka. Changed related documentation pages.
  • The Command Router component possibly did not reach the "ready" state in case the Kafka broker got restarted during
    Command Router startup. This has been fixed.
  • The CoAP protocol adapter now uses Eclipse Californium 3.6.0.
  • Upgraded to JJWT 0.11.5 which contains additional security guards against an ECDSA bug in Java SE versions
    15-15.0.6, 17-17.0.2, and 18 (CVE-2022-21449).
    Note: if your application does not use these JVM versions, you are not exposed to the JVM vulnerability.
    The CVE is not a bug within JJWT itself - it is a bug within the above listed JVM versions, and the JJWT 0.11.5 release
    adds additional precautions within JJWT in case an application team is not able to upgrade their JVM in a timely manner.
  • The Auth server failed to create a token when configured with an ECC based private key that does not use the P-256 curve.
    This has been fixed.

1.12.3

21 Jul 15:38
Compare
Choose a tag to compare

1.12.3

Fixes & Enhancements

  • The mechanism to delete obsolete hono.command_internal.* Kafka topics could have deleted still used topics in
    case the Kubernetes API server gave information about the running containers with a delay of several seconds. This has
    been fixed.
  • The CoAP adapter did not properly consider the reduced minimum RAM requirements for starting up when running as a
    native executable on a SubstrateVM. This could have resulted in the adapter not starting up at all, if configured
    with less than ~150MB of RAM. This has been fixed.
  • The HTTP protocol adapter and Device Registry now support a configuration property for explicitly setting the idle timeout.
    The timeout is configured with the property idleTimeout. This determines if a connection will timeout and be closed
    if no data is received or sent within the idle timeout period. The idle timeout is in seconds.
    A zero value means no timeout is used.
  • The MQTT adapter skipped command or error (the first one) subscription if both are requested for the same device. This has been fixed.
  • The native executable based Lora adapter container image failed to forward Lora meta information in messages being
    sent downstream. This has been fixed.
  • Upgraded to JJWT 0.11.5 which contains additional security guards against an ECDSA bug in Java SE versions
    15-15.0.6, 17-17.0.2, and 18 (CVE-2022-21449).
    Note: if your application does not use these JVM versions, you are not exposed to the JVM vulnerability.
    The CVE is not a bug within JJWT itself - it is a bug within the above listed JVM versions, and the JJWT 0.11.5 release
    adds additional precautions within JJWT in case an application team is not able to upgrade their JVM in a timely manner.
  • The Auth server failed to create a token when configured with an ECC based private key that does not use the P-256 curve.
    This has been fixed.
  • The CoAP protocol adapter now uses Eclipse Californium 2.7.3.