Настройка LifeView FlyTV Prime34 под Linux

Ryadovoy
  • 9 сентября 2008
  • 30k

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

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

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

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


Итак, настраиваем TV-tuner.

Вы не знаете с чего начать? А тут все просто – берем на вооружение несколько ключевых слов: TV-tuner, модель тюнера (в моем случае LifeView FlyTV Prime34), Linux, Debian, setup, настройка, и т.п. и идем на ссылка. Что мы получим? Кучу беспорядочной информации, разобраться в которой невозможно. Но это только с первого взгляда. Читаем все подряд, пока в голове все окончательно не перепутается. Потом идем курить и пытаемся разложить все по полочкам.

С разнообразных источников, я, например, узнал, что для того чтобы подключить мой TV-tuner мне необходим модуль saa7134 и что он присутствует в стандартной сборке ядра версии >2.6.n (не помню номер, но в 2.6.8-3 он присутствует). Еще мне нужна программа, которая собственно будет показывать ТВ-каналы, как советовали многие источники, лучшей является программа tvtime. Также для того, чтобы прикрутить пульт дистанционного управления необходимо настроить lirc.

Итого цепочка следующая:

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

В дистрибутиве 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.

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

Настройка 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" на ДУ, и т.д. все кнопки. После ввода всех кнопок пульта нажимаем просто "Enter" и затем программа попросит нажимать какую-нибудь кнопку. Необходимо не ЗАжимать, а НАжать, как можно быстрее.

После всех этих операций по следующему адресу должен будет появится корректный файл конфигурации нашего пульта /etc/lirc/lircd.conf. Программа irrecord автоматически добавляет окончание к файлу .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 это не такая уж и тривиальная штука, для этого в первую очередь необходимо время и выдержка. И как говорится: "кто ищет, тот всегда найдет!"

Удачи!

Комментарии