1#!/bin/sh 2 3if [ "$(pidof $(basename $0))" != "$$" ]; then 4 echo "handing previous event, sleep 2" > /dev/console 5 sleep 2 6fi 7 8old_usbdisknum=$(cat /tmp/usbdisknum) 9usb1num=$(cat /tmp/usb1num) 10usb3num=$(cat /tmp/usb3num) 11new_usbdisknum=$(grep "Driver=usb-storage" /proc/bus/usb/devices | wc -l) 12 13old_printer1num=$(cat /tmp/printer1num) 14old_printer3num=$(cat /tmp/printer3num) 15new_printer1num=$(grep "product" /proc/NetUSB/0/device | wc -l) 16new_printer3num=$(grep "product" /proc/NetUSB/1/device | wc -l) 17 18if [ "x$old_usbdisknum" = "x" ]; then 19 old_usbdisknum=0 20fi 21 22if [ "x$usb1num" = "x" ]; then 23 usb1num=0 24fi 25 26if [ "x$usb3num" = "x" ]; then 27 usb3num=0 28fi 29 30if [ "x$old_printer1num" = "x" ]; then 31 old_printer1num=0 32fi 33 34if [ "x$old_printer3num" = "x" ]; then 35 old_printer3num=0 36fi 37 38if [ $new_usbdisknum -eq $old_usbdisknum ]; then 39 #eSATA disk recognized. 40 #cd /sys/block/sdc; ls -l 41 #device -> ../../devices/platform/msm_sata.0/ahci.0/ata1/host0/target0:0:0/0:0:0:0 42 #To get ata1 when mounted 43 ls -l /sys/block | grep sd | awk '{print $9}' > /tmp/disk_event 44 while read LINE 45 do 46 sata_port=$(ls -l /sys/block/$LINE | grep ata | awk '{print $11}' | awk -F/ '{print $7}') 47 if [ "$sata_port" = "ata1" ]; then 48 echo "SATA disk mounted!!!" 49 ledcontrol -n sata_blink -c green -s on 50 echo "$LINE" > /tmp/sata_partition 51 echo "1" > /tmp/satadisknum 52 fi 53 done</tmp/disk_event 54 rm /tmp/disk_event 55 # SATA LED off when plug out SATA disk 56 sata_disk=`cat /tmp/sata_partition | awk '{print $1}'` 57 if [ "x$sata_disk" != "x" ]; then 58 tmp_sata_port=$(ls -l /sys/block/$sata_disk | grep ata | awk '{print $11}' | awk -F/ '{print $7}') 59 if [ "x$tmp_sata_port" = "x" ]; then 60 echo "SATA disk UN-mounted!!!" 61 ledcontrol -n sata -c green -s off 62 rm /tmp/sata_partition 63 echo "0" > /tmp/satadisknum 64 fi 65 fi 66 67 #USB printer add /proc/NetUSB/0/device /proc/NetUSB/1/device 68 if [ $new_printer1num -ge 1 -a $new_printer1num -gt $old_printer1num ]; then 69 ledcontrol -n usb1_blink -c green -s on 70 elif [ $new_printer1num -eq 0 -a $usb1num -eq 0 ]; then 71 ledcontrol -n usb1 -c green -s off 72 fi 73 74 if [ $new_printer3num -ge 1 -a $new_printer3num -gt $old_printer3num ]; then 75 ledcontrol -n usb3_blink -c green -s on 76 elif [ $new_printer3num -eq 0 -a $usb3num -eq 0 ]; then 77 ledcontrol -n usb3 -c green -s off 78 fi 79 80elif [ $new_usbdisknum -ge 1 -a $new_usbdisknum -gt $old_usbdisknum ]; then 81 if [ $(($new_usbdisknum - $old_usbdisknum)) -ge 2 ]; then 82 echo "plug two usb disk at same time, sleep 1" > /dev/console 83 sleep 1 84 fi 85 echo "New USB disk mounted!!!" > /dev/console 86 ls -l /sys/block | grep sd | awk '{print $9}' > /tmp/disk_event 87 while read LINE 88 do 89 #cd /sys/block/sda; ls -l 90 #../../devices/platform/ipq-dwc3.0/dwc3.0/xhci-hcd.0/usb1/1-1/1-1:1.0/host4/target4:0:0/4:0:0:0 91 #../../devices/platform/ipq-dwc3.1/dwc3.1/xhci-hcd.1/usb3/4-1/4-1:1.0/host3/target3:0:0/3:0:0:0 92 # To get usb1 or usb3 93 usb_port=$(ls -l /sys/block/$LINE | grep usb | awk '{print $11}' | awk -F/ '{print $8}') 94 #usb_name=`echo $usb_port | sed 's/[0-9]//g'` 95 #usb_num=`echo $usb_port | cut -c 4-` 96 97 usb_interface=$(ls -l /sys/block/$LINE | grep usb | awk '{print $11}' | awk -F/ '{print $6}') 98 99 echo "usb_port= $usb_port" > /dev/console 100 echo "usb_interface =$usb_interface" > /dev/console 101 if [ "$usb_interface" = "dwc3.0" ]; then 102 if [ $usb1num -eq 0 ]; then 103 ledcontrol -n usb1_blink -c green -s on 104 echo 1 > /tmp/usb1num 105 else 106 #For USB hub case 107 for i in `df | grep sd | awk '{print $1}' | awk -F/ '{print $3}' | sed 's/[0-9]//g'` 108 do 109 if [ "$i" = "$LINE" ]; then 110 usb1_flag=1 111 break; 112 else 113 usb1_flag=0 114 fi 115 done 116 if [ $usb1_flag -eq 0 ]; then 117 ledcontrol -n usb1_blink -c green -s on 118 echo 1 > /tmp/usb1num 119 fi 120 fi 121 elif [ "$usb_interface" = "dwc3.1" ]; then 122 if [ $usb3num -eq 0 ]; then 123 ledcontrol -n usb3_blink -c green -s on 124 echo 1 > /tmp/usb3num 125 else 126 #For USB hub case 127 for j in `df | grep sd | awk '{print $1}' | awk -F/ '{print $3}' | sed 's/[0-9]//g'` 128 do 129 if [ "$j" = "$LINE" ]; then 130 usb3_flag=1 131 break; 132 else 133 usb3_flag=0 134 fi 135 done 136 if [ $usb3_flag -eq 0 ]; then 137 ledcontrol -n usb3_blink -c green -s on 138 echo 1 > /tmp/usb3num 139 fi 140 fi 141 fi 142 done</tmp/disk_event 143 rm /tmp/disk_event 144elif [ $new_usbdisknum -lt $old_usbdisknum ]; then 145 ls -l /sys/block | grep sd | awk '{print $9}' > /tmp/disk_left 146 disk_left=$(cat /tmp/disk_left) 147 if [ "x$disk_left" = "x" ]; then 148 #if user plug off disk during the LED still blink, we should turn off blink firstly then do turn off led 149 if [ $usb1num -eq 1 ]; then 150 ledcontrol -n usb1_blink -c green -s off 151 fi 152 if [ $usb3num -eq 1 ]; then 153 ledcontrol -n usb3_blink -c green -s off 154 fi 155 echo "No USB disk mounted!!!" > /dev/console 156 ledcontrol -n usb1 -c green -s off 157 ledcontrol -n usb3 -c green -s off 158 echo 0 > /tmp/usb1num 159 echo 0 > /tmp/usb3num 160 else 161 usb1_left_flag=0 162 usb3_left_flag=0 163 while read LINE 164 do 165 usb_left=$(ls -l /sys/block/$LINE | grep usb | awk '{print $11}' | awk -F/ '{print $6}') 166 if [ "$usb_left" = "dwc3.0" ]; then 167 usb1_left_flag=1 168 elif [ "$usb_left" = "dwc3.1" ]; then 169 usb3_left_flag=1 170 fi 171 done</tmp/disk_left 172 rm /tmp/disk_left 173 174 if [ $usb1_left_flag -eq 0 ]; then 175 ledcontrol -n usb1_blink -c green -s off 176 ledcontrol -n usb1 -c green -s off 177 echo 0 > /tmp/usb1num 178 fi 179 if [ $usb3_left_flag -eq 0 ]; then 180 ledcontrol -n usb3_blink -c green -s off 181 ledcontrol -n usb3 -c green -s off 182 echo 0 > /tmp/usb3num 183 fi 184 fi 185fi 186 187echo $new_usbdisknum > /tmp/usbdisknum 188echo $new_printer1num > /tmp/printer1num 189echo $new_printer3num > /tmp/printer3num 190satadisknum=$(cat /tmp/satadisknum) 191if [ "x$satadisknum" = "x" ]; then 192 echo "0" > /tmp/satadisknum 193fi 194