# Convenience script for loading firmware onto a dfu type device
# By default, initiates dfu-util
-SERIAL_PORT=""
-AUTO_SCREEN_SESSION=""
+SERIAL_PORT="/dev/kiibohd"
+AUTO_SCREEN_SESSION="/dev/kiibohd"
+NOSCREEN=0
PROG_NAME=$(basename $0)
# Parse all the command line arguments
SERIAL_PORT="$2"
shift
;;
+ -n|--noscreen)
+ NOSCREEN=1
+ shift
+ ;;
-h|--help)
echo "Usage: $PROG_NAME [options...]"
echo ""
if [[ "$SERIAL_PORT" != "" ]] && [[ -e "$SERIAL_PORT" ]]; then
echo "NOTE: This may fail if the uC is in a bad state or does not support remote flashing"
printf "reload\r" > $SERIAL_PORT
- sleep 2
fi
# Load via dfu-util
# Used for McHCK based uCs
if type dfu-util &>/dev/null; then
+ # Wait for device to appear
+ while true; do
+ dfu-util -l | grep -q "Kiibohd DFU"
+ if [ $? -eq 0 ]; then
+ break
+ fi
+ sleep 0.1
+ done
dfu-util -D @TARGET_BIN@
EXIT_STATUS=$?
else
fi
# Load Screen Session if specified
-if (( "$EXIT_STATUS" == "0" )) && [[ "$AUTO_SCREEN_SESSION" != "" ]]; then
+if (( "$EXIT_STATUS" == "0" )) && [[ "$AUTO_SCREEN_SESSION" != "" ]] && [[ $NOSCREEN -ne 1 ]]; then
if type screen &>/dev/null; then
- sleep 0.1
+ # Wait for interface
+ while [ ! -e $AUTO_SCREEN_SESSION ]; do
+ sleep 0.1
+ done
screen $AUTO_SCREEN_SESSION
else
echo "screen is not installed"