Me deparei com quase o mesmo problema e concluí o script inspirado no sourcejedi. Eu não tive que passar o caminho do dispositivo desde udev fornece um pouco de informação através do ambiente já (use export > / tmp / vars no caso de você saber o que seu script recebe). Em particular, eu uso $ DEVNAME, que é o nome do dispositivo em / dev (por exemplo, ttyUSB0).
/etc/udev/rules.d/ftdi.rules
ACTION=="add", SUBSYSTEMS=="usb", ATTRS{idVendor}=="0403", ATTRS{idProduct}=="6014", KERNEL=="ttyUSB*" RUN+="/etc/udev/scripts/unbind_ftdi.sh"
/etc/udev/scripts/unbind_ftdi.sh
#!/bin/sh
# traverse sysfs to find the USB ID
# of the USB device which is parent/ancestor of ttyUSB*
# something like "1-1.6:1.0"
TTYDEV=$(basename $DEVNAME)
BOUND_DEVICES=/sys/bus/usb/drivers/ftdi_sio/*/
for DEVICE in ${BOUND_DEVICES}; do
if [ -e $DEVICE/$TTYDEV ]; then
USBID=$(basename $DEVICE)
break
fi
done
echo "$USBID" > /sys/bus/usb/drivers/ftdi_sio/unbind