Re: file_storage.c vs f_mass_storage.c - why some devices cannot see storage that uses f_mass_storage.c

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



(+cc: Alan Stern)

I'm assuming that whenever you refer f_mass_storage.c you mean mass storage
gadget (ie. mass_storage.c; a gadget that uses f_mass_storage.c but has no
other composite functions).

On Mon, 13 Sep 2010 00:46:01 +0200, Zachary Burke <zachary.burke@xxxxxxxxx> wrote:
I am attempting to use the Palm Pre (WebOS) phone as a mass storage
device for the Xbox 360.  Like Android-based devices, WebOS uses
f_mass_storage.c (based on file_storage.c) to implement mass storage
functionality using the bulk-only transport protocol.

Not to be confused, until recently (2.6.35 IIRC) Android used its own
mass storage implementation which was not the same as f_mass_storage.
The 2.6.35 android kernel uses the mainline f_mass_storage.c.

WHERE I'VE BEEN:
Product/Vendor id - Thinking that perhaps the Xbox was blocking based
on these, I found a working USB storage device and made the Palm Pre
look identical to it.  This is not the issue.

As a matter of fact, file_storage.c and mass_storage.c use the very
same PID, VID pair.

Intel USB Command Verifier - I ran the Chapter 9 tests as well as the
Mass Storage tests against both drivers.  The Chapter 9 test results
were identical (All Passed), but the following Mass Storage tests
contained warnings for f_mass_storage:
Serial Number Test - Invalid characters in Serial Number

IIRC with kernel from the next tree, this can be fixed by passing
iSerialNumber=0123456789AB as a module parameter, where 0123456789AB
is a user-space managed 12-character long hexadecimal number.

Also, IIRC with kernel from the next tree the same warning will show
for file storage gadget unless you specify serial=0123456789AB module
parameter.

As a matter of fact, Xbox being MS's creation you might want to try
setting the serial.

Test Case 4,8 - No stall after zero-length data
Command Set Test - No stall after zero-length data

I am unsure what to make of the complaint about stalling after
zero-length data, I am guessing it may be due to the omission of
halt_bulk_in_endpoint() in f_mass_storage.c.  I do not know what the
implications of this omission are.  If you do, please enlighten me.

Alan probably knows more then I do in this regard.

Power-Up Test - Could not find device after enumeration

The Power-Up Test warning, I believe is due to the fact that it takes
several seconds after insertion of the USB connector to put the device
into mass storage mode.  Again, I believe this can be safely ignored.

Do you specify a "file" module parameter? Or just leave it as removable?

If there is anyone familiar with these two modules that might know why
one works while the other does not, I am eager to hear why.

Ideally, the two should work in exactly the same way.  So in other words,
I have no idea why the two would work differently.

I would gladly test that with an USB analyser but unfortunately
I have no Xbox and very little time. :(  Still, I'll try to help
us much as possible.

--
Best regards,                                        _     _
| Humble Liege of Serenely Enlightened Majesty of  o' \,=./ `o
| Computer Science,  Michał "mina86" Nazarewicz       (o o)
+----[mina86*mina86.com]---[mina86*jabber.org]----ooO--(_)--Ooo--
--
To unsubscribe from this list: send the line "unsubscribe linux-usb" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[Index of Archives]     [Linux Media]     [Linux Input]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]     [Old Linux USB Devel Archive]

  Powered by Linux