Форум Beholder http://beholder.ru/bb/ | |
Работа пульта ДУ в разных программах http://beholder.ru/bb/viewtopic.php?f=11&t=6081 |
Страница 6 из 9 |
Автор: | CyberMax [ 28 май 2009, 12:58 ] |
Заголовок сообщения: | |
У меня в /dev/input нет event'а для пульта. Шо делать? писал(а): 2baldahin: В этой карте пульт работает по протоколу I2C, в процессе разработки сломали автоматическую загрузку модуля ir-kbd-i2c через которую работает пульт. Ошибка починена в 2.6.28. Для работы пульта при старте системы загружайте модуль ir-kbd-i2c Загружаю этот модуль по modprobe ir-kbd-i2c но ничего не происходит, должно ведь появиться устройство? Или нужно чтоб он загружался при старте системы, это важно? Как это сделать? Я в линуксе недавно. писал(а): помогло исправление в файле /usr/share/hal/fdi/preprobe/20thirdparty/lirc.fdi писал(а): Проблема возникает в сервисе hal (управление-определение устройств), оно перехватывало пульт как клавиатуру. Чтобы это изменить можно положить малый файл в /etc/hal/fdi/preprobe/lirc.fdi Так все таки какой путь к этому файлу должен быть? Это решает проблему с тем что нет event'а для пульта? Что ещё может быть? Вычитал ещё где-то что модуль ir-kbd-gpio нужно запустить, но у меня в системе его похохе вообще нет: Цитата: # modprobe ir-kbd-gpio
FATAL: Module ir_kbd_gpio not found. # modprobe lirc_gpio FATAL: Error inserting lirc_gpio (/lib/modules/2.6.28-11-generic/kernel/ubuntu/lirc/lirc_gpio/lirc_gpio.ko): Invalid request code В репозитории его нет, где его брать? Или он не нужен на самом деле? Что посоветуете? |
Автор: | igk72 [ 28 май 2009, 13:28 ] |
Заголовок сообщения: | |
писал(а): 1. можно ли модифицировать таблицы драйвера клавиатуры командой loadkeys так, чтобы он возвращал понятные для x-сервера значения?
Пакет input-utils команда input-kbd - изменяет таблицу кодов устройства. Можно создать файл и подгружать при старте. Привер для M6: Код: 0x0000 = 11 # KEY_0
0x0001 = 2 # KEY_1 0x0002 = 3 # KEY_2 0x0003 = 4 # KEY_3 0x0004 = 5 # KEY_4 0x0005 = 6 # KEY_5 0x0006 = 7 # KEY_6 0x0007 = 8 # KEY_7 0x0008 = 9 # KEY_8 0x0009 = 10 # KEY_9 0x000a = 129 # KEY_AGAIN 0x000b = 402 # KEY_CHANNELUP 0x000c = 115 # KEY_VOLUMEUP 0x000d = 358 # KEY_INFO 0x000e = 388 # KEY_TEXT 0x000f = 167 # KEY_RECORD 0x0010 = 372 # KEY_ZOOM 0x0011 = 113 # KEY_MUTE 0x0012 = 116 # KEY_POWER 0x0013 = 399 # KEY_GREEN 0x0014 = 375 # KEY_SCREEN 0x0015 = 403 # KEY_CHANNELDOWN 0x0016 = 352 # KEY_OK 0x0017 = 373 # KEY_MODE 0x0018 = 114 # KEY_VOLUMEDOWN 0x0019 = 401 # KEY_BLUE 0x001a = 128 # KEY_STOP 0x001b = 164 # KEY_PLAYPAUSE 0x001c = 386 # KEY_TUNER 0x001d = 142 # KEY_SLEEP 0x001e = 400 # KEY_YELLOW 0x001f = 398 # KEY_RED 0x0058 = 409 # KEY_SLOW 0x005c = 410 # KEY_SHUFFLE |
Автор: | CyberMax [ 05 июн 2009, 21:29 ] |
Заголовок сообщения: | |
Вобщем нашел я почему у меня в /dev/input event'а для пульта не было. Вот здесь ответ. Оказалось что номер карточки не правильный, хотя у меня и написано на тюнере KW-TV878-BK но нужно не card=78 прописывать, а card=120. Так теперь пульт начал работать нормально. Кстати с Beholder этот мой тюнер очень похож тем что коды кнопок в lircd.conf с теми что здесь Romosyto и Suррort выложили те что совпадают одинаковые, я с помощью irrecord определял. |
Автор: | igk72 [ 08 июн 2009, 14:49 ] |
Заголовок сообщения: | |
Данный пост выше никоим образом не связан с Beholder. О чем надо упоминать сразу, а не в конце проблемы. Тюнерам Beholder вообще не нужны параметры card и tuner, так как тюнеры отлично определяются модулями, и поддерживаются актуальные PCI ID. |
Автор: | Виктор_8 [ 15 июн 2009, 02:52 ] |
Заголовок сообщения: | |
igk72: Спасибо за ответ. Все получилось. Выходит сделал по Вашему второму методу. Вначале отпугнула страшная строчка : Код: input-kbd -f /etc/input-kbd/beholder `cat /proc/bus/input/devices | grep -2 "i2c-.*/.*/ir0" | grep "H:" | awk '{ sub(/event/, "", $3); print $3}'` >/dev/null 2>&1 Я выгрузил свою keymap командой input-kbd 5, требуемым образом подправил (имена констант клавиш взял из /usr/src/linux/input.h), и загрузил обратно командой Код: input-kbd 5 -f ./507.map Таким образом, теперь драйвер ядра возвращает понятные для X-сервера значения клавиш. Осталось только настроить tvtime на эту конфигурацию, отредактировав tvtime.xml (что тоже отдельная песня, т.к. tvtime поддерживает не все клавиши возвращаемые X), и включить в автозагрузку команду Код: input-kbd 5 -f ./507.map
Однако, я думаю, должен быть и второй вариант. Командой xmodmap модифицировать встроенные в X таблицы соответствия keycode-keysym для того, чтобы X-сервер понимал поступающие ему сообщения от драйвера ядра. Попробую разобраться |
Автор: | Виктор_8 [ 15 июн 2009, 13:57 ] |
Заголовок сообщения: | |
Теперь разобрался. 1. По умолчанию, keyboard map пульта карты 507FM выглядит так (команда input-kbd 5): Код: 0x0000 = 11 # KEY_0 0x0001 = 2 # KEY_1 0x0002 = 3 # KEY_2 0x0003 = 4 # KEY_3 0x0004 = 5 # KEY_4 0x0005 = 6 # KEY_5 0x0006 = 7 # KEY_6 0x0007 = 8 # KEY_7 0x0008 = 9 # KEY_8 0x0009 = 10 # KEY_9 0x000a = 129 # KEY_AGAIN 0x000b = 103 # KEY_UP 0x000c = 106 # KEY_RIGHT 0x000d = 373 # KEY_MODE 0x000e = 142 # KEY_SLEEP 0x000f = 392 # KEY_AUDIO 0x0010 = 358 # KEY_INFO 0x0011 = 377 # KEY_TV 0x0012 = 116 # KEY_POWER 0x0013 = 113 # KEY_MIN_INTERESTING 0x0014 = 139 # KEY_MENU 0x0015 = 108 # KEY_DOWN 0x0016 = 352 # KEY_OK 0x0017 = 413 # KEY_DIGITS 0x0018 = 105 # KEY_LEFT 0x0019 = 167 # KEY_RECORD 0x001a = 402 # KEY_CHANNELUP 0x001b = 115 # KEY_VOLUMEUP 0x001c = 385 # KEY_RADIO 0x001e = 403 # KEY_CHANNELDOWN 0x001f = 114 # KEY_VOLUMEDOWN Перед знаком равно - это hardware-коды пульта, а после знака - коды клавиш, возвращаемые драйвером клавиатуры. Эту таюлицу можно менять командой input-kbd 5 -f ./filename.map. Зачем ее менять? Все вроде выглядит нормально. Дело в том, что X-сервер понимает только однобайтовые коды клавиш, таким образом, все коды > 255 в приведенной таблице не будут восприняты X-сервером. 2. X-сервер также имеет свою таблицу "keycode-keysym map". Посмотреть ее можно командой xmodmap -pk. Вот кусок : Код: ...
98 0xff52 (Up) 99 0xff55 (Prior) 100 0xff51 (Left) 101 102 0xff53 (Right) 103 0xff57 (End) 104 0xff54 (Down) ... Слева - keycode, справа - keysym. Видно, что у keycode 101 нет сответствующего символа. Это можно исправить, например, задав ему в соответствие клавишу F11: xmodmap -e 'keycode 101 = F11' При этом, коды клавиш драйвера ядра (п.1) не соответствуют keycode. При желании, keycode клавиши можно узнать используя утилиту xev Вывод: В X можно сопоставить входящим keycode символы, и далее уже конфигурировать оконечную программу просмотра, но тогда в keyboard map по умолчанию будут работать только те клавиши, код которых меньше 256, и следовательно все равно придется менять keyboard map командой input-kbd. |
Автор: | spd [ 22 авг 2009, 00:11 ] |
Заголовок сообщения: | |
Подскажите, как побороть вот такую нехорошую штуку - при частом нажатии на одну клавишу периодически проскакивает код клавиши "0". И, само собой, всё портит. Код: 0000000080010192 00 CH_UP Beholder-607FM.cfg 0000000080010192 00 CH_UP Beholder-607FM.cfg 0000000080010192 01 CH_UP Beholder-607FM.cfg 0000000080010192 02 CH_UP Beholder-607FM.cfg 0000000080010192 03 CH_UP Beholder-607FM.cfg 000000008001000b 00 0 Beholder-607FM.cfg 0000000080010192 00 CH_UP Beholder-607FM.cfg 0000000080010192 00 CH_UP Beholder-607FM.cfg 0000000080010192 00 CH_UP Beholder-607FM.cfg 0000000080010192 01 CH_UP Beholder-607FM.cfg Это вывод irw. Пробовал уже и загружать saa7134 с параметрами repeat_delay=300 repeat_period=50, но не помогает. Ubuntu 9.04 2.6.28-14-generic lircd.conf Код: begin remote
name Beholder-607FM.cfg bits 16 eps 30 aeps 100 one 0 0 zero 0 0 pre_data_bits 16 pre_data 0x8001 gap 135991 toggle_bit_mask 0x80010000 begin codes POWER 0x0074 TV/FM 0x0182 1 0x0002 2 0x0003 3 0x0004 4 0x0005 5 0x0006 6 0x0007 7 0x0008 8 0x0009 9 0x000A 0 0x000B RECALL 0x0081 MODE 0x0175 ASPECT 0x0177 FULL_SCREEN 0x0174 CH_UP 0x0192 CH_DOWN 0x0193 VOL_UP 0x0073 VOL_DOWN 0x0072 OK 0x0160 MUTE 0x0071 INFO 0x0166 RECORD 0x00A7 PLAY_PAUSE 0x00A4 STOP 0x0080 TELETEXT 0x0184 RED 0x018E YELLOW 0x0190 GREEN 0x018F BLUE 0x0191 SLEEP 0x008E FREEZE 0x00EA SNAPSHOT 0x0199 end codes end remote |
Автор: | spd [ 22 авг 2009, 00:35 ] |
Заголовок сообщения: | |
А вот та же проблема в OpenSUSE 11.1 2.6.27.21-0.1-default с использованием стандартного конфига linux-input-layer Код: 0000000000010072 00 VOLUMEDOWN linux-input-layer
0000000000010072 00 VOLUMEDOWN linux-input-layer 0000000000010072 00 VOLUMEDOWN linux-input-layer 000000000001000b 00 0 linux-input-layer 0000000000010072 00 VOLUMEDOWN linux-input-layer 0000000000010072 00 VOLUMEDOWN linux-input-layer 0000000000010072 00 VOLUMEDOWN linux-input-layer 0000000000010072 00 VOLUMEDOWN linux-input-layer 0000000000010072 00 VOLUMEDOWN linux-input-layer 0000000000010072 00 VOLUMEDOWN linux-input-layer 0000000000010072 00 VOLUMEDOWN linux-input-layer 0000000000010072 00 VOLUMEDOWN linux-input-layer 000000000001000b 00 0 linux-input-layer 0000000000010072 00 VOLUMEDOWN linux-input-layer 0000000000010072 00 VOLUMEDOWN linux-input-layer 0000000000010072 00 VOLUMEDOWN linux-input-layer С этим конфигом автоповтор не работает, но баг всё равно есть... |
Автор: | spd [ 26 авг 2009, 22:17 ] |
Заголовок сообщения: | |
Так что скажет уважаемый саппорт? Можно что-то сделать с проблемой? |
Автор: | Linux [ 27 авг 2009, 08:07 ] |
Заголовок сообщения: | |
Баг странный, не понятно кто виноват. Посмотрю, но быстро не обещаю, Х7 в работе. Проблема решена. Патч отправлен на включение в репозиторий. Для нетерпеливых: Код: diff -r 2b49813f8482 linux/drivers/media/video/saa7134/saa7134-input.c
--- a/linux/drivers/media/video/saa7134/saa7134-input.c Thu Sep 03 09:06:34 2009 -0300 +++ b/linux/drivers/media/video/saa7134/saa7134-input.c Mon Sep 07 18:05:54 2009 +1000 @@ -286,6 +286,10 @@ * So, skip not our, if disable full codes mode. */ if (data[10] != 0x6b && data[11] != 0x86 && disable_other_ir) + return 0; + + /* Wrong data decode fix */ + if (data[9] != (unsigned char)(~data[8])) return 0; *ir_key = data[9]; |
Автор: | Иван Иванов [ 16 окт 2009, 23:10 ] |
Заголовок сообщения: | |
Накатил Ubuntu Linux 9.10, сейчас ядро 2.6.31-14-generic #47-Ubuntu SMP Thu Oct 15 02:08:08 UTC 2009 i686 GNU/Linux Отвалилась поддержка пульта... irw connect: No such file or directory Вот такие настройки в /etc/lirc/hardware.conf: REMOTE="BeholdTV" REMOTE_MODULES="ir_kbd_i2c" REMOTE_DRIVER="dev/input" REMOTE_DEVICE="dev/lircd" REMOTE_LIRCD_CONF="/etc/lirc/lircd.conf" REMOTE_LIRCD_ARGS="-H dev/input -d name="BeholdTV"" в 9.04 - это работало! Update: /me c чувством победы разума над тупым железом... Я сделал это! Вот рабочий конфиг, если у кого не пашет. Оказывается поменялось имя у input стало имя другое - i2c IR (BeholdTV). И оказывается в имени input можно ставить звездочки. Вот рабочий конфиг для /etc/lirc/hardware.conf: REMOTE="BeholdTV" REMOTE_MODULES="" REMOTE_DRIVER="dev/input" REMOTE_DEVICE="" REMOTE_LIRCD_CONF="/etc/lirc/lircd.conf" REMOTE_LIRCD_ARGS="-H dev/input -d name="*BeholdTV*"" START_LIRCD="true" LOAD_MODULES="false" FORCE_NONINTERACTIVE_RECONFIGURATION="false" START_LIRCMD="" LIRCMD_CONF="" |
Автор: | Otto [ 02 дек 2009, 03:12 ] |
Заголовок сообщения: | |
У пульта работают - цифры, громкость, mute, power... в конфигах, вроде, все нормально, демон лирка работает. запускаю irw - в выводе с пульта идут только цифры Где засада? |
Автор: | igk72 [ 02 дек 2009, 03:39 ] |
Заголовок сообщения: | |
писал(а): запускаю irw - в выводе с пульта идут только цифры
Где засада? Открываем ум-глаза и Читаем первое сообщение в этой теме http://www.beholder.ru/bb/viewtopic.php?p=37684#37684 |
Автор: | Otto [ 02 дек 2009, 16:18 ] |
Заголовок сообщения: | |
Вы имеете в виду эту часть - "Как настроить lirc читайте сами, тем более это легко и везде описано. " Можно было и повториться и не провоцировать флуд... в остальных частях проделано все по инструкции и не по ней одной(включая вариант 2 - где я не получаю никакого вывода). Что до "везде описано" могу дать баян ссылок просмотренных и пробуемых вариантов... - насколько это может быть конструктивно? К примеру, из последних, что бы не быть голословным - http://www.cetlot.com/2009/05/ubuntu-an ... tudio-505/ http://parker1.co.uk/mythtv_ubuntu2.php http://habrahabr.ru/blogs/ubuntu/75745/ Конструктивнее было бы предложить пошаговую диагностику, с последующим вылавливанием блох или блохи. Ну нету вывода из lirc по irw окромя прошитых кнопок! PS вот сейчас снес все lirc*, поставил lirc только перебил конфиги... -ноль. Спасибо. PS У меня заработал (спасибо Шниперсону) только с таким конфигом - Цитата: # /etc/lirc/hardware.conf
REMOTE="BeholdTV" #REMOTE_MODULES="lirc_dev lirc_i2c" REMOTE_DRIVER="dev/input" REMOTE_LIRCD_CONF="/etc/lirc/lircd.conf" #LIRCD_ARGS="-H dev/input -d /dev/input/event5" REMOTE_DEVICE="/dev/input/event5" LIRCD_ARGS="" START_LIRCD="true" LOAD_MODULES="false" FORCE_NONINTERACTIVE_RECONFIGURATION="false" START_LIRCMD="" LIRCMD_CONF="" |
Автор: | igk72 [ 03 дек 2009, 03:48 ] |
Заголовок сообщения: | |
Update - знаю что вы уже все настроили, это хорошо. Но я не видел вашего сообщения в другой ветке. писал(а): Вы имеете в виду эту часть - "Как настроить lirc читайте сами, тем более это легко и везде описано. " Можно было и повториться и не провоцировать флуд... Нет, вы не правы. Изначально я предполагаю что человек который работает в linux имеет терпение и стремление читать man (где описано многое). А для помощи в проблеме такому человеку всего лишь надо указать правильный курс и названия пакетов. Я имел ввиду первую часть моего сообщения про пульт. Конкретно вот это: Цитата: В Линуксе есть hardware-коды клавиш, и системные коды клавиатурных событий (константы).
Так вот hardware-коды клавиш преобразуются в системные константы на основе неких таблиц (расскладок). Для клавиатур все это уже давно отлаженно, прозрачно, и подгружается динамически. Значения констант-событий могут быть 4-х байтные. А вот многими программами воспринимаются только 1 байт!. Для пультов тоже есть такие таблицы, но они внесены жестко в модули ядра. Для каждого типа тюнеров отдельно. Для Beholder тоже такая таблица (в патче видно). И там анаогично другим тюнерам задано преобразование. Многие кнопки (цифры например) на пульте преобразуются в 1-байтовые констаты-события, а некоторые (СH-каналы например) в многобайтные. Так как я лично составлял (для патча ядра) таблицу кодов для моделей 60x и M6 - то уж знаю что пишу и о чем. Приведенные вами ссылки на инструкции конечно хороши, но они дают только быстрое решение. Нормальные знания можно получить только изучив пакет (lirc например или input-utils). Замечу однако что по сути обсуждаемая тема вообще не имеет отношения к тюнерам Beholder - потому как железо и драйвер у вас работают (я про работу именно пульта). Вывод такой делаю на основании того что таблица кодов в модуле-драйвере загружена и кнопки-цифры работают, а частями таблица не может загрузиться. Хотите шаги и диагностику!? вот читайте и размышляйте: А) для тестирования только устройства пульта нужно поставить пакет input-utils и выполнить в терминале следующее: sudo -i input-events $(lsinput |grep -B 5 "BeholdTV" | grep "event" | sed 's#.*event##') Поясню. В этой составной команде (наборе команд) сразу и определяется нужный номер устройства, и запускается вывод на экран реакции ядра на нажатия кнопок пульта. При нажатии кнопок в терминале показываются по две строки - нажатие и отжатие кнопок. Если вы это увидели - значит модуль-драйвер и ядро работают в вопросе пульта нормально. Б) надо так же четко указать чтобы программы не захватывали устройство пульта как еще одну клавиатуру. в Ubunru 9.04 (и не только был такой недочет, но временный). Об этом я тоже писал на форуме http://www.beholder.ru/bb/viewtopic.php?p=48076#48076 Надо создать файл /mnt/files/linux/etc/hal/fdi/lirc.fdi и в нем вот такое: Код: <xml>
<deviceinfo> <device> <match> <merge>true</merge> </match> </device> </deviceinfo> И перегрузитесь (так проще). В) lircd - предположим у вас сделано вот так (для Ubuntu/Debian): файл /etc/lirc/hardware.conf и в нем строки REMOTE="BeholdTV" REMOTE_MODULES="" REMOTE_DRIVER="dev/input" REMOTE_DEVICE="" REMOTE_LIRCD_CONF="generic/devinput.conf" REMOTE_LIRCD_ARGS="-d name="*BeholdTV*"" START_LIRCD="true" LOAD_MODULES="false" FORCE_NONINTERACTIVE_RECONFIGURATION="false" START_LIRCMD="" LIRCMD_CONF="" файл /etc/lircd.conf и /etc/lirc/lircd.conf и в них только вот эта значимая строка include "/usr/share/lirc/remotes/generic/devinput.conf" Поясню выделенное красным. Две двойные кавычки там ДОЛЖНЫ БЫТЬ!!!! Еще так как в таблице кодов в моделе-драйвере используются только коды-константы ядра линукса, то они же определенны все в файле /usr/share/lirc/remotes/generic/devinput.conf который и нужно указать. Update - У меня показана универсальная настройка без указания конкретного устройства (не как у вас в соседней ветке). Указание в конфиге Конкретного устройства черевато тем что номера устройств меняются при загрузке и при включении-отключении клавиатур, мышей, и т.п. Это важно знать и понимать Г) если все же по какой-то причине (не знаю какой) вы решите иметь свой /etc/lirc/lircd.conf то надо пользоваться утилитой irrecord вызывая ее вот так irrecord -H dev/input -d name="*BeholdTV*" /etc/lirc/lircd.conf Следуем указаниям на экране и нажимаем на кнопки, заполняя названия их, Конечно сам демон-служба lirc должен быть остановлен в это время. sudo /etc/init.d/lirc stop Этот способ я лично не рекомендую с современными тюнерами где коды кнопок в таблице все равно имеют значение из ядра линукс, вообщем с устройствами типа dev/input Д) чтобы оттестировать нужно запустить lircd в режиме терминала. Для этого нужно (первая команда спросит ваш пароль): sudo -i lircd --driver=devinput -d name="*BeholdTV*" --nodaemon и смотрите на вывод строк в терминале. И запустите рядом в соседнем терминале сразу irw и нажимайте кнопки. ----------------- Как видите мои инструкции возможно кратки, но передают именно нужное и именно по теме пульты. ----------------- Кстате можно внести это все в FAQ |
Страница 6 из 9 | Часовой пояс: UTC + 3 часа |