I am using ubuntu studio 19.04 and I have a 16 port powered usb hub and 16 usb sound cards.
This much works fine - they are all listed when i type 'aplay -l' and i can get sound out of each of them.
SUBSYSTEM!="sound", GOTO="my_usb_audio_end"
ACTION!="add", GOTO="my_usb_audio_end"
DEVPATH=="/devices/pci0000:00/0000:00:1a.0/usb1/1-1/1-1.2/1-1.2.3/1-1.2.3.4/1-1.2.3.4:1.0/sound/card?", ATTR{id}="USB_1"
DEVPATH=="/devices/pci0000:00/0000:00:1a.0/usb1/1-1/1-1.2/1-1.2.3/1-1.2.3.3/1-1.2.3.3:1.0/sound/card?", ATTR{id}="USB_2"
DEVPATH=="/devices/pci0000:00/0000:00:1a.0/usb1/1-1/1-1.2/1-1.2.3/1-1.2.3.2/1-1.2.3.2:1.0/sound/card?", ATTR{id}="USB_3"
DEVPATH=="/devices/pci0000:00/0000:00:1a.0/usb1/1-1/1-1.2/1-1.2.3/1-1.2.3.1/1-1.2.3.1:1.0/sound/card?", ATTR{id}="USB_4"
DEVPATH=="/devices/pci0000:00/0000:00:1a.0/usb1/1-1/1-1.2/1-1.2.4/1-1.2.4.1/1-1.2.4.1:1.0/sound/card?", ATTR{id}="USB_5"
DEVPATH=="/devices/pci0000:00/0000:00:1a.0/usb1/1-1/1-1.2/1-1.2.4/1-1.2.4.2/1-1.2.4.2:1.0/sound/card?", ATTR{id}="USB_6"
DEVPATH=="/devices/pci0000:00/0000:00:1a.0/usb1/1-1/1-1.2/1-1.2.4/1-1.2.4.3/1-1.2.4.3:1.0/sound/card?", ATTR{id}="USB_7"
DEVPATH=="/devices/pci0000:00/0000:00:1a.0/usb1/1-1/1-1.2/1-1.2.4/1-1.2.4.4/1-1.2.4.4:1.0/sound/card?", ATTR{id}="USB_8"
DEVPATH=="/devices/pci0000:00/0000:00:1a.0/usb1/1-1/1-1.2/1-1.2.1/1-1.2.1.2/1-1.2.1.2:1.0/sound/card?", ATTR{id}="USB_9"
DEVPATH=="/devices/pci0000:00/0000:00:1a.0/usb1/1-1/1-1.2/1-1.2.1/1-1.2.1.1/1-1.2.1.1:1.0/sound/card?", ATTR{id}="USB_10"
DEVPATH=="/devices/pci0000:00/0000:00:1a.0/usb1/1-1/1-1.2/1-1.2.1/1-1.2.1.3/1-1.2.1.3:1.0/sound/card?", ATTR{id}="USB_11"
DEVPATH=="/devices/pci0000:00/0000:00:1a.0/usb1/1-1/1-1.2/1-1.2.4/1-1.2.4.3/1-1.2.4.3:1.0/sound/card?", ATTR{id}="USB_12"
DEVPATH=="/devices/pci0000:00/0000:00:1a.0/usb1/1-1/1-1.2/1-1.2.4/1-1.2.4.4/1-1.2.4.4:1.0/sound/card?", ATTR{id}="USB_13"
DEVPATH=="/devices/pci0000:00/0000:00:1a.0/usb1/1-1/1-1.2/1-1.2.1/1-1.2.1.2/1-1.2.1.2:1.0/sound/card?", ATTR{id}="USB_14"
DEVPATH=="/devices/pci0000:00/0000:00:1a.0/usb1/1-1/1-1.2/1-1.2.1/1-1.2.1.1/1-1.2.1.1:1.0/sound/card?", ATTR{id}="USB_15"
DEVPATH=="/devices/pci0000:00/0000:00:1a.0/usb1/1-1/1-1.2/1-1.2.1/1-1.2.1.3/1-1.2.1.3:1.0/sound/card?", ATTR{id}="USB_16"
LABEL="my_usb_audio_end"
and this sort of works, but only for the first 9 usb devices I plug in.
The strange thing is that it doesn't matter which 9 - I can plug any of the 16 cards into any of the 16 ports and the first 9 will always follow the udev naming rule, but after that it reverts to the default naming scheme.