I agree that making rule match using VID/PID is not a definite solution. But you can much multiple devices in same rule without targeting blindly all USB devices the way you did. Example using DRIVER name (usb-storage, usbhid,..) or KERNEL name (tty*, sd*,..) even using minimal regex (sd[a-z][0-9]*, usb*).
You should look for similarities in their attributes.
- Remove all those devices
Save the current list of devices in /dev
ls /dev > /tmp/dev_list0.txt
Plug one of the target devices
Save the list of devices in another file
ls /dev > /tmp/dev_list.txt
Compare files, > added device, < removed device
$ colordiff /tmp/dev_list0.txt /tmp/dev_list.txt
85a86,87
> sdc
> serial
89a92,93
> sg4
> sg5
93a98
> sr1
194a200,201
> ttyUSB0
> ttyUSB1
This is a 3G modem.
Check the attribute for all interfaces you need, example:
udevadm info --attribute-walk --name=/dev/ttyUSB0
Do the same for all devices you want. If you can't figure out how, please upload their udevadm info --attribute-walk --name=... output and link them to your question.
Note that, not all USB devices create a node in /dev. Some you have look for them in SYSFS tree /sys. Then check their attributes using --path
udevadm info --attribute-walk --path=...
Using same steps as above you can check which device nodes created by monitoring udev events:
udevadm monitor