Re: [PATCH] Explicitly disable BT radio using rfkill interface onsuspend

From: Mario Limonciello
Date: Mon May 18 2009 - 17:36:50 EST


Hi Matthew:

Matthew Garrett wrote:
> On Mon, May 18, 2009 at 03:12:22PM -0500, Mario Limonciello wrote:
>
>> Dell BT devices need to be removed from the bus and reinserted
>> so that userspace udev rules can transition the devices into the
>> proper mode after S3 or S4.
>>
>
> This sounds wrong. What kind of reinitialisation are you talking about?
>
Dell BT adapters will startup in a HID mode. In HID mode two logical
USB devices are exposed, a mouse and a keyboard. If properly set, the
BT radio will work with pre-paired keyboards or mice in this mode. This
is useful for things like BIOS control via a BT keyboard. A command is
sent to one of the descriptors of the mouse to cause the device to
transition to HCI mode. When transitioned to HCI mode, a radio device
is exposed allowing it to pair and operate with any BT device.

Here's what the utility looks like that ships with bluez:
http://git.kernel.org/?p=bluetooth/bluez.git;a=blob;f=tools/hid2hci.c;h=11d707fd76e940b884c9078907ab1504cd7350d4;hb=HEAD
Look at the switch_dell method to see how it works.

Currently, this is implemented via a set of udev rules shipped with
bluez that match the Dell device and transition it to HCI mode.
Here's the udev rule that matches:
ACTION=="add", ENV{ID_VENDOR}=="413c", ENV{ID_CLASS}=="mouse", ATTRS{bmAttributes}=="e0", KERNEL=="mouse*", RUN+="/usr/sbin/hid2hci --method dell -v $env{ID_VENDOR} -p $env{ID_MODEL} --mode hci"

When coming out of S3 if the killswitch isn't activated, the logical USB
mouse isn't coldplugged again preventing the udev rule from being
matched upon. You can manually run hid2hci and the device will switch
modes.

--
Mario Limonciello
*Dell | Linux Engineering*
mario_limonciello@xxxxxxxx

Attachment: signature.asc
Description: OpenPGP digital signature