HCI - HID proxy

Rui Paulo rpaulo at fnop.net
Thu Jul 12 17:21:13 UTC 2007


Anish Mistry wrote:
> On Wednesday 11 July 2007, Rui Paulo wrote:
>> Hi,
>> For my SoC project I developed a userland utility that switches an
>> ubt(4) controller from HID to HCI and vice versa.
>>
>> I have some design issues still being worked out, namely:
>> 1) What's the best way to integrate this into the existing
>> bluetooth utilities ? Create a new utility called, for example,
>> ubthid2hci ? Name suggestions are welcome.
> If you haven't seen it, I created a utility just for logitech devices 
> a while back.
> http://lists.freebsd.org/pipermail/freebsd-bluetooth/2006-December/000824.html

Cool, that's something we also need. :-)

> 
>> 2) According to the hid2hci Linux utility, there are several
>> dongles out there that need this tweak in order to work. I was
>> thinking we could create a text file with the vendors/products and
>> their bootup mode (HCI or HID); use ubthid2hci to read that file
>> and then switch the device to HCI mode (or HID mode if the user
>> requested it).
>> This is mostly what the Linux hid2hci utility does, except that the
>> vendor/product table is inside the program.
>
> Couldn't we create something that is run through devd and the checks 
> options from rc.conf?  So we'd have that table file you mention, and 
> we could put the enable/disable options in the rc.conf file. eg.
> ubthid2hci_enable="YES"
> ubthid2hci_flags="list of vendor/product id pairs here that we want to 
> be used as HCI devices"

I would prefer if this list was a file and not a command line. Maybe
/usr/share/misc/usb_hidhci_map.
Anyway, if you want to use devd it would be something like:

attach 100 {
        match "vendor"  "0x05ac";
        match "product" "0x1000";
        action "/usr/bin/ubthid2hci -m 0 $device-name";
};

And then repeat this for every device that needs to be switched to HCI mode.
This has the problem of not being able to switch the device to HID mode
because when you try to do that, devd will automatically switch it back
to HCI mode if this attach rule is present. I don't think this is a
serious issue because the HID mode is normally only needed before the
operating system has booted.

>> 3) Fix libusb and use hid2hci on FreeBSD.
> Isn't hid2hci GPL'd?  We'd want a BSD licensed utility since it'd be 
> in the base.

Yes, when I suggested this it had the implication of using hid2hci from
ports.


-- 
Rui Paulo


More information about the freebsd-bluetooth mailing list