AVerMedia AVerTV 305/307 Linux user guide

From LinuxTVWiki
Revision as of 03:22, 27 February 2009 by CityK (talk | contribs) (fixed link)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to navigation Jump to search

Since this card is mostly distributed in Russia, user guilde is in Russian. If you need english text, look at Saa713x devices: Generic SAA7134 Card Installation

Для настройки тюнера в Linux необходимо

  • Тюнер
  • Линукс
  • Немного опытности

Сборка драйверов

Можно поставить ядро 2.6.14, а можно, начиная где-то с ядра 2.6.8 собрать v4l cvs. Вот здесь есть инструкция на английском - How to Obtain, Build and Install V4L-DVB Device Drivers

Могут возникнуть проблемы при сборке - например у Вас установлены не те заголовочные файлы или компилятор старый. Тут придется разбираться в каждом отдельном случае. Как показывает опыт, очень часто CVS-shapshot не собирается, потому что разработчика video4linux не очень за этим следят. Обычно даже на сайте лежит несколько снапшотов, в том числе и более старых версий. Можете попытать их. Обычно ошибки, возникающие при компиляции легко исправляются, если Вы знаете C.

Делаем от пользователя root команду make install. Результат - модули saa7134.ko и так далее должны быть скопированы в /lib/modules/your_kernel_version/v4l2/. После этого рекомендуется в вручную удалить старые модули, поставляемые с ядром, хотя, этого можно и не делать.

Для работы с пультом в ядре должна быть включена поддежка событий.

Device Drivers => Input device support => Event interface <M>

Загрузка драйверов

В modprobe.conf должны быть следующие строчки:

alias char-major-81 videodev
alias char-major-81-0 saa7134
                                                                               
options tda9887 secam=d port2=0 port1=1

В версии ядра выше 2.6.14 я обнаружил, что для работы со стандартом SECAM-DK (Россия/ex-USSR) нужно передавать параметры не tda9887, а модулю tuner:

options tuner secam=d port2=0 port1=1

Для ядра 2.6.18 нужно указать параметр:

options tuner secam=d

Для ядер 2.6.19 и выше:

options saa7134 secam=dk
options tuner secam=d

Нужно проверить, что драйвера корректно загружаются, то есть в /var/log/messages должны появиться следующие строчки

Nov 15 14:39:18 shadow kernel: saa7134[0]: found at 0000:01:09.0, rev: 1, irq: 5, latency: 32, mmio: 0xea001000
Nov 15 14:39:18 shadow kernel: saa7134[0]: subsystem: 1461:9715, board: Avermedia AVerTV Studio 307 [card=45,autodetected]
Nov 15 14:39:18 shadow kernel: saa7134[0]: board init: gpio is 0
Nov 15 14:39:18 shadow kernel: saa7134[0]: registered input device for IR
Nov 15 14:39:18 shadow kernel: saa7134[0]: i2c eeprom 00: 61 14 15 97 ff ff ff ff ff ff ff ff ff ff ff ff
Nov 15 14:39:18 shadow kernel: saa7134[0]: i2c eeprom 10: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
Nov 15 14:39:18 shadow kernel: saa7134[0]: i2c eeprom 20: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
Nov 15 14:39:18 shadow kernel: saa7134[0]: i2c eeprom 30: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
Nov 15 14:39:18 shadow kernel: tuner: chip found at addr 0xc2 i2c-bus saa7134[0]
Nov 15 14:39:18 shadow kernel: tuner: type set to 51 (Philips PAL/SECAM_D (FM 1256 I-H3)) by saa7134[0]
Nov 15 14:39:18 shadow kernel: tda9885/6/7: chip found @ 0x86
Nov 15 14:39:18 shadow kernel: saa7134[0]: registered device video0 [v4l2]
Nov 15 14:39:18 shadow kernel: saa7134[0]: registered device vbi0
Nov 15 14:39:18 shadow kernel: saa7134[0]: registered device radio0
Nov 15 14:39:20 shadow kernel: saa7134[0]/audio: audio carrier scan failed, using 5.500 MHz [default]

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

Настройка tvtime

Для просмотра телевизора рекомендуется использовать программу tvtime (единственную более-менее работающую). Для этого нужно скачать ее более-менее позднюю версию (0.9.13) с http://tvtime.net, собрать и установить.

При запуске tvtime пишет no signal, потом выбираем Input configuration/Television Standart/Secam, выбираем Channel Management/Frequency table/Russian. Потом с помощью стрелок прибавляете звук и выбираете канал. На тех каналах, которые не ловит, все равно пишет no signal. Чтобы это отключить, нужно в Channel management поставить Disable signal detection. Можно еще сканирование запустить по всем каналам.

Другой часто встречающейся проблемой является отсутствие звука. Это может быть связано что уровень громкости микрофона (через который идет звук с карточки) установлено в 0, а именно так делается по умолчанию. Так что, скорее всего если отсутствует звук, нужно просто прибавить его в микшере.

Настройка радио

Тут довольно много программ, причем лично меня ни одна не удовлетворяет. Но например, можно попробовать kradio или gnomeradio или даже просто fmtools.

Радио по умолчанию стерео и его можно переключить на mono. Беда только в том, что неизвестно, какие пользовательские программы это умеют. Надеюсь, в скором времени они появятся.

Настройка пульта дистанционного управления

Установка lirc - довольно стандарный процесс, можно поискать более подробную помощь или документацию. Нужно скачать lirc-0.7.0 с http://www.lirc.org, распаковать его, затем собрать

./configure --with-driver=any --prefix=/usr --sysconfdir=/etc && make && make install

Затем нужно создать в каталоге настроек (sysconfdir) файл lircd.conf(http://nshmyrev.narod.ru/aver/lircd.conf). Для ядер, начиная с 2.6.17, чтобы на пульте ДУ работали кнопки 0-9, в lircd.conf нужно сделать следующие изменения:

1 0x0000000000000002
2 0x0000000000000003
3 0x0000000000000004
4 0x0000000000000005
5 0x0000000000000006
6 0x0000000000000007
7 0x0000000000000008
8 0x0000000000000009
9 0x000000000000000A
0 0x000000000000000B

Также необходимо настроить запуск lircd (http://nshmyrev.narod.ru/aver/lircd) при запуске системы, поместив в init.d следующий скрипт lircd Обратите внимание на следующий момент - модуль saa7134 должен загружаться до lircd (команда modprobe) и lircd должен стартовать с опцией, задающей девайс, на который подцепляется saa7134 (в моем случае это /dev/input/event3, потому что /dev/input/event0, /dev/input/event1 - это мышка, /dev/input/event2 - клавиатура). Посмотреть это можно с помощью

cat /proc/bus/input/devices

Далее нужно включить в запуск сеанса команду irexec -d (пользовательский демон, который будет выполнять команды) и создать его конфигурационный файл в домашнем каталоге .lircrc, например, такой (http://nshmyrev.narod.ru/aver/lircrc)

Тут уже все зависит от личных предпочтений.

Немного о настройке udev. Это нужно для того, чтобы не перенастраивать lircd каждый раз, когда система загружается с разными usb и прочими hotplug устройствами. Например, usb джойстик, который бывает воткнут (и тогда пульт садится на event4) и нет (тогда пульт обнаруживается на event5). Для начала надо определить, куда же этот пульт в данном случае попал, затем посмотреть, что же думает udev про это устройство.

Например, получается такое:

sergey@sergey:~$ udevinfo -a -p `udevinfo -q path -n /dev/input/event5`
udevinfo starts with the device the node belongs to and then walks up the
device chain, to print for every device found, all possibly useful attributes
in the udev key format.
Only attributes within one device section may be used together in one rule,
to match the device for which the node will be created.
device '/sys/class/input/event5' has major:minor 13:69
 looking at class device '/sys/class/input/event5':
   SYSFS{dev}="13:69"
follow the class device's "device"
 looking at the device chain at '/sys/devices/pci0000:00/0000:00:1e.0/0000:02:01.0':
   BUS="pci"
   ID="0000:02:01.0"
   SYSFS{class}="0x048000"
   SYSFS{device}="0x7130"
   SYSFS{irq}="21"
   SYSFS{local_cpus}="1"
   SYSFS{modalias}="pci:v00001131d00007130sv00001461sd00002115bc04sc80i00"
   SYSFS{subsystem_device}="0x2115"
   SYSFS{subsystem_vendor}="0x1461"
   SYSFS{vendor}="0x1131"

вот за SYSFS{vendor}, уже можно зацепиться. Приступаем к настройке udev. На debian и правила для udev хранятся в /etc/udev/rules.d. вот там и создаем файл, например 10.local и вписываем в него

KERNEL=="event*",SYSFS{vendor}=="0x1331",SYMLINK="irremote"

После этого, сделав

/etc/init.d/udev restart

в /dev получаем симлинк irremote, указывающий на текущее местоположение нашего пульта.

В ядрах до 2.6.14 udev о карте молчал как партизан, выдавая только SYSFS{dev}="13:69", так что на более ранних может и не заработать.

Настройка клавиатурных биндингов вместо lirc (если lirc вам не нравится)

В принципе пульт - просто обычная клавиатура, просто с довольно специфичными клавишами. Можно попытаться настроить ее без lirc, привязав команды к клавишам (повесив обычные keybinding's). Тут можно дать только общие указания, так как я такого опыта не имею.

Идеология такая - нажатие на клавишу пульта воспринимается xserver'ом как нажатие клавиши на клавиатуре. Только клавиши довольно экзотические, имеют scan codы, описанные в <linux/input.h>, например KEY_TV. Вобщем, обычне мультимедийные клавиши. Возможностей применения этого пути несколько:

  • Можно стандартным способом вешать на эти клавиши биндинги (это зависит от десктопа)
  • Можно с помощью xkb или xmodmap отображать эти экзотические клавиши на обычные клавиши, например left, right
  • можно использовать приложения, позволяющие работать с такими мультимедийными клавишами, например, в gnome была acme, сейчас куда-то делась.

Процесс закончен, можно наслаждаться

И благодарить всех, кто помогал создать этот документ

  • Gerd Knorr <kraxel at bytesex dot org> за драйвера
  • Sergey Dolin <sergey.dolin at gmail dot com> за основную часть работы и предоставление документации
  • Noldor <noldor at ngs dot ru> за тестирование радио на AverTV Studio 305
  • Vladimir Davydov <vladimir at iqmedia dot com> за работу над AverTV 307
  • Roman Makurin <drolyk at gmail dot com> за исправления в описании udev