ZBT-2 makes OTBR-app crash. ZBT-2 broken?

I received my brand new ZBT-2 yesterday. The ZBT-2 is advertised as ‘The easiest way to start with Thread’. Unfortunately, I can not get it to work after a couple of hours of troubleshooting.

I have HAOS running as a VM on my proxmox-server. Things like Z2M are running fine.
Both HAOS and HA are the latest stable.

I flashed the ZBT-2 multiple times with the two latest firmware-releases:

zbt2_openthread_rcp_2.7.2.0
zbt2_openthread_rcp_2.4.4.0

In the OpenThread Border Router app, this is the configuration:

I deleted and reinstalled the otbr-app, otbr-integration and thread integration multiple times. I rebooted HA and the host multiple times during this process.

I tried multiple usb-cables, including the one that came with the ZBT-2. I tried multiple usb-ports, both usb2.0 and usb 3.0. I tried using a usb 2.0 hub instead of plugging the ZBT-2 directly into the server.

But whenever I start the otbr-app it runs for a couple of seconds, then quits with a bunch of error messages like:

Traceback (most recent call last):
  File "/usr/local/lib/python3.13/dist-packages/universal_silabs_flasher/spinel.py", line 260, in send_frame
    return await asyncio.shield(future)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
asyncio.exceptions.CancelledError
The above exception was the direct cause of the following exception:
Traceback (most recent call last):
  File "/usr/local/bin/migrate_otbr_settings.py", line 228, in <module>
    asyncio.run(main())
    ~~~~~~~~~~~^^^^^^^^
  File "/usr/lib/python3.13/asyncio/runners.py", line 195, in run
    return runner.run(main)
           ~~~~~~~~~~^^^^^^
  File "/usr/lib/python3.13/asyncio/runners.py", line 118, in run
    return self._loop.run_until_complete(task)
           ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^
  File "/usr/lib/python3.13/asyncio/base_events.py", line 725, in run_until_complete
    return future.result()
           ~~~~~~~~~~~~~^^
  File "/usr/local/bin/migrate_otbr_settings.py", line 156, in main
    hwaddr = await get_adapter_hardware_addr(
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    ...<3 lines>...
    )
    ^
  File "/usr/local/bin/migrate_otbr_settings.py", line 103, in get_adapter_hardware_addr
    rsp = await protocol.send_command(
          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    ...<2 lines>...
    )
    ^
  File "/usr/local/lib/python3.13/dist-packages/universal_silabs_flasher/spinel.py", line 292, in send_command
    return await self.send_frame(frame, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.13/dist-packages/universal_silabs_flasher/spinel.py", line 259, in send_frame
    async with asyncio_timeout(timeout):
               ~~~~~~~~~~~~~~~^^^^^^^^^
  File "/usr/lib/python3.13/asyncio/timeouts.py", line 116, in __aexit__
    raise TimeoutError from exc_val
TimeoutError
[18:09:42] WARNING: otbr-agent exited with code 1 (by signal 0).

For the full log, see https://github.com/user-attachments/files/25914524/core_openthread_border_router_2026-03-11T17-25-33.216Z.log

Is my ZBT-2 defective?