Transition WM2 -> OWM

Transition WM2 -> OWM

Overview

This guide helps you transition from the legacy Wireless Manager 2 (WM2) to One Wifi Manager (OWM), the unified wireless management system in OpenSync.

Note: For terminology definitions, see OWM glossary



What is OWM?

One Wifi Manager (OWM) is the 3rd generation Wireless Manager (OpenSync Wireless Manager) that handles all wireless operations including:

  • Radio and VIF configuration

  • State reporting

  • Client steering and band steering

  • Statistics collection

  • And more

OWM uses a modular architecture based on the OSW (OpenSync Wireless) framework, which provides better separation of concerns, improved testability, and enhanced extensibility.


1. What to Keep in Mind

Key Architectural Differences

WM2 Architecture:

  • Direct target API calls for configuration

  • Manual state polling

  • Separate managers for different functions (WM2, BM, SM)

  • Less modular design

OWM Architecture:

  • Modular OSW-based design

  • State-driven configuration via confsync

  • Observer pattern for state changes

  • Unified manager for all wireless operations

Important Components

osw_conf (Intent Layer)

  • Holds the "intended" configuration

  • Populated from OVSDB tables (Wifi_Radio_Config, Wifi_VIF_Config)

  • Represents what the system should be

osw_state (State Layer)

  • Holds the "actual" current state

  • Populated from driver/netlink/netdev events

  • Represents what the system currently is

osw_confsync (Sync Layer)

  • Compares osw_conf vs osw_state

  • Generates commands to reconcile differences

  • Sends commands to osw_mux

osw_mux (Driver Multiplexer)

  • Routes commands to appropriate drivers (nl80211)

  • Provides unified interface to hardware

OVSDB Tables Used by OWM

  • Wifi_Radio_Config: Radio configuration (channel, bandwidth, etc.)

  • Wifi_Radio_State: Current radio state

  • Wifi_VIF_Config: VIF configuration (SSID, security, etc.)

  • Wifi_VIF_State: Current VIF state

  • Wifi_Associated_Clients: Connected clients

  • Wifi_Stats_Config: Statistics collection configuration


2. Do You Need to Disable WM/BM/SM?

Yes, you must disable the old managers.

Note: As of OpenSync 6.6, the old managers (WM2, BM, SM) have been removed from the codebase.

When transitioning to OWM, the legacy managers should be disabled to avoid conflicts:

Kconfig Changes

  1. Disable old managers in Kconfig.managers:

# Wireless Manager 2 (legacy - disable when using OWM) config MANAGER_WM2 bool "Wireless Manager 2" default n # Changed from 'y' to 'n' help Legacy wireless manager. Disabled when using OWM.
# Band Manager (legacy - disable when using OWM) config MANAGER_BM bool "Band Manager" default n # Changed from 'y' to 'n' help Legacy band steering manager. Disabled when using OWM.
# Statistics Manager (legacy - disable when using OWM) config MANAGER_SM bool "Statistics Manager" default n # Changed from 'y' to 'n' help Legacy statistics manager. Disabled when using OWM.
  1. Enable OWM in Kconfig.managers:

config MANAGER_OWM bool "Opensync Wireless / One Wifi Manager (OWM)" default y # Enable OWM help This process is intended to handle all Wireless related operations in Opensync - apply configurations, report states, steering clients, collect data (statistics, CSI), etc.

Node_Services Settings

Ensure Node_Services table has proper manager enablement:

{ "manager": "wm", "enable": false }, { "manager": "bm", "enable": false }, { "manager": "sm", "enable": false }, { "manager": "owm", "enable": true }

Startup Configuration

OWM startup configuration (typically set in build configuration):

owm;true;needs_plan_b=false

Platform-Specific Configuration

Create configuration files under /etc/opensync/osw/ directory. Example:

/etc/opensync/osw/50_owm.conf:

# Enable STA VIF functionality on BCM platform OSW_PLAT_BCM_STA_VIF_ENABLED=1 # Path to wpa_supplicant global control socket OSW_HOSTAP_GLOBAL_WPAS_PATH=/var/run/wpa_supplicantglobal # Disable target driver (use nl80211 instead) OSW_DRV_TARGET_DISABLED=1 # Platform-specific: minimum hardware mode not supported OW_OVSDB_MIN_HW_MODE_NOT_SUPPORTED=1 # Disable Layer 2 update frame kick functionality OW_L2UF_KICK_DISABLED=1

3. Transitioning Steps

Step 1: Update Kconfig

  1. Open core/kconfig/Kconfig.managers

  2. Set CONFIG_MANAGER_WM2 to n

  3. Set CONFIG_MANAGER_BM to n (if present)

  4. Set CONFIG_MANAGER_OWM to y

Step 2: Verify nl80211 Support

OWM uses the nl80211 driver for hardware interaction. Verify that your platform has:

Requirements:

  • Linux kernel with nl80211/cfg80211 support

  • Working wireless drivers with nl80211 interface

  • Netlink socket access for wireless configuration

Step 3: Build and Flash

# Configure build make menuconfig # Navigate to Core Managers # Disable WM2, BM, SM # Enable OWM # Build make # Flash to device # (platform-specific steps)

Step 4: Verify OWM is Running

# Check process ps aux | grep owm # Check logs logread | grep owm # Should see: # "ow: core: initializing..." # "ow: module: loading: osw_confsync" # "ow: module: loading: osw_stats" # etc.

Step 5: Check basic functionality

  1. Radio State:

    # Verify radio state ovsh s Wifi_Radio_State
  2. VIF State:

    # Verify VIF state ovsh s Wifi_VIF_State
  3. Client Association:

    # Check associated clients ovsh s Wifi_Associated_Clients

Step 6: Verify Steering

# Check associated clients ovsh s Wifi_Associated_Clients -w mac==AA:BB:CC:DD:EE:FF # Watch for steering actions in logs logread | grep steer

Step 7: Verify Statistics

Use OSRT to display MQTT Statistics


4. Feature Comparison

Feature Area

WM2

OWM

Impact

Feature Area

WM2

OWM

Impact

Architecture

Monolithic

Modular OSW modules

✅ Better maintainability

Configuration

Direct API calls

State-driven via confsync

✅ More reliable

State Management

Manual state polling

Event-driven observer pattern

✅ Real-time updates

Steering

Separate BM manager

Built-in ow_steer

✅ Better integration

Statistics

Basic polling

Subscription-based pipeline

✅ More efficient

MLO Support

Not feasible

Multi-Link Operation support

✅ WiFi 7 ready

Wifi 7 WPA3 Compatibility (RSNO)

Manual configuration

Automatic WPA3 compat mode (rsno)

✅ Seamless security

Airtime Precedence

Not supported

Configurable airtime precedence

✅ Better QoS control

Statistics Precision

32-bit counters

64-bit tx/rx statistics

✅ No overflow issues

Hotspot 2.0

Not supported

Full Hotspot 2.0 support

✅ Passpoint ready

Upper table was generated based on OpenSync 7.0 release.

Breaking Changes

  1. Architecture Changes:

    • Modular OSW-based design replaces monolithic WM2

    • Target API is no longer used (replaced by nl80211 driver)

    • Configuration uses state-driven confsync mechanism

    • Driver interaction through osw_mux abstraction layer

  2. State Management:

    • WM2: Manual state polling approach

    • OWM: Event-driven observer pattern for real-time updates

    • State changes propagate automatically through the system

  3. Steering:

    • Separate BM manager is replaced by built-in ow_steer module

    • Unified steering policies across band and client steering

    • Better integration with radio and VIF configuration

  4. Statistics:

    • 64-bit counters (was 32-bit in WM2) prevent overflow issues

    • Subscription-based pipeline replaces basic polling

    • TLV-based statistics format

    • More efficient collection and reporting mechanisms

  5. Platform Integration:

    • No longer requires target driver implementation

    • Requires nl80211/cfg80211 kernel support

    • Configuration via /etc/opensync/osw/ instead of target APIs

    • Module-based architecture allows selective feature enablement

  6. WiFi 7 Support:

    • MLO (Multi-Link Operation) support (not feasible in WM2)

    • Automatic WPA3 compatibility mode (RSNO) for WiFi 7

    • Airtime precedence configuration

    • Hotspot 2.0 (Passpoint) support


5. Troubleshooting

OWM Not Starting

Symptoms: No OWM process, no logs

Solutions:

  1. Check Kconfig: Ensure CONFIG_MANAGER_OWM=y

  2. Check Node_Services: Ensure owm is enabled

  3. Check logs: logread | grep ow

  4. Check dependencies: nl80211 support, vendor WLAN driver, kernel wireless drivers

Radios Not Configuring

Symptoms: Config changes don't affect state

Solutions:

  1. Check confsync logs: logread | grep confsync

  2. Verify nl80211/netlink access

  3. Check kernel wireless driver functionality

  4. Check logs for driver errors

  5. Verify root permissions

State Not Updating

Symptoms: State tables don't reflect actual state

Solutions:

  1. Check confsync state: logread | grep confsync

  2. Check netlink/monitor subscriptions

  3. Verify driver events

  4. Check osw_state logs

  5. Verify state observer registration

Clients Not Steering

Symptoms: Band steering not working

Solutions:

  1. Check Band_Steering_Clients and Band_Steering_Config

  2. Check steering policy configuration

  3. Verify BTM support in driver

  4. Check logs for steering action messages


6. Rollback Plan

Note: Rollback to WM2 is only possible on OpenSync versions prior to 6.6. As of OpenSync 6.6, WM2, BM, and SM have been removed from the codebase.

If issues occur on pre-6.6 versions, you can rollback to WM2:

Quick Rollback

  1. Disable OWM in Kconfig:

    config MANAGER_OWM default n
  2. Re-enable WM2:

    config MANAGER_WM2 default y
  3. Rebuild and flash


Additional Resources

  • OSW Module Documentation: See src/lib/osw/ and src/lib/ow/ for module implementations

  • Configuration Examples: See **/rootfs/*/INSTALL_PREFIX/etc/opensync/osw/

  • Unit Tests: See src/lib/ow/ut/ and src/lib/osw/ut/ for examples