# HELP - m$ "wedge" b/t kb will not pair - SOLVED (sort of)

## Moriah

I bought a Microsoft "wedge" bluetooth keyboard, and it works great under w7, but refuses to pair under gentoo.

```

onesimus ~ # hcitool scan

Scanning ...

        7C:1E:52:1B:44:71       Microsoft Wedge Mobile Keyboard

onesimus ~ # simple-agent hci0 7C:1E:52:1B:44:71

Creating device failed: org.bluez.Error.AuthenticationFailed: Authentication Failed

```

/var/log/messages:

```

Jul 26 11:10:41 onesimus bluetoothd[2005]: Unknown Management opcode 23 (index 0)

Jul 26 11:11:11 onesimus bluetoothd[2005]: hci0: Cancel Pair Device (0x001a) failed: Invalid Parameters (0x0d)

```

Googling reveals many people have much grief with this problem, although mostly ubunto using some goofy gui tool to pair, so not really the same exact problem.

Anybody got a fix/workaround for this?

----------

## Ant P.

Try the "bluetoothctl" command provided by bluez, it seems to be a replacement for all those ad-hoc programs but slightly more reliable. It gives you a command prompt sort of like wpa_cli, with a help command and tab completion.

I've managed to get a BT keyboard of my own to connect using it, though like all things BlueZ-related, it stopped working after a few minutes...

Good luck.

----------

## Moriah

Can't find bluetoothctl

```

onesimus ~ # hcitool scan

Scanning ...

        7C:1E:52:1B:44:71       Microsoft Wedge Mobile Keyboard

onesimus ~ # bluetoothctl

-su: bluetoothctl: command not found

onesimus ~ # emerge -s bluetoothctl

Searching...    

[ Results for search key : bluetoothctl ]

[ Applications found : 0 ]

onesimus ~ # 

```

Now what?

PS  Sorry I was so slow to respond.  Been very busy with work and business travel.    :Sad: 

----------

## Ant P.

Well it's definitely there for me, maybe it depends on USE=readline and you have it disabled?

```
~ # cave owner /usr/bin/bluetoothctl

net-wireless/bluez-5.21-r1::installed
```

----------

## Moriah

That shouldn't keep it from showing up on emerge -s; are you sure you didn't fetch thetarball from somewhere and install it manually?

Besides, I do have readline in USE="... in makefile.conf, so what could the difference be?

----------

## Moriah

DUH!   Dumb me!  I had it masked in packages.mask!    :Embarassed: 

I am installing net-wireless/bluez-5.21-r1:0/3  now.  I will report back later.

----------

## Moriah

OK, when I install the latest bluez, I get bluetoothctl, and I can use that to get both my microsoft bluetooth mouse and my microsoft bluetooth wedge keyboard to work.

The bluetoothctl tool is pretty awkward. First, it is interactive, so I can't script it, and second, I can't figure out how to make the pairing persistent, how to make it turn on the bluetooth chip in the laptop at boot, and how to make it auto-connect to a previously paired device that has been declared trusted.  All that used to work with my microsoft bluetooth mouse before the upgrade to bluez5, but of course, I couldn't connect to my new microsoft bluetooth wedge keyboard under bluez4 either.

What is the technique to establish a persistent pairing, and to auto-connect, including to force the bluetooth chip to power up on boot.

I would actually be pretty happy if I had to manually power up the bluetooth chip, and power it down, as that would be a security enhancement, but I want to do it from a script, not interactively.

I realize I could always write an expect script to drive bluetoothclt, but there is surely a better way.

And even the expect script would not keep paired device information on disk.  i would still have to re-pair every time I rebooted.  it was veryconvenient before.  rembering paired devices, and auot-power up and autoconnect.

Furthermore, I can't even connect a device unless it is in pairing mode.  The way things ought to be is that once paired and trusted, the device should auto-connect whenever it is on and in range.  That's how it used to be under bluez4.

Is there a whole new set of tools for bluez5 that I just don't know about, or is bluetoothctl it?

And why does a device have to be in pairing mode to connect to it if it is already paired?

----------

## Moriah

On a side note, I determined that I can script bluetoothctl as follows:

```

echo '<some string>' | bluetoothctl

```

and it works fine that way, processing <some string> as a command.

So I can put this in a script to turn bluetooth on and off (2 scripts).

I still need to solve the problem of pairing and connecting persistently.

Apparently some paring information is saved somewhere, because I no longer have to enter a pin to pair the keyboard, whereas I did have to enter one at first.  Now it just pairs on command, but it won't connect unless I do a pair first, and the mouse or keyboard must be in pairing mode to pair and to connect.  This is not how it used to work under bluez4; it just saw a device that had been paired before the last power cycle, and it connected to it implicitly.

There are also timing issues involved with pairign and connecting.  The sequence that I must go thru to connect my mouse is: power up; scan on; pair; connect; quit;

There are delays after the pair and the connect operations, and if you issue the connect too soon, before it says it is paird, then it won't connect.  All this could be handled by a snazzy expect script, but that is messy.  Maybe that is what I will have to do, unless someone knows a beterr way.

----------

## szatox

 *Quote:*   

> There are delays after the pair and the connect operations, and if you issue the connect too soon, before it says it is paird, then it won't connect. All this could be handled by a snazzy expect script, but that is messy. Maybe that is what I will have to do, unless someone knows a beterr way.

 

While it i a bit ugly, it is a quick solution you can easily apply. I'd go for it as temporary hack.

Does it report success/failure with exit codes? If yes, you could use that code as a condition for a loop running e.g 'sleep 3; connect' sequence

(last exit code is in variable $?  )

----------

## Moriah

There is no man page, so I don't know if it supports exit codes or not; I should test for that.  But the expect script idea would work in any case.

Nonetheless, it still requires the user to manually put the peripheral in pairing mode every time you need to connect.    :Evil or Very Mad: 

Yes, it can be made to work, but its like saying you have to push start your car because the starter was broken by an upgrade.

----------

## Ant P.

You might be able to skip the pairing using the "trust <BDaddr>" command. Just a guess.

----------

## Moriah

A reasonable guess, but it doesn't work.  Already been there, done that, no T-shirt available.    :Evil or Very Mad: 

----------

## Moriah

I have determined that once I have paired a device, it knows that device, so it only needs to connect to it.  The problem is that the device needs to be in pairing mode for it to connect to it, so I still have to put the keyboard or mouse into pairing mode just to connect to it, even thought I do not have to re-pair to it.  The old bluetooth support used to make me do that too, but they fixed it.  Now the new bluez stuff has un-fixed it.    :Evil or Very Mad: 

----------

## Moriah

I have found another misbehaviour, but it seems to only happen with the Microsoft wedge keyboard, not the Microsoft bluetooth mouse.

After working flawlessly for an hour of so, then keyboard suddenly drops the connection, or maybe the laptop drops the connection to the keyboard; in either case, the connection ceases to exist.  I can go to the laptop keyboard and run echo 'connect xx:xx:xx:xx:xx:xx' | bluetoothctl after first putting the wedge keyboard in pairing mode, and it reconnects and works again.

Anybody else seen this behaviour, with any bluetooth device?

----------

## Moriah

Seems the mouse has the same connection dropping problem, but just not as often.

Anyway, I am marking this thread SOLVED, because it is titled about pairing the keyboard.  That part is solved.  I will start a new thread regarding bluetooth HID devices dropping out, and requiring the device to be in pairing mode just to reconnect.

----------

## Moriah

After a recent weekly update last weekend, the mouse and keyboard stay connected -- no more dropouts.  I wonder what was changed that made the difference.    :Shocked: 

----------

