Setup:
- Controller: L009UiGS, RouterOS 7.23.2 (issue also present on 7.23.1)
- CAPs: hAP ax² (wifi-qcom), hAP ax³ (wifi-qcom), hAP ax S ×2 (wifi-mediatek), hAP ax lite
- Provisioning: two rules (2ghz-ax / 5ghz-ax), master + 2-3 slave configurations, action=create-dynamic-enabled (also tested create-enabled — no difference in behavior, slaves are always dynamic)
- All configurations use a datapath with bridge=bridge-LAN
- CAP-side: local forwarding ("traffic processing on CAP")
Behavior:
- On provision, slave virtual interfaces are created as dynamic (D flag) on the CAP, but they are not added to the bridge specified in the datapath.
/interface bridge port print where dynamicon the CAP is empty. Master interfaces work only because they are static defconf bridge ports. - Result: slave SSIDs beacon, clients associate, but no traffic passes.
- Workaround that works: manually adding static bridge ports by the current name of the dynamic interface (
/interface bridge port add bridge=bridge-LAN interface=wifiXX). This succeeds and traffic flows. - Fragility: dynamic interface names use an ever-increasing counter (observed wifi14 → 18 → 23 → 28 → 35 across re-provisions in one day). Every re-provision renames the slaves, the static bridge-port entries become orphaned (shown as
*XXinactive), and the SSIDs silently stop passing traffic until the bridge ports are re-added with the new names. - Note for anyone else debugging this: on DFS channels the slave interfaces only appear ~60-90s after provisioning (after the master completes CAC), which can make it look like 5GHz slaves are not being created at all.
/interface/wifi finddoes not return dynamic interfaces, so scripted repair has to go through the generic/interfacemenu.
Questions:
- Is the CAP expected to automatically add dynamic slave interfaces to the datapath bridge in local-forwarding mode? If yes, under what conditions does this fail?
- Is manually adding bridge ports by name the intended mechanism? If so, is there a supported way to make it survive re-provisioning, given that interface names change every time?
- Should
action=create-enabledproduce static (non-dynamic) virtual interfaces on the CAP? In my case slaves are always dynamic regardless of the action setting, confirmed after forced re-provision.
Config exports (provisioning, datapath, configurations, bridge) available on request. supout.rif available.