No /dev/serial/by-id/ entries after latest update

After installing OS 10 and Core 4.5 I’m not seeing any of my USB devices. This is breaking my Z-Wave and Zigbee integrations. I tried reverting to backups but the problem persists even in the backed up versions. Did the latest updates change something in how USB devices are discovered on RPi? I don’t understand why it doesn’t work after the downgrade either.

As it stands now, I’ve gone back up to the newest versions and tried adding the usb: directive to my configuration, but still not seeing my devices. Anyone have any ideas? I found a couple other people who may be facing the same issue, but not seeing anything helpful to resolve the problem yet.

I had the same problem today morning when I updated my Raspbian OS. The /dev/serial/by-id directory was gone with the entity in it with the name usb-ITead_Sonoff_Zigbee_3.0_USB_Dongle_Plus_<device_serial_number>-if00-port0

Quick solution: create a symlink from existing by-path directory entity to the original by-id directory like this:
mkdir -p /dev/serial/by-id && ln -s /dev/serial/by-path/platform-fd500000.pcie-pci-0000\:01\:00.0-usb-0\:1.4\:1.0-port0 /dev/serial/by-id/usb-ITead_Sonoff_Zigbee_3.0_USB_Dongle_Plus_<device_serial_number>-if00-port0

Longer story: After some searching and root cause analysis I found nothing what happened exactly within the OS update. Tried different solutions what worked for others (this and this), but unfortunately not for me… So no by-id directory anymore. What I found is a /dev/serial/by-path which contains a cryptic entity, but after some lsusb and dmesg inspection, I found that this is the same Zigbee dongle what was there before in the by-id directory. So I tried to add this new path to the docker-compose.yaml (I am using a containerized version ot HA), but turned out I cannot do this because of the character in the filename ( “:” aka colon character). At the end, I found a simple workaround on a forum with the same docker issue: just create a symlink to hide the cryptic filename. Finally, simply created the missing entity in the by-id directory with a symlink, so I have to change nothing at other places (like docker-compose.yaml or HA settings) related to the dongle device path. Now it works fine again.

PS: If somebody knows what happened exactly with the OS update which changed this default behavior, please write it down.

I got this error two days ago when doing a trivial upgrade of my Debian (running HA supervised).

I found out when the package udev was upgraded to 247.3-7+deb11u2 in bullseye stable, a regression was introduced. It is already reported here:
https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=1035094

Thus, I guess it will be resolved eventually.

I fixed it by changing the path in zigbee2mqtt configuration to /dev/ttyUSB0. It is not an optimal solution but works as long as the device number is not changed.

I also just ran into this after updating Debian… I found this post: Reddit - Dive into anything which helped resolve it after making the mentioned changes and rebooting my system.

Had this exact same problems and was able to resolve it, thanks to your link!

hello having exactly same problem. I did sucesfully got back symlink by modifying /usr/lib/udev/rules.d/60-serial.rules however the Sonoff Zigbee dongle still does not work in HA - zigbee2mqtt

The error message I get is quite generic
Zigbee2MQTT:error 2023-07-17 20:43:33: Error while starting zigbee-herdsman
Zigbee2MQTT:error 2023-07-17 20:43:33: Failed to start zigbee
Zigbee2MQTT:error 2023-07-17 20:43:33: Check Zigbee2MQTT fails to start | Zigbee2MQTT for possible solutions
Zigbee2MQTT:error 2023-07-17 20:43:33: Exiting…
Zigbee2MQTT:error 2023-07-17 20:43:34: SyntaxError: Unexpected token in JSON at position 0
at JSON.parse ()
at Function.open (/app/node_modules/zigbee-herdsman/src/controller/database.ts:19:35)
at Controller.start (/app/node_modules/zigbee-herdsman/src/controller/controller.ts:125:34)
at Zigbee.start (/app/lib/zigbee.ts:58:47)
at Controller.start (/app/lib/controller.ts:101:27)
at start (/app/index.js:109:5)

This is what I have just done after the update… Any issues with it so far?