Conbee 2 and ttyACMx

I have been using Conbee 2 for a long time without any problems, but after adding a Matter/ZBT-2, my Conbee change from ttyACM1 to ttyACM2 after 4-6 hours and after 1 hour back again to ttyACM1.
If I remove the Conbee for 10 seconds and do the following in Synology:

docker run -d
–name=homeassistant
–privileged
–device /dev/ttyACM1:/dev/ttyACM1
-v /volume1/docker/homeassistant:/config
-v /etc/localtime:/etc/localtime:ro
–network=host
homeassistant/home-assistant:latest

and

/sbin/modprobe usbserial
/sbin/modprobe ftdi_sio
/sbin/modprobe cdc-acm
chmod 555 /dev/ttyACM1
chmod 555 /dev/ttyUSB1

the Conbee is back on ttyACM1 and works again.

I am running the Home Assistant on a Synology DS220+/Container, so the way to solve this by /dev/serial/by-id is not possible.

Anyone knows how to solve this problem?

The virtual ports may move. By ID makes it where the device is found by its ID not its virtual USB path and sidesteps the issue entirety.

So if by ID is not possibe then you’re going to have a really bad time. Why is it not possible?

Same reason they recommend by I’d for a zwjs install on a virtual machine. It jumps.

Whats this say on the synology

ls -l /dev/serial/by-id
ls -l /dev/serial/by-path
udevadm info -a -n /dev/ttyACM1 | grep -iE 'serial|idVendor|idProduct'
lsusb

(if it’s there but the symlink isn’t created by synology (the actual problem on dsm) the use udev and make your own at boot and use that)

I have read that my Synology cannot use the “/dev/serial/by-id”.
I’m not able to write the configuration myself, but I wounder why it is not possible to set it up, so the HA can connect to the Conbee, witch always can bee seen by the command “lsusb”?

Below is the output of what you asked about:

root@SynElkiaer3:/dev# ls -l /dev/serial/by-id
ls: cannot access ‘/dev/serial/by-id’: No such file or directory

root@SynElkiaer3:/dev# ls -l /dev/serial/by-path
ls: cannot access ‘/dev/serial/by-path’: No such file or directory

root@SynElkiaer3:/dev# udevadm info -a -n /dev/ttyACM1 | grep -iE ‘serial|idVendor|idProduct’
device node not found

root@SynElkiaer3:/dev# lsusb
|__usb1 1d6b:0002:0404 09 2.00 480MBit/s 0mA 1IF (Linux 4.4.302+ xhci-hcd xHCI Host Controller 0000:00:15.0) hub
|__1-1 303a:831a:0101 ef 2.00 12MBit/s 100mA 2IFs (Nabu Casa ZBT-2 E072A1D799F0)
|__1-2 1cf1:0030:0100 02 2.01 12MBit/s 100mA 2IFs (dresden elektronik ingenieurtechnik GmbH ConBee II DE2677349)
|__1-4 f400:f400:0100 00 2.00 480MBit/s 200mA 1IF (Synology DiskStation 650025E89FEF6053)
|__usb2 1d6b:0003:0404 09 3.00 5000MBit/s 0mA 1IF (Linux 4.4.302+ xhci-hcd xHCI Host Controller 0000:00:15.0) hub

And here, exactly 1 hour:
root@SynElkiaer3:/dev# ls -lag ttyA*
crw------- 1 root 166, 0 Sep 29 10:46 ttyACM0
crw-rw---- 1 root 166, 2 Sep 29 18:48 ttyACM2
root@SynElkiaer3:/dev# ls -lag ttyA*
crw------- 1 root 166, 0 Sep 29 10:46 ttyACM0
crw-rw---- 1 root 166, 1 Sep 29 19:48 ttyACM1

Your output actually shows that this is solvable.

“lsusb” is identifying the ConBee uniquely as:

“1cf1:0030 … ConBee II DE2677349”

So the persistent hardware identity exists. What your Synology does not provide is the normal “/dev/serial/by-id” symlink tree.

Your two samples also show the actual problem very clearly:

“ttyACM2” at 18:48
“ttyACM1” at 19:48

The device is not changing. The kernel-assigned tty number is.

The usual Linux solution is “/dev/serial/by-id”, but on Synology you can LIKELY create your own stable device symlink with a udev rule based on the ConBee serial number “DE2677349”.

Something along these lines:

KERNEL==“ttyACM*”, ATTRS{idVendor}==“1cf1”, ATTRS{idProduct}==“0030”, ATTRS{serial}==“DE2677349”, SYMLINK+=“conbee2”

That should give you a stable “/dev/conbee2” regardless of whether the kernel calls it “ttyACM1” or “ttyACM2” this time.

Then map “/dev/conbee2” into the Home Assistant container instead of mapping “/dev/ttyACM1”.

Your “udevadm” command failed because “/dev/ttyACM1” apparently did not exist at the moment you ran it. Run it against whichever “ttyACM*” currently belongs to the ConBee and we can verify the exact attributes before creating the rule.

I have worked a little further on what you have written and based on my knowledge.
First, I have made a rule with what you have written (KERNEL=="… etc):
root@SynElkiaer3:/usr/lib/udev/rules.d# vi /usr/lib/udev/rules.d/99-conbee.rules

Here after a symlink:
root@SynElkiaer3:/dev# ls -lag conb*
lrwxrwxrwx 1 root 7 Sep 29 19:48 conbee2 → ttyACM1

So Reload:
sudo udevadm control --reload-rules
sudo udevadm trigger

Corrected my Task Scheduler to the following:
docker run -d
–name=homeassistant
–privileged
–device /dev/conbee2:/dev/conbee2
-v /volume1/docker/homeassistant:/config
-v /etc/localtime:/etc/localtime:ro
–network=host
homeassistant/home-assistant:latest

After this, I have run my reboot procedure:

  1. Fjernet og sat Conbee i USB forlængerledningen.
  2. Kørt:
    docker run -d
    –name=homeassistant
    –privileged
    –device /dev/conbee2:/dev/conbee2
    -v /volume1/docker/homeassistant:/config
    -v /etc/localtime:/etc/localtime:ro
    –network=host
    homeassistant/home-assistant:latest
  3. Kørt:
    /sbin/modprobe usbserial
    /sbin/modprobe ftdi_sio
    /sbin/modprobe cdc-acm
    chmod 555 /dev/ttyACM1
    chmod 555 /dev/ttyUSB1
  4. Stopped and started the container (home assistant) in my Synology Container Manager.

Hope I’ve done what I need to do.

Nope :frowning: , at 4.15 AM to 5.15 AM lost connection to the Conbee - and again 6.40 AM. At 6.40 AM (about 10 minuts later) I just remove the Conbee and connect it again after 10 second and it was up running again.

I have now run the above mention point 3 and 4, no restart, and will see what happens now.

Right now when I was sitting with the HA and it was updating some history (Temp data), HA did suddenly restart. After the restart the Conbee had change to ttyACM2.
elkiaer@SynElkiaer3:/dev$ ls -lag ttyA*
crw------- 1 root 166, 0 Sep 29 21:26 ttyACM0
crw-rw---- 1 root 166, 2 Sep 30 12:48 ttyACM2
and the connection to the Conbee was not present.

So what I have done to solve the problem has not helped :-(.

It seemed that something make the HA to restart (maybe a crash) and because of this, the Conbee “must” change the ttyACM2.
Anyway, the changes I had made, should it not compensate for the ttyACMx change?

I have just remove and inserted the Conbee and now its on ttyACM1 again, but still no connection before a HA restart.

Reading some related docs will take a bit. Also I think the event you’re describing happened lower than ha making the usb port reset (and potentially recycling ha)

Try this on your Nas.

docker inspect homeassistant \
  --format 'RestartCount={{.RestartCount}} OOMKilled={{.State.OOMKilled}} ExitCode={{.State.ExitCode}} Error={{.State.Error}} StartedAt={{.State.StartedAt}} FinishedAt={{.State.FinishedAt}}'

What were asking is why did you restart man?

Just came home after half a day with my 2½ years old grandchild :slight_smile:

Below is the output what I should try:
root@SynElkiaer3:/dev# docker inspect homeassistant \

–format ‘RestartCount={{.RestartCount}} OOMKilled={{.State.OOMKilled}} ExitCode={{.State.ExitCode}} Error={{.State.Error}} StartedAt={{.State.StartedAt}} FinishedAt={{.State.FinishedAt}}’

RestartCount=0 OOMKilled=false ExitCode=0 Error= StartedAt=2026-09-29T19:30:36.228052723Z FinishedAt=2026-09-29T19:30:23.216374235Z

My guess is that my Nass is somehow changing the ttyACM1 to ttyACM2 and that maybe why the HA was restarting.

I have had the dropout while I have not been at home, as you can see below.

As you can see the dropouts are approximate 1 hour, the short dropout is when I have done the above mention proceder to get the Conbee back to ttyACM1.
Below you can see the logfile for the period just after 3.00 PM. Just before the dropouts, that can been seen on the chart there are errors in the logfile, Maybe that can help.

2026-09-30 14:30:17.084 ERROR (MainThread) [aiohttp.server] Error handling request from 66.132.195.73

Traceback (most recent call last):

File “/usr/local/lib/python3.14/site-packages/aiohttp/web_protocol.py”, line 433, in data_received

messages, upgraded, tail = self._parser.feed_data(data)

~~~~~~~~~~~~~~~~~~~~~~^^^^^^

File “aiohttp/_http_parser.pyx”, line 687, in aiohttp._http_parser.HttpParser.feed_data

aiohttp.http_exceptions.BadHttpMessage: 400, message:

Pause on PRI/Upgrade:

b’\x00\x00\x18\x04\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x04\x00\x00Bh\x00\x06\x00\x04\x00\x00\x00\x03\x00\x00\x00\n’

^

2026-09-30 15:07:52.347 WARNING (MainThread) [homeassistant.helpers.entity] Updating state for sun.sun (<class ‘homeassistant.components.sun.entity.Sun’>) took 0.691 seconds. Please create a bug report at Issues · home-assistant/core · GitHub

2026-09-30 15:08:17.765 ERROR (MainThread) [kasa.smart.smartdevice] Error querying 192.168.0.211 for modules ‘Time, AutoOff, DeviceModule’ after first update: ('Unable to query the device: 192.168.0.211: ', TimeoutError())

2026-09-30 15:08:30.059 WARNING (MainThread) [homeassistant.helpers.entity] Updating state for sensor.test_maling_current_consumption (<class ‘homeassistant.components.tplink.sensor.TPLinkSensorEntity’>) took 5.153 seconds. Please create a bug report at Issues · home-assistant/core · GitHub

2026-09-30 15:08:32.556 ERROR (MainThread) [homeassistant.components.synology_dsm.coordinator] Error fetching SynElkiaer3 SynologyDSMCentralUpdateCoordinator data: Error communicating with API: {‘api’: ‘SYNO.Core.System.Utilization’, ‘code’: 1052, ‘reason’: ‘Unknown’, ‘details’: {‘err_line’: 194, ‘err_msg’: ‘Transmition get failed Result.’}}

2026-09-30 15:08:32.625 ERROR (MainThread) [reolink_aio.baichuan.baichuan] Baichuan host 192.168.0.48: lost event subscription after 52.58 s, last reestablish 55.88 s ago

2026-09-30 15:08:32.626 ERROR (MainThread) [kasa.smart.smartdevice] Error querying 192.168.0.78 for modules ‘Time, AutoOff, DeviceModule’ after first update: ('Unable to query the device: 192.168.0.78: ', TimeoutError())

2026-09-30 15:08:32.657 ERROR (MainThread) [kasa.smart.smartdevice] Error querying 192.168.0.134 for modules ‘Time, AutoOff, Cloud, DeviceModule, Energy, PowerProtection’ after first update: ('Unable to query the device: 192.168.0.134: ', TimeoutError())

2026-09-30 15:08:32.658 ERROR (MainThread) [kasa.smart.smartdevice] Error querying 192.168.0.60 for modules ‘Time, DeviceModule’ after first update: ('Unable to query the device: 192.168.0.60: ', TimeoutError())

2026-09-30 15:08:32.659 ERROR (MainThread) [kasa.smart.smartdevice] Error querying 192.168.0.29 for modules ‘Time, AutoOff, DeviceModule, Energy, PowerProtection’ after first update: ('Unable to query the device: 192.168.0.29: ', TimeoutError())

2026-09-30 15:08:32.660 ERROR (MainThread) [kasa.smart.smartdevice] Error querying 192.168.0.120 for modules ‘Time, AutoOff, DeviceModule’ after first update: ('Unable to query the device: 192.168.0.120: ', TimeoutError())

2026-09-30 15:08:32.660 ERROR (MainThread) [kasa.smart.smartdevice] Error querying 192.168.0.221 for modules ‘Time, AutoOff, DeviceModule’ after first update: ('Unable to query the device: 192.168.0.221: ', TimeoutError())

2026-09-30 15:08:32.819 ERROR (MainThread) [homeassistant.components.brother.coordinator] Timeout fetching brother data

2026-09-30 15:08:32.821 ERROR (MainThread) [kasa.smart.smartdevice] Error querying 192.168.0.211 individually for module query ‘get_device_time’ after first update: ('Unable to query the device: 192.168.0.211: ', TimeoutError())

2026-09-30 15:08:32.822 ERROR (MainThread) [homeassistant.components.foscam] Timeout fetching foscam data

2026-09-30 15:08:32.823 ERROR (MainThread) [custom_components.tapo.coordinators] Error fetching tapo data: Unexpected exception:

2026-09-30 15:08:36.780 WARNING (MainThread) [kasa.smart.smartdevice] Error processing Time for device 192.168.0.211, module will be unavailable: get_device_time for Time (error_code=INTERNAL_QUERY_ERROR)

2026-09-30 15:08:41.274 WARNING (MainThread) [homeassistant.components.go2rtc.server] Go2rtc server didn’t terminate gracefully. Killing it

2026-09-30 15:08:41.274 WARNING (MainThread) [homeassistant.components.go2rtc.server] Go2rtc unexpectedly stopped, server log:

2026-09-30 15:08:41.274 WARNING (MainThread) [homeassistant.components.go2rtc.server] 13:07:01.388 INF go2rtc platform=linux/amd64 revision=b5948cf version=1.9.14

2026-09-30 15:08:41.274 WARNING (MainThread) [homeassistant.components.go2rtc.server] 13:07:01.396 INF config path=/tmp/go2rtc-w6gq42zd/go2rtc_vv0hhmwo.yaml

2026-09-30 15:08:41.274 WARNING (MainThread) [homeassistant.components.go2rtc.server] 13:07:01.397 INF [rtsp] listen addr=127.0.0.1:18554

2026-09-30 15:08:41.274 WARNING (MainThread) [homeassistant.components.go2rtc.server] 13:07:01.398 INF [webrtc] listen tcp addr=[::]:18555

2026-09-30 15:08:41.274 WARNING (MainThread) [homeassistant.components.go2rtc.server] 13:07:01.399 INF [api] listen addr=/tmp/go2rtc-w6gq42zd/go2rtc.sock

2026-09-30 15:08:45.593 WARNING (MainThread) [homeassistant.components.go2rtc.server] exit with signal: terminated

2026-09-30 15:09:55.144 WARNING (MainThread) [homeassistant.helpers.entity] Updating state for sensor.presence_sensor_fp2_9ae2_light_sensor_light_level_2 (<class ‘homeassistant.components.homekit_controller.sensor.HomeKitLightSensor’>) took 4.483 seconds. Please create a bug report at Issues · home-assistant/core · GitHub

2026-09-30 15:09:57.194 WARNING (MainThread) [homeassistant.components.media_player] Updating panasonic_viera media_player took longer than the scheduled update interval 0:00:10

2026-09-30 15:09:57.244 WARNING (MainThread) [homeassistant.helpers.entity] Update of media_player.58dx700_elkiaer_2 is taking over 10 seconds

2026-09-30 15:10:11.109 ERROR (MainThread) [kasa.smart.smartdevice] Error querying 192.168.0.29 for modules ‘Time, AutoOff, Cloud, DeviceModule, Energy, PowerProtection’ after first update: ('Unable to query the device: 192.168.0.29: ', TimeoutError())

2026-09-30 15:10:11.639 ERROR (MainThread) [kasa.smart.smartdevice] Error querying 192.168.0.134 for modules ‘Time, AutoOff, DeviceModule, Energy, PowerProtection’ after first update: ('Unable to query the device: 192.168.0.134: ', TimeoutError())

2026-09-30 15:10:15.644 ERROR (MainThread) [homeassistant.components.wiz.coordinator] Error fetching WiZ Dimmable White 528DD6 data: Failed to update device at 192.168.0.209:

2026-09-30 15:10:15.690 ERROR (MainThread) [homeassistant.components.wiz.coordinator] Error fetching WiZ Socket A14E25 data: Failed to update device at 192.168.0.158:

2026-09-30 15:10:15.690 ERROR (MainThread) [homeassistant.components.wiz.coordinator] Error fetching WiZ Dimmable White 048282 data: Failed to update device at 192.168.0.140:

2026-09-30 15:10:16.045 WARNING (MainThread) [zigpy.application] Watchdog failure

Traceback (most recent call last):

File “/usr/local/lib/python3.14/site-packages/zigpy_deconz/api.py”, line 587, in _command

return await fut

^^^^^^^^^

asyncio.exceptions.CancelledError

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

Traceback (most recent call last):

File “/usr/local/lib/python3.14/site-packages/zigpy/application.py”, line 941, in _watchdog_loop

await self.watchdog_feed()

File “/usr/local/lib/python3.14/site-packages/zigpy/application.py”, line 927, in watchdog_feed

await self._watchdog_feed()

File “/usr/local/lib/python3.14/site-packages/zigpy_deconz/zigbee/application.py”, line 88, in _watchdog_feed

await self._api.write_parameter(

NetworkParameter.watchdog_ttl, int(2 * self._watchdog_period)

)

File “/usr/local/lib/python3.14/site-packages/zigpy_deconz/api.py”, line 847, in write_parameter

await self.send_command(

…<3 lines>…

)

File “/usr/local/lib/python3.14/site-packages/zigpy_deconz/api.py”, line 506, in send_command

return await self._command(cmd, **kwargs)

^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

File “/usr/local/lib/python3.14/site-packages/zigpy_deconz/api.py”, line 586, in _command

async with asyncio_timeout(COMMAND_TIMEOUT):

~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^

File “/usr/local/lib/python3.14/asyncio/timeouts.py”, line 115, in _aexit_

raise TimeoutError from exc_val

TimeoutError

2026-09-30 15:10:38.549 ERROR (MainThread) [kasa.smart.smartdevice] Error querying 192.168.0.211 for modules ‘Time, AutoOff, Cloud, DeviceModule’ after first update: ('Unable to query the device: 192.168.0.211: ', TimeoutError())

2026-09-30 15:10:38.768 ERROR (MainThread) [homeassistant.components.wiz.coordinator] Error fetching WiZ Socket 98F6B1 data: Failed to update device at 192.168.0.228:

2026-09-30 15:10:38.922 WARNING (MainThread) [homeassistant.components.media_player] Updating denonavr media_player took longer than the scheduled update interval 0:00:10

2026-09-30 15:10:38.922 WARNING (MainThread) [homeassistant.helpers.entity] Update of media_player.marantz_sr5011 is taking over 10 seconds

2026-09-30 15:10:38.923 WARNING (MainThread) [homeassistant.components.media_player] Updating panasonic_viera media_player took longer than the scheduled update interval 0:00:10

2026-09-30 15:10:38.924 WARNING (MainThread) [homeassistant.helpers.entity] Update of media_player.58dx700_elkiaer_2 is taking over 10 seconds

2026-09-30 15:10:42.116 ERROR (MainThread) [kasa.smart.smartdevice] Error querying 192.168.0.60 for modules ‘Time, Cloud, DeviceModule, LightPreset, LightTransition’ after first update: ('Unable to query the device: 192.168.0.60: ', TimeoutError())

2026-09-30 15:10:42.123 ERROR (MainThread) [kasa.smart.smartdevice] Error querying 192.168.0.78 for modules ‘Time, AutoOff, Cloud, DeviceModule’ after first update: ('Unable to query the device: 192.168.0.78: ', TimeoutError())

2026-09-30 15:10:42.138 ERROR (MainThread) [kasa.smart.smartdevice] Error querying 192.168.0.221 for modules ‘Time, AutoOff, Cloud, DeviceModule’ after first update: ('Unable to query the device: 192.168.0.221: ', TimeoutError())

2026-09-30 15:10:42.153 ERROR (MainThread) [kasa.smart.smartdevice] Error querying 192.168.0.120 for modules ‘Time, AutoOff, Cloud, DeviceModule’ after first update: ('Unable to query the device: 192.168.0.120: ', TimeoutError())

2026-09-30 15:10:42.198 ERROR (MainThread) [kasa.smart.smartdevice] Error querying 192.168.0.134 individually for module query ‘get_device_time’ after first update: ('Unable to query the device: 192.168.0.134: ', TimeoutError())

2026-09-30 15:10:42.210 ERROR (MainThread) [kasa.smart.smartdevice] Error querying 192.168.0.29 individually for module query ‘get_device_time’ after first update: ('Unable to query the device: 192.168.0.29: ', TimeoutError())

2026-09-30 15:10:43.528 WARNING (MainThread) [homeassistant.components.denonavr.media_player] Timeout connecting to Denon AVR receiver at host 192.168.0.197. Device is unavailable

2026-09-30 15:10:49.628 WARNING (MainThread) [homeassistant.components.denonavr.media_player] Denon AVR receiver at host 192.168.0.197 is available again

2026-09-30 15:10:49.879 WARNING (MainThread) [homeassistant.config_entries] Unloading (zha) config entry. Task <Task pending name=‘None zha 01M3KVH59EQHNMTD02MBTPK101’ coro=<ZHAGatewayProxy.shutdown() running at /usr/src/homeassistant/homeassistant/components/zha/helpers.py:866> wait_for= cb=[set.remove(), set.remove()]> did not complete in time

2026-09-30 15:10:57.530 WARNING (MainThread) [kasa.smart.smartdevice] Error processing Time for device 192.168.0.134, module will be unavailable: get_device_time for Time (error_code=INTERNAL_QUERY_ERROR)

2026-09-30 15:10:57.533 WARNING (MainThread) [kasa.smart.smartdevice] Error processing Time for device 192.168.0.29, module will be unavailable: get_device_time for Time (error_code=INTERNAL_QUERY_ERROR)