diff options
author | Denys Vlasenko <vda.linux@googlemail.com> | 2013-03-30 16:23:12 +0100 |
---|---|---|
committer | Denys Vlasenko <vda.linux@googlemail.com> | 2013-03-30 16:23:12 +0100 |
commit | e306c1136787b0430592289347efab6098dae64e (patch) | |
tree | c28145c89f37081fb05217ef61c3387d0f4bd1e0 | |
parent | 2c0508b4facf24d55518fe13bcbef4b23c13c9cb (diff) |
examples: add mdev example for Android phone
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
-rwxr-xr-x | examples/mdev.conf.change_blockdev.sh | 24 | ||||
-rw-r--r-- | examples/mdev_fat.conf | 30 |
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 |