# Microsoft IntelliMouse Explorer for Bluetooth (2.0) - Wheel

## Strunzdesign

Hi,

I'm not sure where to put this topic... is it desktop-

or kernel related? IMHO it's bluetooth related so I've

put it here. Sorry in advance  :Smile: 

I have a new mouse/keyboard combo by Microsoft:

"Microsoft Optical Desktop Elite for Bluetooth".

There were no big problems to activate the keyboard

and basic mouse support in Xorg. But I failed to activate

support for the mouse wheel (which is a four directions

"tilt" wheel) and the two side-buttons.

1.) /etc/X11/xorg.conf

I Tried a lot of combinations of "ZAxisMapping",

"Buttons" und "Protocol", which never worked.

IMHO it's not an Xorg related problem:

2.) cat /dev/input/mice  or   cat /dev/input/mouseX

I get a lot of characters when moving the mouse,

which is ok. But the mouse wheel and the tilt-function

do not result in "garbage" like moving the mouse does.

It's the same with the both keys for the thumb

on the left side of the mouse.

Ok, no "events" in /dev/input/mice... no chance for xorg!

3.) hcidump

I installed hcidump and looked at the type of transferred

data between HCI and mouse. Moving the mouse results in

a flood of messages related to ACL data (Data transfer).

But: Scrolling the wheel does NOT!

Test: "Single click with left mouse button"

root@powerstation florian # hcidump

HCIDump - HCI packet analyzer ver 1.9

device: hci0 snap_len: 1028 filter: 0xffffffff

> HCI Event: Mode Change (0x14) plen 6

> ACL data: handle 0x0007 flags 0x02 dlen 9

    L2CAP(d): cid 0x41 len 5 [psm 0]

> HCI Event: Mode Change (0x14) plen 6

> HCI Event: Mode Change (0x14) plen 6

> HCI Event: Mode Change (0x14) plen 6

> ACL data: handle 0x0007 flags 0x02 dlen 9

    L2CAP(d): cid 0x41 len 5 [psm 0]

> HCI Event: Mode Change (0x14) plen 6

> HCI Event: Mode Change (0x14) plen 6

> HCI Event: Mode Change (0x14) plen 6

> HCI Event: Mode Change (0x14) plen 6

===CTRL-C===

-> You see some HCI events and two entrys showing

"ACL data". I'm not sure what the HCI events mean, but

the first "ACL data" was generated by pressing the button,

the second when it was released.

Test: "Scroll upwards, scroll wheel"

root@powerstation florian # hcidump

HCIDump - HCI packet analyzer ver 1.9

device: hci0 snap_len: 1028 filter: 0xffffffff

> HCI Event: Mode Change (0x14) plen 6

> HCI Event: Mode Change (0x14) plen 6

> HCI Event: Mode Change (0x14) plen 6

> HCI Event: Mode Change (0x14) plen 6

===CTRL-C===

No data transferred, only four "Events".

The first two events occour when starting scrolling,

the last both one second after stopping scrolling. 

You can play with the wheel, scroll upwards, stop,

immediately scroll downwards. No more data printed

by hcidump. The mouse does not send wheel-related

information to the PC.

Any ideas? Does this mouse need something

like a second data channel to access the wheel?

At this point I've no clue what to do, I've read

through the whole forum *g* but no hints to solve

_this_ problem.

Ok, now some information about my hardware:

Mouse:

* "Microsoft IntelliMouse Explorer for Bluetooth"

* Model: 1001

Kernel: 2.6.10-ck5

net-wireless/bluez-libs-2.12

net-wireless/bluez-utils-2.12

net-wireless/bluez-hcidump-1.16

root@powerstation florian # hciconfig

hci0:   Type: USB

        BD Address: 00:0D:3A:A1:5C:C4 ACL MTU: 377:10  SCO MTU: 16:0

        UP RUNNING PSCAN ISCAN AUTH ENCRYPT

        RX bytes:849646 acl:61161 sco:0 events:4570 errors:0

        TX bytes:9283 acl:265 sco:0 commands:309 errors:0

root@powerstation florian # hcitool info 00:0D:3A:A2:03:D4

Requesting information ...

        BD Address:  00:0D:3A:A2:03:D4

        Device Name: Microsoft Mouse

        LMP Version: 1.2 (0x2) LMP Subversion: 0x100

        Manufacturer: Broadcom Corporation (15)

        Features: 0xbc 0x02 0x04 0x28 0x08 0x08 0x00 0x00

                <encryption> <slot offset> <timing accuracy> <role switch>

                <sniff mode> <RSSI> <power control> <enhanced iscan>

                <interlaced pscan> <AFH cap. slave> <AFH cap. master>

root@powerstation florian # sdptool browse 00:0D:3A:A2:03:D4

Browsing 00:0D:3A:A2:03:D4 ...

Service RecHandle: 0x0

Service Class ID List:

  "SDP Server" (0x1000)

Protocol Descriptor List:

  "L2CAP" (0x0100)

    PSM: 1

  "SDP" (0x0001)

Language Base Attr List:

  code_ISO639: 0x656e

  encoding:    0x6a

  base_offset: 0x100

Profile Descriptor List:

  "" (0x0100)

    Version: 0x0100

Service Name: MicrosoftÂ® IntelliMouseÂ® Explorer for BluetoothÂ®

Service Description: Five Button Mouse

Service Provider: Microsoft

Service RecHandle: 0x10000

Service Class ID List:

  "Human Interface Device" (0x1124)

Protocol Descriptor List:

  "L2CAP" (0x0100)

    PSM: 17

  "HIDP" (0x0011)

Language Base Attr List:

  code_ISO639: 0x656e

  encoding:    0x6a

  base_offset: 0x100

Profile Descriptor List:

  "Human Interface Device" (0x1124)

    Version: 0x0100

Service RecHandle: 0x10001

Service Class ID List:

  "PnP Information" (0x1200)

Protocol Descriptor List:

  "L2CAP" (0x0100)

    PSM: 1

  "SDP" (0x0001)

Profile Descriptor List:

  "" (0x1200)

    Version: 0x0100

Any ideas?

Thanks for help!  :Smile: 

Greetings, Florian

----------

## luna80

I have your same micorsoft product

I spent a lot of time to get working the mouse, and the keyboard!

I can't get working the keyboard, and for the mouse I have problem whit the wheel me to!

To get the mouse working I musst everytime do the following steps:

```
 1. press the connect button on the mouse

2. # hcitool scann

3. # hidd --connetcion xx:xx:xx:xx:xx

4. # startx

```

I don't know how to get working it automatically...

And the keyboard? I don't know for yet how to do.

I have any suggest for you, but perhaps you can help me?

I'm sorry for my english, I don't speek very well.

----------

## Strunzdesign

Ok, new information.

I have a working mouse wheel now. The "tilt"

function does not work, but using the wheel does

result in garbage in /dev/input/mice... yeah  :Wink: 

My multimedia keys are not working right now,

it seems that I've to do some research to

activate them.

Ok, for all you out there who want to reproduce  :Smile: 

* Kernel:

Vanilla-2.6.10 is enough to get the mouse and the

keyboard working, but it's bluetooth stack is not

able to handle the new microsoft equipment (problems

mit "hidp"... my equipment was detected as "boot-"+something)

There is a patch for 2.6.10 at "http://www.bluez.org/patches.html".

It is called -mh2 and was released this night. It has hdip

support and enables my mouse wheel  :Smile: 

I modified a ck-sources-Ebuild to apply this patch

to a stock 2.6.10. Very dirty, but works for me:

root@powerstation mh-sources # pwd

/usr/local/portage/sys-kernel/mh-sources

root@powerstation mh-sources # cat mh-sources-2.6.10-r2.ebuild

K_PREPATCHED="yes"

UNIPATCH_STRICTORDER="yes"

K_NOSETEXTRAVERSION="yes"

K_NOUSENAME="yes"

ETYPE="sources"

inherit kernel-2

detect_version

KEYWORDS="x86"

RESTRICT="nomirror"

MH_PATCH="patch-${KV_FULL}.gz"

UNIPATCH_LIST="${DISTDIR}/${MH_PATCH}"

IUSE=""

DESCRIPTION="MH-Sources"

HOMEPAGE="http://www.bluez.org/patches.html"

SRC_URI="${KERNEL_URI} http://www.holtmann.org/linux/kernel/patch-2.6.10-mh2.gz"

root@powerstation mh-sources # 

>>> from /etc/X11/xorg.conf >>>

Section "InputDevice"

  Driver       "mouse"

  Identifier   "Mouse1"

  Option       "Device" "/dev/input/mice"

  Option       "SendCoreEvents" "true"

  Option       "Protocol" "ExplorerPS/2"

  Option       "ZAxisMapping" "4 5"

# Option       "YAxisMapping" "4 5"

  Option       "Buttons" "5"

  Option       "Emulate3Buttons" "false"

  Option       "Name" "AutoDetected"

  Option       "Vendor" "AutoDetected"

EndSection

<<<

>>> /etc/bluetooth/hcid.conf >>>

# HCId options

options {

        # Automatically initialize new devices

        autoinit yes;

        # Security Manager mode

        #   none - Security manager disabled

        #   auto - Use local PIN for incoming connections

        #   user - Always ask user for a PIN

        #

        security user;

        # Pairing mode

        #   none  - Pairing disabled

        #   multi - Allow pairing with already paired devices

        #   once  - Pair once and deny successive attempts

        pairing multi;

        # PIN helper

#       pin_helper /etc/bluetooth/pin-helper;

        pin_helper /usr/lib/kdebluetooth/kbluepin;

        # D-Bus PIN helper

        #dbus_pin_helper;

}

# Default settings for HCI devices

device {

        # Local device name

        #   %d - device id

        #   %h - host name

        name "BlueZ (%d)";

        # Local device class

        class 0x3e0100;

        # Default packet type

        #pkt_type DH1,DM1,HV1;

        # Inquiry and Page scan

        iscan enable; pscan enable;

        # Default link mode

        #   none   - no specific policy

        #   accept - always accept incoming connections

        #   master - become master on incoming connections,

        #            deny role switch on outgoing connections

        #

        #lm accept,master;

        #

        lm accept;

        # Default link policy

        #   none    - no specific policy

        #   rswitch - allow role switch

        #   hold    - allow hold mode

        #   sniff   - allow sniff mode

        #   park    - allow park mode

        #

        #lp hold,sniff;

        #

        lp rswitch,hold,sniff,park;

        # Authentication and Encryption

        auth disable;

        encrypt disable;

}

<<<

This hcid.conf disables authentication and encryption  :Sad: 

When activating it, you can do encryption with your keyboard,

but you'll end up with a mouse that won't reconnect after

power save. The mouse is unable to do auth! I have no

idea how to apply options to specific bt devices...

>>> rfcomm.conf

rfcomm0 {

        # Automatically bind the device at startup

        bind yes;

        # Bluetooth address of the device:

        device xx:xx:xx:xx:xx:xx;

        # RFCOMM channel for the connection

        channel 1;

        # Description of the connection

        comment "Siemens S55";

}

<<<

Only needed if you have a mobile with bluetooth support.

>>> /etc/init.d/bluetooth >>>

# Bluetooth configuraton file

# Start of hcid (allowed values are "true" and "false")

HCID_ENABLE=true

# Config file for hcid

HCID_CONFIG="/etc/bluetooth/hcid.conf"

# Start sdpd (allowed values are "true" and "false")

SDPD_ENABLE=true

# Start hidd (allowed values are "true" and "false")

HIDD_ENABLE=true

# Arguments to hidd

HIDD_OPTIONS=""

# Run hid2hci (allowed values are "true" and "false")

HID2HCI_ENABLE=false

# Bind rfcomm devices (allowed values are "true" and "false")

RFCOMM_ENABLE=true

# Config file for rfcomm

RFCOMM_CONFIG="/etc/bluetooth/rfcomm.conf"

# Start dund (allowed values are "true" and "false")

DUND_ENABLE=false

# Arguments to dund

DUND_OPTIONS="--listen --persist"

# Start pand (allowed values are "true" and "false")

PAND_ENABLE=false

# Arguments to pand

PAND_OPTIONS="--listen --role NAP"

<<<

Then:

rc-update add bluetooth default

Ok, now you're set! Reboot.

Press some keys on your keyboard, or move your mouse in X.

Does it work?

No:

Open a root shell.

type in: "hidd --search". Press your reset button on your mouse

for 5 secs, and press "enter" immediately after doing this.

Hidd should connect to your mouse. If it returns to your shell

without an error, your mouse is ready!

Same with your keyboard.

Fire up a "hidd --search", reset your keyboard, tadaa.  :Smile: 

It works here with power saving after some minutes and

reboots. After reboot, you have to move your mouse and

press a key on your keyboard. After ca. 2 secs you have

your equipment "online"  :Wink: 

root@powerstation conf.d # hidd --show

01:01:01:01:01:01 Microsoft A keyboard that runs over Bluetooth [045e:0099] connected

02:02:02:02:02:02 Microsoft Five Button Mouse [045e:0098] connected

root@powerstation conf.d # hcitool con

Connections:

        > ACL 01:01:01:01:01:01 handle 8 state 1 lm MASTER

        > ACL 02:02:02:02:02:02 handle 6 state 1 lm MASTER

root@powerstation conf.d #

Ok, this works for me. You do not need the patched kernel.

You need it to get the multimedia keys and the wheel working,

but basic support should be in every 2.6.10.

What does not work for me:

* Encryption (+auth) for keyboard _and_ no encryption for mouse.

  It works wenn I connect the keyboad with auth and encryption,

  and then deactivate auth via hciconfig. But after power saving

  cycle the keyboard reconnects to the host and deactivtes encryption  :Sad: 

* Tilt wheel: It gererates garbage at /dev/input/mouse, but

  I've no idea how to activate it in Xorg and KDE.

* Same with both additional mouse buttons...

* Multimedia keys. The Microsoft wireless multimedia

  profile does not work in KDE. "showkeys" results in a

  flood of newlines... there is someting wrong elsewere.

* Keyboard does not work neither in BIOS nor in GRUB.

  Is this ok? What do all the mcrosoft windows users, that

  do not have a second keyboard have, do? Does windows

  activate a special mode in the usb stick to be "transparent"?

  There must be a way to enter BIOS setup or to select an entry

  in GRUB... else the keyboard would cripple your box?!?

Ok, good luck  :Smile: 

Florian

EDIT: Wrong hidd commands corrected

----------

## doalwa

Aow, you rock man   :Laughing: 

I just bought myself one of those MS Bluetooth beasts...wanted to use it on my Mac originally...but it didn't work with the included Bluetooth module on my Powerbook...gave it a shot on my gentoo box..and thanks to your helpful post it worked flawlessly..mouse wheel included...Thumbs Up!!!

Any hints on how to bring the mouse up on boot automatically?

Keep the Funk Alive!

----------

## Keiss

Hi,

 *Quote:*   

> 
> 
> What does not work for me: 
> 
> ...
> ...

 

Change your xorg.conf input section for the mouse like this:

```

     Option "ZAxisMapping" "6 7"

     Option "Buttons" "7"

```

and then you need to run:

```

xmodmap -e "pointer = 1 2 3 6 7 4 5"

```

then the two additional buttons should work (i.e. back/forward in firefox)

----------

## I.C.Wiener

I would never have figured this out on my own, thx a lot Strunzdesign.

Altough there appear to be very few people using a bluetooth mouse/keyboard someone should perhaps create an official howto.

It took me 1h to figure out that auth/encryption doesn't work for the IntelliMouse and another 3h to find the trick with "hidd --search" in the BlueZ-forum.

I'm using gentoo-sources 2.6.13 (recent at the moment) and as there is some basic bluetooth-hid support already included it never came to my mind that another kernel-patch had to be applied to make the wheel work. Fortunately I found this thread - but that was really just luck.

So finally the mouse works. 

However technically the mouse doesn't meet my expectations:

- the mouse is quite choosy regarding it's surface, for example it jumps around when using my ratpadz and even the table isn't much better

- very inaccurate - at least compared to my IntelliMouse Explorer (USB)

- definitely not the right choice for people who want to play online-games (feels laagy, reacts far too slow)

- it doesn't have an on/off-switch (you have to remove the batteries when carrying it around in a bag/backpack with you notebook)

It's ok for office-work but I think a 60Euro mouse could do better.

----------

## maudib

Everything worked great with kernel 2.6.13 and with bluez patch the wheel worked aswell..

However when upgrading to 2.6.14, there seems to be some problems..

I have tried vanilla kernel, gentoo-sources, with and without bluez mh1 and mh2 patch.

At first everything works as it should but after a while everything gets messy.

I can move the mouse but it lags and its impossible to point it at anything..

The keyboard gets really slow and makes double strokes out of everything..

I'm not sure if this is USB related or Bluetooth..

When this has happened, trying to use a standard USB keyboard shows the same behaviour as the bluetooth keyboard.

I have not tried to only use an USB mouse/keyboard to see if it still happens...

Any ideas? Anyone with the same problems with 2.6.14?

----------

## maudib

The same problem occurs when only using USB mouse+keyboard and the bluetooth dongle unplugged..

An other problem I have, even when using 2.6.13 kernel, is that when the keyboard get activated after has been idle, I dont seem to be able to click on any other windows than the active one.

I have to click on the wheel button to get everything back to normal. Same in gnome, xfce, kde.

Anyone had this problem?

----------

## I.C.Wiener

I just gave gentoo-sources-2.6.14-r2 a try. The mouse-wheel didn't work, as described by maudib. No matter wheter the mh2-patch was applied or not.

And even worse: again I got some trouble with libata, won't detect my sata-dvdwriter anymore. I'm getting tired of fixing things perfectly working in a previous releases. So I'll keep using 2.6.13.

There where times I could simply emerge a new kernel, compile and everything worked great. However since I moved to 2.6 it's more like emerge a new kernel, compile, google, find/apply/modify some patches, recompile, move back to some older version or replace some hardware that is no longer supported. Uhrrggg, this suckz!

----------

## maudib

well...i resetted my Bios settings and one of my problems disappeared. strange though that it worked in .13.

problem still remain that when coming back from Idle, i have to click middle button to be able to focus any other window than the one i had focus on when i resumed the keyboard.

----------

## jadedjay

I followed the steps to set up the bluetooth mouse and found them very helpful thanks   :Very Happy: 

But both my mouse and keyboard keep disconnecting in KDE after a short time of not being used.

I setup KBluetoothd to get them working in KDE.  However I am not sure if I should be doing anything else.

Its most annoying as I walk away from my computer and my mouse and keyboard disconnect.

Any ideas?

----------

## mammlouk

I also cannot get the mousewheel working in 2.6.14 even with patches.  Has anyone got this to work?  Any help is greatly appreciated.

----------

## I.C.Wiener

As 2.6.15 has some interesting new features I'd like to use, I spent some time looking for a solution for the wheel-problem and found this on sourceforge:

http://sourceforge.net/mailarchive/forum.php?thread_id=9387265&forum_id=1883

A month later,... still no patch in sight. Guess we have to write it on our own :(

*EDIT*

The new mh2-patch for 2.6.15 works for me (gentoo-sources-2.6.15-r5)

Got my wheel working again :)

It can be downloaded here: http://www.bluez.org/patches.html

----------

## SJWackness

How did you get the mouse working?  I have tried to apply that patch you linked to, but as far as I can tell, it's already part of Gentoo Kernel 2.6.15-r7.  I can get the mouse and keyboard working with the absolute minimum functionality, but I can not get the scroll wheel nor the side mouse buttons to work.  When I cat /dev/input/mice I only get responses from the left and right buttons and the click wheel when pressed down.  I have every Bluetooth option enabled in the kernel.  What am I missing????

----------

## michaelbevilacqua

This is what I did with 2.6.17-ck1

http://www.bluez.org/patches.html  and download http://www.holtmann.org/linux/kernel/patch-2.6.17-mh2.gz

then

```

gunzip patch-2.6.17-mh2.gz

cp patch-2.6.17-mh2 /usr/src

cd /usr/src

ln -s linux-2.6.17-ck1 linux-2.6.17

patch -p0 < patch-2.6.17-mh2

cd linux

make clean && make && make modules_install

```

Copy your kernel from arch/i386/boot/bzImage into /boot and reconfigure your bootloader.

HTH.

----------

## I.C.Wiener

I just applied the mh5-patch to gentoo-sources-2.6.17-r1 - works.

Btw. Apple just created a bluetooth-edition of the mighty-mouse. Both mice are almost equally priced, but the mighty mouse comes with an on/off-switch (to save battery) which is a great plus for notebook-users who carry their mouse around a lot. If the ball (yep, they went one step further and replaced the wheel with a ball, so you can scroll in any direction) works with an unpatched kernel I'll probably buy one.

----------

## tkhobbes

Hi all

Do I get this correctly: Even if I emerge the latest gentoo-sources (2.6.17-r8 at the moment) and the latest bluez-utils, I still need to download and apply the patch from bluez.org?

thomas

----------

## Tenser234

Hey all, I just spent 20 minutes doodling to figure out the correct map of the keys.

My Intellimouse Explorer for BT apparently has 9 buttons according to xmod. I figure the other two are for the tilt, which I do not have.

Either way, assigning each button a letter, then finding which letter referenced which number and moving the numbers around I got this

```

xmodmap -e "pointer = 1 9 3 4 5 2 8 6 7"

```

I do not know what 9, 2 or 8 do, except that 2 annoys me cause it tries to paste random information.

A = Left click

B = Middle Click

C = Right Click

D = Scroll Up

E = Scroll Down

F = ?

G = ?

H = Left bottom button

I = Left top Button

If you line the numbers and letters like so,

```

1 9 3 4 5 2 8 6 7

A B C D E F G H I

```

You get normal functionality.

----------

## Massimo B.

Hello, this doesn't work for me.

I'm trying to get a bluetooth mouse (Macally BTmicro) working with the PowerBook G4. Curiously the mouse is working even inside openfirmware before the operating system has started.

The only thing that doesn't work is the mouse wheel. cat /dev/input/mouse2 returns stream for all mouse movement except the wheel. I started the HID daemon but it doesn't see the (working) mouse:

```
# /etc/init.d/bluetooth restart

 * WARNING:  you are stopping a boot service.

 * Shutting down Bluetooth ...

 *     Stopping rfcomm ...

Can't get device list: Operation not supported   [ !! ]

 *     Stopping sdpd ...                         [ ok ]

 *     Stopping hcid ...                         [ ok ]

 * Starting Bluetooth ...

 *     Starting hcid ...                         [ ok ]

 *     Starting sdpd ...                         [ ok ]

 *     Starting rfcomm ...                       [ ok ]

# lsmod

Module                  Size  Used by

rfcomm                 31096  0

l2cap                  23940  5 rfcomm

evdev                  10560  8

# hidd --search

Searching ...

# hidd --show

# hcitool con

Connections:
```

At http://www.bluez.org/patches.html there is a patch for 2.6.22, I'm running 2.6.22-gentoo-r5. Do I still need this patch for the mouse wheel? I thought the parts you patched some time ago are already in the official tree?

Maybe the BT stuff of the PowerBook is somehow managed my Openfirmware because even there the mouse is working. If so I will better ask the PPC group.

----------

