You hit the living-room switch and nothing happens. You try again, and on the second or third go the light obeys. The towel-rail plug shows up as “unavailable” exactly when you want it, and the bathroom radar fails to turn the light on as you walk in. With 98 Zigbee devices scattered around the house (door and window sensors, thermometers, in-wall relays, IKEA remotes, even soil-moisture probes in the plant pots), there are always two or three sulking. For months I assumed Zigbee was just like that: a bit flaky, a bit unpredictable. I was wrong. The problem wasn’t the devices, and it wasn’t the coordinator. It was a number.
The channel number.
The problem: a neighbourhood drowning in WiFi
I live surrounded by WiFi networks. Plenty of them. And not on a fixed channel: my access points keep hopping and auto-optimising across the 2.4 GHz band, hunting for a gap. Great for the WiFi… and a nightmare for Zigbee, because Zigbee lives in that very same 2.4 GHz band, and it’s the small, polite neighbour that always ends up getting stepped on.
Zigbee and WiFi share 2.4 GHz, but they play by very different power rules. Zigbee splits the band into 16 channels, 11 to 26, spaced 5 MHz apart (from 2405 to 2480 MHz). Each Zigbee transmission takes up about 2 MHz: a narrow slot. WiFi, on the other hand, is an elephant: each 2.4 GHz network occupies around 20 MHz and transmits with far more power. When a WiFi channel overlaps your Zigbee channel, there’s no contest. WiFi flattens it.
Here’s the overlap map:
- WiFi channel 1 (centred on 2412 MHz) swallows Zigbee channels 11 to 14.
- WiFi channel 6 (2437 MHz) stomps on 15 to 19.
- WiFi channel 11 (2462 MHz) covers 20 to 24.
- And right at the top, above WiFi 11, Zigbee channels 25 (2475 MHz) and 26 (2480 MHz) are left in the clear.
That’s the trick. Channels 25 and 26 are the one corner of the band almost no WiFi reaches (the upper edge of WiFi channel 11 stops around 2473 MHz). So when you can’t control which channel your WiFi will be on (my case: it keeps changing on its own), the move isn’t to fight for a gap in the middle. It’s to move into the attic.
What about Bluetooth? BLE also lives in 2.4 GHz, but it hops frequencies constantly, so it interferes in bursts rather than parking on one channel like a fixed WiFi AP. Its advertising channels include one right at 2480 MHz (next to Zigbee 26), which is one more reason to settle on 25 rather than 26.
And here’s the cruel part: almost every coordinator ships on a low channel (11 or 15), which is exactly where WiFi channel 1 or 6 lands. In other words, the worst possible spot. You come broken out of the box.
The fix: channel 25
I moved to channel 25. And since I was going to have to touch everything anyway, I took the chance to make another change I’d been putting off: dropping ZHA and switching to Zigbee2MQTT. Zigbee2MQTT’s hardware support is far better (oddball devices that showed up half-working in ZHA work in full on Z2M), and the community runs ahead of the curve. In Zigbee2MQTT you set the channel in configuration.yaml:
advanced:
channel: 25Code language: YAML (yaml)
The result was immediate and almost offensive in how good it was. Bulbs respond instantly. Sensors report when they’re supposed to. The network map, which used to look like a plate of spaghetti with red links everywhere, went clean. Zero random “unavailable”. Months of fighting with the configuration, the routers, the antennas… and the culprit was a number I could change in thirty seconds.
Well. Thirty seconds for the change. The rest, not so much.
What nobody tells you: you have to re-pair EVERYTHING
Here’s the fine print, and you really want to know it before you jump in. Changing the Zigbee channel is not like changing your WiFi channel. Every device stores the channel it paired on, and when you move the coordinator to a new channel, the vast majority of them do NOT follow you. They stay there shouting on the old channel, alone. In theory there’s a mechanism to announce a channel change to the whole network; in practice, with battery devices and cheap gear, don’t count on it: you end up removing and re-pairing them one by one. In my case, all 98 of them.
So if you’re going to do it, do it with your head screwed on:
- Back up first. Your Zigbee2MQTT configuration (
configuration.yaml) and, if you use Home Assistant, your automations. You’re about to touch device names. - Write down what you have and where. Make a list of every device with its name and its room before you delete anything. Twenty re-pairings in, you’ll be grateful.
- Change the channel in
configuration.yaml(channel: 25) and restart Zigbee2MQTT. - Pair the mains-powered devices first (bulbs, plugs, in-wall relays: the Sonoffs, the Tuyas, the Innrs… anything that isn’t on batteries). These are the ones that act as routers and rebuild the mesh; put them in first and the battery sensors you pair afterwards will have something to latch onto.
- Then the battery ones (door and window sensors, thermometers, soil-moisture probes, the IKEA remotes). One at a time, with patience.
- Check your automations at the end: if names or IDs have changed, you’ll need to go over them.
And a bit of common sense: don’t do it on a Tuesday at eleven at night when you depend on those lights not to break your neck in the hallway. Set aside a good chunk of time (with nearly a hundred devices, in my case it really was a good chunk). The whole network is going to be dead while you re-pair, and that includes the radar that turns on the bathroom light and the very switch you’re relying on to see what you’re doing.
Re-pairing 98 devices is no picnic. Would I do it again? Without hesitation: I went from a network that worked “almost always” to one that works, full stop. And next time something goes weird on Zigbee, before swapping antennas, moving the coordinator or buying a repeater… check the channel. You’re probably living, like me, right in the middle of the neighbourhood’s WiFi.

Leave a Reply