ZHA ZigBee Radio Channel Keeps Changing on its Own

This is the second time now that my ZHA configuration has changed the radio channel on it’s own. The first time it randomly, and unexpectedly, changed from channel 21 to the default 11. After this happened I performed a scan and found channel 16 to have the lowest utilization so I changed it to that.

Now, a few hours ago, the radio channel once again changed on it’s own back to channel 11.

Both times this has happened, the device do not migrate but stay on whatever channel they’re on.

I am using a SONOFF Zigbee 3.0 USB Dongle Plus-E

I’ve checked the logs and found three that appear 90 seconds before the channel switched. Does anyone know how I can get this to stop happening?

Logger: bellows.zigbee.application
Source: /usr/local/lib/python3.11/site-packages/bellows/zigbee/application.py:643
First occurred: 9:27:55 AM (3 occurrences)
Last logged: 9:28:19 AM

ControllerApplication reset unsuccessful: TimeoutError()
Traceback (most recent call last):
  File "/usr/local/lib/python3.11/site-packages/bellows/ezsp/protocol.py", line 183, in command
    return await future
           ^^^^^^^^^^^^
asyncio.exceptions.CancelledError

The above exception was the direct cause of the following exception:

Traceback (most recent call last):
  File "/usr/local/lib/python3.11/site-packages/bellows/zigbee/application.py", line 640, in _reset_controller_loop
    await self._reset_controller()
  File "/usr/local/lib/python3.11/site-packages/bellows/zigbee/application.py", line 661, in _reset_controller
    await self.connect()
  File "/usr/local/lib/python3.11/site-packages/bellows/zigbee/application.py", line 133, in connect
    self._ezsp = await bellows.ezsp.EZSP.initialize(self.config)
                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.11/site-packages/bellows/ezsp/__init__.py", line 168, in initialize
    await ezsp.version()
  File "/usr/local/lib/python3.11/site-packages/bellows/ezsp/__init__.py", line 191, in version
    ver, stack_type, stack_version = await self._command(
                                     ^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.11/site-packages/bellows/ezsp/protocol.py", line 182, in command
    async with asyncio_timeout(EZSP_CMD_TIMEOUT):
  File "/usr/local/lib/python3.11/asyncio/timeouts.py", line 111, in __aexit__
    raise TimeoutError from exc_val
TimeoutError

and

Logger: homeassistant
Source: /usr/src/homeassistant/homeassistant/runner.py:137
First occurred: 9:28:45 AM (1 occurrences)
Last logged: 9:28:45 AM

Error doing job: Task exception was never retrieved
Traceback (most recent call last):
  File "/usr/local/lib/python3.11/site-packages/bellows/ezsp/protocol.py", line 183, in command
    return await future
           ^^^^^^^^^^^^
asyncio.exceptions.CancelledError

The above exception was the direct cause of the following exception:

Traceback (most recent call last):
  File "/usr/local/lib/python3.11/site-packages/bellows/ezsp/v8/__init__.py", line 51, in pre_permit
    await self.setPolicy(
  File "/usr/local/lib/python3.11/site-packages/bellows/ezsp/protocol.py", line 182, in command
    async with asyncio_timeout(EZSP_CMD_TIMEOUT):
  File "/usr/local/lib/python3.11/asyncio/timeouts.py", line 111, in __aexit__
    raise TimeoutError from exc_val
TimeoutError

and

Logger: bellows.uart
Source: /usr/local/lib/python3.11/site-packages/bellows/uart.py:167
First occurred: 9:26:50 AM (9 occurrences)
Last logged: 9:28:54 AM

Received an unexpected reset: <NcpResetCode.RESET_SOFTWARE: 11>

Suggest follow https://www.home-assistant.io/integrations/zha#reporting-issues to report the problem symtoms as an ZHA issue to Home Assistant core repository → https://github.com/home-assistant/core/issues