7 мар. 2011 г.

HTPC своими руками

Как то стукнуло в голову собрать себе HTPC для подключения к телевизору, в задачи которого входило б только отображение мультимедии и собственно скачивание данной мультимедии.Т.к. предполагается режим работы данной системы в аптайме 99,9%, то необходимо было найти комплектующие с низким энергопотреблением и как можно более тихой.

Выбор процессора сошелся на Intel Atom d500 серии - макс потребление - 13 Вт.
При выборе видеокарты изначально выбор пал на чипсет nvidia GT410/GT420, но т.к. вся ситема планировалась быть минимальных размеров и как можно менее шумной, то видеокарта необходима была быть низкопрофильной и с пассивным охлаждением, то оптимальным вариантом стала Asus Bravo 220.
Жесткий диск планировался быть большим, но после прочтения форумов понял, что почти все винты размером более 1 Тб сыпятся в течении первых 3-х месяцев, что очень огорчает. Как результат - выбор пал на Samsung EcoGreen F3 на 1 Тб.
Посмотрев на "разнообразие" корпусов в низкой/средней ценовой категории, ничего не оставалось, кроме как выбирать между двумя NaviPower этим и этим.
Исходя из размеров корпуса и невозможностью вставить видеокарту, пришлось искать материскую плату со встроенной графикой и выбор пал на ASUS AT5IONT-I . В результате получилась следующая конфигурация:
Материнская плата : ASUS AT5IONT-I (с Intel Atom D525 (проц) и Nvidia Ion next-generation(видео) на борту)
Винчестер :  Samsung EcoGreen F3 1 Тб
Память : 2 х 1 Гб Kingston  KVR1066D3S7/1G
Корпус :  NaviPower CFI-A6719
Пульт ДУ:  Microsoft Remote for MCE 1039
Набор кабелей : Defender DHT-01

После сборки внутренний кулер корпуса показал себя не с лучшей стороны по шумовым характеристикам и был заменен на Scythe Mini Kaze SY124020L c макс уровнем шума в 19 Дб (планировалось заменить на SY124010L с макс уровнем шума в 14 Дб но оного не нашлось в продаже).
Управление собранным HTPC было доверено Opensuse 11.3 x64.  Установка произошла стандартным путем и выбрана среда рабочего стола LXDE. Сразу после установки обновил систему при помощи
# zypper up -r openSUSE-11.3-Update
и добавил репозиторий packman.
Самый простой способ запустить систему - установить lirc, xbmc, nvidia-driver, transmission из репозиториев с разрешением всех зависимостей(необходимо добавить репозиторий nvidia), но в данном случае все стандартно и работает из коробки, что скучно и не интересно. Для оптимизации программного обеспечения и незабываемого время провождения выбран был тяжелый и тернистый путь по настройке.
Для оных манипуляций доставил нужные пакеты:

# zypper in kernel-devel kernel make cmake automake gcc
# zypper in -t pattern devel_kernel
# zypper in -t pattern devel_qt4
# zypper in yasm yasm-devel nasm
# zypper in libpulse-devel
# zypper in libevent-devel lua lua-devel
# zypper up -r openSUSE-11.3-Update

Далее выкинул из ядра все лишнее и пересобрал под свои нужды. Мой .config. Выставил в настройках загрузчика ядро по умолчанию на только что собранное. После ребута - загрузилось ядро, но Х сервер не стартанул по причине отсутствия драйвера Nvidia. Скачиваем последние драйвера отсюда. и устанавливаем
# sh NVIDIA-Linux-x86-260.19.36.run -q
Подробнее про процесс установки можно посмотреть здесь.
После перезагрузки все стартует как надо.

Качаем с lirc.org последнию версию lirc(0.8.7) распаковываем и запускаем
lirc-0.8.7> setup.sh
Выбираем driver configuration --> USB devices ->  Windows Media Center Transceivers/Remotes (all)  ->  Save configuration & run configure.
lirc-0.8.7> make && sudo make install

Далее при помощи гугла находим необходимые пакеты и собираем их( ниже приведён порядок сборки пакетов и их версии( т.к. иногда различные версии могут не собраться ))

a52dec-0.7.4> ./bootstrap && ./configure CFLAGS="-march=atom" && make && sudo make install
faad2-2.7> ./configure CFLAGS="-march=atom" && make && sudo make install
fribidi-0.10.9> ./bootstrap && ./configure CFLAGS="-march=atom" && make && sudo make install
xvidcore-1.3.0-rc1> cd /build/generic && ./bootstrap && ./configure CFLAGS="-march=atom" && make && sudo make install
mp4v2-1.9.1> ./bootstrap && ./configure CFLAGS="-march=atom" && make && sudo make install
faac-1.28> ./configure CFLAGS="-march=atom" --without-mp4v2 && make && sudo make install
x264> ./configure --extra-cflags="-march=atom" --enable-pic && make && sudo make install
lame-3.98.3> ./configure CFLAGS="-march=atom" && make && sudo make install
libogg-1.2.2> ./configure CFLAGS="-march=atom" && make && sudo make install
speex-1.2rc1> ./configure CFLAGS="-march=atom" && make && sudo make install
flac-1.2.1> ./configure --disable-xmms-plugin CFLAGS="-march=atom" --with-gnu-ld --disable-cpplibs && make && sudo make install "#include "
libtheora-1.1.1> ./configure CFLAGS="-march=atom" && make && sudo make install
libvorbis-1.3.2> ./configure CFLAGS="-march=atom" && make && sudo make install
ffmpeg-0.6.1> ./configure --enable-gpl --enable-nonfree --enable-pthreads --enable-libfaac --enable-libfaad --enable-libmp3lame --enable-libxvid --enable-libx264 --enable-x11grab --enable-postproc --enable-shared --enable-libtheora --enable-libvorbis --cpu=host --arch=x86_64 && make && sudo make install


В процессе установки порадовал пакет fribidi, единственный который предупредил при установке через sudo:

We trust you have received the usual lecture from the local System
Administrator. It usually boils down to these three things:

#1) Respect the privacy of others.
#2) Think before you type.
#3) With great power comes great responsibility.

root's password:

При конфигурации ffmpeg  пишет что ARCH=x86, несмотря на то, что явно указано x86_64. Как оказалось - это нормальное явление (источник).
Ставим согласно иснтрукции projectM для красивой визуализации:

#zypper in libglue libglue-devel
libvisual-0.4.0> ./configure CFLAGS="-march=atom" && make && sudo make install
glew-1.5.8> make && sudo make install
ftgl-2.1.3~rc5> ./configure CFLAGS="-march=atom" && make && sudo make install
SDL-1.2.14> ./configure CFLAGS="-march=atom" && make && sudo make install
projectM-complete-2.0.1-Source: cd ./src && cmake CFLAGS="-march=atom" . && make &&sudo make install

Для установки xbmc устанавливаем необходимые пакеты(источник):

# zypper in flac flac-devel boost boost-devel libmad libmad-devel libsamplerate-devel libass-devel libmysqlclient-devel libcurl-devel libtre-devel python-devel python-sqlite2 gcc-fortran hal-devel libavahi-devel jpegint-devel audiofile-devel libbz2-devellibexpat-devel libjasper-devel libmikmod-devel libmms-devel lzo-devel pcre-devel libcdio-devel libsmbclient-devel libva-devel libva nvidia-texture-tools libwavpack-devel libmpeg2-devel libmicrohttpd-devel libmodplug-devel MesaGLw MesaGLw-devel xmms2-devel libao-devel libSDL-devel libSDL_image-devel libSDL_mixer-devel

Как завершение - ставим xbmc:

xbmc-10.0> ./bootstrap && ./configure --enable-external-libraries --disable-webserver --with-arch=x86_64 CFLAGS="-march=atom" --with-cpu=host && make -j2 && sudo make install

Для корректной работы пульта ДУ необходимо запустить утилиту irw и посмотреть какие имена назначены кнопкам пульта , после - берем файл  /usr/local/share/xbmc/system/Lircmap.xml копируем его в /home/user/.xbmc/userdata, ищем там секцию со именем своего пульта(), правим в соответствии с названиями кнопок, удаляем лишние секции.
Т.к. в системе не установлен DVD-привод, то необходимо примонтировать любой iso образ, иначе xbmc не запуститься и будет выгрызать 100% процессора
Для загрузки торрентов качаем и ставим transmission:

libevent-2.0.10-stable> ./configure CFLAGS="-march=atom" && make && sudo make install
intltool-0.40.6> ./configure CFLAGS="-march=atom" && make && sudo make install
transmission-2.21> ./configure CFLAGS="-march=atom" --enable-daemon --enable-lightweight && make && sudo make install

Запускаем transmission, в результате чего создается папка с настройками в /home/user/.config/transmission/. Под свои нужды правим  settings.json согласно инструкциям
Что б поставить transmission в демоны скачаиваем transmission-daemon в /etc/init.d/ , изменяем пользователя и группу от которых будет запускаться демон(USERNAME, GROUPNAME),
добавляем в запуск:
# chkconfig --add transmission-daemon
Для корректной работы необходим файл настроек в /etc/sysconfig/transmission-daemon . Правим в оном файле TRANSMISSION_ARGS="-g /home/user/.config/transmission".
После запуска демона transmission к нему можно подключиться через браузер или при помощи удаленного клиента 


Для автостарта xbmc прописываем в начале /etc/inittab
x:5:respawn:/bin/su user -l -c "/bin/bash --login -c startx >/dev/null 2>&1"
и комментируем все строки, начинающиеся с x:5:
ищем строчку id:x:initdefault , где x - число, и меняем на id:5:initdefault.
Копируем файл /home/user/.xinitrc.template в /home/user/.xinitrc , и меняем
exec $WINDOWMANAGER
на
exec /usr/bin/ck-launch-session /usr/bin/dbus-launch --exit-with-session /usr/local/bin/xbmc --standalone -f

После перезагрузки - все стартует как надо и можно радоваться своему HTPC
Вместо заключения:
интересный факт - система видит 4 ядра(вместо 2-х положенных)
cat /proc/cpuinfo

processor : 0


vendor_id : GenuineIntel
cpu family : 6
model : 28
model name : Intel(R) Atom(TM) CPU D525 @ 1.80GHz
stepping : 10
cpu MHz : 1799.998
cache size : 512 KB
physical id : 0
siblings : 4
core id : 0
cpu cores : 2
apicid : 0
initial apicid : 0
fpu : yes
fpu_exception : yes
cpuid level : 10
wp : yes
flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx lm constant_tsc arch_perfmon pebs bts rep_good aperfmperf pni dtes64 monitor ds_cpl tm2 ssse3 cx16 xtpr pdcm movbe lahf_lm
bogomips : 3601.99
clflush size : 64
cache_alignment : 64
address sizes : 36 bits physical, 48 bits virtual
power management:

processor : 1
vendor_id : GenuineIntel
cpu family : 6
model : 28
model name : Intel(R) Atom(TM) CPU D525 @ 1.80GHz
stepping : 10
cpu MHz : 1799.998
cache size : 512 KB
physical id : 0
siblings : 4
core id : 1
cpu cores : 2
apicid : 2
initial apicid : 2
fpu : yes
fpu_exception : yes
cpuid level : 10
wp : yes
flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx lm constant_tsc arch_perfmon pebs bts rep_good aperfmperf pni dtes64 monitor ds_cpl tm2 ssse3 cx16 xtpr pdcm movbe lahf_lm
bogomips : 3454.22
clflush size : 64
cache_alignment : 64
address sizes : 36 bits physical, 48 bits virtual
power management:

processor : 2
vendor_id : GenuineIntel
cpu family : 6
model : 28
model name : Intel(R) Atom(TM) CPU D525 @ 1.80GHz
stepping : 10
cpu MHz : 1799.998
cache size : 512 KB
physical id : 0
siblings : 4
core id : 0
cpu cores : 2
apicid : 1
initial apicid : 1
fpu : yes
fpu_exception : yes
cpuid level : 10
wp : yes
flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx lm constant_tsc arch_perfmon pebs bts rep_good aperfmperf pni dtes64 monitor ds_cpl tm2 ssse3 cx16 xtpr pdcm movbe lahf_lm
bogomips : 3601.96
clflush size : 64
cache_alignment : 64
address sizes : 36 bits physical, 48 bits virtual
power management:

processor : 3
vendor_id : GenuineIntel
cpu family : 6
model : 28
model name : Intel(R) Atom(TM) CPU D525 @ 1.80GHz
stepping : 10
cpu MHz : 1799.998
cache size : 512 KB
physical id : 0
siblings : 4
core id : 1
cpu cores : 2
apicid : 3
initial apicid : 3
fpu : yes
fpu_exception : yes
cpuid level : 10
wp : yes
flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx lm constant_tsc arch_perfmon pebs bts rep_good aperfmperf pni dtes64 monitor ds_cpl tm2 ssse3 cx16 xtpr pdcm movbe lahf_lm
bogomips : 3694.71
clflush size : 64
cache_alignment : 64
address sizes : 36 bits physical, 48 bits virtual
power management:

Греется зверь до 60 градусов, не смотря на то, что стоит дополнительный кулер, БП,который тоже вытягивает воздух, множество отверстий для вентиляции.(грешит в последнее время ASUS температурным режимом своих мат. плат)

Средний процент загрузки процессора при просмотре видео различного качества(от SD до HD) не превышает 5 %.

Все таки шумноват оказался корпус из-за блока питания.

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