How do I make Ubuntu appear as a bluetooth keyboard?
I have an iPad 2 and would like that my Ubuntu system appear as a bluetooth keyboard for it, so that what I type on my computer appears on my iPad.
Is there a specific way to do that?
Solution 1:
You can make your computer act as a Bluetooth keyboard for other devices, provided that:
- It has Bluetooth, and runs Bluez. (This is true of Ubuntu systems with Bluetooth.)
- It's running a Linux-based operating system. (That includes Ubuntu!)
- You have administrative abilities in your Linux-based OS (for example, you can
sudo
toroot
).
There is a FOSS program that does this, called hidclient:
The hidclient program makes a Bluetooth® technology equipped computer appear as a Bluetooth® keyboard and mouse device to other machines. Input events (like keystrokes and mouse movements) of the locally attached input devices will be forwarded to another machine via the Bluetooth® link.
For the counterpart (which might be a Linux PC, a Win PC, a PDA...) there is no technical difference to "real" Bluetooth® input devices.
Source: hidclient's official site (main page).
That totally rocks: you don't have to do anything special to your iPad (or any other mobile device that works with Bluetooth keyboards) to get this to work. You don't have to jailbreak it. You don't have to install any special apps. Just install and run hidclient, then tell your mobile device (the iPad) you want to use your Bluetooth keyboard!
Everything you need to get the software and learn how to use it is right here.
After reading the whole page (so you understand how it works), make sure to use the instructions at the end (for Ubuntu).
Here's a compact version (essentially the same procedure – this worked better for me):
- Install libbluetooth-dev .
- Download hidclient source code for Ubuntu. (Check the official page to make sure that's not out of date.) Put it in a folder by itself and extract its contents.
- Type
make
and press Enter to compile the source. - Back up and edit your Bluetooth configuration:
•sudo cp /etc/bluetooth/main.conf /etc/bluetooth/main.conf.old
•sudo -H gedit /etc/bluetooth/main.conf
• Under#DisablePlugins = network,input
add the lineDisablePlugins = input
(no#
).
• Add a#
to the beginning ofClass = 0x000100
; under it, writeClass=0x000540
(no#
).
• Save the file and quit the text editor. - If you want to be able to run
hidclient
like a normal command:
• Runsudo cp hidclient /usr/local/bin
.
• Check if/usr/local/bin
is in your path withecho $PATH
.
• If it's not, add it with any of these methods.
If you skip this step, you can runhidclient
by making sure you're in the directory where you compiled it, and running./hidclient
instead ofhidclient
.
Running hidclient
Run hidclient --help
(or see the bottom of the web page) to see how to use it.
Except when run with the --help
flag, hidclient
must be run as root. So use sudo hidclient
(followed by whatever options you're specifying, as explained in the help).
Basically, there's two steps:
- Run
sudo hidclient -l
for a numbered list of devices. - Run
sudo hidclient -eN -x
, replacingN
with the number of the device you want to "forward" over Bluetooth. In your case, this will be the keyboard.
You're all set. Tell your mobile device (iPad) to use a Bluetooth keyboard.
Terminating hidclient
The last thing you need to be able to do is to stop using the keyboard for Bluetooth input. See, when hidclient
is running, the device you select is no longer giving input to your Ubuntu system. If it were anything but the keyboard (say, the mouse), you could quit hidclient
by pressing Ctrl+C in the Terminal.
But you cannot do that, because keyboard input won't go to the Terminal or any other Ubuntu program. The keyboard is acting as a Bluetooth device!
So, when "forwarding" the keyboard, quit hidclient
by closing the Terminal window (or tab) in which it's running, with the mouse (or trackpad).
- Of course, if your Ubuntu machine has multiple keyboards, you could "forward" one as a Bluetooth device and continue to use the other on your computer.
References/Acknowledgements
- hidclient program and project page, by Anselm Martin Hoffmeister
- This Server Fault answer by Capt.Nemo, which pointed me in the right direction.