From: jow Date: Mon, 24 Oct 2011 17:52:58 +0000 (+0000) Subject: packages/utils/usb-modeswitch: use the hammer X-Git-Url: http://207.154.207.93/?a=commitdiff_plain;h=6260f717086a1e0e78c14d93729df61105e180ea;p=packages.git packages/utils/usb-modeswitch: use the hammer Not particularly beautiful but doing the trick... Signed-off-by: Daniel Golle git-svn-id: svn://svn.openwrt.org/openwrt/packages@28555 3c298f89-4303-0410-b956-a3cf2f4a3e73 --- diff --git a/utils/usb-modeswitch/files/modeswitch.hotplug b/utils/usb-modeswitch/files/modeswitch.hotplug index 1aecb1fb3..7f9ce9411 100644 --- a/utils/usb-modeswitch/files/modeswitch.hotplug +++ b/utils/usb-modeswitch/files/modeswitch.hotplug @@ -120,7 +120,20 @@ if [ "$ACTION" = add ]; then # If a candidate is remaining, start usb-modeswitch [ -n "$configs" ] && { log "$DEVICENAME: Selecting ${configs%% *} for mode switching" - $modeswitch -c "${configs%% *}" + # ugly workaround, but working for all hw we got for testing + switching_done=0 + switching_tries=0 + local usb_dir="/sys/$DEVPATH" + [ -f "$usb_dir/idVendor" ] || usb_dir="${usb_dir%/*}" + while [ $switching_done -lt 1 -a $switching_tries -le 6 ]; do + $modeswitch -I -D -n -s 30 -c "${configs%% *}" + if [ $(sanitize "$usb_dir/idProduct") -eq $uPid ]; then + log "switching seemingly failed" + else + switching_done=1 + fi + switching_tries=$(( $switching_tries + 1 )) + done } } fi