HI all,
Today i receive my Sonoff lmg21 dongle.
I flashed it with sonoff dongle flasher:
I configured OTBR with this:
device: >-
/dev/serial/by-id/usb-SONOFF_SONOFF_Dongle_Lite_MG21_e631d94d89a0ef11ba889da361ce3355-if00-port0
baudrate: "460800"
flow_control: true
otbr_log_level: notice
firewall: true
nat64: false
But it still gives me errors when i start OTBR:
-----------------------------------------------------------
Add-on: OpenThread Border Router
OpenThread Border Router add-on
-----------------------------------------------------------
Add-on version: 2.15.3
You are running the latest version of this add-on.
System: Home Assistant OS 16.3 (amd64 / generic-x86-64)
Home Assistant Core: 2025.12.5
Home Assistant Supervisor: 2026.01.0
-----------------------------------------------------------
Please, share the above information when looking for help
or support in, e.g., GitHub, forums or the Discord chat.
-----------------------------------------------------------
s6-rc: info: service banner successfully started
s6-rc: info: service otbr-agent: starting
[21:17:38] INFO: Setup OTBR firewall...
[21:17:38] INFO: Migrating OTBR settings if needed...
2026-01-12 21:17:39 homeassistant asyncio[226] DEBUG Using selector: EpollSelector
2026-01-12 21:17:39 homeassistant zigpy.serial[226] DEBUG Opening a serial connection to '/dev/serial/by-id/usb-SONOFF_SONOFF_Dongle_Lite_MG21_e631d94d89a0ef11ba889da361ce3355-if00-port0' (baudrate=460800, xonxoff=False, rtscts=True)
2026-01-12 21:17:39 homeassistant serialx.platforms.serial_posix[226] DEBUG Configuring serial port '/dev/serial/by-id/usb-SONOFF_SONOFF_Dongle_Lite_MG21_e631d94d89a0ef11ba889da361ce3355-if00-port0'
2026-01-12 21:17:39 homeassistant serialx.platforms.serial_posix[226] DEBUG Configuring serial port: [0, 0, 2147486896, 0, 4100, 4100, [b'\x03', b'\x1c', b'\x7f', b'\x15', b'\x04', 0, 0, b'\x00', b'\x11', b'\x13', b'\x1a', b'\x00', b'\x12', b'\x0f', b'\x17', b'\x16', b'\x00', b'\x00', b'\x00', b'\x00', b'\x00', b'\x00', b'\x00', b'\x00', b'\x00', b'\x00', b'\x00', b'\x00', b'\x00', b'\x00', b'\x00', b'\x00']]
2026-01-12 21:17:39 homeassistant serialx.platforms.serial_posix[226] DEBUG Setting low latency mode: True
2026-01-12 21:17:39 homeassistant serialx.platforms.serial_posix[226] DEBUG Setting modem pins: ModemPins[dtr rts]
2026-01-12 21:17:39 homeassistant serialx.platforms.serial_posix[226] DEBUG Setting TIOCMBIS: 0x00000006
2026-01-12 21:17:39 homeassistant zigpy.serial[226] DEBUG Connection made: <serialx.platforms.serial_posix.PosixSerialTransport object at 0x7f151603f8d0>
2026-01-12 21:17:39 homeassistant universal_silabs_flasher.spinel[226] DEBUG Sending frame SpinelFrame(header=SpinelHeader(transaction_id=0, network_link_id=0, flag=2), command_id=<CommandID.RESET: 1>, data=b'\x02')
2026-01-12 21:17:39 homeassistant universal_silabs_flasher.spinel[226] DEBUG Sending data b'~\x80\x01\x02\xea\xf0~'
2026-01-12 21:17:39 homeassistant serialx.descriptor_transport[226] DEBUG Immediately writing b'~\x80\x01\x02\xea\xf0~'
2026-01-12 21:17:39 homeassistant serialx.descriptor_transport[226] DEBUG Sent 7 of 7 bytes
2026-01-12 21:17:41 homeassistant universal_silabs_flasher.spinel[226] DEBUG Device did not respond to reset, continuing
2026-01-12 21:17:41 homeassistant universal_silabs_flasher.spinel[226] DEBUG Sending frame SpinelFrame(header=SpinelHeader(transaction_id=3, network_link_id=0, flag=2), command_id=<CommandID.PROP_VALUE_GET: 2>, data=b'\x08')
2026-01-12 21:17:41 homeassistant universal_silabs_flasher.spinel[226] DEBUG Sending data b'~\x83\x02\x08\xbc\x9a~'
2026-01-12 21:17:41 homeassistant serialx.descriptor_transport[226] DEBUG Immediately writing b'~\x83\x02\x08\xbc\x9a~'
2026-01-12 21:17:41 homeassistant serialx.descriptor_transport[226] DEBUG Sent 7 of 7 bytes
2026-01-12 21:17:43 homeassistant universal_silabs_flasher.spinel[226] DEBUG Failed to send SpinelFrame(header=SpinelHeader(network_link_id=0, flag=2), command_id=<CommandID.PROP_VALUE_GET: 2>, data=b'\x08'), trying again in 0.10s (attempt 1 of 3)
2026-01-12 21:17:43 homeassistant universal_silabs_flasher.spinel[226] DEBUG Sending frame SpinelFrame(header=SpinelHeader(transaction_id=3, network_link_id=0, flag=2), command_id=<CommandID.PROP_VALUE_GET: 2>, data=b'\x08')
2026-01-12 21:17:43 homeassistant universal_silabs_flasher.spinel[226] DEBUG Sending data b'~\x83\x02\x08\xbc\x9a~'
2026-01-12 21:17:43 homeassistant serialx.descriptor_transport[226] DEBUG Immediately writing b'~\x83\x02\x08\xbc\x9a~'
2026-01-12 21:17:43 homeassistant serialx.descriptor_transport[226] DEBUG Sent 7 of 7 bytes
2026-01-12 21:17:45 homeassistant universal_silabs_flasher.spinel[226] DEBUG Failed to send SpinelFrame(header=SpinelHeader(network_link_id=0, flag=2), command_id=<CommandID.PROP_VALUE_GET: 2>, data=b'\x08'), trying again in 0.10s (attempt 2 of 3)
2026-01-12 21:17:45 homeassistant universal_silabs_flasher.spinel[226] DEBUG Sending frame SpinelFrame(header=SpinelHeader(transaction_id=3, network_link_id=0, flag=2), command_id=<CommandID.PROP_VALUE_GET: 2>, data=b'\x08')
2026-01-12 21:17:45 homeassistant universal_silabs_flasher.spinel[226] DEBUG Sending data b'~\x83\x02\x08\xbc\x9a~'
2026-01-12 21:17:45 homeassistant serialx.descriptor_transport[226] DEBUG Immediately writing b'~\x83\x02\x08\xbc\x9a~'
2026-01-12 21:17:45 homeassistant serialx.descriptor_transport[226] DEBUG Sent 7 of 7 bytes
2026-01-12 21:17:47 homeassistant universal_silabs_flasher.spinel[226] DEBUG Failed to send SpinelFrame(header=SpinelHeader(network_link_id=0, flag=2), command_id=<CommandID.PROP_VALUE_GET: 2>, data=b'\x08'), trying again in 0.10s (attempt 3 of 3)
2026-01-12 21:17:47 homeassistant serialx.descriptor_transport[226] DEBUG Closing at the request of the application
2026-01-12 21:17:47 homeassistant zigpy.serial[226] DEBUG Waiting for serial port to close
2026-01-12 21:17:47 homeassistant serialx.descriptor_transport[226] DEBUG Closing connection: None
2026-01-12 21:17:47 homeassistant serialx.descriptor_transport[226] DEBUG Closing file descriptor 7
2026-01-12 21:18:17 homeassistant serialx.descriptor_transport[226] DEBUG Calling protocol `connection_lost` with exc=None
2026-01-12 21:18:17 homeassistant zigpy.serial[226] DEBUG Connection lost: None
Traceback (most recent call last):
File "/usr/local/lib/python3.11/dist-packages/universal_silabs_flasher/spinel.py", line 260, in send_frame
return await asyncio.shield(future)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^
asyncio.exceptions.CancelledError
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/usr/local/bin/migrate_otbr_settings.py", line 223, in <module>
asyncio.run(main())
File "/usr/lib/python3.11/asyncio/runners.py", line 190, in run
return runner.run(main)
^^^^^^^^^^^^^^^^
File "/usr/lib/python3.11/asyncio/runners.py", line 118, in run
return self._loop.run_until_complete(task)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/lib/python3.11/asyncio/base_events.py", line 653, in run_until_complete
return future.result()
^^^^^^^^^^^^^^^
File "/usr/local/bin/migrate_otbr_settings.py", line 154, in main
hwaddr = await get_adapter_hardware_addr(
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/bin/migrate_otbr_settings.py", line 101, in get_adapter_hardware_addr
rsp = await protocol.send_command(
^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/dist-packages/universal_silabs_flasher/spinel.py", line 292, in send_command
return await self.send_frame(frame, **kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/dist-packages/universal_silabs_flasher/spinel.py", line 259, in send_frame
async with asyncio_timeout(timeout):
File "/usr/lib/python3.11/asyncio/timeouts.py", line 98, in __aexit__
raise TimeoutError
TimeoutError
[21:18:17] WARNING: otbr-agent exited with code 1 (by signal 0).
Chain OTBR_FORWARD_INGRESS (0 references)
target prot opt source destination
DROP all -- anywhere anywhere PKTTYPE = unicast
DROP all -- anywhere anywhere match-set otbr-ingress-deny-src src
ACCEPT all -- anywhere anywhere match-set otbr-ingress-allow-dst dst
DROP all -- anywhere anywhere PKTTYPE = unicast
ACCEPT all -- anywhere anywhere
otbr-ingress-deny-src
otbr-ingress-deny-src-swap
otbr-ingress-allow-dst
otbr-ingress-allow-dst-swap
Chain OTBR_FORWARD_EGRESS (0 references)
target prot opt source destination
ACCEPT all -- anywhere anywhere
[21:18:17] INFO: OTBR firewall teardown completed.
s6-svlisten1: fatal: /run/s6-rc/servicedirs/otbr-agent failed permanently or its supervisor died
s6-rc: warning: unable to start service otbr-agent: command exited 1
s6-rc: info: service legacy-cont-init: stopping
s6-rc: info: service banner: stopping
s6-rc: info: service mdns: stopping
/run/s6/basedir/scripts/rc.init: warning: s6-rc failed to properly bring all the services up! Check your logs (in /run/uncaught-logs/current if you have in-container logging) for more information.
/run/s6/basedir/scripts/rc.init: fatal: stopping the container.
Default: mDNSResponder (Engineering Build) (Dec 15 2025 09:14:53) stopping
s6-rc: info: service banner successfully stopped
s6-rc: info: service legacy-cont-init successfully stopped
s6-rc: info: service fix-attrs: stopping
s6-rc: info: service fix-attrs successfully stopped
s6-rc: info: service s6rc-oneshot-runner: stopping
s6-rc: info: service s6rc-oneshot-runner successfully stopped
[21:18:17] INFO: mDNS ended with exit code 4 (signal 0)...
s6-rc: info: service mdns successfully stopped
I already asked chatgpt and it says " **OTBR tries to talk to the RCP but doenst get a response, This confirms **the dongle is not speaking the Spinel RCP protocol
Your Sonoff Dongle Lite MG21 is not running an RCP firmware. The version you flashed (OpenThread 2.4.4) is NCP-style firmware, not RCP.
But i only have this option in the flashing tool, i am not able to choose NCP or RCP:
Does anyone know how i can fix this?

