Настраиваем TV-tuner

Настраиваем TV-tuner

Доброго времени суток. Сам я программист и Windows знаю вдоль и в поперек, а вот Linux слабовато, и дабы исправить это я установил себе Debian на домашнем компьютере.

Первая попытка установки была неудачной, т.к. я установил Linux параллельно с Windows. Просто мне было очень трудно заставить себя приходя с работы по вечерам ковыряться с Linux-ом, когда у меня была возможность запустить Windows и спокойно слушать музыку, читать электронные книги, смотреть фильмы или телевизор(TV-tuner). В общем я со временем удалил Linux так и не поработав в нем.

----------------------<cut>----------------------

Как-то вечером, возвращаясь с работы, я вспомнил как я научился слепому набору на клавиатуре — я стер все надписи на клавишах и таким радикальным способом заставил себя не смотреть на клавиатуру. И я подумал, а почему бы не поступить также и с Linux-ом? И, придя домой, я удалил все Windows-разделы на винчестере и установил Debian.

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

Итак, настраиваем TV-tuner.
Вы не знаете с чего начать? А тут все просто – берем на вооружение несколько ключевых слов: TV-tuner, модель тюнера (в моем случае LifeView Fly Prime 34), Linux, Debian, setup, настройка, и т.п. и идем на http://google.com. Что мы получим? Кучу беспорядочной информации, разобраться в которой невозможно. Но это только с первого взгляда. Читаем все подряд, пока в голове все окончательно не перепутается. Потом идем курить и пытаемся разложить все по полочкам. С разнообразных источников я например узнал что для того чтобы подключить мой TV тюнер мне необходим модуль saa7134 и что он присутствует в стандартной сборке ядра >2.6.n (не помню номер, но в 2.6.8-3 он присутствует). Еще мне нужна программа, которая собственно будет показывать ТВ каналы, как советовали многие источники, лучшей является программа tvtime. А для того, чтобы прикрутить пульт дистанционного управления необходимо настроить lirc.

Итого:

Настраиваем TV-tuner

С драйвером мне повезло, т.к. если бы этого драйвера небыло в стандартной сборке ядра, то мне пришлось бы собирать ядро самому с включением в него модуля драйвера, а это уже головная боль.
В дистрибутиве Debian 31r4 по умолчанию устанавливается ядро 2.4.27, значит необходимо установить ядро поновее, под пользователем root выполняем следующую команду:
#apt-get install kernel-image-2.6.8-3-386

Ядро устанавливается в автоматическом режиме и остается лишь перезагрузить компьютер.
Устанавливаем tvtime:
#apt-get install tvtime

Запускаем tvtime и настраиваем его при помощи меню:
Input configuration->Television Standard->PAL
Channel Management->Frequency table->Russian
Channel Management->Scan channels for signal

Если что-либо найдено то переключаемся по всем найденным каналам и запоминаем их номера (см. ниже). Далее меняем телевизионный стандарт на SECAM и повторно сканируем каналы:
Input configuration->Television Standard->SECAM
Channel Management->Scan channels for signal

Переключаемся на каналы со стандартом PAL (набираем цифры каналов, которые мы запомнили выше) и для каждого из них устанавливаем опцию:
Channel Management->Set current channel as PAL

Затем отключаем автоматическое сканирование каналов:
Channel Management->Disable signal detection

Можно при желании отредактировать конфигурационный файл tvtime, он находится в домашней директории:
~/.tvtime/stationlist.xml

Настройка пульта ДУ.
Для инфракрасного порта тюнера, после установки драйвера (модуль saa7134), должно появится новое устройство ввода. Проверить это можно с помощью команды:

$ cat /proc/bus/input/devices

Она вернет примерно следующий результат:
I: Bus=0011 Vendor=0001 Product=0001 Version=ab41
N: Name="AT Translated Set 2 keyboard"
P: Phys=isa0060/serio0/input0
H: Handlers=kbd event0
B: EV=120003
B: KEY=4 2000000 3802078 f840d001 f2ffffdf ffefffff ffffffff fffffffe
B: LED=7

I: Bus=0011 Vendor=0002 Product=0004 Version=0000
N: Name="GenPS/2 Genius Wheel Mouse"
P: Phys=isa0060/serio1/input0
H: Handlers=event1 mouse0 ts0
B: EV=7
B: KEY=1f0000 0 0 0 0 0 0 0 0
B: REL=103

I: Bus=0001 Vendor=5168 Product=0138 Version=0001
N: Name="saa7134 IR (LifeView FlyVIDEO30"
P: Phys=pci-0000:00:0b.0/ir0
H: Handlers=kbd event2
B: EV=100003
B: KEY=c0304 100000 0 0 0 0 1 10000 2 1e0001 7bb80 0 0

Строчка "saa7134 IR (LifeView FlyVIDEO30" указывает на устройство IR порта, это устройство хранится по адресу:
/dev/input/event2

Это устройство интерпретируется X-сервером как обычное устройство ввода (типа клавиатуры, но с весьма экзотическими клавишами). В принципи клавиши 0-9 пульта ДУ должны работать как и обычные клавиатурные клавиши и могут восприниматься как tvtime так и любой другой программой.

Для обеспечение корректной обработки команд ДУ необходимо настроить lirc.

Принцип работы lirc с пультом тюнера следующий:
Запускается демон lircd, который слушает устройство /dev/input/event2 используя драйвер с именем “dev/input”. lircd преобразовывает все команды, полученные от устройства в соответствии с конфигурационным файлом /etc/lirc/lircd.conf и передает их на сокет /dev/lircd. Для того, чтобы команды с сокета попали к tvtime запускается еще один демон irexec, который уже в свою очередь в соответствии с конфигурационным файлом ~/.lircrc передает их на tvtime.

Получается цепочка такого вот вида:

Настраиваем TV-tuner

Настройка lirc не такая уж и сложная, если понимать принцип действия lirc.
Прежде всего установим его:
#apt-get install lirc

Программа установки будет предлагать автоматическую сборку модуля для ядра, откажитесь от нее.
lirc стартует при запуске системы при помощи скрипта /etc/init.d/lirc.
Этот скрипт использует конфигурационный файл /etc/lirc/hardware.conf, в котором необходимо сконфигурировать запуск демона lircd:
# /etc/lirc/hardware.conf
#
# Arguments which will be used when launching lircd
LIRCD_ARGS="-H dev/input -d /dev/input/event2 /etc/lirc/lircd.conf"

#Don't start lircmd even if there seems to be a good config file
#START_LIRCMD=false

#Try to load appropriate kernel modules
LOAD_MODULES=false

# Run "lircd --driver=help" for a list of supported drivers.
DRIVER="dev/input"
# If DEVICE is set to /dev/lirc and devfs is in use /dev/lirc/0 will be
# automatically used instead
DEVICE=""
MODULES=""

# Default configuration files for your hardware if any
LIRCD_CONF=""
LIRCMD_CONF=""

Демон lircd будет загружатся при старте системы с параметрами:
-H dev/input -d /dev/input/event2 /etc/lirc/lircd.conf

Где файл /etc/lirc/lircd.conf описывает протокол пульта ду. Этот файл можно найти для конкретного пульта на сервере lirc или в директории /usr/share/lirc/remotes/, а можно и сконфигурировать самому (я так и делал). Для этой цели в пакете lirc имеется утилита irrecord. Для того чтобы ее использовать понадобится один из файлов, хранящихся в директории
/usr/share/lirc/remotes/generic

Я выбрал файл /usr/share/lirc/remotes/generic/RC-6.conf
Копируем этот файл и сохраняем в /etc/lirc/ с именем lircd
Далее запускаем утилиту irrecord с параметрами:
#irrecord -H dev/input -d /dev/input/event2 /etc/lirc/lircd

На приглашение зажать кнопку зажимаем на пульте ду какую-нибудь кнопку и держим ее.
На экране при нажатии должны отображаться точки.Далее программа спросит как будет называться следующая кнопка, набираем например 1 давим Enter и жмем на пульте ду тоже 1, затем 2 Enter 2 на ду, и т.д. все кнопки. После ввода всех кнопок пульта нажимаем просто Ener и затем программа порпросит нажимать какую нибудь кнопку. Не ЗАжимать, а НАжимать как можно бысто.
После всех этих операций по следующему адресу должен будет появится корректный файл конфигурации нашего пульта (программа irrecord автоматически добавляет окончание к файлу .conf):
/etc/lirc/lircd.conf

В моем случае получился следующий файл:
begin remote
  name  /etc/lirc/lircd.conf
  bits           16
  flags RC5|CONST_LENGTH
  eps            30
  aeps          100
  one           889   889
  zero          889   889
  plead         889
  pre_data_bits   16
  pre_data       0x8001
  gap          151625
  toggle_bit      0
  frequency    36000
  duty_cycle   50
      begin codes
          air_catv                 0x0182
          video                    0x0189
          audio                    0x0188
          power                    0x0074
          av_source                0x00B0
          full_screen              0x0174
          stereo                   0x00C0
          mute                     0x0071
          recall                   0x0081
          enter                    0x0060
          vol+                     0x0073
          vol-                     0x0072
          ch+                      0x0192
          ch-                      0x0193
          1                        0x004F
          2                        0x0050
          3                        0x0051
          4                        0x004B
          5                        0x004C
          6                        0x004D
          7                        0x0047
          8                        0x0048
          9                        0x0049
          0                        0x0052
      end codes
end remote

После конфигурации файлов
/etc/lirc/hardware.conf
/etc/lirc/lircd.conf

перезагружаем компьютер
Проверяем загружен ли демон lircd:
#ps -A | grep lircd

Запускаем утилиту irw и жмем на кнопки пульта, если все нормально то мы увидим примерно следующее:
$irw
000000008001004f 00 1 /etc/lirc/lircd.conf
0000000080010050 00 2 /etc/lirc/lircd.conf
000000008001004c 00 5 /etc/lirc/lircd.conf
000000008001004d 00 6 /etc/lirc/lircd.conf

Далее необходимо сконфигурировать передачу команд от демона lird к программе tvtime
Для этого необходимо сконфигурировать файл
~/.lircrc

У меня он такой:
begin
    prog = irexec
    button = full_screen
    config = tvtime-command TOGGLE_FULLSCREEN
end
begin
    prog = irexec
    button = mute
    config = tvtime-command TOGGLE_MUTE
end
begin
    prog = irexec
    button = ch+
    config = tvtime-command UP
end
begin
    prog = irexec
    button = ch-
    config = tvtime-command DOWN
end
begin
    prog = irexec
    button = vol+
    config = tvtime-command RIGHT
end
begin
    prog = irexec
    button = vol-
    config = tvtime-command LEFT
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 = 4
    config = tvtime-command CHANNEL_4
end
begin
    prog   = irexec
    button = 5
    config = tvtime-command CHANNEL_5
end
begin
    prog   = irexec
    button = 6
    config = tvtime-command CHANNEL_6
end
begin
    prog   = irexec
    button = 7
    config = tvtime-command CHANNEL_7
end
begin
    prog   = irexec
    button = 8
    config = tvtime-command CHANNEL_8
end
begin
    prog   = irexec
    button = 9
    config = tvtime-command CHANNEL_9
end
begin
    prog   = irexec
    button = 0
    config = tvtime-command CHANNEL_0
end
begin
    prog = irexec
    button = enter
    config = tvtime-command ENTER
end
begin
    prog = irexec
    button = power
    config = tvtime &
    config = tvtime-command QUIT
end

Осталось лиш запустить irexec:
Я для этого создал файл в директории
~/.kde/Autostart

содержание которого следующее:
#! /bin/sh
irexec -d

Этот файл должен иметь права доступа, разрешающие его запуск.

Ну вот собственно и все.
Как видите, настройка программ под Linux это не такая уж и тривиальная штука, для этого в первую очередь необходимо время и выдержка. И как говорится: "кто ищет, тот всегда найдет!"
Удачи!

Комментарии

    Нет комментариев
комментарии
^ Наверх