#!/bin/sh # # Persistent naming for usb serial devices. # # Copyright 2013-2014 Christian Pointner # logger="logger -p daemon.info -t rhctl-usbserial" idVendor=`echo $PRODUCT | awk -F '/' '{ print($1) }'` idProduct=`echo $PRODUCT | awk -F '/' '{ print($2) }'` bcdDevice=`echo $PRODUCT | awk -F '/' '{ print($3) }'` if [ "$idVendor" != "403" ] || [ "$idProduct" != "6011" ]; then exit 0 fi DEVPATH="/sys$DEVPATH" if [ $ACTION == "add" ]; then if [ ! -e "$DEVPATH/bInterfaceNumber" ]; then exit 0 fi PARENT=`dirname "$DEVPATH` SERIAL=`cat $PARENT/serial` if [ "$SERIAL" != $(uci -q get rhctl.@global[0].ftdi_serial) ]; then exit 0 fi fi hotplug=/dev/.hotplug token=$hotplug/`echo $PRODUCT$DEVPATH | sed 's/\//=/g'` case "$ACTION" in add) ttydir=`echo "$DEVPATH/ttyUSB*` tty=`basename $ttydir` interface=`cat "$DEVPATH/bInterfaceNumber"` device="$interface" case "$interface" in 00) device="ttyMasterCtl" ;; 01) device="ttyMasterHB" ;; 02) device="ttyStandbyCtl" ;; 03) device="ttyStandbyHB" ;; *) exit 0 ;; esac mkdir -p "$hotplug" rm -f "/dev/$device" "$token" ln -s "/dev/$device" "$token" ln -s "/dev/$tty" "/dev/$device" $logger "added: tty=$tty device=$device" ;; remove) if [ -h "$token" ]; then device=$(ls -l $token | sed 's/.*-> //;/ /s/.*//') case "$device" in "") # no symlink $logger "failed: token=$token device=$device" ;; *) rm -f $token $device $logger "removed: $device" ;; esac fi ;; esac exit 0