Changed from uSD in Pi4B to M.2 SSD, and zigbee is dead

Migrated my installation of HomeAssistant from my old x86 based Dell T420 with Proxmox hosting HomeAssistant 6+ weeks ago, and also replaced my aging HUSBZB-1 with a Conbee3 and Zooz 800 LR. Originally used a uSD card on my 4GB Pi4, as I didn’t have an M.2 adapter for the Pi, or an M.2 for it. Got both of those in, in the form of the 52pi DeskPi Lite NAS case. Nice case, could use some “ease of assembly” improvements, but nice case. Flashed HomeAssistant to the M.2 using the Raspberry Pi Imager, after a couple tries, as the adapter the case included was for a SATA M.2, not an NVMe (this has been fun…)

On the uSD, moving from the HUSBZB-1 to the Conbee2, then 3 (Bought the wrong one, and took a couple days to realize/swap), no issue, after like an hour for the network to reconnect.

But when I put the M.2 in, suddenly Zigbee was dead. I got a TZDATA error (unfortunantly, I forgot the full error, but I remember it ended in “167”, and the error attached at the bottom, I found after trying to revert to a couple different backups, and swapping back and forth between the Conbee and the HUSBZB-1, as I still have it.)

I tried re-installing ZHA, and all it’s gotten me is my Zigbee network of 26 clients have ALL lost their names/locations, but Zigbee has been down for at least 2 days now, and neither coordinator is seeming to even talk. ZHA in HomeAssistant shows the “last seen” as some amount of time in the past (the other night it was ~3 hours before, now it’s showing an hour ago.) the coordinator is showing the firmware, the MAC address. Nwk is 0x0000, LQI is 255, and RSSI is unknown. (I only recognize RSSI off the top of my head, as that is signal strength, and should have a dB value.)

I even tried pairing one of the zigbee devices in my house last night manually, to see if it was just having issues “restoring” the old network, but it didn’t see the device when the device tried to pair.

Home assistant is showing no updates needed, but 41 automations are dead, as the zigbee devices involved are all “missing”.

Logger: aiohttp.server
Source: /usr/local/lib/python3.13/site-packages/aiohttp/web_protocol.py:451
First occurred: 10:10:52 PM (2 occurrences)
Last logged: 10:11:00 PM

Error handling request
Traceback (most recent call last):
  File "/usr/local/lib/python3.13/site-packages/aiohttp/web_protocol.py", line 480, in _handle_request
    resp = await request_handler(request)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.13/site-packages/aiohttp/web_app.py", line 569, in _handle
    return await handler(request)
           ^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.13/site-packages/aiohttp/web_middlewares.py", line 117, in impl
    return await handler(request)
           ^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/src/homeassistant/homeassistant/components/http/security_filter.py", line 92, in security_filter_middleware
    return await handler(request)
           ^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/src/homeassistant/homeassistant/components/http/forwarded.py", line 83, in forwarded_middleware
    return await handler(request)
           ^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/src/homeassistant/homeassistant/components/http/request_context.py", line 26, in request_context_middleware
    return await handler(request)
           ^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/src/homeassistant/homeassistant/components/http/ban.py", line 86, in ban_middleware
    return await handler(request)
           ^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/src/homeassistant/homeassistant/components/http/auth.py", line 242, in auth_middleware
    return await handler(request)
           ^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/src/homeassistant/homeassistant/components/http/headers.py", line 32, in headers_middleware
    response = await handler(request)
               ^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/src/homeassistant/homeassistant/helpers/http.py", line 73, in handle
    result = await handler(request, **request.match_info)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/src/homeassistant/homeassistant/components/http/decorators.py", line 81, in with_admin
    return await func(self, request, *args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/src/homeassistant/homeassistant/components/config/config_entries.py", line 285, in post
    return await super().post(request, flow_id)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/src/homeassistant/homeassistant/components/http/data_validator.py", line 74, in wrapper
    return await method(view, request, data, *args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/src/homeassistant/homeassistant/helpers/data_entry_flow.py", line 122, in post
    result = await self._flow_mgr.async_configure(flow_id, data)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/src/homeassistant/homeassistant/data_entry_flow.py", line 367, in async_configure
    result = await self._async_configure(flow_id, user_input)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/src/homeassistant/homeassistant/data_entry_flow.py", line 414, in _async_configure
    result = await self._async_handle_step(
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
        flow, cur_step["step_id"], user_input
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    )
    ^
  File "/usr/src/homeassistant/homeassistant/data_entry_flow.py", line 517, in _async_handle_step
    result: _FlowResultT = await getattr(flow, method)(user_input)
                           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/src/homeassistant/homeassistant/components/zha/config_flow.py", line 469, in async_step_choose_automatic_backup
    return await self.async_step_maybe_confirm_ezsp_restore()
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/src/homeassistant/homeassistant/components/zha/config_flow.py", line 488, in async_step_maybe_confirm_ezsp_restore
    return await self._async_create_radio_entry()
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/src/homeassistant/homeassistant/components/zha/config_flow.py", line 803, in _async_create_radio_entry
    await self.hass.config_entries.async_setup(self.config_entry.entry_id)
  File "/usr/src/homeassistant/homeassistant/config_entries.py", line 2031, in async_setup
    raise OperationNotAllowed(
    ...<3 lines>...
    )
homeassistant.config_entries.OperationNotAllowed: The config entry 'Conbee3' (zha) with entry_id '0436727d11ed6bafce453f9cfc365a15' cannot be set up because it is in state ConfigEntryState.SETUP_RETRY, but needs to be in the ConfigEntryState.NOT_LOADED state

This smells of either an undervolt condition or an interference issue. Both basically have the same fix.

Pi 4 are limited amperage on the USB bus. Too much and boom you can’t do anything about that unless you completely reengieer the power bus there.

Zigbee and ZWave sticks hate 3ghz interference (guess what USB3 has a lot of)

Both cases - move everything plugged in on the USB bus to a powered usb hub and connect the sticks into a usb2 (not blue) port or a usb2 hub isolated from the SSD. It’s the shotgun approach but it works.

How are your sticks and SSD connected?

that’s the thing that confuses me a bit.

The Zooz Z-wave stick is directly under the Zigbee stick, and the Zooz is fine. the Zigbee stick is the issue.

But yeah, the 2 coordinators are direct into the 2.0 ports of the Pi, and the SSD is in the USB 3.0 port.

I did not think about the PSU issue, as I haven’t even played in the config file yet, but at the same time, I haven’t played in the config file, as the Pi has a “legit” pi PSU. I got it from Canakit a couple years ago, but never used it, until I pulled the 4 out for some testing with work about 6 weeks ago.

I did think about using a USB extender on the Conbee, but never actually tried.

Zigbee is orders of magnitude more susceptible to interference than the ZWave stick (because it transmits/receives at 2.5ghz - just like 2. 5Ghz wifi)

Get those sticks or at the VERY least the zigbee stick off the direct plug and in order of preference

Powered usb hub
Half meter or longer usb extension

Yes it matters I’m almost positive this is the issue.

(there’s a vid on the homeassistant YouTube page showing this very interference in action.)

That said even with the best lab power supply the USB bus on a Pi is hard limited at usb 3a max. Without a soldering iron and EE knowledge you won’t change that so recommenation is get the USB stuff off the Pi power bus and stick it on its own - thus the powered hub recommendation.

1 Like

Yeah, I was thinking about that, as I know the “usb_max_current” flag exists on the Pi, and I actually “could” do the bus upgrade (I am an EE, with multiple years experience doing industrial board level work, so 5V@3A doesn’t even make me blink…) but I agree, the right answer is probably to try and remember where I have a powered USB hub. And figure out how to get it powered, when I have too much crap in that corner of the office as it is.

1 Like

Just to prove I practice what I preach.

This is the hub I had on my Pi4 for the very same reason.

When I moved to the NUC. Same hub new host.

And yes I know I need to dust. That’s a Saturday thing.

I’m just trying to think of where I can get a powered hub today.

Walmart shows a 3.0, but seems kinda redundant to be trying to get a hub half to get away from the 3.0 bus, and have it “try” to run 3.0…

1 Like

You might be able to get away with a USB3 hub IF you make sure to use a USB2 cable and make sure the hub is plugged into a USB2 port.

Then again, I wouldn’t risk it - just get a cheap powered hub off Amazon. In all likelihood it will be USB2.

1 Like

If you have the extension cord it may be good enough. Also decoupling the power bus may be enough to break up the noise

(read: yeah a 2.0 powered hub Is best. But use what you got)

But I discounted this, at least initially, as I did try going back to the uSD card, and unplugging the M.2 all together from the USB3 port. I forgot I did that 2 days ago when troubleshooting, but by that point, I had already tried reconfiguring the coordinator half a dozen times.

1 Like