LINUX.ORG.RU

Mute-LEDs на ThinkPad X220

 , , ,


0

3

Вопрос к владельцам - как настроить индикаторы Mute для звука и микрофона (те что на кнопках) на отображение состояния соответствующих опицй в alsamixer?

Настроить сами кнопки не проблема. Не проблема настроить управление индикаторами по нажатию на кнопки. Но если я вручную в alsamixer поменяю опции соответствующие, то это никак не отразится на индикаторах. А хочется, чтоб они всегда были засинхронизированы.

То бишь, хочется чтоб как здесь: http://askubuntu.com/questions/138217/lenovo-mute-led-button-not-working

Такое на X220 уже делали или придётся ядро хачить?

Кастую пользователей сабжа: kernelpanic vvviperrr nei8Adai sptim


Под как здесь имелось ввиду «Mute-LED Mode - Follow Master». У меня в alsamixer такого нет. Ядро 3.10.32 гентовое.

xusrol
() автор топика

У меня дебиан и х230 с той же проблемой.

Sound on/off настроил без проблем по ману с thinkwiki. То с mic on/off долгое время были проблемы.

Если нажимать mic, то долгое время в acpi_listen ничего не отображалось. Только с последним ядром из тестинга появилась реакция. И если в алсе вручную выключить микрофон, то кнопка горит.

Пока мне лень повесить событие на acpi.

Попробуй посмотреть события в acpu_listen и при необходимости повесь скрипт на событие.

Deleted
()
Ответ на: комментарий от Deleted

Яж сказал, что сами кнопы настроить не проблема, вопрос как настроить изменение состояния индикаторов по изменениям в alsamixer

xusrol
() автор топика
Ответ на: комментарий от xusrol

Написать скрипт на событие acpi.

Deleted
()
Ответ на: комментарий от vvviperrr

Я что-то не догоняю вас всех. Жмак на опцию в alsamixer будет генерировать acpi событие что ли? Или это вы не догоняете мой вопрос?

Ещё раз - вопрос не про обработку жмака кнопы. Вопрос про обработку изменения опции в alsamixer!!!

xusrol
() автор топика

Когда заморачивался с настройкой был примерно такой костыль.

Не придумал ничего лучше проверки статуса раз в секунду. Скорее всего от альсы никак не получить уведомление о смене состояния.

#/bin/bash

state=on
action=unmute

while true; do
    if amixer get Master | grep -Fqm1 "[$state]" ; then
        sleep 1
    else
        if [ $state = on ] ; then
            state=off
            action=mute
        else
            state=on
            action=unmute
        fi
        echo $action > /proc/acpi/ibm/volume
        sleep 1
    fi
done
Belkrr
()
Ответ на: комментарий от xusrol

Кстати, у меня все засинхронизированно. Сейчас проверил, раньше такого не было. Получается оно нынче из коробки работает. Только надо проверить, нужно ли ядро патчить.

// Arch, kernel 3.14.0-5 с патчем

kernelpanic ★★★★★
()
Ответ на: комментарий от xusrol

Тебе уде сказали, скриптом. Кнопка микрофона генерирует событие, светодиод просто висит виртуальным файлом в ФС.

Lighting ★★★★★
()
Ответ на: комментарий от Lighting

Какая кнопка, ты мой пост прочитал, вася? Количество звезд тут обратнопропорционально навыкам чтения что ли?

xusrol
() автор топика
Ответ на: комментарий от xusrol

Подозреваю, что раз несколько человек тебе пишут одно и тоже, а тебе нужно другое. То проблема значит не в этих людях, а в ком-то другом, кто не может сформулировать грамотно вопрос/задачу.

Подумай над этим.

Deleted
()
Ответ на: комментарий от Deleted

А мне кажется вы читать не умеете. Прочитали заголовок и лезете отвечать. Вот цитата, что тут не понятно?

Настроить сами кнопки не проблема. Не проблема настроить управление индикаторами по нажатию на кнопки. Но если я вручную в alsamixer поменяю опции соответствующие, то это никак не отразится на индикаторах. А хочется, чтоб они всегда были засинхронизированы.

И в ответ куча советов как настроить обработку нажатия кнопки.

xusrol
() автор топика
Ответ на: комментарий от xusrol

Тебе уже несколько человек написали, как дело с этими индикаторами обстоит и где что лежит. Слабать скрипт, который будет проверять состояние каналов в alsamixer и менять значение в файле индикатора - несколько минут. Чуть выше даже пример написали.

Но ты ведь слепой, зачем тебе какие-то индикаторы?

Lighting ★★★★★
()
Последнее исправление: Lighting (всего исправлений: 1)
Ответ на: комментарий от Lighting

Это уг, а не решение, меня оно не устраивает. Пример грамотноно решения я привел в топе, но вы же читать не умеете. Так и напишите - мы, пользоватеои лора не осилили нормально настроить индикаторы, можем предложить только говновариант с while true- опросом.

xusrol
() автор топика
Ответ на: комментарий от xusrol

Т.е ты в alsamixer жмакаешь и диод меняет состояние?

Да, жмакаю пробел на Capture и диод на micmute меняет состояние. Жмакаю m на Master и диод на audiomute меняет состояние.

А в микшере есть опция Mute-LED mode?

Не видел такого.

И да, это все на T430s.

kernelpanic ★★★★★
()
Последнее исправление: kernelpanic (всего исправлений: 1)
Ответ на: комментарий от xusrol
--- a/drivers/platform/x86/thinkpad_acpi.c	2013-02-06 08:46:53.546168051 -0500
+++ b/drivers/platform/x86/thinkpad_acpi.c	2013-02-06 08:52:16.846933455 -0500
@@ -5056,8 +5056,10 @@ static const char * const tpacpi_led_nam
 	"tpacpi::unknown_led2",
 	"tpacpi::unknown_led3",
 	"tpacpi::thinkvantage",
+	"tpacpi::unknown_led4",
+	"tpacpi::micmute",
 };
-#define TPACPI_SAFE_LEDS	0x1081U
+#define TPACPI_SAFE_LEDS	0x5081U
 
 static inline bool tpacpi_is_led_restricted(const unsigned int led)
 {
@@ -5280,7 +5282,7 @@ static const struct tpacpi_quirk led_use
 	{ /* Lenovo */
 	  .vendor = PCI_VENDOR_ID_LENOVO,
 	  .bios = TPACPI_MATCH_ANY, .ec = TPACPI_MATCH_ANY,
-	  .quirks = 0x1fffU,
+	  .quirks = 0x5fffU,
 	},
 	{ /* IBM ThinkPads with no EC version string */
 	  .vendor = PCI_VENDOR_ID_IBM,

Ну и еще вот такие манипуляции я делаю:

$ cat /etc/tmpfiles.d/thinkpad.conf 
w /sys/devices/platform/thinkpad_acpi/hotkey_mask - - - - 0xffffffff
f /sys/devices/platform/thinkpad_acpi/leds/tpacpi::micmute/brightness 0664 root users - -

Правда не уверен в их необходимости в свете последних событий.

kernelpanic ★★★★★
()

Добрался до ноута.
Видно, с недавним обновлением нормально заработал mute led.
Переключателя в alsamixer нет, но синхронизация с master есть.
Mic mute led все еще не работает.


$ uname -r
3.14.1-1-ARCH

$ lspci -nn | grep -i audio
00:1b.0 Audio device [0403]: Intel Corporation 6 Series/C200 Series Chipset Family High Definition Audio Controller [8086:1c20] (rev 04)
Belkrr
()
Последнее исправление: Belkrr (всего исправлений: 1)
Ответ на: комментарий от kernelpanic

Спасибо за наводку, попробовал 3.14.2 из портежей - всё засинхронизировано и работает как надо.

xusrol
() автор топика

Обнаружил баг, после suspend'а состояние диода не восстанавливается. Без патча диод из юзерспейса не доступен. Перезагружать модуль snd-hda-intel не вариант. Так что патч пока еще нужен.

kernelpanic ★★★★★
()
Ответ на: комментарий от kernelpanic

Это уже исправлено. Накати http://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/drivers... мне помогло. К слову, в 3.14.2 у меня восстпновление после гибернации не работает. В 3.14.3 оно пока не поспроизвелось ни разу, так что живемс!

xusrol
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.