Linux32 - Блог



LINUX32

Свобода выбирать


ArchLinux
Блог >> 2014 >> Апрель


13.04.2014

Немного о TVtime




Всем доброго времени суток.

Сегодня коснусь темы просмотра кабельного (аналового) тв. Для этой цели в linux существует пожалуй всего лишь одна вменяемая программа со множеством настроек и предельной простотой использования - Tvtime.

Основная масса тв-тюнеров используемых совместно с этой программой построена на базе чипов Philips saa713#, где # - цифры от 0 до 4. Такие тюнеры подключаются по PCI-шине и tvtime при помощи модуля ядра saa713# показывает нам картинку.

Все вроде бы просто, но у арча есть поговорка "не было печали, апдейтов накачали...". Так вот, после последнего обновления с tvtim'ом произошло что-то нехорошее (вернее не с ним, а с модулем saa713# или с ядром, или еще с чем-то, точно сказать не могу). В результате, при первом после загрузки компьютера включении tvtime он почти нормально запускается (если не считать непродолжительное шипение из колонок), а если его выключить и включить снова, то в окне tvtime вместо изображения появляется синий экран с такой надписью (в моем случае - saa7134):

saa7134: Устройство или ресурс занято
Cannot open capture device /dev/video0


Которая лечится или перезагрузкой компьютера и последующим включением tvtime (что, конечно, неприемлемо), или перезагрузкой модуля saa7134. Второй вариант нам пригодится.

Перезагрузить модуль saa7134 значит выгрузить его и загрузить снова. Тут появилась проблема: модуль saa7134 зависит от модуля saa7134_alsa, а при попытке выгрузить saa7134_alsa терминал написал что он используется и не стал его выгружать, причем, чем он используется так и оставил загадкой. Тут опять два варианта: или выгружать модуль saa7134_alsa с ключем --force:

sudo rmmod -f saa7134_alsa


или создать в папке /etc/modprobe.d файл tuner.conf (ну или любое другое название на ваш вкус, лишь бы после точки было conf) с таким содержимым:

options saa7134 alsa=0


Поясню: этот файл говорит модулю saa7134 загружаться игнорируя звуковую карту тв-тюнера. То есть в alsamixer вы не досчитаетесь одной звуковой карты и, что в данном случае важнее, вообще не будет загружаться модуль saa7134_alsa, соответсвенно и выгружать его больше не нужно. Спешу успокоить что на воспроизведение и регулировку уровня звука в tvtime это не влияет.

Вот мы и подошли к самому главному - решению проблемы. Опять же через костыль. Если найду более изящное решение этой проблемы, добавлю в статью. Создаем текстовый файл, назовем его, например tvtime_hook, с таким содержимым:

!#/bin/bash
rmmod saa7134
modprobe saa7134
sudo -u user tvtime


Вместо user пишем имя пользователя под которым вы входите в систему. Делаем файл исполняемым. Так как нам нужно запускать этот скрипт от суперпользователя для выполнения манипуляций с модулями добавляем в файл /etc/sudoers такую строчку:

%wheel ALL=(ALL) NOPASSWD: /home/user/путь/до/файла/tvtime_hook


Вместо user опять же пишем имя своего пользователя, ну и правильный путь до файла tvtime_hook указываем. Земетьте что ваш пользователь должен входить в группу wheel.

Ну вот в принципе и все. Теперь, правда, нужно запускать tvtime вот такой командой:

sudo /путь/до/файла/tvtime_hook


Но если прописать ее в .desktop файл Tvtime, то это не будет проблемой.

Кстати, еще одна приятная мелочь: благодаря опции alsa=0 в файле tuner.conf пропала извечная совместная проблема скайпа и tvtime - при любом звуковом оповещении скайпа пропадал звук в tvtime. Теперь звук в тв-тюнере не боится никакого скайпа.

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

Статья


Ваш комментарий:

Имя:
E-mail:
Код с картинки:
Комментарий: