LibUSB fails to enumerate all devices
Brian K. White
brian at aljex.com
Wed Oct 26 17:54:47 PDT 2005
----- Original Message -----
From: "Loren M. Lang" <lorenl at alzatex.com>
To: "Brian K. White" <brian at aljex.com>
Cc: "Loren M. Lang" <lorenl at alzatex.com>; <freebsd-usb at freebsd.org>
Sent: Tuesday, October 25, 2005 3:56 AM
Subject: Re: LibUSB fails to enumerate all devices
> On Mon, Oct 24, 2005 at 03:51:27PM -0400, Brian K. White wrote:
> >
> > ----- Original Message -----
> > From: "Loren M. Lang" <lorenl at alzatex.com>
> > To: <freebsd-usb at 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?
> >
> > I am not a kernel or usb developer at all. But what you describe sounds
> > like it might be related to a problem I have.
> > I have a wireless usb keyboard with 3 devices that share the single usb
> > receiver. The keyboard, the touchpad mouse built in to it, and a
> > seperate
> > wireless mouse.
> > On linux ever since 2.6.<low number>, it all works out of the box. suse
> > 9.3, 10.0, and knoppix 4.0 all work for example. Suse 9.2 almost worked,
> > the touchpad worked but not the button on the touch pad.
> >
> > On freebsd, _only_ the keyboard works.
>
> This is not the same problem, but I also have it as well. I have a usb
> keyboard and mouse combo. The keyboard also has extra keys on it for
> extra functions. Nothing besides the basic keyboard works out of the
> box. I was able to get the mouse and extra keys to work by creating a C
> program to read events from /dev/uhid0 and do the appropriate action.
> Both the keyboard, basic and extra keys; and the mouse work fine now
> that I have this program running. I believe the problem is that the
> keyboard I have sends all hid event for everything through the same
> interface, just with different hid report numbers and only the hid to
> keyboard translator was able to conect to the interface. Other
> mouse/keyboard combos may use two interfaces for each and should work
> fine. If I get some free time, I might work on fixing freebsd to avoid
> this program. I can provide you with the program I wrote, but it would
> need to be tweaked for your keyboard. There should be some fine like
> /dev/uhid0 that you can cat to test with. It may not be 0, do an ls
> /dev/uhid* to list all uhid devices.
>
> BTW, this program I wrote works for both 5.4 and 6.0, otherwise neither
> version will work with my keyboard.
I would love to give it a try.
Also, as I hinted at, I'm currently using it on linux and everything works,
so I can capture stuff like /proc/bus/usb and maybe that will mean something
to someone who's familiar with FreeBSD's usb system.
> Once someone here asked me to try catting /dev/uhid0 (the only device to
> appear in dmesg besides the keyboard) while moving the mouse/touchpad and
> pressing mouse/touchpad buttons. The result was no output at all.
>
> Someone else said that is was because multiple devices needed to use the
> same usb receiver and there was an enhancement in 6.0 (I was using 5.4)
> that allowed for it.
> I have 6.0 now and it made no difference.
>
> I hope you are hitting the same thing I'm hitting, and that it becomes a
> more common problem, and that someone then finally firgures it out so I
> can
> use my $150 keyboard without having to host a copy of knoppix on on my
> freebsd box just so my diskless thin client can pxe boot it.
>
> What I don't get is, why don't all devices that need to share a single
> physical port just make themselves look like hubs? I have a different usb
> keyboard that has two usb ports on it (ie a built in 2 port usb hub) and I
> can plug a usb mouse into that keyboard, and the keyboard into the pc, and
> it all works fine even back on 5.4 .
Answering myself... maybe to look like a hub, you effectively need another
chip that actually impliments a hub, and maybe you can get the functionality
with less hardware by making it all look like one device with a lot of
functions.
Brian K. White -- brian at aljex.com -- http://www.aljex.com/bkw/
+++++[>+++[>+++++>+++++++<<-]<-]>>+.>.+++++.+++++++.-.[>+<---]>++.
filePro BBx Linux SCO FreeBSD #callahans Satriani Filk!
More information about the freebsd-usb
mailing list