Ubuntu 21.10 breaks klipper serial devices

Probably a long shot, but I figured it was worth a try to see if anyone else had noticed this issue.

Tried both an SKR 1.4 and a BTT Octopus with similar results. The USB device shows up in dmesg:

[    6.591205] usb 1-1.2: New USB device found, idVendor=1d50, idProduct=614e, bcdDevice= 1.00
[    6.591225] usb 1-1.2: New USB device strings: Mfr=1, Product=2, SerialNumber=3
[    6.591232] usb 1-1.2: Product: lpc1769
[    6.591238] usb 1-1.2: Manufacturer: Klipper
[    6.591243] usb 1-1.2: SerialNumber: 0B600113A39869AF126D405EC62000F5

and lsusb:

Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 001 Device 003: ID 1d50:614e OpenMoko, Inc. lpc1769
Bus 001 Device 002: ID 2109:3431 VIA Labs, Inc. Hub
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub

but there is no entry in /dev/serial/by-id and no /dev/ttyACM0 device either.

The only hint I’ve been able to find is that systemd-udevd seems to be throwing a bunch of errors:

Oct 23 13:28:50 Himari systemd-udevd[931]: /usr/lib/udev/rules.d/90-pi-bluetooth.rules:14 Invalid value "/bin/sh -c 'ALIASES=/proc/device-tree/aliases; if cmp -s $ALIASES/uart0 $ALIASES/serial0; then echo 0;elif cmp -s $ALIASES/uart0 $ALIASES/serial1; then echo 1; else exit 1; fi'" for PROGRAM (char 58: invalid substitution type), ignoring, but please fix it.
Oct 23 13:28:50 Himari systemd-udevd[931]: /usr/lib/udev/rules.d/90-pi-bluetooth.rules:27 Invalid value "/bin/sh -c 'ALIASES=/proc/device-tree/aliases; if [ -e /dev/ttyAMA0 ]; then exit 1; elif cmp -s $ALIASES/uart0 $ALIASES/serial0; then echo 0;elif cmp -s $ALIASES/uart0 $ALIASES/serial1; then echo 1; else exit 1; fi'" for PROGRAM (char 97: invalid substitution type), ignoring, but please fix it.
Oct 23 13:28:50 Himari systemd-udevd[931]: /usr/lib/udev/rules.d/90-pi-bluetooth.rules:38 Invalid value "/bin/sh -c 'ALIASES=/proc/device-tree/aliases; if cmp -s $ALIASES/uart1 $ALIASES/serial0; then echo 0; elif cmp -s $ALIASES/uart1 $ALIASES/serial1; then echo 1; else exit 1; fi '" for PROGRAM (char 58: invalid substitution type), ignoring, but please fix it.

But I’m not sure if they’re related.

Turns out a bunch of raspberry pi drivers were moved to a new package for 21.10, and there was no check in the upgrader to see if you needed the package.

to fix:

sudo apt install linux-modules-extra-raspi
sudo reboot