summaryrefslogtreecommitdiffstats
path: root/scripts/contrib/serdevtry
diff options
context:
space:
mode:
Diffstat (limited to 'scripts/contrib/serdevtry')
-rwxr-xr-xscripts/contrib/serdevtry60
1 files changed, 60 insertions, 0 deletions
diff --git a/scripts/contrib/serdevtry b/scripts/contrib/serdevtry
new file mode 100755
index 0000000000..74bd7b7161
--- /dev/null
+++ b/scripts/contrib/serdevtry
@@ -0,0 +1,60 @@
1#!/bin/sh
2
3# Copyright (C) 2014 Intel Corporation
4#
5# Released under the MIT license (see COPYING.MIT)
6
7if [ "$1" = "" -o "$1" = "--help" ] ; then
8 echo "Usage: $0 <serial terminal command>"
9 echo
10 echo "Simple script to handle maintaining a terminal for serial devices that"
11 echo "disappear when a device is powered down or reset, such as the USB"
12 echo "serial console on the original BeagleBone (white version)."
13 echo
14 echo "e.g. $0 picocom -b 115200 /dev/ttyUSB0"
15 echo
16 exit
17fi
18
19args="$@"
20DEVICE=""
21while [ "$1" != "" ]; do
22 case "$1" in
23 /dev/*)
24 DEVICE=$1
25 break;;
26 esac
27 shift
28done
29
30if [ "$DEVICE" != "" ] ; then
31 while true; do
32 if [ ! -e $DEVICE ] ; then
33 echo "serdevtry: waiting for $DEVICE to exist..."
34 while [ ! -e $DEVICE ]; do
35 sleep 0.1
36 done
37 fi
38 if [ ! -w $DEVICE ] ; then
39 # Sometimes (presumably because of a race with udev) we get to
40 # the device before its permissions have been set up
41 RETRYNUM=0
42 while [ ! -w $DEVICE ]; do
43 if [ "$RETRYNUM" = "2" ] ; then
44 echo "Device $DEVICE exists but is not writable!"
45 exit 1
46 fi
47 RETRYNUM=$((RETRYNUM+1))
48 sleep 0.1
49 done
50 fi
51 $args
52 if [ -e $DEVICE ] ; then
53 break
54 fi
55 done
56else
57 echo "Unable to determine device node from command: $args"
58 exit 1
59fi
60