Настройка TV-тюнера под Linux

Денис Колисниченко
  • 3 августа 2005
  • 52k

Наступили долгожданные выходные и поры бы отдохнуть от изрядно надоевшей работы. Наверное, одним из самых популярных средств организации пассивного досуга является телевизор. Как же без него? Но вот подыматься из-за компьютера (тем более, что кресло ведь нагретое) как-то не хочется... Ну вот, опять, как только вы сделали героический поступок: встали со своего кресла и направились в комнату, обнаруживается, что телевизор занят девушкой/женой/детьми или родителями для просмотра очередной мыльной оперы или какого-нибудь концерта попсовой музыки. Что же делать?

Ответ прост: купить TV-тюнер. В последнее время цены на TV-тюнеры достаточно низкие и за 50-60 вечнозеленых можно купить более или менее нормальную модель. А если денег уж совсем мало, можно найти дешевую модель за 30-40 USD или же купить за такую цену более дорогую модель, но уже бывшую в употреблении.

Прежде, чем перейти к настройке вашего TV-тюнера, сделаю небольшое вступление. Если вы еще не купили тюнер, не спешите. Я рекомендую приобретать тюнеры производства компании AverMedia. Не пожалейте денег на тюнер этой компании. Если же денег все-таки нет, отложите то, что есть до следующей зарплаты: я не советую вам покупать простенькую модель за 30-40 USD. Иначе вы получите плату неизвестного китайского производителя, глюкавый драйвер для Windows 98/2000/XP и малофункциональную программку для просмотра телепередач. В последствии даже для Windows вам трудно будет достать более мощные программы, позволяющие работать с TV-тюнером.

Предположим, что деньги у вас есть, и вы решили купить лучшую модель. Но какая модель лучше? Та, которую посоветует продавец? Запомните: никто не будет критиковать свой товар - ведь его нужно продать. Честно говоря, я сам не очень хорошо разбираюсь в TV-тюнерах, поскольку это не касается системного администрирования и программирования. Могу посоветовать только одно: не покупайте внешние USB-тюнеры. Внешние тюнеры в зависимости от модели и производителя, как правило, дороже стоят, чем их внутренние собратья. Но, если я правильно вас понял, дело за ценой не постоит. Как раз тут дело и не в цене. Для USB-тюнеров не создано стабильных драйверов для операционной системы Linux. Поэтому нет никакой гарантии, что имеющийся у вас драйвер будет работать с купленным устройством.

Следующий момент, который важно учесть при выборе TV-тюнера. Как правило, любое видео передается в одном из стандартов: PAL, SECAM, NTSC. Некоторые, узрев знакомую надпись PAL, сразу же покупают тюнер, тем более что цена составляет всего лишь какие-то $30. Думаете, спроста такие модели стоят так дешево. Конечно, есть и дорогие модели, поддерживающие только систему PAL. Вещание телепередач в странах СНГ производится в системах PAL/SECAM, а звук передается в системе D/G. Поэтому при покупке тюнера, убедитесь, что он поддерживает эти стандарты. В противном случае, если ваш тюнер будет поддерживать лишь один из стандартов, изображение некоторых каналов будет черно-белым, а если отсутствует поддержка D/G, то... Я умолчу об этом (не хочется вспоминать издаваемый шум).

Все тюнеры поставляются в одном из трех вариантах:

  1. Простой - обыкновенный TV-тюнер.
  2. С поддержкой FM.
  3. С поддержкой FM и пультом дистанционного управления.

В первом случае вы сможете только смотреть телепередачи, во втором - еще и слушать радио, а третьем - делать первое и второе, лежа на диване с пультом в руках. Какой покупать? Это зависит от ваших финансов. Скажу честно: тюнера у меня вообще нет, а у соседа, у которого и производилась вся эта настройка (за что мы взаимно благодарны друг другу), денег на дистанционку не хватило. Поэтому настройку дистанционного управления я рассматривать не буду, а только укажу, где об этом написано.

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

  1. Все карты AverMedia.
  2. Все карты ADS Channel Surfer.
  3. Все карты Maxi TV Video PCI.
  4. Карты Bt848/Bt848a/Bt849/Bt878/Bt879.
  5. Карты MATRIX Vision.
  6. Карты Miro/Pinnacle PCTV.
  7. Карты Hauppauge Win/TV PCI.

Для более подробной информации смотрите файл /usr/src/linux/Documentation/video4linux/bttv/CARDLIST, если у вас ядро 2.4.x.x или файл /usr/src/linux/Documentation/video4linux/bttv/CARDS, если у вас ядро 2.2.x.x.

Вот теперь перейдем к настройке вашего тюнера. Дополнительную информацию, правда на английском языке, вы можете найти в каталоге /usr/src/linux/Documentation/video4linux/. Перед покупкой тюнера обязательно прочитайте эту документацию или хотя бы убедитесь, что ваш тюнер имеется в файле CARDLIST.

Примечание. У вас нет этого каталога??? Значит, у вас не установлены исходные тексты ядра. Для их установки вам нужно установить пакеты:

kernel-headers
kernel-source

Эти пакеты потребуют наличия дополнительных пакетов, например, при установке пакета kernel-source, мне нужно было установить такие пакеты:

ncurces-devel
dev86
flex
byacc

Но это при условии, что у меня уже был установлен компилятор gcc и программа make, которые необходимы для сборки ядра. Не знаете с чего начать? Попытайтесь установить пакет kernel-source: программа rpm выдаст вам названия всех необходимых файлов. Установите эти пакеты, и опять попытайтесь установить kernel-source.
Далее я предполагаю, что у вас:

  1. Установлены исходные тексты ядра.
  2. Правильно настроена звуковая карта - при настройке звука телепередач мы не сможем правильно сделать это без корректно настроенной звуковой платы. Дело в том, что сначала мы настраиваем видео передачу, а потому передачу звука. Как мы можем быть уверенны в том, что правильно настроили последнее, если не работает звуковая плата.

Теперь приступим к перекомпилированию ядру. Если вы не знаете, как это сделать, прочитайте мою статью Конфигурирование ядра, которая всегда доступна по адресу ссылка. В ней подробно описан процесс перекомпилирования ядра системы.

Для запуска утилиты конфигурации ядра, введите команду:

make menuconfig

В секции Multimedia Devices включите поддержку Video For Linux и установите загрузку BT8XX Video For Linux как модуля.

Большинство ядер уже собрано с поддержкой необходимых нам устройств, но на всякий случай, убедитесь в следующем:

  1. Включена поддержка драйвера bttv.
  2. Включена поддержка I2C.
  3. Включена поддержка интерфейса I2C bit-banging.

Теперь, когда все устройства сконфигурированы, нужно сохранить файл конфигурации ядра и перейти непосредственно к этапу компилирования ядра.

Введите команду:

# make dep

После завершения ее работы нужно ввести команду:

# make bzImage

Если исходники ядра и компилятор установлены корректно примерно минут через 20 (это зависит от версии ядра и от быстродействия вашей системы), вы получите откомпилированное ядро. Обычно оно помещается в каталог /usr/src/linux/arch/i386/boot.

Теперь нужно откомпилировать модули, которые будут использоваться ядром. Введите команду:

# make modules

Установим модули:

# make modules_install

Перед установкой модулей сделайте резервную копию модулей старого ядра (каталог /lib/modules).

Теперь можно ввести команду:

# make install

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

Откройте в любом редакторе файл /etc/lilo.conf.

# vi /etc/lilo.conf

Добавьте следующие строки:

image=/usr/src/linux/arch/i386/boot/bzImage 
label=my_linux 
root=/dev/hda5 
append=" mem=128M" 
read-only

Естественно, укажите свою корневую файловую систему и объем оперативной памяти. Подробнее об использовании LILO вы можете прочитать в моей статье "Использование LILO".

Введите команду:

# lilo

Теперь перезагрузите систему:

# reboot

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

Думаю, читатель меня простит, если я немного упрощу себе жизнь, и не буду описывать, как настроить TV-тюнер на ядре 2.2.x.x: ведь большинство современных дистрибутивов поставляется с ядром 2.4.*. Настройку TV-тюнера на ядре 2.2.* я опишу лишь в трех словах:

  1. Перекомпилируйте ядро и включите поддержку kmod.
  2. Загрузите драйвер i2c и откомпилируйте его. Как это сделать, описано здесь.
  3. Точно таким же образом установите новый драйвер bttv.

Для чего это нужно? Video4Linux требуют наличия драйвера i2c, который впервые появился в составе ядра версии 2.3 (версия с нечетным вторым номеров - это нестабильная версия). В состав ядра этот драйвер не входит, поэтому его нужно собрать самостоятельно.

Если у вас ядро 2.4* (или 2.3) вы можете вздохнуть спокойно: драйверы i2c и bttv уже установлены. Вам нужно только убедиться, что они откомпилированы, и, если нет, откомпилировать, собрав заново ядро. Разумеется, если драйвер уже откомпилирован (включен в состав ядра), собирать заново ядро не нужно.

Следующий шаг - убедитесь, что у вас существует устройство /dev/video. Для этого введите команду:

ls /dev/video*

Лично у меня оказалось сразу четыре таких устройства:

/dev/video  /dev/video0  /dev/video1  /dev/video2  /dev/video3

Файл /dev/video - это просто ссылка на файл /dev/video0. Если у вас нет этого файла, нужно его создать:

cd /dev
mknod video0 c 81 0
ln -s video0 video

Вам лень вводить так много команд? Тогда воспользуйтесь сценарием MAKEDEV, который находится в каталоге /usr/src/linux/Documentation/video4linux/bttv.

./MAKEDEV video 0

Теперь, когда установлены все драйверы и создано устройство /dev/video, можно приступить настройке программного обеспечения. Лучше всего использовать программы, поддерживающие библиотеку libXaw. Единственная программа в моем дистрибутиве (я думаю и в вашем), которая поддерживает эту библиотеку - это программа Xawtv.

Создайте файл .xawtv в своем домашнем каталоге примерно такого содержания:

[global]
fullscreen = 640 x 480
freqtab = europe-east
pixsize = 128 x 96
pixcols = 1
jpeg-quality = 75

[defaults]
norm = SECAM
capture = over
source = Television

Если вы чувствуете, что ваш старенький компьютер не "вытянет" полноэкранного режим 800x600, установите разрешение экрана 640x480. В зависимости от поворотливости вашего компьютера, установите уровень JPEG-компрессии. Чем выше качество, тем больше нагрузка на систему. Обычно для максимального качества хватает значения jpeg-quality = 90. Но самым оптимальным значением будет все-таки 75.

Затем указываем программе, что мы будем принимать передачи в формате SECAM. Частотная таблица каналов - europe-east. Если вы живете в западной Европе, укажите europe-west.

Теперь запустите два терминала: в одном мы в процессе настройки будем запускать программу xawtv, а в другом экспериментировать. Во втором терминале введите команду su, чтобы работать от имени суперпользователя.

Выполните две команды (во втором терминале):

modprobe i2c-dev
modprobe tuner type=3

Первая загружает модуль i2c, а вторая загружает модуль tuner, настраивая его на прием передач в системе SECAM (type=3).

Вот теперь начинается самое интересно. Вам нужно правильно определить тип своего тюнера. Для этого загляните в файл CARDLIST: возле вашей платы должен стоять ее номер. Введите команду:

modprobe bttv card=NN

NN - это номер вашей платы. Теперь переходим на первый терминал и запускаем программу xawtv. С помощью кнопок настройки канала выбираем нужный канал. Если:

  1. Вы не можете настроить ни один канал.
  2. Изображение черно-белое или же его вообще нет.
  3. Нет звука.

Тогда сделайте следующее. Закройте xawtv и удалите модуль bttv:

rmmod bttv

Повторно введите команду:

modprobe bttv card=NN

Но уже с другим номером.

После этого опять запустите xawtv и попытайтесь настроить телепередачу. Если опять ничего не получается, повторите все заново, то есть закройте xawtv, выгрузите модуль bttv и установите новый номер карты.

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

modprobe tvsound tda8425=1 debug=1

Первый параметр пробует установить модуль tvsound для микросхемы tda8425, а второй включает отладку. Даже если звук после этого не заработает, программа modprobe выведет на экран имя декодера, который используется на вашей плате. Потом все просто: берем это имя и пробуем ввести команду:

modprobe tvsound имя=1 debug=1

Вы можете поэкспериментировать с микросхемами msp34xx, tda8425, tea6300. Когда все работает нормально, нужно обеспечить загрузку модулей при запуске системы. Для этого в файл /etc/conf.modules добавляем строки:

# Загрузка драйвера i2c
alias char-major-89 i2c-dev
options i2c-core 
options i2c-algo-bit 
# Загрузка драйвера bttv
alias char-major-81 videodev
alias char-major-81-0 bttv
options bttv card=NN radio=1
options tuner type = 3 
options tvsound  tda8425=1

Замените NN на номер своей платы. Параметр radio обеспечивает поддержку FM-тюнера, если такой имеется.

options bttv card=NN radio=1

С помощью каких программ можно работать с тюнером? Если вам не хватает программы xawtv, вот небольшой список программ, которые вам могут пригодиться:

  1. GnomeTV - простая программ для просмотра телепередач.
  2. KwinTV - программа просмотра передач (для KDE).
  3. bttvgrab - мощная программа, позволяющая записывать телепередачи на диск.

Вам не хватает приведенной информации? Тогда зайдите на любой поисковик, например, Google, и введите строку запроса Video4Linux.

Все ваши вопросы, пожелания и комментарии будут выслушаны по адресу dhsilabs@mail.ru.

Обсуждения

VENTO25
Сегодня, 10:40
sabadell66 не могли бы вы подправить оригинальную tv.mail.ru. Там есть проблемы при сборе инфы, писал об... КИТ Интернет телепрограмма...
Юрий Владимирович
Сегодня, 10:02
Категорически и совершенно точно с тобой согласен! Элементари это как Мерседес - под капотом изумительная... Обсуждаем Elementary OS
Dmitry Kornev
20 сентября, 12:22
НЛО (UFO, 2018, США) ссылка Эти фильмы стоит посмотреть
le
leonix
8 сентября, 11:46
Проблема решена! Тюнер был воткнут толи в USB 3.1, толи в USB 3.0 Воткнув в USB 2 все стало хорошо. AVERMEDIA AVerTV Hybrid...
ge
genius1001
3 сентября, 20:40
Всем привет, всё дело в том, что разрешение всех файлов должно быть одинаковым. Т. е. если первый... Проблема при записи...

Комментарии

спасиб за информацию !!! у меня в данный момент ядро 2.6.23 )) хателось бы узнать работает ли
Pinnacle PCMCIA PCTV Hybrid Pro 310C ??? ну или AVERMEDIA TV-Tuner+FM ?
Мне помогла статья Настройка TV- тюнера в Ubuntu.

У самого
ось: Ubuntu 10.04
тюнер: Manli HomeTv.

Для моего тюнера в файле /etc/modprobe.d/saa1734.conf

alias char-major-81 videodev
alias char-major-81-0 saa7134
options i2c-algo-bit bit_test=1
options saa7134 card=3 tuner=48 secam=dk
options tuner secam=d

самое сложное было найти номера card=3 tuner=48.