Почему "Режим полета" продолжает переключаться на моем ноутбуке HP в Ubuntu 18.04?

У меня ноутбук HP Specter x360 с откидным верхом, и я использую Ubuntu 18.04. Каждый раз, когда я поворачиваю экран вбок или в режиме планшета и обратно, активируется "Режим полета". Фактически, когда я загружаюсь и регистрируюсь, я должен вручную отключить "Режим полета" и снова включить Wi-Fi. Я не хочу отключать плагин gnome rfkill следующим образом: "gsettings set org.gnome.settings-daemon.plugins.rfkill active false", потому что тогда я больше не могу использовать Bluetooth. Кроме того, по какой-то богом забытой причине, даже когда я действительно отключаю плагин, оболочка gnome в любом случае включает "Режим полета", что означает, что я должен возвращать Wi-Fi обратно КАЖДЫЙ раз, когда я вхожу в систему. Это очень раздражает, я действительно понравилось, где 18.04 собирался, но это серьезно нарушает весь опыт оболочки гнома.

4 ответа

Решение

В оболочке gnome "Режим полета" автоматически активируется при загрузке для многих ноутбуков HP, когда экран наклонен в сторону или когда крышка открыта / закрыта. Ниже приведено исправление для ноутбуков HP, работающих под управлением Linux и использующих оболочку gnome. Код ключа 240 определен как KEY_UNKNOWN (тип неактивного ключа) в /usr/include/linux/input-event-codes.h. Также ваш системный журнал больше не будет предлагать вам определять коды HP e057 и e058, которые могут быть очень раздражающими.

Во-первых, это исправление с использованием классического сценария инициализации SysV, помещенного в каталог init.d и имеющего символическую ссылку соответственно (в основном, мы хотим, чтобы он выполнялся независимо от уровня запуска для чего-либо, кроме halt (0) или reboot (6)). Второй - это сервис systemd, который гораздо более надежен и, возможно, присутствует в последних изменениях systemd, который также работает на Fedora 28 и других дистрибутивных платформах. В частности, на Fedora вы найдете почти полное отсутствие скриптов в каталоге /etc/init.d вместе с небольшим README, подробно описывающим переход от SysV к systemd. Первый метод будет работать, но второй метод гораздо более "дружественен к будущему", особенно с учетом того, куда движется Ubuntu, и также будет работать немного менее... раздражающим образом. Сценарии инициализации Systemd на самом деле довольно удобны, полностью реализованы и часто используются в Ubuntu 18.04.

Старый метод SysV:

$ sudo sh -c 'printf "#! / bin / sh \ n / usr / bin / setkeycodes e057 240 e058 240 \ n"> /etc/init.d/hp-keycodes'
$ sudo chmod + x /etc/init.d/hp-keycodes
$ sudo ln -s /etc/init.d/hp-keycodes /etc/rc1.d/K01hp-keycodes
$ sudo ln -s /etc/init.d/hp-keycodes /etc/rc2.d/S01hp-keycodes
$ sudo ln -s /etc/init.d/hp-keycodes /etc/rc3.d/S01hp-keycodes
$ sudo ln -s /etc/init.d/hp-keycodes /etc/rc4.d/S01hp-keycodes
$ sudo ln -s /etc/init.d/hp-keycodes /etc/rc5.d/S01hp-keycodes
$ sudo reboot

Новый рекомендуемый метод Systemd:

$ sudo nano /etc/systemd/system/hp-keycodes.service

Вставьте следующие строки или введите их в файл:

[Единица измерения]
Описание = исправление кодов установки HP

[Обслуживание]
Тип = OneShot
Restart= нет
RemainAfterExit= нет
ExecStart = / usr / bin / setkeycodes e057 240 e058 240

[Установить]
WantedBy=rescue.target
WantedBy=multi-user.target
WantedBy=graphical.target

Сохраните и подтвердите имя файла с помощью ctrl-x, y.

$ sudo systemctl daemon-reload
$ sudo systemctl enable hp-keycodes.service
$ sudo reboot

И это все, больше не надоедливые странные вещи, когда вы наклоняете экран или закрываете / открываете крышку ноутбука!

У меня та же проблема с 17.10 на моем HP Spectre x360. На самом деле, я сталкиваюсь с проблемами Николаса и Пьера-Антуана:

  • Режим полета активируется каждый раз, когда я вхожу или переключаюсь в режим планшета;
  • Fn + F12 (кнопка переключения режима полета) больше не работает.

Чтобы быстро переключить Wi-Fi, я сделал небольшой скрипт:

## Content of ~/scripts/wifi_toggle : ##
    #!/bin/bash
    str=`export LANGUAGE=en_GB ; nmcli r wifi`
    [ "$str" == "enabled" ] && nmcli r wifi off
    [ "$str" == "disabled" ] && nmcli r wifi on

Я редко использую Bluetooth, так что он работает только с Wi-Fi, но вы можете легко изменить его для работы с Bluetooth и Wi-Fi.

Все это явный регресс от 17.04, где все работало без нареканий. Я попробовал 18.04 бета, но это та же самая ситуация, что и с 17.10.

Николас, Пьер-Антуан, я заполняю, как заполнение двух отчетов об ошибках по этим вопросам (по отчетам за выпуск). Как вы думаете, вы могли бы иметь комментарий в этих отчетах всякий раз, когда я закончу писать? Это поможет подтвердить состояние ошибки (затронуто более одного пользователя).

ура

Огромное спасибо!

Я могу подтвердить, что Nicholas Stommel также работает на моем Huawei Matebook D15 (не конвертируемом), который, похоже, потерял все подключения после приостановки.

После проверки файла

      /usr/include/linux/input-event-codes.h 

Я мог убедиться, что в моей системе ключ 240 также был помечен как KEY_UNKNOWN, поэтому я решил попробовать его решение " Systemd "... и оно сработало! Очевидно, я изменил имя нового файла, чтобы оно отражало мою систему («huawei-keycodes.service»), а также изменил описание службы в файле, но все остальное было просто заданием копирования/вставки. Еще раз спасибо, и я надеюсь, что мой опыт поможет другим людям с похожими проблемами, которые не обязательно работают на машинах HP.

Редактировать : только что понял, что это работает только тогда, когда я активно приостанавливаю работу компьютера, оно не работает, когда компьютер автоматически приостанавливается при закрытии крышки ... Мне нужно еще провести некоторые исследования ...

В продолжение ответа Николаса Стоммела udev также может устанавливать коды клавиш из hwdb для соответствующего оборудования. Фактически, системный udev hwdb является виновником этой неисправности в первую очередь. У меня есть следующий фрагмент в :

      # systemd's udev hwdb breaks our keyboard tablet mode switcheroo thing.  Fix it.

evdev:atkbd:dmi:bvn*:bvr*:bd*:svnHewlett-Packard*:pnHPSpectrex360Convertible*:pvr*
 KEYBOARD_KEY_ab=unknown    # emitted by brightness keys
 KEYBOARD_KEY_d7=f22        # normal mode - turn touchpad on
 KEYBOARD_KEY_d8=f23        # tablet mode - turn touchpad off

Установка этих клавиш на F22 и F23 заставит GNOME отображать значок включения/выключения сенсорной панели при переключении из/в режим планшета. определение состоит в том, чтобы отключить предупреждение ядра всякий раз, когда нажимается клавиша уменьшения/увеличения яркости.

Я не знаю, является ли селектор здесь слишком ограничивающим, но он работает на моем ноутбуке модели 2015 года. Соответствующее название продукта в селекторе можно найти, запустив .

Другие вопросы по тегам