Samsung новая серия 9, не все функциональные клавиши работают

Я купил новый ультрабук Samsung серии 9 ( NP900X3C). Я установил Ubuntu 12.04 и ядро ​​mainline 3.5. почти все работает идеально, за исключением некоторых важных функциональных клавиш.

клавиши для яркости экрана и подсветки клавиатуры не работают, что очень раздражает. я добавил вручную новую таблицу ключей, необходимую для этой модели ноутбука (руководство: http://jablonskis.org/2012/linux-and-samsung-series-laptop-9-fn-keys/), но система не загружает их.

я добавил следующие строки в правила udev:

# /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"

система не может загрузить информацию dmi, которая требуется (верно?) для выбора правильной раскладки клавиатуры. инструмент dmidecode возвращает информацию о фоллинге:

# 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.

Кто-нибудь знает, как я могу исправить проблему с dmi (если это проблема) или как заставить udev загрузить мои пользовательские таблицы ключей?

2 ответа

Решение

Чтобы заставить работать клавиши fn, мне сначала пришлось обновить BIOS (установить windows, обновить bios, установить ubuntu снова -> очень весело!), Потому что ubuntu не смог прочитать данные dmi, необходимые для загрузки определенных конфигураций поставщика и модули. Вы можете проверить, доступны ли данные dmi, используя инструмент "dmidecode", который должен вернуть много данных (см. Другой ответ):

$ sudo dmidecode

Я обновил ядро ​​до версии 3.5.3, поскольку в нем есть некоторые необходимые модули samsung.

Я также создал два файла раскладки клавиш и добавил два правила udev, как описано в блоге " Клавиши Fn для Linux и Samsung Series 9 для ноутбуков". Вы должны заменить некоторые специфичные для модуля строки ( 90X3A > 900X3C*, 90x3a > 900x3c), как описано ниже.

# /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

добавить эту строку ниже других строк, связанных с Samsung

# /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"

добавить эту строку ниже других строк, связанных с Samsung

# /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"

Клавиши fn для подсветки клавиатуры и яркости экрана теперь работают. Клавиши Wi-Fi и режим производительности все еще не работают. Вы, вероятно, должны следовать инструкциям в блоге, упомянутом выше.

Возможно это из-за ядра 3.5. У меня тот же компьютер с ядром 3.2.0-29 (предлагаемое ядро) и dmidecode просто отлично:

$ 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)
            ...
Другие вопросы по тегам