Summary
EdgeOS currently uses ConnMan for network management, but the edge-agent WiFi implementation requires NetworkManager's DBus interface. This incompatibility prevents the edge-agent from managing WiFi connections on EdgeOS devices.
Problem
The edge-agent's WiFi management implementation (in the NetworkManager.swift module) specifically uses NetworkManager's DBus API:
- Connects to
org.freedesktop.NetworkManager DBus service
- Uses NetworkManager-specific interfaces like:
org.freedesktop.NetworkManager.Device.Wireless
org.freedesktop.NetworkManager.AccessPoint
org.freedesktop.NetworkManager.Connection.Active
- Implements WiFi operations through NetworkManager's
AddAndActivateConnection method
This is incompatible with ConnMan, which uses different DBus interfaces (net.connman.*).
Current State
- EdgeOS: Uses ConnMan (
connman package in meta-edgeos/recipes-core/packagegroups/packagegroup-edgeos-base.bb:14)
- edge-agent: Hardcoded to use NetworkManager DBus API for WiFi management
Proposed Solution
Replace ConnMan with NetworkManager in EdgeOS to ensure compatibility with edge-agent:
# In packagegroup-edgeos-base.bb
RDEPENDS:${PN} = " \
packagegroup-core-boot \
packagegroup-base-extended \
coreutils \
libstdc++ \
util-linux \
- connman \
+ networkmanager \
tzdata \
zstd \
iproute2 \
vim \
edgeos-identity \
edgeos-user \
"
Implementation Checklist
Benefits
- Full edge-agent compatibility: WiFi commands will work out of the box
- Richer API: NetworkManager provides more comprehensive DBus interface
- Better enterprise support: WPA2-Enterprise, 802.1x authentication
- Active development: NetworkManager has broader adoption and support
- Consistent with edge-agent design: No need to maintain dual network manager support
Testing Required
- USB gadget Ethernet (192.168.7.1) must continue working
- WiFi operations through edge-agent CLI
- Boot time impact measurement
- Memory usage comparison
Alternative Approaches Considered
- Modify edge-agent to support ConnMan: Would require significant Swift code changes and maintaining two code paths
- Add abstraction layer: Complex and adds maintenance burden
- Make configurable: Would complicate both projects
Switching to NetworkManager is the cleanest solution that aligns with the edge-agent's existing implementation.
References
- Edge-agent NetworkManager implementation: NetworkManager.swift
- Current ConnMan usage:
/meta-edgeos/recipes-core/packagegroups/packagegroup-edgeos-base.bb:14
Summary
EdgeOS currently uses ConnMan for network management, but the edge-agent WiFi implementation requires NetworkManager's DBus interface. This incompatibility prevents the edge-agent from managing WiFi connections on EdgeOS devices.
Problem
The edge-agent's WiFi management implementation (in the NetworkManager.swift module) specifically uses NetworkManager's DBus API:
org.freedesktop.NetworkManagerDBus serviceorg.freedesktop.NetworkManager.Device.Wirelessorg.freedesktop.NetworkManager.AccessPointorg.freedesktop.NetworkManager.Connection.ActiveAddAndActivateConnectionmethodThis is incompatible with ConnMan, which uses different DBus interfaces (
net.connman.*).Current State
connmanpackage inmeta-edgeos/recipes-core/packagegroups/packagegroup-edgeos-base.bb:14)Proposed Solution
Replace ConnMan with NetworkManager in EdgeOS to ensure compatibility with edge-agent:
Implementation Checklist
connmanwithnetworkmanagerin packagegroup-edgeos-base.bbBenefits
Testing Required
Alternative Approaches Considered
Switching to NetworkManager is the cleanest solution that aligns with the edge-agent's existing implementation.
References
/meta-edgeos/recipes-core/packagegroups/packagegroup-edgeos-base.bb:14