Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 25 Oct 2005 11:54:11 +0200
From:      Hans Petter Selasky <hselasky@c2i.net>
To:        "Loren M. Lang" <lorenl@alzatex.com>
Cc:        freebsd-usb@freebsd.org
Subject:   Re: LibUSB fails to enumerate all devices
Message-ID:  <200510251154.12709.hselasky@c2i.net>
In-Reply-To: <20051025073853.GA4759@alzatex.com>
References:  <20051023095137.GC18930@alzatex.com> <200510242254.31406.hselasky@c2i.net> <20051025073853.GA4759@alzatex.com>

next in thread | previous in thread | raw e-mail | index | archive | help
On Tuesday 25 October 2005 09:38, Loren M. Lang wrote:
> On Mon, Oct 24, 2005 at 10:54:30PM +0200, Hans Petter Selasky wrote:
> > On Monday 24 October 2005 21:51, Brian K. White wrote:
> > > ----- Original Message -----
> > > From: "Loren M. Lang" <lorenl@alzatex.com>
> > > To: <freebsd-usb@freebsd.org>
> > > Sent: Sunday, October 23, 2005 5:51 AM
> > > Subject: LibUSB fails to enumerate all devices
> > >
> > > I am developing a USB device which has two interfaces, one interface
> > > uses a standard HID protocol, the other is completely custom at the
> > > moment.  FreeBSD attaches appropriately to the HID interface and works
> > > correctly.  For the custom interface, I was going to write a device
> > > driver in userspace using libusb, but I can't seem to find it.  I wrote
> > > a program to enumerate all devices on all busses, but the only device I
> > > see is the one device I don't have any driver loaded for.  Does FreeBSD
> > > not allow a userspace to access an interface of a usb device when any
> > > of it's interfaces are grabbed by a kernel driver even though the
> > > interface I want is not grabbed?
> >
> > No. ugen, which is the device libusb is searching for, is only created
> > when no subdevices has been attached. It is not impossible to have a
> > shadow "ugen" hanging on all USB devices, but it is a little complicated,
> > because you get two applications that can set the configuration: ugen and
> > the USB device driver. Whenever the configuration number is set, all ugen
> > devices in /dev must be re-created, and one should detach existing,
> > attached USB sub-devices.
>
> So LibUSB can only access USB devices that have an associated ugen
> device?

Yes.

> And a usb device which has a kernel driver attached to any 
> interface will not have a ugen device available?

Yes, if "ugen" is present/loaded.

> Is there any way, LibUSB or not, to access the second interface of 
> my device from userspace or would it require a kernel driver?

Currently the easiest is to make a loadable kernel module that attaches to 
your custom interface. Though it is not impossible to have a "ugen" shadow 
attached, only that things become slightly more complicated.

In some situations I see that it is desireable to let a user application 
select the configuration number, through "ugen". For example some "ipods" 
support "umass" and "uhid", but not at the same time.

--HPS



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200510251154.12709.hselasky>