Немного о TVtime
Всем доброго времени суток.
Сегодня коснусь темы просмотра кабельного (аналового) тв. Для этой цели в linux существует пожалуй всего лишь одна вменяемая программа со множеством настроек и предельной простотой использования - Tvtime.
Основная масса тв-тюнеров используемых совместно с этой программой построена на базе чипов Philips saa713#, где # - цифры от 0 до 4. Такие тюнеры подключаются по PCI-шине и tvtime при помощи модуля ядра saa713# показывает нам картинку.
Все вроде бы просто, но у арча есть поговорка "не было печали, апдейтов накачали...". Так вот, после последнего обновления с tvtim'ом произошло что-то нехорошее (вернее не с ним, а с модулем saa713# или с ядром, или еще с чем-то, точно сказать не могу). В результате, при первом после загрузки компьютера включении tvtime он почти нормально запускается (если не считать непродолжительное шипение из колонок), а если его выключить и включить снова, то в окне tvtime вместо изображения появляется синий экран с такой надписью (в моем случае - saa7134):
Cannot open capture device /dev/video0
Которая лечится или перезагрузкой компьютера и последующим включением tvtime (что, конечно, неприемлемо), или перезагрузкой модуля saa7134. Второй вариант нам пригодится.
Перезагрузить модуль saa7134 значит выгрузить его и загрузить снова. Тут появилась проблема: модуль saa7134 зависит от модуля saa7134_alsa, а при попытке выгрузить saa7134_alsa терминал написал что он используется и не стал его выгружать, причем, чем он используется так и оставил загадкой. Тут опять два варианта: или выгружать модуль saa7134_alsa с ключем --force:
или создать в папке /etc/modprobe.d файл tuner.conf (ну или любое другое название на ваш вкус, лишь бы после точки было conf) с таким содержимым:
Поясню: этот файл говорит модулю saa7134 загружаться игнорируя звуковую карту тв-тюнера. То есть в alsamixer вы не досчитаетесь одной звуковой карты и, что в данном случае важнее, вообще не будет загружаться модуль saa7134_alsa, соответсвенно и выгружать его больше не нужно. Спешу успокоить что на воспроизведение и регулировку уровня звука в tvtime это не влияет.
Вот мы и подошли к самому главному - решению проблемы. Опять же через костыль. Если найду более изящное решение этой проблемы, добавлю в статью. Создаем текстовый файл, назовем его, например tvtime_hook, с таким содержимым:
rmmod saa7134
modprobe saa7134
sudo -u user tvtime
Вместо user пишем имя пользователя под которым вы входите в систему. Делаем файл исполняемым. Так как нам нужно запускать этот скрипт от суперпользователя для выполнения манипуляций с модулями добавляем в файл /etc/sudoers такую строчку:
Вместо user опять же пишем имя своего пользователя, ну и правильный путь до файла tvtime_hook указываем. Земетьте что ваш пользователь должен входить в группу wheel.
Ну вот в принципе и все. Теперь, правда, нужно запускать tvtime вот такой командой:
Но если прописать ее в .desktop файл Tvtime, то это не будет проблемой.
Кстати, еще одна приятная мелочь: благодаря опции alsa=0 в файле tuner.conf пропала извечная совместная проблема скайпа и tvtime - при любом звуковом оповещении скайпа пропадал звук в tvtime. Теперь звук в тв-тюнере не боится никакого скайпа.
Надеюсь тем, кто постоянно обновляет свою систему эта статья будет полезна. А может кто-нибудь поделится другим способом решения этой проблемы. В общем, жду комментариев.