diff options
| author | Matthew Poletiek <matthew.poletiek@gmail.com> | 2020-12-08 21:03:16 -0600 |
|---|---|---|
| committer | Matthew Poletiek <matthew.poletiek@gmail.com> | 2020-12-08 21:03:16 -0600 |
| commit | e99416456afd4aa8bde42016826f9a345291cbf3 (patch) | |
| tree | a7a95639cd1cb5dbe2d91a2ca8e8defafac4296d /tools/icomsio.sh | |
| parent | 194cf4e5e0b6a2811103a9b739a72b9afe2b886c (diff) | |
| download | chirp-e99416456afd4aa8bde42016826f9a345291cbf3.tar.gz chirp-e99416456afd4aa8bde42016826f9a345291cbf3.tar.xz | |
Initial Commit
Diffstat (limited to 'tools/icomsio.sh')
| -rwxr-xr-x | tools/icomsio.sh | 95 |
1 files changed, 95 insertions, 0 deletions
diff --git a/tools/icomsio.sh b/tools/icomsio.sh new file mode 100755 index 0000000..f5f126d --- /dev/null +++ b/tools/icomsio.sh @@ -0,0 +1,95 @@ +#!/usr/bin/env bash +# +# ICOM ID-RP* serial helper script +# +# Copyright 2009 Dan Smith <dsmith@danplanet.com> +# +# This script will scan the USB bus on this system and determine +# the product ID of any attached ICOM repeater modules. It will +# unload and then reload the FTDI serial driver with the proper +# options to detect the device. After that, it will determine the +# device name and link /dev/icom to that device for easy access. + +LINK="icom" +VENDOR="0x0c26" +DEVICE=$(lsusb -d ${VENDOR}: | cut -d ' ' -f 6 | cut -d : -f 2 | sed -r 's/\n/ /g') + +product_to_name() { + local prod=$1 + + if [ "$prod" = "0012" ]; then + echo "ID-RP2000V TX" + elif [ "$prod" = "0013" ]; then + echo "ID-RP2000V RX" + elif [ "$prod" = "0010" ]; then + echo "ID-RP4000V TX" + elif [ "$prod" = "0011" ]; then + echo "ID-RP4000V RX" + elif [ "$prod" = "000b" ]; then + echo "ID-RP2D" + elif [ "$prod" = "000c" ]; then + echo "ID-RP2V TX" + elif [ "$prod" = "000d" ]; then + echo "ID-RP2V RX" + else + echo "Unknown module (id=${prod})" + fi +} + +if [ $(id -u) != 0 ]; then + echo "This script must be run as root" + exit 1 +fi + +if [ -z "$DEVICE" ]; then + echo "No devices found" + exit 1 +fi + +if echo $DEVICE | grep -q ' '; then + echo "Multiple devices found. Choose one:" + i=0 + for dev in $DEVICE; do + name=$(product_to_name $dev) + echo " ${i}: ${name}" + i=$(($i + 1)) + done + + echo -n "> " + read num + + array=($DEVICE) + + DEVICE=${array[$num]} + if [ -z "$DEVICE" ]; then + exit + fi +fi + +modprobe -r ftdi_sio || { + echo "Unable to unload ftdi_sio" + exit 1 +} + +modprobe ftdi_sio vendor=${VENDOR} product=0x${DEVICE} || { + echo "Failed to load ftdi_sio" + exit 1 +} + +sleep 0.5 + +info=$(lsusb -d ${VENDOR}:0x${DEVICE}) +bus=$(echo $info | cut -d ' ' -f 2 | sed 's/^0*//') +dev=$(echo $info | cut -d ' ' -f 4 | sed 's/^0*//') + +for usbserial in /sys/class/tty/ttyUSB*; do + driver=$(basename $(readlink -f ${usbserial}/device/driver)) + device=$(basename $usbserial) + if [ "$driver" = "ftdi_sio" ]; then + name=$(product_to_name $DEVICE) + ln -sf /dev/${device} /dev/${LINK} + echo "Device $name is /dev/${device} -> /dev/${LINK}" + break + fi +done + |
