7/09/2006

Настройка TV Tuner Beholder BeholdTV 409FM в Linux

Несколько слов по настройке TV Tuner в Linux. Не то, чтобы я часто смотрел телевизор, но вот, например, идёт Формула-1 Гран-При Китая - в восемь утра вставать не хочется... Поставил на запись, посмотрел, порадовался.


Описанный ниже метод настройки ТВ Тюнера Behold TV 409 FM подходит и для установки других устройств такого типа - отличаться будут только параметры, передаваемые модулям тюнера. Пост в основном написан под влиянием статьи Настройка тюнера BeholdTV 409 FM в Linux.


Настройка TV Tuner в Debian
Если у вас дистрибутивное ядро, скорее всего, там уже всё включено и отмечено. В логах (ответ на команду dmesg в консоли) должно появиться что-то вроде:
saa7130/34: v4l2 driver version 0.2.14 loaded
ACPI: PCI Interrupt 0000:06:02.0[A] -> GSI 18 (level, low) -> IRQ 18

saa7133[0]: found at 0000:06:02.0, rev: 240, irq: 18, latency: 32, mmio: 0xdfeff800

saa7133[0]: subsystem: 0000:4091, board: Beholder BeholdTV 409 FM [card=67,autodetected]

saa7133[0]: board init: gpio is c0c000

input: saa7134 IR (Beholder BeholdTV 4 as /class/input/input3

saa7133[0]: i2c eeprom 00: 00 00 91 40 54 20 00 00 00 00 00 00 00 00 00 01

saa7133[0]: i2c eeprom 10: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff

saa7133[0]: i2c eeprom 20: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff

saa7133[0]: i2c eeprom 30: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff

saa7133[0]: i2c eeprom 40: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff

saa7133[0]: i2c eeprom 50: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff

saa7133[0]: i2c eeprom 60: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff

saa7133[0]: i2c eeprom 70: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff

tuner 1-0060: All bytes are equal. It is not a TEA5767

tuner 1-0060: chip found @ 0xc0 (saa7133[0])

tuner 1-0060: type set to 38 (Philips PAL/SECAM multi (FM1216ME MK3))

tda9887 1-0043: chip found @ 0x86 (saa7133[0])

saa7133[0]: registered device video0 [v4l2]

saa7133[0]: registered device vbi0

saa7133[0]: registered device radio0
У вас эти диагностические данные могут быть другими, но принцип тот же. Полужирным цветным я выделил главное:
  • Имя драйвера - saa7133
  • Название тюнера - Beholder BeholdTV 409 FM и номер карты card=67
  • Номер драйвера для тюнера tuner 1-0060: type set to 38 (Philips PAL/SECAM multi (FM1216ME MK3))
Итак, эти цифры нужно записать \ запомнить. Дело в том, что по умолчанию ставится формат вещания PAL, но в России принят SECAM - и если вы это не измените, то при включении программы просмотра передач с тюнера увидите чёрно-белое изображение без звука и с шумами.

Чтобы сообщить модулю тюнера, что нам нужен SECAM, нужно его выгрузить и загрузить с нужными параметрами.
В случае ТВ Тюнера Beholder BeholdTV 409FM параметры такие:
rmmod saa7134
modprobe saa7134 tuner=63 card=67

rmmod tda9887

modprobe tda9887 secam=d

chmod 777 /dev/video0
Если у вас ядро версии 2.6.18 и выше, следует передать такие параметры:
rmmod saa7134
modprobe saa7134 tuner=63 card=67

rmmod tuner

modprobe tuner secam=d

chmod 777 /dev/video0
Что мы сказали модулю? Что у нас конкретный тюнер и карта (вторая строчка), и что мы живём в замечательной стране со стандартом телепередач SECAM (если картинка ч/б и с шумом - значит, вы поставили PAL, который есть стандарт для остального мира), и что
телевизор хотят смотреть все, а не только рут (последняя строка). Всё, теперь почти готово.

Обратите внимание, что у вас в каталоге /dev должно появиться устройство video0 - это и есть ваш тюнер, именно его будут использовать программы. Очень часто проблемы с тюнерами появляются из-за неправильных прав доступа к этому файлу, /dev/video0. И для этого следует сделать
sudo chmod 777 /dev/video0
Естественно, если у вас другой тюнер - вместо saa7134 надо поставить подходящий и
параметры передавать другие. Всё вышеперечисленное работает для BeholdTV409FM и ядер по крайней мере свежее 2.6.15.

Если у вас самосборное ядро
Для этого в ядре требуется поддержка I2C и Video4Linux, а так же драйвера для тюнера. Следует особо отметить, что один модуль ядра поддерживает чип, на котором построен тюнер - куча тюнеров могут быть построены на одном и том же чипе.
Так что собираем i2c и
Video4Linux монолитно, поддержку его протоколов I2C и драйвера видеочипов модулями. Если не знаете, какой драйвер нужен, то
lspci
вам в этом поможет. И вообще, о логах не стоит забывать, как и о том, что к ядру Linux, в разделе Documentation и подразделе video4linux содержится полный список тюнеров, поддерживаемых данной версией ядра. Дальше всё по описанию с дистрибутивным ядром - передача параметров модулю и установка софта.

Если TV Tuner не работает...
Сверьтесь с документацией по ядру, которое установлено в данный момент - там должен быть ответ на вопрос, поддерживается ваш тюнер или нет (или просто поставьте самое свежее ядро из репозиториев). Документация находится здесь: /usr/src/linux-2.6.zz.z/Documentation/video4linux где вместо zz.z стоит версия вашего ядра (узнать его можно, набрав uname -a).
Внутри этого каталога вы найдёте несколько файлов с именами CARDLIST.yyy, где yyy - это имя драйвера. Откройте эти файлы и поищите в них по названию вашего тюнера. Если его там не окажется - ставьте новое ядро.

В этих же файлах есть номера карт - вот например, для моего Бехолдера это:
./video4linux/CARDLIST.saa7134

...
67 -> Beholder BeholdTV 409 FM [0000:4091]
...
Это и есть номер карты - который мы передаём в команде
modprobe saa7134 tuner=63 card=67

Так же будет файл под названием CARDLIST.tuner - он должен быть один. Там внутри - номера тюнеров разных карт. В выводах dmesg это можно увидеть:
tuner 1-0043: chip found @ 0x86 (saa7133[0])
tda9887 1-0043: tda988[5/6/7] found @ 0x43 (tuner)
tuner 1-0060: All bytes are equal. It is not a TEA5767
tuner 1-0060: chip found @ 0xc0 (saa7133[0])
tuner 1-0060: type set to 38 (Philips PAL/SECAM multi (FM1216ME MK3))
Стало быть, номер тюнера - 38 (это опять-таки для моего Бехолдера409). Это есть в файле CARDLIST.tuner:
tuner=38 - Philips PAL/SECAM multi (FM1216ME MK3)
Но этот номер должен сообщить драйвер тюнера.

Здесь можно спросить: а почему это не делается автоматом? Ответ: автоматом всё делается, но по умолчанию ставится PAL - а нужен SECAM. Наша страна пошла своим путём, и не Linux в том вина :-)


Поиск телеканалов
Теперь осталось поставить программу для просмотра телепередач. Запускаем с балкона приложенные к тюнеру диски с софтом для Windows и, пока они летят, ставим:
aptitude install tvtime
Это одна из лучших программ в своём роде (tvtime, xawtv, zapper). Лично мне показалась наиболее удобной программа tvtime - много настроек, грамотный интерфейс и куча возможностей.

После установки программы tvtime нужно поискать телеканалы (от простого пользователя):
tvtime-scanner --norm=SECAM
которая пробежится по всем доступным диапазонам частот и поищет телеканалы. Выглядит это так:
Reading configuration from /etc/tvtime/tvtime.xml
Reading configuration from /home/penta4/.tvtime/tvtime.xml
Scanning using TV standard SECAM.
Scanning from 44,00 MHz to 958,00 MHz.
Found a channel at 59,50 MHz (58,25 - 60,50 MHz), adding to channel list.
Found a channel at 63,00 MHz (62,75 - 63,00 MHz), adding to channel list.
Found a channel at 77,50 MHz (77,25 - 77,50 MHz), adding to channel list.
Found a channel at 79,75 MHz (79,50 - 79,75 MHz), adding to channel list.
Found a channel at 85,50 MHz (84,25 - 86,50 MHz), adding to channel list.
Found a channel at 111,50 MHz (110,25 - 112,50 MHz), adding to channel list.

После этого запускаем tvtime, и отключаем некоторые опции, правая кнопка мыши - Channel management:
  • Активировать все каналы
  • Отключить обнаружение входного сигнала
Пройдитесь по каналам, переупорядочите их под свой вкус и насаждайтесь.
Имейте в виду, что ТВ Тюнеры (особенно внутренние), как правило, находят меньше каналов, чем обычные телевизоры, или с некоторыми шумами. Это связано с меньшей чувствительностью и большей подверженности наводкам и помехам внутри корпуса компьютера.
В результате у вас в домашней директории появится каталог .tvtime, где будут прописаны все найдённые каналы. Дальше всё просто. Набираем tvtime и наслаждаемся результатом.

Если звука нет, можно соединить аудиовыход тюнера и микрофон звуковой карты.

Если нужно записывать данные с ТВ Тюнера в Linux и сжимать их, читаем этот пост.

Ссылки:
http://www.citforum.ru/hardware/articles/tv-tuning/
http://pctuner.ru/forums-m-posts-p-27057.html#27057
http://knoppix.ru/forum3/viewtopic.php?p=23151&
http://pctuner.ru/forums-m-posts-p-21328.html#21328


25 комментариев:

  1. Привет. Интересный материал у тебя. Тоже на днях познакомился с дистрибом Ubuntu 6.06. Тот же тюнер Beholder BeholdTV 409FM. Работает без пересборок ядер и компиляции чего-либо. Только напильник нужен - указать номер тюнера и стандарт приема secam-d. Радио работает без проблем (GnomeRadio). Пульт кстати тоже пашет, переключает каналы, звук меняет, но не все кнопки работают так как хотелось бы. Не знаю с помощью какого механизма сейчас перехватывается пульт, lirc не стоит. Может знаешь как настроить?
    Василий

    ОтветитьУдалить
  2. Здравствуйте, Василий

    "Интересный материал у тебя"
    Спасибо. Пишу, как настраивал что-то сам, чтобы другим было легче.

    "Тот же тюнер Beholder BeholdTV 409FM. Работает без пересборок ядер и компиляции чего-либо."
    Ядро у меня самосборное, с патчами (в частности, для squashfs), и поставил я тюнер в те времена, когда Ubuntu 6.06 даже близко не было. Очень рад, что у тебя завелось всё с полпинка. :-)

    "Не знаю с помощью какого механизма сейчас перехватывается пульт, lirc не стоит."
    Я с Убунтой не особо знаком - кто его знает, что они туда запихнули. Но вообще стандартно пульты обслуживает именно lirc. У меня ИК-датчик не прижился, пульт не настраивал.

    ОтветитьУдалить
  3. 2virens:
    >Я с Убунтой не особо знаком - кто его знает, что они туда запихнули.

    Ну ладно, спасибо. Будем разбираться :)
    Желаю творческих успехов - хорошо пишешь. С удовольствием почитал :)

    Василий

    ОтветитьУдалить
  4. А вот собственно такой вопрос - у меня такой же тюнер, кубунту 6.06 встал, определил тюнер сам, видимо - во всяком случае tvtime работает. Мне обязательно прописывать тип тюнера "руками", это что-то даст? Или все уже и так? :-)

    ОтветитьУдалить
  5. 2 Anonymous т.е. Василий:
    Желаю творческих успехов - хорошо пишешь.
    Спасибо, буду продолжать писать ещё. :-)

    2 Митяй
    Мне обязательно прописывать тип тюнера "руками", это что-то даст?
    Если работает - не надо ничего прописывать. Прописывать надо, если изображение серое, дёргается и вместо звука - шипение.

    ОтветитьУдалить
  6. Привет. Спасибо за информацию. Почти настроил свой Beholder 507RDS, но возникли некоторые проблемы - не показывает ОРТ и Россия. Есть предположение, что это от того, что они нахдятся в диапазоне до 100МГц. Но под виновсом показывает нормально, и сигнал вполне приличный для этих каналов (нашлись и работают гораздо более слабые каналы)... Нет ли каких мыслей, как это исправить? Опции модулей такие:
    options i2c-algo-bit bit_test=1
    options tuner secam=d
    options tda9887 secam=d
    options saa7134 alsa=1 card=67 gbuffers=4 i2c_scan=1 tuner=63

    ОтветитьУдалить
  7. 2 _m1ke_
    Почти настроил свой Beholder 507RDS, но возникли некоторые проблемы - не показывает ОРТ и Россия.
    Любопытно: у меня как раз ОРТ очень классно ловится, со звуком и без помех.

    Но под виновсом показывает нормально, и сигнал вполне приличный для этих каналов (нашлись и работают гораздо более слабые каналы)...
    Я так понимаю, что бехолдеровцы свой софт делают, который вылавливает слабые каналы. Софтвером давят, а под Линукс не дают, гады.
    Из мыслей - только обновить tvtime и попробовать xavtv.

    ОтветитьУдалить
  8. Для Beholder 507 параметр должен быть tuner=38

    ОтветитьУдалить
  9. Для того, чтобы под линукс заработал тюнер Behold 403 (без FM) пишем в /etc/modprobe.conf такое:

    options saa7134 card=26 tuner=13 secam=d

    Надеюсь, что кому-нибудь поможет :)

    ОтветитьУдалить
  10. У меня Behold TV M6 Extra и Debian Etch;
    подозреваю, что в оффтопике карточка должна отлично работать, но я не пользуюсь таким софтом дома.

    На форуме бехолдера был совет модифицировать ядро, но там такой жесткий способ... Не хочу в /dev/null отправить свой труд и труд того, кто приделал карточку. Хочу по SVN изменить локальную ветку ядра и залить изменения в основную.

    ОтветитьУдалить
  11. 2 Ruslan пишет...
    У меня Behold TV M6 Extra и Debian Etch; На форуме бехолдера был совет модифицировать ядро
    Просто поставьте новое ядро из пакета. В 2.6.15 всё работает отлично.

    ОтветитьУдалить
  12. Спасибо за статью! все завелось в миг!!!
    только есть одно но:
    каждый раз после перезапуска системы права у /dev/video0 меняются на дефолтные...
    и самое обидное что # sudo chmod 777 /dev/video0 не помогает!!!!
    единственное что спасает - залогинится под root и там поменять прова...

    есть ли другой способ???

    ОтветитьУдалить
  13. # sudo chmod 777 /dev/video0
    и не помогает??? Не верю! (с) :) Должно помогать по любому.
    Если по существу, то это у тебя скорее всего права правит udev при перезагрузки. Поправь его правила и будет все ОК.

    ОтветитьУдалить
  14. К стати автору спасибо за труд! Молодец. Хотя у меня avermedia и давно все настроено. ;)
    Для любителей TV так же рекомендую глянуть в сторону mythtv. Монстроидально, но в некоторых случаях оно того стоит. Я развернул на стационарной машине дома. В результате по wifi и жена и я можем с любого места дома посмотреть телевизор. Плюс можно когда надо нажать на паузу, отойти, потом продолжить смотреть, промотать рекламму ну и прочие приятные мелочи.

    ОтветитьУдалить
  15. Добрый день!Спасибо автору за статью.У меня Aver 203(чип bt878) и возникла одна трудность.Сделав всё как в статье я получил прекрасную картинку, всё нормально.НО после перезагрузки опять ничего.Если в консоли ввести
    rmmod bt878
    modprobe bt878 tuner=41 card=5
    rmmod tuner
    modprobe tuner secam=d
    то опять всё работает.Посоветуйте, что сделать, чтоб сохранить настройки.Спасибо.

    ОтветитьУдалить
  16. "Если по существу, то это у тебя скорее всего права правит udev при перезагрузки."

    А как это сделать? Что-то не вник

    ОтветитьУдалить
  17. Сделал всё, как описано, картинка появилась. Тюнер Behold TV 405. Звука нет, при перезагрузке слетают настройки. Приходится давать от рута комманды

    rmmod saa7134
    modprobe saa7134 tuner=63 card=67
    rmmod tuner
    modprobe tuner secam=d
    chmod 777 /dev/video0

    тогда появляется картинка.
    Видимо, причина в udev, но что с ним делать-так и не разобрался.

    ОтветитьУдалить
  18. Здравствуйте! Я прописал команду rmmod saa7134, на что получил уведомление, что устройство используется альсой (ERROR: Module saa7134 is in use by saa7134_alsa
    ), как ее отключить, помогите

    ОтветитьУдалить
  19. rrmod saa7134_alsa
    а потом
    rrmod saa7134

    ОтветитьУдалить
  20. Здравствуйте, помогите пожалуйста, у меня тоже выдается ошибка ERROR: Module saa7134 is in use by saa7134_alsa никак не выходит её обойти. А без этого твтайм гвоорит что нет сигнала

    ОтветитьУдалить
  21. nano /etc/modprobe.d/saa7134
    с текстом: options saa7134 card=2 tuner=50 secam=d alsa=1
    и тюнер работает без вышеописанных "шагов".
    dmesg выдал тип тюнера: LifeView FlyVIDEO3000

    ОтветитьУдалить
  22. привет. купила пульт универсальный на телевизор. марка zapper 2 в 1. не могу настроить его. помогите!

    ОтветитьУдалить
  23. Помогите настроить на Ubuntu 10.04 Winfast DVB-T Dongle H
    Мне нужно аналоговое ТВ

    ОтветитьУдалить
  24. > modprobe saa7134 tuner=63 card=67

    Откуда tuner=63?

    ОтветитьУдалить
  25. Вначале было все как описано, только ни в одной программе тв не показывалось, хотя тюнер определялся и секам выбрать мог, но изображения я так и не добился, максимум был звук, сижу под дебиан ядро линуха 2,6,26-2-686 гном 2,22,3. Это было пол беды, может и донастраивал бы, да только в очередной раз я проснулся утром, включил ПК, загрузил дебиан и вот - устройство исчезло, не определяется, даже не пишет что оно вообще существует, как будто не вставлено, но в винде показывает. Что делать? Переставлять, после того как все настроил, при том что юзаю дебиан впервые или есть другие варианты?

    ОтветитьУдалить