Re: Multiple USB Endpoints

Alan Stern <stern-nwvwT67g6+6dFdvTe/[email protected]>
Newsgroups gmane.comp.handhelds.blackberry.barry.devel,gmane.linux.usb.devel
Message-ID <[email protected]>
On Thu, 22 Nov 2007, Chris Frey wrote:

> On Fri, Nov 16, 2007 at 01:59:16PM -0500, Alan Stern wrote:
> > > On Fri, 16 Nov 2007, Martin Owens wrote:
> > > As you can see it needs to be put in the second mode anyway, but there
> > > is a third mode which is just the database stuff, without the mass
> > > storage device. I believe the existing barry project is attempting to
> > > claim all interfaces including the MSD one which is where it runs into
> > > problems.
> 
> Hi,
> 
> I'm the lead developer of the Barry project.
> 
> I think the modes Martin is talking about is that the Blackberry Pearl,
> and similar devices, can reboot itself and present 3 different
> product ID's.
> 
> The most useful of these product ID's is 0004, which presents two
> configurations: a Mass Storage, and a class 255 (the Database config).

You are mixing up "configuration" and "interface".  I think you mean 
"interface" here (configurations don't have classes but interfaces do).

> The problem is that usb_storage sees the Mass Storage configuration,
> and uses it.  When Barry wants to use the Database configuration,
> there's a conflict.

What's the conflict?

> > Okay, that seems straightforward enough.  The solution is (obviously) 
> > to make the barry project avoid trying to claim the mass-storage 
> > interface.
> > 
> > It shouldn't be hard to do.  You can tell which interface is 
> > mass-storage by checking whether the bInterfaceClass value is 0x08.  If 
> > it is, simply have the program skip over the interface.  The function 
> > call you need to avoid is usb_claim_interface().
> 
> Barry doesn't use the Mass Storage configuration at all.  It uses
> libusb to call set_configuration on the Database configuration, and then
> usb_claim_interface on that.  If I comment out the claim_interface
> call, I still get the error on set_configuration.

Now you're sounding even more confused.  Which are you talking about, 
configurations or interfaces?

You say the set_configuration call returns an error?  Have you tried
turning on the usbfs_snoop parameter for the usbcore module to see what
shows up in the kernel log?  Have you verified that the configuration
you're trying to install actually exists?

Alan Stern


-------------------------------------------------------------------------
This SF.net email is sponsored by: Microsoft
Defy all challenges. Microsoft(R) Visual Studio 2005.
http://clk.atdmt.com/MRT/go/vse0120000070mrt/direct/01/
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.