# [Solved] MS Natural Keyboard?

## dspahn

I have a MS Natural Keyboard, wired, USB, and it's not working.... This is a new installation of Gentoo, I'm running KDE and I set everything up about 10 days ago. I've emerged the xorg-drivers package, making sure to have evdev and usb enabled. I have a couple of Logitech receivers with various mice on them, which are USB wireless receivers... and no problems there. When I plug this keyboard in, I don't even get the caps lock light. Apparently there used to be a page for configuring the Microsoft Natural Ergonomic Keyboard 4000 in the Gentoo Wiki, but it's no longer there.... Does anyone know how to get the device to work?

Thanks!

edit: rebuilt Gentoo on Reiserfs- Had file corruption issues with jfs. That might have been causing the keyboard problem. I rebuilt and everything is working well now.Last edited by dspahn on Thu Nov 14, 2013 9:29 pm; edited 1 time in total

----------

## Hu

Some Microsoft keyboards are special and need their own Kconfig choice, separate from the usual option required to enable USB keyboards.  Have you checked that the keyboard powers up on non-Linux systems, either in a BIOS/GRUB prompt or on a Windows/Mac computer?  We should be sure the device works at all before we debug why it does not currently work with your Linux install.

----------

## dspahn

I had it working on the same computer prior to installing Gentoo, and I'm pretty sure it worked with the minimal install cd

----------

## ppurka

I don't have this keyboard, but from what I can understand by reading about the hid_microsolft module is the following:

1. Enable CONFIG_EXPERT under General Setup.

2. Go to Device Drivers -> Hid support -> Special HID drivers and enable the "Microsoft non-fully compliant HID compliant devices".

----------

## 666threesixes666

i had this keyboard work under gnome, but i had to mess around a bit with keyboard settings...  under xfce4 u gotta deselect system default keyboard, and scroll down to microsoft naturals, and select the one you want.  im pretty sure "microsoft natural" is a catch all setting.  i dont have a MS natural anymore

----------

## dspahn

I confirmed that I can use the keyboard to move the cursor in GRUB2, but it is not working after the kernel loads. I did recompile with the "Microsoft non-fully HID compliant" option but still no keyboard. I verified the keyboard does not work on the command-line, nor in KDE. Sounds Like I am missing something in the kernel... I ran dmesg 3 times, output below. First time, was the system fresh into KDE off boot. Then I unplugged the keyboard and ran it a second time. I plugged the keyboard in and ran it a third time:

```
dmesg | tail

[   18.065427] iwlwifi 0000:02:00.0: Radio type=0x1-0x3-0x1

[   18.398091] iwlwifi 0000:02:00.0: L1 Enabled; Disabling L0S

[   18.404856] iwlwifi 0000:02:00.0: Radio type=0x1-0x3-0x1

[   18.604658] IPv6: ADDRCONF(NETDEV_UP): wlp2s0: link is not ready

[   18.608765] tg3 0000:0b:00.0: irq 44 for MSI/MSI-X

[   18.722665] IPv6: ADDRCONF(NETDEV_UP): enp11s0: link is not ready

[   20.369125] tg3 0000:0b:00.0 enp11s0: Link is up at 100 Mbps, full duplex

[   20.369133] tg3 0000:0b:00.0 enp11s0: Flow control is off for TX and off for RX

[   20.369157] IPv6: ADDRCONF(NETDEV_CHANGE): enp11s0: link becomes ready

[  304.204690] kworker/u16:0 (6) used greatest stack depth: 3376 bytes left

```

```
dmesg | tail

[   20.369157] IPv6: ADDRCONF(NETDEV_CHANGE): enp11s0: link becomes ready

[  304.204690] kworker/u16:0 (6) used greatest stack depth: 3376 bytes left

[  990.484554] hub 2-1:1.0: state 7 ports 8 chg 0000 evt 0010

[  990.484898] hub 2-1:1.0: port 4, status 0100, change 0001, 12 Mb/s

[  990.485033] usb 2-1.4: USB disconnect, device number 5

[  990.485038] usb 2-1.4: unregistering device

[  990.485042] usb 2-1.4: unregistering interface 2-1.4:1.0

[  990.485180] usb 2-1.4: unregistering interface 2-1.4:1.1

[  990.485240] usb 2-1.4: usb_disable_device nuking all URBs

[  990.589243] hub 2-1:1.0: debounce: port 4: total 100ms stable 100ms status 0x100
```

```
dmesg | tail

[  995.894336] usb 2-1.4: Product: Natural\xffffffc2\xffffffae Ergonomic Keyboard 4000

[  995.894340] usb 2-1.4: Manufacturer: Microsoft

[  995.894490] usb 2-1.4: usb_probe_device

[  995.894498] usb 2-1.4: configuration #1 chosen from 1 choice

[  995.895057] usb 2-1.4: adding 2-1.4:1.0 (config #1, interface 0)

[  995.895121] usbhid 2-1.4:1.0: usb_probe_interface

[  995.895129] usbhid 2-1.4:1.0: usb_probe_interface - got id

[  995.902090] usb 2-1.4: adding 2-1.4:1.1 (config #1, interface 1)

[  995.902117] usbhid 2-1.4:1.1: usb_probe_interface

[  995.902119] usbhid 2-1.4:1.1: usb_probe_interface - got id
```

So it appears that the kernel sees the device. Why doesn't it appear to pass keystrokes?

Thanks!

----------

## ppurka

According to the sources, NE4K is listed in the hid microsoft, so it should work.

One option you have is to boot from a live usb or livecd and check what modules are loaded. Then make sure that the same modules are enabled in your config.

----------

## dspahn

I've been compiling interface (keyboard, mouse, etc) drivers directly into the kernel... Will it make a functional difference if they are modules?

----------

## ppurka

No, modules or not should not make any difference.

----------

## Hu

I believe ppurka's point was not that you should use modules, but that you should use the modular known-working configuration to identify which modules are responsible for success.  Once you know that, you can build a kernel with the equivalent functionality builtin.  Presently, it appears that whatever you have builtin is insufficient.

----------

## dspahn

That's what I thought- I was asking to make sure. I can't do much with it for a couple of days since the keyboard is at work and I am not but I will update this thread on Monday.

----------

