samsung new series 9, not all function keys working

i bought the samsung new series 9 ultrabook ( NP900X3C ). i installed ubuntu 12.04 and the mainline 3.5 kernel. almost everything works perfectly, except some important function keys don't work.

the keys for the screen brightness and the keyboard backlit don't work which is very annoying. i added manually a new keymap required for this notebook model ( guide: ) but the system doesn't load them.

i added the following lines to the udev rules:

# /lib/udev/rules.d/95-keymap.rules
ENV{DMI_VENDOR}=="[sS][aA][mM][sS][uU][nN][gG]*", ATTR{[dmi/id]product_name}=="*900X3*", RUN+="keymap $name samsung-900x3c"
# /lib/udev/rules.d/95-keyboard-force-release.rules
ENV{DMI_VENDOR}=="[sS][aA][mM][sS][uU][nN][gG]*", ATTR{[dmi/id]product_name}=="*900X3*", RUN+="keyboard-force-release.sh $devpath samsung-900x3c"

the system is unable to load the dmi info which is required ( is it? ) to select the correct keymap. the tool dmidecode returns the folling info:

# dmidecode 2.11
# SMBIOS entry point at 0xdac66000
SMBIOS 2.7 present.
64 structures occupying 2917 bytes.
Table at 0x000E0840.
Invalid entry length (0). DMI table is broken! Stop.

does anyone know how i can fix the dmi problem ( if this is a problem ) or how i can force udev to load my custom keymaps?

2 Answers

In order to get the fn keys working i first had to update the BIOS ( install windows, update bios, install ubuntu again -> a lot of fun! ) because ubuntu couldn't read the dmi data it requires to load vendor specific configurations and modules. You may check if the dmi data is accessible using the "dmidecode" tool which should return a lot of data ( see other answer ):

$ sudo dmidecode

I updated the kernel to version 3.5.3 since it has some required samsung modules compiled in to it.

I also created two keymap files and added two udev rules as described on the blog Linux And Samsung Series 9 Laptop Fn Keys. You have to replace some module specific strings ( 90X3A > 900X3C*, 90x3a > 900x3c ) as described below.

# /lib/udev/keymaps/samsung-900x3c
0x96 kbdillumup # Fn+F8 keyboard backlit up
0x97 kbdillumdown # Fn+F7 keyboard backlit down
0xD5 wlan # Fn+F12 wifi on/off
0xCE prog1 # Fn+F1 performance mode (?)
0x8D prog2 # Fn+F6 battery life extender

#/lib/udev/keymaps/force-release/samsung-900x3c
# forces key release
0xCE # Fn+F8 keyboard backlit up
0x8D # Fn+F7 keyboard backlit down
0x97 # Fn+F12 wifi on/off
0x96 # Fn+F1 performance mode (?)
0xD5 # Fn+F6 battery life extender

add this line below the other samsung related lines

# /lib/udev/rules.d/95-keymap.rules
ENV{DMI_VENDOR}=="[sS][aA][mM][sS][uU][nN][gG]*", ATTR{[dmi/id]product_name}=="900X3C*", RUN+="keymap $name samsung-900x3c"

add this line below the other samsung related lines

# /lib/udev/rules.d/95-keyboard-force-release.rules
ENV{DMI_VENDOR}=="[sS][aA][mM][sS][uU][nN][gG]*", ATTR{[dmi/id]product_name}=="900X3C*", RUN+="keyboard-force-release.sh $devpath samsung-900x3c"

The fn keys for the keyboard backlit and the screen brightness work now. The wifi and performance mode keys still don't work. You have probably to follow the instructions in the blog mentioned above.

1

Maybe is it because of the 3.5 kernel. I have the same computer with kernel 3.2.0-29 (proposed kernel) and dmidecode is just fine:

$ sudo dmidecode
SMBIOS 2.7 present.
64 structures occupying 2917 bytes.
Table at 0x000E0840.
Handle 0x0000, DMI type 0, 24 bytes
BIOS Information
Vendor: Phoenix Technologies Ltd.
Version: P02AAC
Release Date: 06/01/2012
Address: 0xE0000
Runtime Size: 128 kB
ROM Size: 3072 kB
Characteristics:
PCI is supported BIOS is upgradeable BIOS shadowing is allowed Boot from CD is supported Selectable boot is supported EDD is supported Print screen service is supported (int 5h) 8042 keyboard services are supported (int 9h) ...
3

Your Answer

Sign up or log in

Sign up using Google Sign up using Facebook Sign up using Email and Password

Post as a guest

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

You Might Also Like