usb mass media storage

shawnzier at gmail.com shawnzier at gmail.com
Fri Sep 5 16:02:59 CEST 2008


On Fri, Sep 05, 2008 at 01:04:52PM +0200, pHilipp Zabel wrote:
> On Fri, Sep 5, 2008 at 4:41 AM, Dale Maggee <antisol at internode.on.net> wrote:
> > Petr Vanek wrote:
> >> I have spent a while googling this up and have no wiki skills but
> >> someone might find this useful:
> >>
> >> to make FR act as a memory stick, here is what my script does:
> >>
> >>
> >> #!/bin/sh
> >> /etc/init.d/networking stop
> >> rmmod g_ether
> >> modprobe g_file_storage file=/dev/mmcblk0p1
> >>
> >> --
> >> Petr Vaněk
> >> http://biodynamika.cz
> >>
> > very cool, but before I test it out (potentially breaking my usb
> > networking in the process), I have a couple of questions:
> >
> > 1. will this persist over a reboot, or will it revert back to being an
> > ethernet gadget when I reboot?
> 
> It's not persistent unless you add something like this to the init
> scripts. After rebooting the ethernet gadget will be back.
> 
> > 2. is the following sufficient to switch it back?
> >
> > #!/bin/sh
> > rmmod g_file_storage
> > modprobe g_ether
> > ifup usb0
> >
> > (assuming I replaced '/etc/init.d/networking stop' with 'ifdown usb0' as
> > recommended by Daniel)
> >
> > 3. can somebody point me to a resource for the g_file_storage module
> > where I can learn more about it? I did a couple of quick googles but
> > didn't see anything promising. specifically I'd like to know more about
> > the file parameter - I assume that in this scenario our "usb stick" is
> > using partition/device information from /dev/mmcblk0p1, and will be
> > partitioned in the same way as the SD card? what If I wanted to have my
> > home directory accessible in "usb stick" mode?
> 
> I suggest to read the comment in the source code, it's quite detailed:
> http://git.kernel.org/?p=linux/kernel/git/torvalds/linux-2.6.git;a=blob;f=drivers/usb/gadget/file_storage.c;hb=HEAD
> 
> The file parameter determines the raw backing store for the storage
> device, so if you
> have file=/dev/mmcblk0p1, its contents will directly appear as
> /dev/sdx on the host. As mmcblk0p1 doesn't contain a partition table,
> so won't sdx. If you want to export the whole device, use
> file=/dev/mmcblk0, you'll get the partition table in /dev/sdx and the
> kernel will parse it and create /dev/sdx1 (containing the contents of
> /dev/mmcblk0p1) etc.
> 
> The host has direct access to the block device, so it is important
> that /dev/mmcblk0p1 is not mounted on both the phone and the host at
> the same time (unless it's mounted ro on both).

What if it was mounted ro on the phone side and rw on the host side? Would that cause problems?





More information about the community mailing list