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>