четвер, 25 жовтня 2007 р.

Установка та настройка VDR на Ubuntu Gutsy

Скажу прямо - я ніколи не сподівався, що старий комп'ютер може відслужити таку службу. Припустимо, у Вас вдома завалявся старий комп, наприклад пентіум 2 або 3, 64М або 128М рам, процесор від 400 мегагерц, відеокарта від 4М рам, можливо ТВ-карта і Ви маєте СкайСтар 1, 2 або 3 з пультом або без, хард на 5-10 гіг, доступ до інтернету. Чому б це все не засунути в якийсь підходящий корпус, наприклад від старого відеомагнітофона і не перетворити його у повноцінний тюнер, а якщо ще й є сд або двд привід, то і у медіацентр? Все, що для цього потрібно - трохи мати досвід з компами, трохи попередніх знань з роботою в консолі в лінуксі і трохи удачі. В зв'язку з цим було створенo спочатку проект VDR - програмне забезпечення, яке допомагало управляти сат картами в лінуксі, а потім і на його базі за допомогою Дебіана-сарджа (3 версії дебіан лінукса) і цілий дистрибутив під назвою arVDR. Що воно робить? Робить практично ВСЕ! Не поступається нічим дрімбоксам, дозволяє записувати ТВ програми як на диск, так і на сд/двд, має купу плагінів, які просто інсталються в системі, перегляд закодованих програм, емулятори і т.п. Дивитися про це тут http://www.free-x.de/wiki/index.php/Features, тут http://www.free-x.de/wiki/index.php/VDR_vs_DreamBox і тут http://www.allrussian.info/thread.php?threadid=63084. Найважливіше, що не потрібно гнатися за новими тюнерами, вистарчить тільки робити апдейти системи, а залізо як було, так і лишається. Окрім того, отримуєте високоякісну картинку, як в найкращих Дрімах або Dcom-ах.

Я виходив з наступного: Dell OptiPlex GX1, специфікація така:

Microprocessor types Intel Pentium II microprocessor with MMX™ technology or Intel Pentium III microprocessor
Microprocessor speeds 266, 333, 350, 400, or 450 MHz (Pentium II);
450, 500, 550, or 600 MHz (Pentium III)
Internal cache KB (16-KB data cache, 16-KB instruction cache)
L2 cache memory 512-KB pipeline burst, 4-way set-associative, write-back SRAM
Audio Model Crystal Semiconductor
Audio Chip set CS4236

Video type integrated ATI Rage Pro (AGP 2X) graphics
Video memory 4 MB standard (upgradable to 8 MB) SGRAM

RAM 128 MB

Відеокарта не мала ТВ-виходу, тому я поїхав на базар і купив (пощастило!) RealMagic Hollywood Plus. Про те, що я купив взагалі суперову карту, я взнав лише вдома, коли переглядав інфу, що ж я все таки купив. Але просто не хотілося вертатися з порожніми руками з базару, а старих PCI відео-карт з ТВ-виходом я на цілому базарі не знайшов.
До цього всього ще була докуплена СкайСтар2 SAT-S карта. По цій карті я знайшов наступні важливі лінки:
The UnOfficial Sigma Designs Hollywood Plus FAQ
Вывод видео со SKYSTAR 1 через RealMagic Hollywood Plus на телевизор
Драйвера (Вінда)
Детальний опис карти з малюнками.

Уважне читання форуму http://www.allrussian.info/board.php?boardid=61 нарешті привели до того, що я зміг практично без особливих труднощів поставити VDR на цей комп і перетворити його в непоганий медіацентр. Ставив я його на Убунту, оскільки маю досить великий досвід з цією системою. Ставити образ arVDR я не хотів - він базований на старому debian-sarge, а мені хотілося щось нове, ну і мати поле для екпериментів.

Приступив я стандартно. Стягнув з нету netinstall образ, записав на компакт-диск, і з нього запустив інсталяцію системи. Комп був підключений до нету через кабель. Встановлював тільки базову систему і SSH сервер, без нічого лишнього, дав автоматом розбиття диску, інсталював GRUB, додав користувача, і по закінченню перевантажив. Залогінився як користувач, створив пароль для root:

$ sudo passwd

і далі працював вже від імені root:

$ su

Оскільки це мав бути тюнер з підключенням до інтернету, то я використав вже свій досвід з USB Wireless card, вписав статичну адресу в /etc/network/interfaces (це для WEP, жирним дані які потрібно виставляти):

auto wlan0
iface wlan0 inet static
wireless-essid Назва сітки
address 192.168.0.3
netmask 255.255.255.0
gateway 192.168.0.1
wireless-key Ключ

Після відключив нет-кабель, перезапустив сітку

$ /etc/init.d/network restart

і все чудесно піднялося. Тепер можна було відключати монітор, поставити цілий комп біля телевізора і попідключати все - вихід ТВ і аудіо з RealMagic Hollywood карти до телевізора у відповідні входи, шнур від сателітарної антени у відповідне гніздо RealMagic Hollywood карти. Комп'ютер-тюнер тепер можна контролювати за бопомогою SSH з іншого локального компа (перед тим запустивши xhost + для графіки):

$ xhost +
$ ssh root@192.168.0.3 -X

Тепер потрібно поставити само VDR. Я уважно прочитав Вікі про інсталяцію VDR на Убунту і оскільки принципово Ґутсі не відрізняється від Фейсті, то можна було слідувати поданим там вказівкам, враховуючи ще те, що я збирався компілювати VDR з джерельних файлів, а не використовувати ті, які є в стандартних репозиторіях Убунту.

Нижче подаю свої репозиторії (файл /etc/apt/sources.list)


# See http://help.ubuntu.com/community/UpgradeNotes for how to upgrade to
# newer versions of the distribution.

deb http://archive.ubuntu.com/ubuntu/ gutsy main restricted
deb-src http://archive.ubuntu.com/ubuntu/ gutsy main restricted

## Major bug fix updates produced after the final release of the
## distribution.
deb http://archive.ubuntu.com/ubuntu/ gutsy-updates main restricted multiverse
#deb-src http://archive.ubuntu.com/ubuntu/ gutsy-updates main restricted

## N.B. software from this repository is ENTIRELY UNSUPPORTED by the Ubuntu
## team, and may not be under a free licence. Please satisfy yourself as to
## your rights to use the software. Also, please note that software in
## universe WILL NOT receive any review or updates from the Ubuntu security
## team.
deb http://archive.ubuntu.com/ubuntu/ gutsy universe
#deb-src http://archive.ubuntu.com/ubuntu/ gutsy universe

## N.B. software from this repository is ENTIRELY UNSUPPORTED by the Ubuntu
## team, and may not be under a free licence. Please satisfy yourself as to
## your rights to use the software. Also, please note that software in
## multiverse WILL NOT receive any review or updates from the Ubuntu
## security team.
deb http://archive.ubuntu.com/ubuntu/ gutsy multiverse
#deb-src http://archive.ubuntu.com/ubuntu/ gutsy multiverse

## Uncomment the following two lines to add software from the 'backports'
## repository.
## N.B. software from this repository may not have been tested as
## extensively as that contained in the main release, although it includes
## newer versions of some applications which may provide useful features.
## Also, please note that software in backports WILL NOT receive any review
## or updates from the Ubuntu security team.
# deb http://archive.ubuntu.com/ubuntu/ gutsy-backports main restricted universe multiverse
# deb-src http://archive.ubuntu.com/ubuntu/ gutsy-backports main restricted universe multiverse

deb http://security.ubuntu.com/ubuntu/ gutsy-security main restricted
#deb-src http://security.ubuntu.com/ubuntu/ gutsy-security main restricted
deb http://security.ubuntu.com/ubuntu/ gutsy-security universe
#deb-src http://security.ubuntu.com/ubuntu/ gutsy-security universe
deb http://security.ubuntu.com/ubuntu/ gutsy-security multiverse
#deb-src http://security.ubuntu.com/ubuntu/ gutsy-security multiverse

## Medibuntu - Ubuntu 7.10 "gutsy gibbon"
## Please report any bug on https://bugs.launchpad.net/medibuntu/
deb http://packages.medibuntu.org/ gutsy free non-free
#deb-src http://packages.medibuntu.org/ gutsy free non-free

## VDR sources
deb-src http://e-tobi.net/vdr-experimental etch base addons vdr-multipatch



Після того послідовність дій така:

1. Оновити систему і заінсталювати потрібні пакети для інсталяції:

$ sudo apt-get update
$ sudo apt-get install dpkg-dev build-essential fakeroot

2. Зробити директорію, де будуть складатися джерельні файли:

$ cd ~
$ mkdir vdr-src
$ cd vdr-src

3. Заінсталювати джерельний код VDR:

$ apt-get source vdr

4. Отримати автоматично залежності:

$ sudo apt-get build-dep vdr

5. Переконатися чи є все потрібне для компілювання:

$ sudo apt-get install debhelper linux-headers-generic libjpeg62-dev dpatch
$ sudo apt-get install libcap-dev libncurses5-dev6.

6. Активувати потрібні поправки до джерельного коду. Для цього відкрити файл vdr-1.4.*/debian/patches/00list і відкоментувати потрібні правки. При цьому треба бути уважним, тому що правки можуть колідувати одна з одною. Мій файл виглядає наступним чином:

02_Makefile-CFGDIR
03_cmdsubmenu
04_newplugin
06_default_svdrp_port_0
09_sort_options
10_dd-record-option
11_sortrecordings
12_osdbase-maxitems
14_cap-memsize
15_dvbplayer
16_channels.conf.terr-fix
17_epg-conv-iso6937

81_Make_config
82_valgrind

# Patch collection (replaces enAIO).
# opt-20_liemikuutio

# The Jump patch allows automatic jumping over cutting marks.
# opt-24_jumpplay

# Patch needed for the subtitles and the ttxtsubs plugin.
opt-27_subtitles-ttxtsubs
opt-27-x_subtitles-ttxtsubs-volumebar-fix

# Patch needed for the analogtv plugin.
# opt-30-x_analogtv

# Makes VDR aware of the reelchannalscan plugin
opt-31-x_reelchannelscan

# Patch that shows if there is a valid setup value left or right with <>.
# opt-35_setup-show-valid

# Patch to handle recordings that should be cutted in a queue (-/+ autodelete).
# opt-36_CutterQueue
# opt-36_CutterQueue-AutoDelete

# Patch needed for the menuorg plugin.
# opt-37-x_menuorg

# Patch that suppresses double EPG entries.
opt-38_disableDoubleEpgEntrys

# Patch to disable normal epg update for specified channels.
opt-39_noepg

# Patch that adds some icons to timer, recording and channel list.
opt-40_wareagle-icons

# Patch to show an info, if it is possible to record an event in the timer-info.
opt-41-x_timer-info

# Patch to allow plugins to replace the VDR mainmenus
# opt-42-x_MainMenuHooks

# Shows remaining recording capacity in recordings menu.
# (Requires opt-41-x_timer-info !)
opt-43-x_recordshowfree

# Patch needed for the rotor plugin.
# opt-44_rotor

# Patch needed for the yaepg plugin.
opt-45_yaepg

# Patch to play on DVD archived VDR recordings.
opt-46_dvdarchive

# Estension to opt-46_dvdarchive to play VIDEO-DVD's as archived VDR recordings.
# opt-46_dmh-dvd-archive

# Some Debian specific defaults for opt-46_dmh-dvd-archive
#opt-46-x_dmh-dvd-archive-debian

# Patch for assigning special satellites to one dvb card.
# opt-47_sourcecaps

# Patch for the PIN plugin
# opt-48-x_pin

# Patch to share one sat connection for several cards.
# opt-49_sharelnb

# Patch required for the GraphTFT plugin
# opt-50_graphtft

# Patch required for the GraphTFT plugin >= 0.1
# opt-50_graphtft-0.1

# Modifies the start time of recordings to the first cutting mark
# (disabled by default - enable in VDR's recording setup)
# opt-51_cuttime

7. Скомпілювати пакети і створити дебіанські пакети:

$ cd ~/vdr-src/vdr-1.4.*
$ fakeroot debian/rules binary

Дебіанські пакети створяться в ~/vdr-src.

8. Інсталювати пакети:

$ cd ~/vdr-src
$ dpkg -i vdr_1.4*.deb vdr-dev_1.4*.deb
$ /etc/init.d/vdr stop
(Зупинити VDR, щоб заінсталювати плагіни для нього).


Таким чином пакет VDR заінстальований. Мені потрібні були ще драйвера для моєї Hollywood card.

$ cd ~/vdr-src
$ wget http://garr.dl.sourceforge.net/sourceforge/dxr3/em8300-0.16.3.tar.gz
(Брати з http://sourceforge.net/project/showfiles.php?group_id=5165)
$ tar -xvzf em8300-0.16.3.tar.gz
$ cd em8300-0.16.3
$ ./configure --prefix=/usr
$ make
$ make install

$ cd modules
$ make
$ make install

Драйвера інстальовані. Потрібно ще стягнути мікрокод для карти. Я скористався готовим скриптом:

$ cd ~/vdr-src
$ wget http://vdr.oasis.org.ua/files/firmware_update.sh
$ apt-get install unzip
$ sh firmware_update.sh

Після цієї процедури отримуються три файли з мікрокодом в /usr/lib/hotplug/firmware/ з назвами 2_41microcode0.bin, 2_41microcode1.bin і 2_41microcode2.bin. Треба поекспериментувати і визначити, який саме мікрокод найбільше підходить.

$ cp /lib/firmware/em8300.bin /lib/firmware/em8300.bin.orig
(збережемо про всяк випадок старий мікрокод, якщо він там вже був)
$ rm /lib/firmware/em8300.bin
$ ln -s /usr/lib/hotplug/firmware/2_41microcode0.bin /lib/firmware/em8300.bin
(лінк на перший файл мікрокоду)

Це ще не все. Потрібно тепер ще настроїти картку, тобто прописати опції для виклику модуля em8300. Для цього є утиліта dxr3config, яка робить автоматично.

$ cd ~/vdr-src
$ wget http://free.pages.at/wicky4vdr/download/dxr3config0-3-4.tgz
$ tar -xvzf dxr3config0-3-4.tgz
$ cp usr/sbin/dxr3config /usr/sbin/dxr3config
$ mkdir /usr/share/dxr3config
$ cp usr/share/dxr3config /usr/share/dxr3config/dxr3config.m2v

Запускаємо:

$ dxr3config

і на телевізорі дивимося що вийшло, пробуючи різні параметри. Мій файл конфігурації /etc/modprobe.d/em8300 виглядає так:

#configuration for adv717x bt865 em8300, generated by dxr3config 0.3.4
#chip-parameterset: 3
alias char-major-121 em8300
install em8300 /sbin/modprobe adv717x && /sbin/modprobe --ignore-install em8300
remove em8300 /sbin/modprobe -r --ignore-remove em8300 && /sbin/modprobe -r adv717x
options adv717x pixelport_16bit=0 pixelport_other_pal=1 output_mode=comp+psvideo
options em8300 dicom_fix=1 dicom_control=1 dicom_other_pal=1 audio_driver=osslike
#options em8300 activate_loopback=1 dicom_fix=1 dicom_control=1 dicom_other_pal=1 audio_driver=oss

Лишилося тепер заінсталювати плагіни для VDR. Повний список плагінів можна подивитися тут: http://www.e-tobi.net/repositories/repositories.html.

Плагін для субтитрів vdr-plugin-subtitles:

$ cd ~/vdr-src
$ apt-get source vdr-plugin-subtitles
$ sudo apt-get build-dep vdr-plugin-subtitles
$ cd vdr-plugin-subtitles-*
$ fakeroot debian/rules binary
$ cd ..
$ sudo dpkg -i vdr-plugin-subtitles_*.deb

Плагін для перегляду з використанням xine (без використання dxr3 карти,
декодування буде відбуватися на рівні софту ) vdr-plugin-xineliboutput

$ apt-get source vdr-plugin-xineliboutput
$ sudo apt-get build-dep vdr-plugin-xineliboutput
$ cd vdr-plugin-xineliboutput-*
$ fakeroot debian/rules binary
$ cd ..
$ sudo dpkg -i vdr-plugin-xineliboutput_*.deb libxine-xvdr_*.deb
$ sudo dpkg -i libxineliboutput-sxfe_*.deb xineliboutput-fxfe_*.deb
Подібний плагін як вище:
$ apt-get source vdr-plugin-softdevice
$ sudo apt-get build-dep vdr-plugin-softdevice
$ cd vdr-plugin-softdevice-*
$ fakeroot debian/rules binary
$ cd ..
$ sudo dpkg -i vdr-plugin-softdevice_*.deb

Мій основний плагін vdr-plugin-dxr3:

$ apt-get source vdr-plugin-dxr3
$ sudo apt-get build-dep vdr-plugin-dxr3
$ cd vdr-plugin-dxr3-*
$ fakeroot debian/rules binary
$ cd ..
$ sudo dpkg -i vdr-plugin-dxr3_*.deb

і т.д. з решта потрібними плагінами.

Для перегляду на екрані монітору потрібно зробити ще деякі речі. Із-за якогось багу в Убунту не створюється фреймбуфера /dev/fb0. Для цього потрібно зробити наступне. В файлі /etc/modprobe.d/blacklist-framebuffer повідкоментовувати всі модулі (або модулі які будуть використовуватися). В файлі /etc/modules треба прописати відповідний модуль фреймбуфера. В мому випадку з відеокартою ATI Technologies Inc 3D Rage Pro AGP і звуком на базі чіпсету cs4236 файл виглядає таким чином:

# /etc/modules: kernel modules to load at boot time.
#
# This file contains the names of kernel modules that should be loaded
# at boot time, one per line. Lines beginning with "#" are ignored.

loop
lp
fuse
#radeonfb
atyfb
snd-cs4236

atyfb - власне модуль для моєї відеокарти, snd-cs4236 - модуль для звуку. В файлі /etc/initramfs-tools/modules прописати модуль fbcon i про всяк випадок vesafb (можливо і не треба, я експериментів не робив). Так виглядає мій файл /etc/initramfs-tools/modules:

# List of modules that you want to include in your initramfs.
#
# Syntax: module_name [args ...]
#
# You must run update-initramfs(8) to effect this change.
#
# Examples:
#
# raid1
# sd_mod
fbcon
vesafb
#radeonfb
#atyfb

Щоб фреймбуфер ініціалізувався, потрібно прописати в /boot/grub/menu.lst в кінці стрічки з
kernel таке : video=atyfb:mode:800x600-32@60 (це для моєї картки!!!). В загальному вистарчить вказати vga=788 або vga=791 (в залежності від монітору). Тепер треба, щоб модулі завантажувалися разом з ядром:

$ update-initramfs -u -k all -v
$ reboot

Комп'ютер перезавантажиться. Треба знову залогінитися і перевірити чи існує /dev/fb0:
$ ls /dev/fb0
Якщо ж нема, то значить щось не так.
Підредактуємо тепер файл конфігурації плагінів VDR /etc/vdr/plugins/order.conf. В ньому вписуємо плагіни, які ми хочемо щоб викликалися або ж не викликалися. Якщо перший прописаний плагін вказаний просто, без знаку "-", то він викличеться першим і далі модулі які прописані далі, потім ті плагіни які VDR сам пошукає в директорії /usr/lib/vdr/plugins. Якщо ж переж назвою плагіна стоятиме "-", то він взагалі не викличеться. Наприклад, якщо ви запускаєте VDR з dxr3, то плагіни як softdevice i xineliboutput треба закоментувати, поставивши перед ними "-":

dxr3
-sofdevice
-xineliboutput

Перевіримо чи все в порядку:
$ lsmod | grep fb
Має дати завантажені модулі фреймбуфера.
$ lsmod | grep em8300
Має показати чи авантажений модуль em8300,
$ cat /proc/em8300/*
Має дати щось таке:

----- Driver Info -----
em8300 module version 0.16.3-rc4
Card revision 1
Chip revision 2
Video encoder: ADV7175 at address 0x6a on EM8300 I2C bus 1
EEPROM data:
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
73a95aa4f4fb8f2a6b647199d3ffd4d700000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000055
ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
EEPROM checksum: 88d608b3599fabd0cecc5a0b504670c4
Memory mapped at address range 0xc8c80000->0xc8d80000 (FIFOs using MTRR)
Microcode version 0x2d loaded
Display buffer resolution: 720x576
Dicom set to TV-out
Using PAL
Aspect is 4:3
Analog audio output

Можливо там не буде стрічки Microcode version 0x2d loaded. Мікрокод викликається, коли запускається VDR з плагіном dxr3 за допомогою em8300setup автоматично. Тепер можна запускати VDR (наприклад, прописавши перед тим плагін dxr3 і закоментувавши sofdevice i xineliboutput):

$ /etc/init.d/vdr restart

На екрані має появитися меню, яке запрошує Вас прописати клавішам клавіатури певні значення, які потрібні для просування по меню VDR.

Аналогічно, можна викликати інші плагіни, наприклад softdevice. Для цього потрібно настроїти softdevice для виводу на монітор, прописавши в /etc/vdr/plugins/plugin.softdevice.conf стрічку -vo fb: , і рестартонути VDR так як вище. Зображення має появитися на моніторі (так як на фотографії).

6 коментарів:

Вадек сказав...

Непогана стаття, але бiльш цiкавим е створення VDR iз плагiном vdr-sc в Gentoo. Чому Gentoo? Вона легка, ii конфiгурити. До того ж, в portage е майше всi плагiни до VDR. Але, нажаль, немае vdr-sc.

Yarema сказав...

Ну само собою, що VDR з плагіном sofcam буде цікавий всім :-) Причому незалежно на якій системі. В мене він працює давно, але я ще не описував його інсталяцію. На рахунок Gentoo, то про смаки не сперечаються, мені на разі більше Убунту імпонує.

Вадек сказав...

З тобою нiхто не сперечаеться, не фантазуй ;-) Якщо немае знань - так й кажи, я буду шукати вiдповiдь в iншому мiсцi. Бувай.

Yarema сказав...

Я опишу інсталяцію плагіна, як буду мати час, зараз я дійсно завалений роботою.

Анонім сказав...

А можна використовувати VDR для роботи з аналоговим ТВ-тюнером? Чи робота можлива тільки з супутниковими??

Yarema сказав...

Звичайно що можна! ВДР працює з усіма видами карт: dvb-t (tv), dvb-s (sat), dvb-s2 (sat hd).

Google Analytics