You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
This commit was created on GitHub.com and signed with GitHub’s verified signature.
Added
Topology clients labelled by hostname/IP, not MAC (#35). The topology view
showed each associated client as a raw MAC, which is poor UX. GET /topology
now enriches clients with their DHCP-assigned ip and hostname, resolved on
the controller from dnsmasq's lease file (/tmp/dhcp.leases) — a member node
is a bridged dumb AP and holds no leases, so resolution happens where the merged
graph is served. The view labels a client by hostname, falling back to IP, then
the MAC when neither resolved; the MAC and IP are kept on the node's data. A
client with no lease (static, self-addressed, or transient) renders by MAC as
before.
Any ethernet jack just works on a non-controller node (#42). A satellite's
wan jack was a dead routed wan: only its lan jack(s) carried clients or extended
the network, so plugging a computer — or another node — into the wan jack did
nothing. On a non-controller node the network posture now folds every
ethernet jack (incl. the wan jack, network.wan.device) into br-lan as a plain
bridge relay port and stands the routed wan down, so any device works on any
port with zero configuration. A controller keeps its wan jack as the routed
internet uplink.
Dual-band / multi-band client AP (#36). A claimed home previously
broadcast its client AP on a single radio (typically 5 GHz), so 2.4 GHz-only
devices had no AP to join. ApplyProfile now authors the client AP across
multiple bands: the primary omm_ap stays on the radio/band-resolved
radio, and each band in the new ap_bands profile field ("2g"/"5g"/"6g")
resolves to that node's matching radio, authored as omm_ap_<band> (e.g. omm_ap_2g, coexisting with omm_mesh on the same 2.4 GHz radio/channel).
Empty ap_bands defaults to also broadcasting on 2.4 GHz, so every home gets a
dual-band AP with no configuration; set a single band (e.g. ["5g"]) to opt
out. Bands absent on a node are skipped (not fatal), and narrowing ap_bands
prunes the now-stale omm_ap_<band> sections on re-apply.
Xiaomi AX3600 as a build/deploy target.build-devices.sh gains an ax3600 label and deploy.sh recognises it. The board is a Qualcomm IPQ8071A
(qualcommax/ipq807x, Cortex-A53) — the same aarch64_cortex-a53 ISA group as
the ZB8103AX, so the release feed's arm64 package already covered it; this just
makes the local dev tooling first-class for it. Because two boards now share
one ISA, deploy.sh disambiguates by board_name (xiaomi,ax3600) before
falling back to uname -m. No profile changes were needed: the mesh radio is
auto-selected by band, which picks the AX3600's 2.4 GHz radio (radio2).
Changed
Backhaul model: wired is primary, the mesh is a carrier-loss backup. The
short-lived "batman-always-on, per-port enslavement" model (which routed a wired
node over the wireless mesh and broke ethernet clients in a mixed
wired+wireless bridge) is replaced by the failover model: every ethernet port is
a plain br-lan relay, and the 802.11s mesh + batman-adv is authored as a standby that the daemon's carrier-toggle failover brings up only when the
wired uplink loses carrier (and tears back down when the wire returns) — so the
fast wire is always preferred and wired + mesh never bridge-loop. The uplink port
to watch is auto-detected (the bridge port through which the node reaches its
gateway, so any jack works) or set via uplink_port. Wired ports are enslaved to
batman only via an explicit batman_ports; batman still forwards the mesh
loop-free multi-hop when it activates. Restores internal/backhaul (the switch
loop) and removes the per-port beacon classifier (PortScan / SniffOMMBeacon / Classify).
Network posture management now defaults ON (manage_network, opt-out).
Making a wan jack usable as a client/backhaul port physically requires standing
down its routed role first — a netdev cannot be both network.wan's device and
a br-lan member, and a satellite that keeps its own DHCP/gateway becomes a
rogue DHCP server on the home segment. That bridged dumb-AP posture used to sit
behind manage_network=0, so #42 could not be delivered without it. The flag
now defaults to 1: a non-controller stands down its routed wan and every
ethernet jack joins the home L2, while a controller keeps the stock routed-wan
gateway (never disrupted). Set manage_network=0 to opt out entirely on a
device you hand-wire and do not want meshd to reconfigure.
Mesh-node network posture now bridges into the home (single gateway). A
claimed satellite (manage_network=1) previously only stood down its
authoritative DHCP, leaving its own routed/NAT'd wan up — so its bridged
802.11s mesh was an island and mesh traffic could not reach the home WAN, which
egresses only through the controller's gateway over the mesh. The Mesh-node
posture now authors the same bridged shape as Guest: it folds every ethernet
jack (incl. the wan jack) into br-lan as a plain relay, lan becomes a DHCP
client, the routed wan/wan6 are disabled, and authoritative DHCP is stood
down, so the node is a pure L2 bridge into the home and its default route points
at the controller. The 802.11s mesh stays a carrier-loss backhaul standby (see
the backhaul-model change above), so wired + mesh never bridge-loop. Verified
end-to-end on hardware: reset → wired auto-onboard → mesh-node, pulling the real
home profile.