No apologies necessary, except those from me to you. The combination you being “blind” and my being “ignorant” is not a good combination
I’ve tried
SUBSYSTEM==“tty”, ATTRS{idVendor}==“1209”, ATTRS{idProduct}==“7332”, ATTRS{serial}==“123456789012”, ENV{ID_USB_INTERFACE_NUM}=="00", MODE=“0666”, SYMLINK+=“buspirate-text”
SUBSYSTEM==“tty”, ATTRS{idVendor}==“1209”, ATTRS{idProduct}==“7332”, ATTRS{serial}==“123456789012”, ENV{ID_USB_INTERFACE_NUM}=="02", MODE=“0666”, SYMLINK+=“buspirate-binary”
and
SUBSYSTEM==“tty”, ATTRS{idVendor}==“1209”, ATTRS{idProduct}==“7332”, ATTRS{serial}==“123456789012”, ATTRS{bInterfaceNumber}=="00", MODE=“0666”, SYMLINK+=“buspirate-text”
SUBSYSTEM==“tty”, ATTRS{idVendor}==“1209”, ATTRS{idProduct}==“7332”, ATTRS{serial}==“123456789012”, ATTRS{bInterfaceNumber}=="02", MODE=“0666”, SYMLINK+=“buspirate-binary”
with
sudo udevadm control --reload-rules && sudo udevadm trigger
and neither “buspirate-binary” nor “buspirate-text” appear in /dev
The apparently “interesting bits” of the udevadm info outputs are given below, where the differences between ttyACM0/1 are indicated (as best I can in this markdown) “<=== …difference”:
looking at device '/devices/pci0000:00/0000:00:01.2/0000:02:00.0/0000:03:08.0/0000:05:00.1/usb1/1-5/1-5:1.0/tty/ttyACM0': <=== ...usb1/1-5/1-5:1.2/tty/ttyACM1'
KERNEL=="ttyACM0" <=== ... "ttyACM1"
SUBSYSTEM=="tty"
DRIVER==""
looking at parent device '/devices/pci0000:00/0000:00:01.2/0000:02:00.0/0000:03:08.0/0000:05:00.1/usb1/1-5/1-5:1.0': <=== ...usb1/1-5/1-5:1.2':
KERNELS=="1-5:1.0"
SUBSYSTEMS=="usb"
DRIVERS=="cdc_acm"
ATTRS{authorized}=="1"
ATTRS{bAlternateSetting}==" 0"
ATTRS{bInterfaceClass}=="02"
ATTRS{bInterfaceNumber}=="00" <=== ... "02"
ATTRS{bInterfaceProtocol}=="00"
ATTRS{bInterfaceSubClass}=="02"
ATTRS{bNumEndpoints}=="01"
ATTRS{bmCapabilities}=="2"
ATTRS{iad_bFirstInterface}=="00" <=== ... "02"
ATTRS{iad_bFunctionClass}=="02"
ATTRS{iad_bFunctionProtocol}=="00"
ATTRS{iad_bFunctionSubClass}=="02"
ATTRS{iad_bInterfaceCount}=="02"
ATTRS{interface}=="Bus Pirate CDC"
ATTRS{supports_autosuspend}=="1"
looking at parent device '/devices/pci0000:00/0000:00:01.2/0000:02:00.0/0000:03:08.0/0000:05:00.1/usb1/1-5':
KERNELS=="1-5"
...
ATTRS{urbnum}=="724" <=== ... "728"
and
P: /devices/pci0000:00/0000:00:01.2/0000:02:00.0/0000:03:08.0/0000:05:00.1/usb1/1-5/1-5:1.0/tty/ttyACM0 <=== ... usb1/1-5/1-5:1.2/tty/ttyACM1
N: ttyACM0 <=== ... ttyACM1
S: serial/by-id/usb-Bus_Pirate_Bus_Pirate_5_123456789012-if00 <=== ... -if02
S: serial/by-path/pci-0000:05:00.1-usb-0:5:1.0 <=== ... -usb-0:5:1.2
E: DEVLINKS=/dev/serial/by-id/usb-Bus_Pirate_Bus_Pirate_5_123456789012-if00 /dev/serial/by-path/pci-0000:05:00.1-usb-0:5:1.0 <=== ...if02 and ... usb-0:5:1.2
E: DEVNAME=/dev/ttyACM0 <=== ... ttyACM01
E: DEVPATH=/devices/pci0000:00/0000:00:01.2/0000:02:00.0/0000:03:08.0/0000:05:00.1/usb1/1-5/1-5:1.0/tty/ttyACM0 <=== ... usb1/1-5/1-5:1.2/tty/ttyACM1
E: ID_BUS=usb
E: ID_MM_CANDIDATE=1
E: ID_MODEL=Bus_Pirate_5
E: ID_MODEL_ENC=Bus\x20Pirate\x205
E: ID_MODEL_ID=7332
E: ID_PATH=pci-0000:05:00.1-usb-0:5:1.0
E: ID_PATH_TAG=pci-0000_05_00_1-usb-0_5_1_0
E: ID_PCI_CLASS_FROM_DATABASE=Serial bus controller
E: ID_PCI_INTERFACE_FROM_DATABASE=XHCI
E: ID_PCI_SUBCLASS_FROM_DATABASE=USB controller
E: ID_REVISION=0101
E: ID_SERIAL=Bus_Pirate_Bus_Pirate_5_123456789012
E: ID_SERIAL_SHORT=123456789012
E: ID_TYPE=generic
E: ID_USB_CLASS_FROM_DATABASE=Miscellaneous Device
E: ID_USB_DRIVER=cdc_acm
E: ID_USB_INTERFACES=:020200:0a0000:080650:
E: ID_USB_INTERFACE_NUM=00 <=== ... 02
E: ID_USB_PROTOCOL_FROM_DATABASE=Interface Association
E: ID_VENDOR=Bus_Pirate
E: ID_VENDOR_ENC=Bus\x20Pirate
E: ID_VENDOR_FROM_DATABASE=InterBiometrics
E: ID_VENDOR_ID=1209
E: MAJOR=166
E: MINOR=0 <=== ...1
E: SUBSYSTEM=tty
E: TAGS=:systemd: