Настройка пульта ДУ к тюнеру
Настройка пульта ДУ к тюнеру Xpert TV-PVR Vstream Kworld
Особая благодарность за живое участие в настройке данного тюнера выражается Алексею Шенцеву, без помощи которого пульт не работал бы и по сей день, не говоря уже о появлении этой страницы. А также Михаилу Шигорину за настройку эмуляции oss.
Данный тюнер был прописан в /etc/modprobe.d/tv как card=78 tuner=17 radio=1.
При таких параметрах работало видео и радио. Но не работал пульт ДУ. Даже никаких упоминаний о нем в выводе dmesg | grep bttv не было. Согласно ссылке http://aturov.blogspot.com/2009/02/2.html установлены исходники ядра (пакет kernel-source-2.6.30 в данном случае версия согласно текущего используемого ядра). Из файла /usr/src/kernel/sources/kernel-source-твоё_ядро_/Documentation/video4linux/CARDLIST.bttv взяты названия тюнеров содержащие в описании параметр has_remote = 1.
После этого ищем номер тв-тюнера в файле CARDLIST.bttv из /usr/share/doc/kernel-doc-std-2.6.30/video4linux Далее путем перебора:
#modprobe bttv card=xx (xx — номер тв тюнера)
#dmesg | grep bttv (смотрим сообщения ядра на предмет IR)
если нет — значит:
#rmmod bttv
и операция повторяется снова. В данном конктретном случае подошел номер карты указанный по приведенной выше ссылке, то есть card=120.
dmesg | grep bttv
[ 8.060770] bttv: driver version 0.9.18 loaded [ 8.060777] bttv: using 8 buffers with 2080k (520 pages) each for capture [ 8.060830] bttv: Bt8xx card found (0). [ 8.075958] bttv 0000:02:07.0: PCI INT A -> Link[LNKB] -> GSI 19 (level, low) -> IRQ 19 [ 8.075972] bttv0: Bt878 (rev 17) at 0000:02:07.0, irq: 19, latency: 64, mmio: 0xea8fe000 [ 8.076403] bttv0: using: Conceptronic CONTVFMi [card=120,insmod option] [ 8.076406] IRQ 19/bttv0: IRQF_DISABLED is not guaranteed on shared IRQs [ 8.076442] bttv0: gpio: en=00000000, out=00000000 in=003fffff [init] [ 8.076485] bttv0: tuner type=5 [ 8.260789] bttv0: audio absent, no audio device found! [ 8.261009] bttv0: registered device video0 [ 8.261046] bttv0: registered device vbi0 [ 8.261083] bttv0: registered device radio0 [ 8.261103] bttv0: PLL: 28636363 => 35468950 .. ok [ 8.292722] input: bttv IR (card=120) as /devices/pci0000:00/0000:00:0e.0/0000:02:07.0/input/input5
# ls -l /dev/input/*
crw-r----- 1 root root 13, 64 Dec 11 2010 /dev/input/event0 crw-r----- 1 root root 13, 65 Dec 11 2010 /dev/input/event1 crw-r----- 1 root root 13, 66 Dec 11 2010 /dev/input/event2 crw-r----- 1 root root 13, 67 Dec 11 2010 /dev/input/event3 crw-r----- 1 root root 13, 68 Dec 11 2010 /dev/input/event4 crw-rw-r-- 1 root video 13, 69 Dec 11 2010 /dev/input/event5 crw-r----- 1 root root 13, 70 Dec 11 2010 /dev/input/event6 crw-r----- 1 root root 13, 63 Dec 11 2010 /dev/input/mice crw-r----- 1 root root 13, 32 Dec 11 2010 /dev/input/mouse0 crw-r----- 1 root root 13, 33 Dec 11 2010 /dev/input/mouse1
/dev/input/by-id: total 0 lrwxrwxrwx 1 root root 9 Dec 11 2010 usb-A4Tech_USB_Optical_Mouse-event-mouse -> ../event6 lrwxrwxrwx 1 root root 9 Dec 11 2010 usb-A4Tech_USB_Optical_Mouse-mouse -> ../mouse1
/dev/input/by-path: total 0 lrwxrwxrwx 1 root root 9 Dec 11 2010 pci-0000:00:02.0-usb-0:2:1.0-event-mouse -> ../event6 lrwxrwxrwx 1 root root 9 Dec 11 2010 pci-0000:00:02.0-usb-0:2:1.0-mouse -> ../mouse1 lrwxrwxrwx 1 root root 9 Dec 11 2010 pci-0000:02:07.0-event-ir -> ../event5 lrwxrwxrwx 1 root root 9 Dec 11 2010 platform-i8042-serio-0-event-kbd -> ../event1 lrwxrwxrwx 1 root root 9 Dec 11 2010 platform-pcspkr-event-spkr -> ../event2
Теперь пишем в /etc/sysconfig/lircd такое:
OPT="--driver=devinput --device /dev/input/by-path/pci-0000:02:07.0-event-ir"
Подразумевается, что lirc уже установлен в системе.
Далее
# service lircd restart
После чего
cat /dev/input/by-path/pci-0000:02:07.0-event-ir
и нажимаем кнопки на пульте — должен появится вывод символов в консоль при нажатии. Если рекация на нажатия есть, значит нужно правильно сконфигурировать /etc/lircd.conf Примерно подходящий можно взять отсюда http://ru.gentoo-wiki.com/wiki/HOWTO_lirc или создать самому с помощью irrecord.
# irrecord -n -H dev/input -d /dev/input/event5 /etc/lircd.conf
Нужно будет нажать и удерживать любую клавишу на пульте, например power. В консоли будут появляться точки. Затем будет предложено ввести имя кнопки и нажать enter после чего нажать соответствующую кнопку на пульте и снова enter. И т. д. пока не будут записаны все клавиши. После записи последней снова нажимаем enter и конфиг записан. Для ДУ к данному тюнеру имеем следующий lirc.conf
begin remote
name /etc/lircd.conf
bits 16
eps 30
aeps 100
one 0 0
zero 0 0
pre_data_bits 16
pre_data 0x8001
gap 51991
toggle_bit_mask 0x0
begin codes
POWER 0x0074
SOURCE 0x00E2
SCAN 0x00D9
MUTE 0x0071
TV_FM 0x0182
1 0x0002
2 0x0003
3 0x0004
4 0x0005
5 0x0006
6 0x0007
7 0x0008
8 0x0009
9 0x000A
0 0x000B
+ 0x0195
RECALL 0x018B
FM_FREQ_UP 0x004E
FM_FREQ_DOWN 0x004A
RECORD 0x00A7
STOP 0x0080
PLAY 0x00CF
MINIMIZE 0x0184
ZOOM 0x0174
CH_UP 0x0192
CH_DOWN 0x0193
VOL_DOWN 0x0072
VOL_UP 0x0073
SNAPSHOT 0x00A4
MTS 0x0162
FUNCTION_LEFT 0x004A
FUNCTION 0x008D
FUNCTION_RIGHT 0x004E
RESET 0x00AD
end codes
end remote
ПРИ КОПИПАСТЕ ВОЗМОЖНЫ ОШИБКИ.
Перезапускаем lilrcd и запускаем irw после чего жмем кнопки на пульте и смотрим вывод в консоли. Если все правильно сделано, Вы увидите те название нажимаемых кнопок которые вводили при записи с помощью irrecord и соответстующие им коды.
# irw
0000000080010192 00 CH_UP /etc/lircd.conf 0000000080010072 00 VOL_DOWN /etc/lircd.conf 0000000080010193 00 CH_DOWN /etc/lircd.conf 0000000080010006 00 5 /etc/lircd.conf
Далее нужно создать файл /etc/.lircrc Например такой:
begin
prog = irexec
button = SCAN
config = tvtime --device=/dev/video0 --vbidevice=/dev/vbi0 --mixer=/dev/mixer:vol &
mode = tvtime
end
begin
prog = irexec
button = ZOOM
config = tvtime-command TOGGLE_FULLSCREEN
end
begin
prog = irexec
button = CH_UP
config = tvtime-command UP
repeat = 1
end
begin
prog = irexec
button = CH_DOWN
config = tvtime-command DOWN
repeat = 1
end
begin
prog = irexec
button = VOL_UP
config = tvtime-command RIGHT
repeat = 2
end
begin
prog = irexec
button = VOL_DOWN
config = tvtime-command LEFT
repeat = 2
end
begin
prog = irexec
button = MUTE
config = tvtime-command TOGGLE_MUTE
end
begin
prog = irexec
button = 1
config = tvtime-command CHANNEL_1
end
begin
prog = irexec
button = 2
config = tvtime-command CHANNEL_2
end
begin
prog = irexec
button = 3
config = tvtime-command CHANNEL_3
end
begin
prog = irexec
button = RESET
config = tvtime-command QUIT
end
# EOF
ПРИ КОПИПАСТЕ ВОЗМОЖНЫ ОШИБКИ.
Добавить нужного пользователя в группу lirc. Запустить irexec. Для старта irexec при запуске системы добавить следующие строки в ~/.bash_profile
killall irexec irexec -d ~/.lircrc
Далее пергружаем машину:
# reboot
После запуска наслаждаемся работой пулта ДУ.
Если в TVTime не регулируется звук через пульт, нужно сделать эмуляцию OSS в ALSA.
Создать файл:
cat /etc/modprobe.d/oss
alias sound_slot_0 snd_card_0
alias sound_service_0_0 snd-mixer-oss
alias sound_service_0_1 snd-seq-oss
alias sound_service_0_3 snd-pcm-oss
alias sound_service_0_8 snd-seq-oss
alias sound_service_0_12 snd-pcm-oss
install snd-pcm /sbin/modprobe --first-time --ignore-install snd-pcm && { /sbin/modprobe snd-pcm-oss; /bin/true; }
install snd-pcm-oss /sbin/modprobe --first-time --ignore-install snd-pcm-oss && { /sbin/modprobe snd-seq-oss; /bin/true; }
После перезагрузки должны появиться устройства:
# ls -l /dev/mix*
crw-rw----+ 1 samuray audio 14, 0 Dec 11 2010 /dev/mixer crw-rw----+ 1 samuray audio 14, 16 Dec 11 2010 /dev/mixer1