aboutsummaryrefslogtreecommitdiff
path: root/tools/icomsio.sh
diff options
context:
space:
mode:
authorMatthew Poletiek <matthew.poletiek@gmail.com>2020-12-08 21:03:16 -0600
committerMatthew Poletiek <matthew.poletiek@gmail.com>2020-12-08 21:03:16 -0600
commite99416456afd4aa8bde42016826f9a345291cbf3 (patch)
treea7a95639cd1cb5dbe2d91a2ca8e8defafac4296d /tools/icomsio.sh
parent194cf4e5e0b6a2811103a9b739a72b9afe2b886c (diff)
downloadchirp-e99416456afd4aa8bde42016826f9a345291cbf3.tar.gz
chirp-e99416456afd4aa8bde42016826f9a345291cbf3.tar.xz
Initial Commit
Diffstat (limited to 'tools/icomsio.sh')
-rwxr-xr-xtools/icomsio.sh95
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
+