4

Для того, чтобы контролировать мою подсветку, мне нужно сделать следующее:

sudo setpci -s 00:02.1 F4.B=x

Это может быть прочитано как:

Для устройства PCI с идентификатором 00:02.1 установите регистр F4 (только для байта) в значение x.

Чтобы выяснить значение, которое я хочу для x, я бы хотел прочитать его текущее значение (в сценарии, который я пишу). Как мне это сделать?

Ранняя работа:

Кажется, это область lspci . Я старался

sudo lspci -x -s 00:02.1

но это не дает достаточного диапазона (не достигает регистр / адрес F4). Однако я могу сделать это с помощью командной строки -xxx . Это дает мне дамп, в котором я вижу байт на F4, который, как я убедился, я могу манипулировать с помощью команды setpci . Тем не менее, руководство говорит:

  -xxx   Show hexadecimal dump of the whole PCI configuration space. It is  available  only  to  root  as  several  PCI
         devices  crash when you try to read some parts of the config space (this behavior probably doesn't violate the
         PCI standard, but it's at least very stupid). However, such devices are rare, so you needn't worry much.

Так что я бы предпочел не помещать это в программу, которая автоматически запускается от имени пользователя root. Есть ли способ просто прочитать значение для регистра F4? Программа getpci ? Флаг setpci ? Какой-то специальный флаг lspci я пропустил?

(Среда - Ubuntu Netbook Remix 9.04 (кармический) (32-разрядная версия) на нетбуке Samsung N140)

2 ответа2

8

Вы хотите программу setpci . Похоже, этот формат будет делать то, что вы хотите:

setpci -s 00:02.1 F4.B

Смотрите man setpci: единственная разница с вашей версией в том, что вы пытаетесь установить регистр, поэтому вы называете его и назначаете значение (« F4.B=x "). Вот, просто назови это; не назначайте значение

Из справочной страницы:

операции

Чтобы запросить значение регистра конфигурации, просто назовите его (набрав его имя или введя адрес регистра с необязательным.B,.W или.L суффикс, определяющий ширину регистра в виде байта, слова или длинного слова).

Чтобы установить регистр, напишите reg = values, где reg такое же, как вы бы использовали для запроса регистра, а значения - это список значений, разделенных запятыми, которые вы хотите записать, начиная с заданного адреса. Каждое записываемое значение может быть задано либо в виде шестнадцатеричного числа, либо в виде пары биты: маска, которая приводит к тому, что биты, соответствующие двоичным единицам в маске, изменяются на значения соответствующих битов в битах.

1

Учтите, что это не будет работать, если ваш дисплей использует новый интерфейс intel_backlight (до этой даты им мог управлять только менеджер питания gnome).

Пожалуйста, прочитайте это: https://askubuntu.com/questions/57236/unable-to-change-brightness-in-a-lenovo-laptop/81389#81389 и ссылки, перечисленные в особенности мой пост (под именем Альваро)

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .