Gentoo Wiki


This is my first howto, so please bear with me, and please correct me if I do anything wrong.


Before starting

First of, this is tested with the first DiNovo-set with the MX 900-mouse, but it should work with the other DiNovo-sets. This configuration is done with the modular xorg and the ck-pathed kernel 2.6.20. This should work with gentoo-sources ver 2.6.20 or newer too without need for bluetooth-patching of the kernel. The basic setup without using bluetooth and all the features of this set seems to work out of the box in nearly all cases, so the simple setup won't be covered here.

Getting the bluetooth up and working

Well now we are ready to get started. First off we need some kernelconfigurations (genkernel users should be able to skip this part):

Linux Kernel Configuration: Bluetooth kernel setup

Tested with Kernel 2.6.20, this should work with other 2.6-kernels but for older kernels may need a patch from [1]

Networing --->
   <M> Bluetooth subsystem support --->
      <M> L2CAP protocol support
      <M> SCO links support
      <M> RFCOMM protocol support
      [*]   RFCOMM TTY support 
      <M> BNEP protocol support
      [*]   Multicast filter support
      [*]   Protocol filter support
      <M> HIDP protocol support
      Bluetooth device drivers --->
         <M> HCI USB driver
         [*]   SCO (voice) support
         <M> HCI UART driver
         [*]   UART (H4) protocol support
         [*]   BCSP protocol support
         <M> HCI BCM203x USB driver
         <M> HCI BPA10x USB driver
         <M> HCI BlueFRITZ! USB driver
         < > HCI VHCI (Virtual HCI device) driver

I'm not sure that all the drivers are needed, but better safe than sorry. And it can also be seen as a future-safe setup in case you'll use other devices and/or need more features later. You could also chose not to use modules (which is what I've done), in that case I still compile the BCM203x, BPA10x and BlueFRITZ! usb-drivers as modules and also the SCO links support and BNEP protocol is compiled as modules at my place. Next on the list is to ensure that the usb-support is correctly set. Lets go on:

Linux Kernel Configuration: USB kernel setup
Device Drivers --->
   USB support --->
      <*> Support for Host-side USB
      <M>   USB HCD (USB 2.0) support
      <M>   OHCI HCD support
      <M>   UHCI HCD (most Intel and VIA) support
      <M> USB Human Interface Device (full HID) support
      [*]   /dev/hiddev raw HID device support

Ok now we got the kernel setup done, then you should compile and install it.

Get bluetooth started

Ok, now the kernel is ready for use we'll have to install some applications, so we can put our newly achieved features into use:

root# emerge -av dbus net-wireless/bluez-libs  dev-libs/libusb net-wireless/bluez-utils
      Calculating dependencies... done!
      [ebuild  N   ] sys-apps/dbus-1.0.2  USE="X -debug -doc (-selinux)" 1,368 kB 
      [ebuild  N    ] net-wireless/bluez-libs-2.25  285 kB 
      [ebuild  N    ] dev-libs/libusb-0.1.12  USE="-debug -doc" 381 kB 
      [ebuild  N    ] net-wireless/bluez-utils-2.25-r1  USE="alsa cups dbus gtk -pcmcia (-udev%*)" 579 kB 

      Total: 3 packages (3 reinstalls), Size of downloads: 1,244 kB

      Would you like to merge these packages? [Yes/No]
root# /etc/init.d/dbus start
root# rc-update add dbus default

Make sure to have dbus enabled and you might want alsa enabled too if you want to use a bluetooth headset. When installed it's time to get some devices connected. You may need an extra keyboard at your hand. If you haven't rebooted into your newly setup kernel do it now. Then lets get our hands into some configurations. Use your favorite editor and make sure your files look like this:

File: /etc/conf.d/bluetooth
# Bluetooth configuraton file

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

# Config file for hcid

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

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

# Arguments to hidd // I'm not excatly sure what it does, but it seems like it makes the mouse and keyboard "auto"-connect

# Run hid2hci (allowed values are "true" and "false") // you definitly want this

# Bind rfcomm devices (allowed values are "true" and "false") // it's not needed, but it is useful

# Config file for rfcomm

# Start dund (allowed values are "true" and "false") // you can set this to true, but I'm not sure why youd need it
# If you want to use dund, you must install: net-dialup/ppp .

# Arguments to dund
DUND_OPTIONS="--listen --persist"

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

# Arguments to pand
PAND_OPTIONS="--listen --role NAP"
File: /etc/bluetooth/hcid.conf
# HCI daemon configuration file.

# HCId options
options {
        # PIN helper
        pin_helper /etc/bluetooth/pin-helper;

At last edit "/etc/bluetooth/pin-helper" to contain your own person person integer-password (DO NOT USE THE DEFAULT 1234!!!) Now we're good and running, lets get things dirty. First, if you didn't reboot after compiling the kernel, now is a goot time to do so. Now from now on you might need an extra keyboard at your computer. If you don't have an extra keyboard DO NOT add bluetooth to the startup=scripts, since it probably will make it impossible for you to use your keyboard. Now the warning is done then lets go:

# If you didn't compile as modules, this line is to be ignored
root# modprobe -v bluetooth l2cap rfcomm hidp hci_usb # this should do... I hope
root# /etc/init.d/bluetooth start

Wait for the devices to autoconnet, which they hopefully just will do. If it worked, then you can safely jump to the section on configuring xorg. Otherwise jump to connecting the devices section (might still be a good idea to read, so you know how to do it. Just in case). If things just work add bluetooth to your startup and jump to the next part of this guide:

rc-update add bluetooth default

Otherwise you'll have to wait until I or someone else writes the last part. You can have a look at the forum, since most of my info is from the forum.

Setting up xorg

This section covers some of the xorg-settings possible to extend the usability of the DiNovo.


If you intend to use the extended keyboard-settings, go directly to them now.

Basic settings

The basic settings is quite simple and is actually the same as any other keyboard. In Gnome or KDE you should be able to do the following (I haven't confirmed it, since I use neither of these). Gnome Menu -> Applications -> Desktop Preferences -> Keyboard KDE Menu -> Kontrol Center -> Accessibility -> Keyboard Layout In the graphical manager set the following settings: Driver "kbd" XkbRules "xorg" XkbLayout "us" The XkbLayout should match the locale you are using. For those (like me) who sets the settings manually in the xorg.conf, do the following:

File: /etc/X11/xorg.conf
Section "InputDevice"
        Driver  "kbd"
        Option "XkbRules"       "xorg"
        Option "XkbLayout"      "us"

If you do things manually, then you'll have to restart X.

Extended settings

Ok, lets get rocking, so we can use our new settings at once. First of the reference to xkb might be broken (it was on my system)

root# ls -l /etc/X11/xkb #note it's important not to have the last / in this case

should reveal if it is broken (on my system the reference point is shown with red) if it's broken try this

root# rm /etc/X11/xkb
root# ln -s /usr/share/X11/xkb /etc/X11/xkb

Now we'll have to edit some files:

File: /etc/X11/xorg.conf
Section "InputDevice"
        Driver  "kbd"
        Option "XkbRules"       "xorg"
        Option "XkbModel"       "logidmd"
        Option "XkbLayout"      "us"

File: /etc/X11/xkb/rules/xorg
# Find this line
logiinkse logiinkseusb logiitc logiik itouch logiultrax \
# Add logidmd to it, so it looks like the line below
logiinkse logiinkseusb logiitc logiik itouch logiultrax logidmd \
File: /etc/X11/xkb/rules/xorg.xml
# Add the logidmd-xml-code, remember to nest correctly
        <description>Logitech diNovo Media Desktop</description>
        <description>Logitech Access Keyboard</description>

File: /etc/X11/xkb/symbols.dir
# Add the middle line
--p----- a------- inet(logiik)
--p----- a------- inet(logidmd)
--p----- a------- inet(itouch) 

Ugh many files, just one left, and that's the one that makes magic

File: /etc/X11/xkb/symbols/inet
# Update so we got something like this:
partial alphanumeric_keys
xkb_symbols "logidmd" {
name[Group1]= "Logitech diNovo Media Desktop";

key <I12> { [ XF86Sleep ] };
key <I02> { [ XF86HomePage ] };
key <I6C> { [ XF86Mail ] };
key <K68> { [ Undo ] };
key <K67> { [ XF86MyComputer ] };
key <I22> { [ XF86AudioPlay, XF86AudioPause ] };
key <I24> { [ XF86AudioStop ] };
key <I10> { [ XF86AudioPrev ] };
key <I17> { [ XF86Search ] };
key <I19> { [ XF86AudioNext ] };
key <I21> { [ XF86AudioRaiseVolume ] };
key <K66> { [ XF86AudioLowerVolume ] };
key <KPDC> { [ XF86AudioMute ] };
key <XFER> { [ XF86AudioMedia ] };
key <I6A> { [ XF86Back ] };
key <I69> { [ XF86Forward ] };

partial alphanumeric_keys
xkb_symbols "logiik" {
name[Group1]= "Logitech Internet Keyboard"; 

Setting up udev-rule



Retrieved from ""

Last modified: Sun, 07 Sep 2008 01:54:00 +0000 Hits: 1,435