DevTools•Jun 2026•3 min read

Connman vs Iwd

ConnMan and iwd both manage network connections on Linux, but they solve different layers of the problem. ConnMan is a full connection manager; iwd is a focused, modern Wi-Fi daemon. The right pick depends on whether you want one tool or the cleanest tool.

The short answer

Iwd over Connman for most cases. iwd is the modern, in-kernel-crypto Wi-Fi daemon Intel built to replace the wpa_supplicant era.

  • Pick Connman if need a single daemon that handles Wi-Fi, Ethernet, Bluetooth tethering, cellular, VPN, DNS proxy, and time sync on an embedded/IoT device with minimal moving parts
  • Pick Iwd if want the fastest, leanest, most modern Wi-Fi connectivity with a clean D-Bus API and no legacy wpa_supplicant baggage — and you'll pair it with iwd's built-in DHCP or a separate manager for the rest
  • Also consider: NetworkManager if you're on a desktop distro and want the path of least resistance with the broadest GUI and tooling support — it can even use iwd as its Wi-Fi backend.

— Nice Pick, opinionated tool recommendations

What they actually are

Don't let the rhyming names fool you — these are not peers. ConnMan (Connection Manager) is a full-stack connectivity daemon from the Moblin/Tizen lineage: it juggles Wi-Fi, Ethernet, Bluetooth PAN, cellular via oFono, VPNs, and bundles its own DNS proxy and NTP client. It wants to own your entire network stack. iwd (iNet Wireless Daemon) is narrower and prouder of it: an Intel-built Wi-Fi-only supplicant designed from scratch to replace wpa_supplicant, leaning on the kernel's crypto and netlink interfaces instead of dragging userspace baggage. ConnMan answers 'how does my whole device get online.' iwd answers 'how does this radio associate, fast, with less code.' Comparing them head-to-head means asking whether you want one opinionated do-everything daemon or a sharp single-purpose one you compose yourself. That framing already tells you most of what you need.

Footprint and architecture

iwd's whole pitch is leanness. It has essentially zero external dependencies beyond the kernel and ell (Intel's embedded linked list library), pushes crypto into the kernel keyring, and ships a single small binary. Association is measurably faster than wpa_supplicant, which matters on boot-time-sensitive and battery-sensitive hardware. ConnMan is heavier by design because it does more — and that breadth is also its liability. It historically leaned on wpa_supplicant for Wi-Fi (though it can now use iwd as a backend), pulled in oFono for cellular, and its DNS proxy has been a recurring source of weird resolution bugs. If you profile a minimal embedded image, iwd disappears into the noise while ConnMan shows up as a stack of services. Fewer moving parts means fewer 2 a.m. debugging sessions. iwd's architecture is the one I'd bet on aging gracefully.

Developer experience and API

Both expose D-Bus, so scripting either is reasonable — but the texture differs. iwd's API is modern, well-documented, and consistent; its iwctl interactive client is genuinely pleasant, with tab completion and a sane object model. You can get a device onto a WPA2 network in three commands and not hate yourself. ConnMan's connmanctl works but feels like a relic — the agent-based passphrase flow is clunky, and the documentation assumes you already know the Moblin-era mental model. ConnMan's saved-profile and service-ordering logic is powerful but opaque; debugging why it picked the wrong service or refused to auto-connect is a known time sink. iwd does less, so there's less to misconfigure. If you're building tooling on top, iwd gives you a clean surface; ConnMan gives you more knobs and more ways to get them wrong.

Where ConnMan still earns its keep

I'm picking iwd, but I won't pretend ConnMan is dead weight. If your device genuinely needs Wi-Fi plus cellular plus Bluetooth tethering plus VPN plus DNS and NTP, and you want one supervised daemon instead of orchestrating five, ConnMan is the integrated answer — that's exactly why Tizen and automotive/IoT vendors shipped it. iwd, by contrast, only does Wi-Fi; you'll bolt on systemd-networkd or a separate manager for everything else, which is more glue to maintain. ConnMan's tethering and offline-mode handling are mature and battle-tested in shipped products. So the honest cut is: if 'manage all connectivity in one place' is your hard requirement, ConnMan wins on scope. For everyone whose pain point is specifically Wi-Fi — speed, footprint, a clean API — iwd is the sharper tool, and that's the more common case today.

Quick Comparison

FactorConnmanIwd
ScopeFull stack: Wi-Fi, Ethernet, cellular, Bluetooth, VPN, DNS, NTPWi-Fi only, by deliberate design
Footprint & dependenciesHeavier; pulls in oFono/wpa_supplicant historically, own DNS proxyTiny single binary, kernel crypto, only ell dependency
Wi-Fi association speedInherits wpa_supplicant-era latency unless using iwd backendFaster association, built for modern netlink/kernel crypto
Developer experience / APIconnmanctl works but dated; opaque service-ordering logicClean modern D-Bus API, pleasant iwctl client
Integrated multi-connectivityOne daemon handles everything, mature tethering/offline modeNeeds systemd-networkd or another manager for non-Wi-Fi

The Verdict

Use Connman if: You need a single daemon that handles Wi-Fi, Ethernet, Bluetooth tethering, cellular, VPN, DNS proxy, and time sync on an embedded/IoT device with minimal moving parts.

Use Iwd if: You want the fastest, leanest, most modern Wi-Fi connectivity with a clean D-Bus API and no legacy wpa_supplicant baggage — and you'll pair it with iwd's built-in DHCP or a separate manager for the rest.

Consider: NetworkManager if you're on a desktop distro and want the path of least resistance with the broadest GUI and tooling support — it can even use iwd as its Wi-Fi backend.

Connman vs Iwd: FAQ

Is Connman or Iwd better?

Iwd is the Nice Pick. iwd is the modern, in-kernel-crypto Wi-Fi daemon Intel built to replace the wpa_supplicant era. It's faster to associate, has a tiny footprint, no daemon zoo, and a clean D-Bus API. ConnMan tries to be everything and ages like it. For Wi-Fi-first systems, iwd wins.

When should you use Connman?

You need a single daemon that handles Wi-Fi, Ethernet, Bluetooth tethering, cellular, VPN, DNS proxy, and time sync on an embedded/IoT device with minimal moving parts.

When should you use Iwd?

You want the fastest, leanest, most modern Wi-Fi connectivity with a clean D-Bus API and no legacy wpa_supplicant baggage — and you'll pair it with iwd's built-in DHCP or a separate manager for the rest.

What's the main difference between Connman and Iwd?

ConnMan and iwd both manage network connections on Linux, but they solve different layers of the problem. ConnMan is a full connection manager; iwd is a focused, modern Wi-Fi daemon. The right pick depends on whether you want one tool or the cleanest tool.

How do Connman and Iwd compare on scope?

Connman: Full stack: Wi-Fi, Ethernet, cellular, Bluetooth, VPN, DNS, NTP. Iwd: Wi-Fi only, by deliberate design.

Are there alternatives to consider beyond Connman and Iwd?

NetworkManager if you're on a desktop distro and want the path of least resistance with the broadest GUI and tooling support — it can even use iwd as its Wi-Fi backend.

🧊
The Bottom Line
Iwd wins

iwd is the modern, in-kernel-crypto Wi-Fi daemon Intel built to replace the wpa_supplicant era. It's faster to associate, has a tiny footprint, no daemon zoo, and a clean D-Bus API. ConnMan tries to be everything and ages like it. For Wi-Fi-first systems, iwd wins.

Related Comparisons

Disagree? nice@nicepick.dev