Может ли linux напрямую изменять аппаратную функциональность?

315
StudentCoderJava

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

У меня есть ноутбук Lenovo Y720, у которого есть клавиатура RGB. К сожалению, RGB работает только на Windows, потому что для этого требуется программа под названием «Lenovo Nerve Sense», которая управляет светом. Так как эта программа доступна только для Windows, можно ли каким-либо образом зажечь клавиатуру в Ubuntu? Я перепробовал каждый отдельный поток, который ссылается на tcpi или thinkpads, xled, xset led и все эти функции, которые не работают. Ubuntu на самом деле даже не видит, что у меня есть светодиоды в клавиатуре, она может видеть только заглавные буквы и цифры, так как они находятся на уровне прошивки, а подсветка клавиатуры - нет.

Может ли Linux внести изменения в аппаратное обеспечение, например, найти регистр для RGB-подсветки? Lenovo не поможет с этим, они сказали, ни портировать программу на Linux.

0
Да, вы можете написать программное обеспечение для управления этими светодиодами из Linux. Нет, вы не можете сделать это без документации или обратного проектирования приложения Windows. Daniel B 5 лет назад 2
То есть, другими словами, это невозможно для меня? StudentCoderJava 5 лет назад 0
Если у вас нет опыта работы с низкоуровневым программированием Windows и / или опытом обратного инжиниринга, это почти невозможно или, по крайней мере, очень, очень, очень трудно. gronostaj 5 лет назад 2
Ну да ладно, может просто сдаться. StudentCoderJava 5 лет назад 0
Если это USB-клавиатура, воспользуйтесь Google для «обратного USB-инжиниринга» - это не так сложно, и инструменты теперь легко найти. Если Lenovo действительно хороша (вряд ли), это может быть даже в дескрипторе HID ... Однако будьте готовы потратить много времени, и вам придется читать много технических стандартов и т. Д. dirkt 5 лет назад 0
Это ноутбук я использую StudentCoderJava 5 лет назад 0

1 ответ на вопрос

2
xenoid

Возможный ответ (может не относиться к вашей конкретной машине):

На моем Lenovo P50 на моем стоковом Kubuntu 16.04:

  • Существует каталог /proc/acpi/ibm/в /procпсевдо-файловой системы (Lenovo унаследовала ноутбук бренд компании IBM)
  • В этом каталоге есть несколько файлов, включая один /proc/acpi/ibm/kbdlight
  • cat /proc/acpi/ibm/kbdlight говорит:

    status: 0 commands: 0, 1, 2 
  • затем

    sudo bash -c 'echo 2 >/proc/acpi/ibm/kbdlight' 

    на самом деле загорается клавиатура (с помощью echo 1затемнения и echo 0выключения).

Возможно, у вас уже есть что-то похожее на вашем ноутбуке, поэтому catфайлы и экспериментируйте. Примечание: команда sudo немного надумана, потому что более естественная sudo echo 2 >/proc/acpi/ibm/kbdlightне работает, так как перенаправление на /proc/acpi/ibm/kbdlightвыполняется вашим непривилегированным идентификатором пользователя.

PS: кроме того, на моем P50 комбинация клавиш Fn- по-настоящему spaceуправляет подсветкой клавиатуры.

PPS: Базовым модулем является thinkpad_acpiдрайвер, который теперь является частью ядра Linux (начиная с поздних версий 2.6) и, кажется, активно поддерживается (дополнения в апреле для поддержки P50 ...). Обратите внимание, что документация говорит, что использование /proc/acpiустарело, и /sys/devices/platform/thinkpad_acpi/вместо этого следует использовать .

Вы случайно не знаете, какой модуль ядра делает этот интерфейс доступным (например, посмотрите на `lsmod` и сделайте предположение или посмотрите на` dmesg` после загрузки)? Эта информация может быть важна для других людей, пытающихся заставить ее работать, если модуль ядра не распознает их оборудование (пока). dirkt 5 лет назад 0
@dirkt Смотрите расширенный ответ ... xenoid 5 лет назад 0