Skip to content

Connectivity Manager and Network Commissioning Drivers Need to be More Flexible for Linux #42516

Description

@gerickson

Matter currently supports as first-class network technologies: Bluetooth, Thread, Wi-Fi, and Ethernet with Bluetooth reserved only for commissioning, and Thread, Wi-Fi, and Ethernet as either on-network commissioning networks and/or operational networks.

On Linux, BlueZ and the bluetoothd daemon is the de facto Bluetooth implementation.

For Thread, OpenThread is the de facto Thread implementation.

However, for Ethernet and Wi-Fi, things are more diverse.

In the nominal case (and currently in Matter), the Ethernet control plane has no management software whatsoever beyond the Linux kernel and the Wi-Fi control plane is handled by the wpa_supplicant daemon over D-Bus.

However, there are several further variants:

  1. Instead of wpa_supplicant, Wi-Fi may be managed by iwd.
  2. Rather than being managed heterogeneously, as they are today in Matter, Ethernet, Wi-Fi, and, in some instances Cellular, may be further managed by one of:
    1. connman with:
      1. Ethernet sub-managed by connman itself.
      2. Wi-Fi sub-managed by either:
        1. iwd
        2. wpa_supplicant
      3. Cellular managed by oFono.
    2. NetworkManager
      1. Ethernet sub-managed by NetworkManager itself.
      2. Wi-Fi sub-managed by either:
        1. iwd
        2. wpa_supplicant
      3. Cellular managed by ModemManager.
    3. All of networking is managed by some proprietary product- or platform-specific entity for which any of the above may be a backing implementation.
      1. Regardless, like ConfigurationManager today, there may be a desire to default the Matter build to (1) or (2) but then set a custom ConnectivityManager at runtime with a potential chip::DeviceLayer::SetConnectivityMgr.

There are several implementation implications of this:

  1. On the Linux platform, there should be a better ability to mix-and-match and/or override implementation details. For example, maintaining the default BlueZ Bluetooth implementation while substituting connman or NetworkManager for both Ethernet and Wi-Fi management or wpa_supplicant or iwd for Wi-Fi management.
    1. In the case of connman or NetworkManager, they own the configuration / provisioning state for the Wi-Fi network(s).
  2. Particularly for connman, scans do not necessarily return signal strength as RSSI / dBm. Rather, they return values on a qualitative scale from 0-100.
    1. Consequently, scan results should be able to indicate whether the results are quantitative, qualitative, both, or neither.
  3. There should likely be a chip::DeviceLayer::SetConnectivityMgr peer to chip::DeviceLayer::SetConfigurationMgr.

Matter ConnectivityManager Linux Platform Refactoring tries to illustrate this a bit better.

/cc @holtmann, @denkenz

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions