Главная Файлы Форум Галерея Гостевая книга Обратная связь Карта сайта Поиск
 

 

Моё место работы

СитиСервис
  • Заправка и ремонт лазерных картриджей
  • Ремонт любых принтеров и копиров
  • Оригинальные и совместимые картриджи
  • Доставка бесплатно (от 2-х картриджей)
  • Накопительная система расчётов для корпоративных клиентов
Телефон
+7 (4722) 373-983
8-980-326-01-23
Адрес E-mail
mybelpost@gmail.com

Привет, Гость

Войти
Идентификация
Я забыл свой пароль
Регистрация

Разделы -> Статьи -> Linux - разное -> TV-тюнер со звуком ч...

TV-тюнер со звуком через PCI под Linux

   Поднял только вышедшую Debian-7.0.0 Wheezy и всплыла маленькая неприятность при старте системы - шум TV-тюнера, который был подключен к линейному входу ПК. Бывало так, что слышались звуки от последнего просмотренного канала TV или прослушанной радиостанции (при перезагрузке). Надоело мне такое звуковое сопровождение! Решил переключить TV-тюнер на звук по PCI. Сам модуль ядра запустить с нужными параметрами труда не составило, а вот с приложениями, которые управляют тюнером пришлось повозиться, чтобы они стали работать через PCM.

Перед описанием решения проблемы скажу немного о своём "железе".

Система: Debian-7.0.0 Wheezy i386.

TV-тюнер: TV Tuner Beholder BeholdTV 409FM

Модуль тюнера: saa7134

 

И так приступим!

   Для начала нужно запустить модуль ядра saa7134 с нужными параметрами.
Запускаем терминал, получаем права root и создаём файл в /etc/modprobe.d (команда ниже)

touch /etc/modprobe.d/tuner.conf

Записываем в созданный файл параметры модуля:

echo "options saa7134 alsa=1 secam=d" > /etc/modprobe.d/tuner.conf

Всё, перезагружаем модуль или компьютер.

Далее будем "прописывать костыли" приложениям, которые не умеют снимать звук с PCI-шины.

Первое - смотрим номер карты и устройства, которые система присвоила TV-тюнеру. С правами любого пользователя даём из консоли вот такую команду:

lspci

Среди прочего в вывода будет, что-то похожее на это (для тюнера на базе чипа saa7134):

....................
card 1: SAA7134 [SAA7134], device 0: SAA7134 PCM [SAA7134 PCM]
....................

(Лишее из вывода консоли я убрал).

Здесь видим карту - card 1 и устройство - device 0

Подключаем миксер к PCI скомандовав из консоли вот так, к примеру:

arecord -D hw:1,0 -f dat | aplay

Где: hw:1,0 и есть card 1, через запятую device 0.

Всё! По идее запущенный kradio или другое приложение обслуживающее TV-тюнер должны будут работать только на управление режимами прибора, а звук пойдёт по PCI-шине через конвейер arecord|aplay. При запуске TVtime нужно ещё и ему указывать, что он должен работать с PCM (последнее, кстати под вопросом, ведь tvtime не будет звук принимать вообще, за него это сделает arecord). Об этом ниже.

Однако, всё время делать переключения командуя в консоли не удобно!
Потому ставим TVtime и kradio4 (kradio - это программа прослушивания эфирных радиостанций) на "костыли" из bash-скриптов.

Скрипт первый для TVtime.
(Скрипт был подсмотрен на форуме Beholder, немного доработан под вечно путающую устройства ALSA. Также выкинул строки с записью pid в файл. Устранил косяк с остающимися процессами aplay и arecord после закрытия приложения обслуживающего тюнер).
Смысл заключается в том, чтобы воткнуть arecord в TV-тюнер по PCI, но запись не делать, а передавать полученный сигнал дальше по конвейеру, в "уши" aplay, который и будет выводить звук на звуковую карту.

Создаём пустой файл с именем tvtime:

touch ./tvtime

Открываем его на редактирование любимым текстовым редактором и заносим в файл вот такую запись:

#!/bin/bash

card=$(arecord -l | grep SAA7134 | sed 's/://g' | awk '{ print $2 }')
device=$(arecord -l | grep SAA7134 | sed 's/://g' | awk '{ print $6 }')

if [ -f /usr/bin/arecord ]; then
arecord -q -D hw:$card,$device -r 32000 -c 2 -f S16_LE | aplay -q - & apid=$!
fi

if [ -f /usr/bin/tvtime1 ]; then
tvtime1 -m --mixer=/dev/mixer:pcm --xmltv=/var/lib/tvtime/tvguide.xml
fi

kill -9 $apid
exit 0;
Оригинальный файл tvtime переименовываем в tvtime1:

mv /usr/bin/tvtime /usr/bin/tvtime1

Копируем созданный файл ./tvtime на место оригинального:

cp ./tvtime /usr/bin

Даём скрипту права на выполнение:

chmod 755 /usr/bin/tvtime

Всё! Можно запускать TVtime как обычно, звук должен будет сниматься с PCI-шины тюнера.

Для kradio4 процедура аналогична.
Т.е. создаём скрипт с вот таким содержимым (имя скрипта kradio):

#! /bin/bash

card=$(arecord -l | grep SAA7134 | sed 's/://g' | awk '{ print $2 }')
device=$(arecord -l | grep SAA7134 | sed 's/://g' | awk '{ print $6 }')

if [ -f /usr/bin/arecord ]; then
arecord -D hw:$card,$device -f dat | aplay -q - & apid=$!
fi

if [ -f /usr/bin/kradio1 ]; then
kradio1
fi

kill -9 $apid

exit 0;

В Debian 7 Wheezy нет kradio, но есть kradio4, потому перемещать оригинальный файл не придётся. В тоже время в Debian 6 Squeeze есть kradio - смотрите не перетрите его а переименуйте в kradio4!

Даём скрипту права на выполнение.

chmod 755 /usr/bin/kradio

Копируем созданный баш-скрипт в /usr/bin

cp ./kradio /usr/bin

Исправляем команду запуска в меню GNOME заменив kradio4 на kradio.

Готово!

Внимание!
Скрипты заточены под SAA7134, если у вас другой чип, то измените соответствующие строки сценария, т.е. замените SAA7134 на тот, который показала команда lspci.


Сценарии проверены под Debian-6.x.x Squeeze и Debian-7.0.0 Wheezy (i386) - работают нормально!

PS: Правда заметил такую штуку: после старта системы звука может не быть вообще - режим мут. Но как только сработает хотябы одно приложение воспроизводящее звук, то сигнал появляется. Однако, такое происходит не всегда и я не уверен, что по причине моего вмешательства с переключением тюнера на PCM. Скорее всего это причуды pulsaudio - нужно настраивать.

Опубликовано: Константин, Автор/источник: Сакрюкин К.В. 05 Июнь 2013 18:34:56

Комментировать

Вы не залогинены! Регистрация

Афоризмы, мысли

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

/Столлман Ричард Мэттью/

Счётчик

Сейчас на сайте - 1 (0 зарег.)
Всего хитов1126 
Сегодня хитов1126 
Сегодня хостов215 

Откуда гости наши?

 
Powered by ReloadCMS 1.5.0.
© 2004-2012 ReloadCMS Team
RSS AggregationPHP powered
Генерация страницы: 0.39
  Яндекс.Метрика
    Сакрюкин К.В.   Яндекс цитирования    
 
Здесь всё можно копировать и цитировать, но рабочая ссылка на мой сайт обязательна!