aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDenys Vlasenko <vda.linux@googlemail.com>2013-03-30 16:23:12 +0100
committerDenys Vlasenko <vda.linux@googlemail.com>2013-03-30 16:23:12 +0100
commite306c1136787b0430592289347efab6098dae64e (patch)
treec28145c89f37081fb05217ef61c3387d0f4bd1e0
parent2c0508b4facf24d55518fe13bcbef4b23c13c9cb (diff)
downloadbusybox-e306c1136787b0430592289347efab6098dae64e.tar.gz
examples: add mdev example for Android phone
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
-rwxr-xr-xexamples/mdev.conf.change_blockdev.sh24
-rw-r--r--examples/mdev_fat.conf30
2 files changed, 54 insertions, 0 deletions
diff --git a/examples/mdev.conf.change_blockdev.sh b/examples/mdev.conf.change_blockdev.sh
new file mode 100755
index 000000000..a479a9630
--- /dev/null
+++ b/examples/mdev.conf.change_blockdev.sh
@@ -0,0 +1,24 @@
+#!/bin/sh
+
+# Seconds to try to reread partition table
+cnt=60
+
+exec </dev/null
+exec >"/tmp/${0##*/}.$$.out"
+exec 2>&1
+
+(
+echo "Running: $0"
+echo "Env:"
+env | sort
+
+while sleep 1; test $cnt != 0; do
+ echo "Trying to rereat partition table on $DEVNAME ($cnt)"
+ : $((cnt--))
+ test -e "$DEVNAME" || { echo "$DEVNAME doesn't exist, aborting"; exit 1; }
+ #echo "$DEVNAME exists"
+ blockdev --rereadpt "$DEVNAME" && break
+ echo "blockdev --rereadpt failed, exit code: $?"
+done
+echo "blockdev --rereadpt succeeded"
+) &
diff --git a/examples/mdev_fat.conf b/examples/mdev_fat.conf
index bceddb2d7..f2a15f35d 100644
--- a/examples/mdev_fat.conf
+++ b/examples/mdev_fat.conf
@@ -112,3 +112,33 @@ usbdev[0-9].[0-9]_.* root:root 660
# zaptel devices
zap(.*) root:dialout 660 =zap/%1
dahdi!(.*) root:dialout 660 =dahdi/%1
+
+# HTC Android
+# Attaching it via USB cable causes a flurry of activity:
+#
+# mdev[1271]: 48.639459 ACTION:add SUBSYSTEM:usb DEVNAME:bus/usb/001/009 DEVPATH:/devices/pci0000:00/0000:00:02.1/usb1/1-5
+# mdev[1271]: mknod bus/usb/001/009 (189,8) 20660 0:0
+# mdev[1272]: 48.642354 ACTION:add SUBSYSTEM:usb DEVNAME:(null) DEVPATH:/devices/pci0000:00/0000:00:02.1/usb1/1-5/1-5:1.0
+# mdev[1272]: running: modprobe "$MODALIAS"
+# mdev[1273]: 48.650078 ACTION:add SUBSYSTEM:scsi DEVNAME:(null) DEVPATH:/devices/pci0000:00/0000:00:02.1/usb1/1-5/1-5:1.0/host11
+# mdev[1274]: 48.651297 ACTION:add SUBSYSTEM:scsi_host DEVNAME:(null) DEVPATH:/devices/pci0000:00/0000:00:02.1/usb1/1-5/1-5:1.0/host11/scsi_host/host11
+# mdev[1275]: 49.649422 ACTION:add SUBSYSTEM:scsi DEVNAME:(null) DEVPATH:/devices/pci0000:00/0000:00:02.1/usb1/1-5/1-5:1.0/host11/target11:0:0
+# mdev[1276]: 49.650703 ACTION:add SUBSYSTEM:scsi DEVNAME:(null) DEVPATH:/devices/pci0000:00/0000:00:02.1/usb1/1-5/1-5:1.0/host11/target11:0:0/11:0:0:0
+# mdev[1276]: running: modprobe "$MODALIAS"
+# modprobe: module scsi:t-0x00 not found in modules.dep
+# mdev[1277]: 49.658002 ACTION:add SUBSYSTEM:scsi_disk DEVNAME:(null) DEVPATH:/devices/pci0000:00/0000:00:02.1/usb1/1-5/1-5:1.0/host11/target11:0:0/11:0:0:0/scsi_disk/11:0:0:0
+# mdev[1278]: 49.659244 ACTION:add SUBSYSTEM:scsi_device DEVNAME:(null) DEVPATH:/devices/pci0000:00/0000:00:02.1/usb1/1-5/1-5:1.0/host11/target11:0:0/11:0:0:0/scsi_device/11:0:0:
+# mdev[1279]: 49.660535 ACTION:add SUBSYSTEM:bsg DEVNAME:bsg/11:0:0:0 DEVPATH:/devices/pci0000:00/0000:00:02.1/usb1/1-5/1-5:1.0/host11/target11:0:0/11:0:0:0/bsg/11:0:0:0
+# mdev[1279]: mknod bsg/11:0:0:0 (253,1) 20660 0:0
+# mdev[1280]: 49.663516 ACTION:add SUBSYSTEM:bdi DEVNAME:(null) DEVPATH:/devices/virtual/bdi/8:16
+# mdev[1281]: 49.664748 ACTION:add SUBSYSTEM:block DEVNAME:sdb DEVPATH:/block/sdb
+# mdev[1281]: mknod sdb (8,16) 60660 0:0
+# mdev[1282]: 49.677597 ACTION:change SUBSYSTEM:block DEVNAME:sdb DEVPATH:/block/sdb
+# mdev[1283]: 50.692936 ACTION:change SUBSYSTEM:block DEVNAME:sdb DEVPATH:/block/sdb
+#
+# We are hooking to the last events. To avoid having two scripts running,
+# we check for DISK_MEDIA_CHANGE=1 (prev to last event has it,
+# and it's the _only_ difference in env for these two events as of kernel 3.7.7)
+# Unfortunately, there is no event for "user pressed [Turn USB storage] btn"!
+# Script merely backgrounds and tries to rescan partition table for 1 minute:
+ACTION=change;SUBSYSTEM=block;DISK_MEDIA_CHANGE=1;.* 0:0 660 */etc/mdev.conf.change_blockdev.sh