понедельник, 1 февраля 2016 г.

Тонкий клиент HP t610 как домашний медиацентр

Написать свои мысли сподвигла данная статья на хабре. В ней на основе тонкого клиента T610 автор поднимает home сервер на Centos 7.

В моем случае стояла другая задача. После того, как при переноске был "случайно" выдран с мясом разъем антенны из старого телевизора, превратив его просто в большой настенный монитор - возникло желание не покупать ему новую материнскую плату, а собрать домашний медиацентр из подручных материалов.

Под рукой "внезапно" оказался тонкий клиент HP t610. ТК у меня был не t160 plus, как у автора статьи на хабре, а его "тощий" вариант - без райзера и возможности установить туда дополнительную видео или сетевую карту, зато вдвое меньшей толщины.


Что есть в наличии у t610:
  • Процессор AMD Dual-Core T56N 1.65 ГГц
  • Видеокарта Radeon HD 6320
  • Display Port и DVI
  • 2 USB3 и 4 USB2 порта
  • 2 PS/2 и 1 COM порт
  • Broadcom BCM57781 Gigabit Ethernet
  • WiFi+Bluetooth комбайн BCM943228HM8
  • 2 SATA разъема
  • 1 40-пиновый (ноутбучный) ATA
И самое главное - всё на пассивном охлаждении. То есть, идеально подходит для домашнего медиацентра - посторонние звуки издавать не будет, даже если будет оставаться включенным круглосуточно.


Планируемые действия:

  • Нарастить память до разумного предела
  • Установить SSD под операционную систему
  • Подключить второй HDD для медиатеки, настроив на нем энергосбережение, чтобы не гудел ночью
  • Подключить ТК к LAN и к телевизору
  • С помощью ИК приемника настроить взаимодействие с пультом ДУ

В первую очередь - разбираем ТК.

За что я уважаю HP - так за то, что отвертка практически не требуется, все на защелках. Память доступна с обратной стороны:


Стояло 2Гб DDR3. В документации верхний лимит по памяти не указан - у меня заработало с двумя планками по 4 Гб.

С другой стороны открывается вид на материнскую плату.


Вынимаем и выбрасываем "родную" SSD на жалкие 16 Гб (мало того, что она маленькая - она еще и медленная до ужаса). Вместо нее ставим 7+15 pin SATA кабель для подключения внешнего 3.5" HDD. 


А сверху ставим SSD, приклеивая его на двусторонний скотч (чтобы не отвалился). На плате все-равно никаких микросхем на этом месте не находится, так что коротить или мешать охлаждению он не будет:



Продолжаем колхозить - в боковой стенке выкусываем дырку и выводим SATA шлейф наружу:

ТК имеет небольшой размер и весит немного - поэтому лучше всего его закрепить на задней стенке телевизора. Для этого сверлим в ней два отверстия, и в штатные отверстия ТК закручиваем два болта:


Вот что получается в итоге:


Видео у меня подключено по D-SUB, а не по HDMI (через переходник Display Port -> HDMI), так как в последнем случае картинка оказывалась oversized. А так как из 15ой версии Catalyst Control Center AMD зачем-то решил убрать настройки размера изображения - быстро этот баг устранить не удалось. Кроме того, аудиовыход у меня распараллелен на ТВ + внешние наушники, чтобы иметь возможность смотреть телевизор когда семья спит, так что от HDMI толку особого нет. Качество картинки по D-SUB и так прекрасное.

А теперь коротко о программной части.

Для использования на медиацентре я выбрал Windows Server 2012 R2.
Почему Windows, а не одна из разновидностей Linux? Да просто потому, что я Windows админ - мне так привычнее. Почему сервер? Потому что в нем меньше мусора, чем в Windows 8.1 или 10, и подключение к нему по RDP не рвет консольную сессию (да, я знаю про RDP Wrapper). Почему не 2016? Вот будет релиз 2016 - тогда обязательно разверну.

Установка сервера проходит обычно - никаких танцев с бубном с драйверами не требуется.
Но есть нюанс - Windows Server принципиально не имеет Bluetooth стека. Для кого это критично - гуглим по "Convert your Windows Server 2012 r2 to a Workstation". Я же просто отключил BCM20702A0 в диспетчере устройств.

В целом рекомендации из подобных статей в основном бесполезны, за исключением двух ключей реестра:

;###### increase priority for Multimedia (Prevent Stuttering Sound) ######
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Multimedia\SystemProfile]
"SystemResponsiveness"=dword:00000014

;###### Performance for Programs ######
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\PriorityControl]
"Win32PrioritySeparation"=dword:00000026

Без них аудио будет "икать".

Второй нюанс - кривость рук драйверописателей из ATI/AMD. Последняя версия каталиста перестала поддерживать DXVA в Radeon HD 6320 (хотя сама видеокарта продолжает числиться в поддерживаемых). Кроме того, в ней появился баг, когда при заходе на RDP сессию - картинка на консольной сессии "замирает". Я поставил первую попавшуюся под руку старую, это оказалась AMD_Catalyst_15.5_Beta_64Bit_Win 8.1.exe и все заработало как надо. Судя по гуглу - работают версии вплоть до 15.6 beta включительно, в более новых уже начинаются проблемы.

Из ролей я добавил себе: IIS, Desktop Experience (это обязательно), DNS, всякую мелочевку вроде бэкапов и клиента телнет.

Свой DNS сервер используется для двух целей - обхода роскомнадзора (мой провайдер не умеет DPI, так что блокировка идет только на уровне DNS), и как примитивная баннерорезка и блокировка "нехороших" сайтов от микрософт. Блокировка делается путем создания файла stub.dns с дефолтным содержимым:

@                       IN  SOA home-nettop. hostmaster. (
                        1            ; serial number
                        900          ; refresh
                        600          ; retry
                        86400        ; expire
                        3600       ) ; default TTL

;  Zone NS records
@                       NS home-nettop.

Home-nettop, это имя моего хоста. Далее, "скармливаем" все требуемые для блокировки хосты командами вида:

dnscmd.exe home-nettop /zoneadd telemetry.microsoft.com.nsatc.net /primary /file stub.dns

и раздаем IP адрес нашего хоста клиентам в качестве DNS сервера.

Список рекламных сайтов я брал с http://someonewhocares.org/hosts, сайты микрософта - где-то в блоге у WZor.

Несмотря на относительно большой объем итоговой базы DNS - сервер стартует быстро и работает не нагружая процессор. Однако, консоль открывается минут 5 - поэтому администрировать его лучше с командной строки.

Так как на сервере 8 Гб RAM, а используется от них менее четверти - я решил отдать гигабайт под RAM Disk, перенеся туда временные файлы и прочий мусор. У AMD есть бесплатная программа, создающая RAM Disk из видеопамяти - а так как у нас выделенной видеопамяти нет, то в нашем случае она создает диск из основной.

В качестве медиацентра используется Kodi. Ранее, пару лет назад, я пользовался Windows Media Center, но так как микрософт отказался от его поддержки - пришлось искать альтернативы.

Для использования DXVA необходимо загрузить Kodi с поддержкой DirectX 11. Это либо кастомный билд версии 15.2 (более недоступный на сайте), либо 16-ую версию (и выше).

В качестве PVR используется IPTV Simple Client со "скормленным" ему плейлистом от провайдера. Ранее пользовался DVBLink, но после перехода на 16ый Kodi отказался - и встроенный клиент IPTV стал работать стабильно. У DVBLink есть плюс - это встроенная поддержка timeshift в IPTV. Можно ставить ТВ на паузу или перематывать телепрограмму назад в пределах уже просмотренного. И как бонус - есть возможность транслировать IPTV в интернет (при наличии "белого" IP адреса), но этим я так ни разу и не воспользовался, хотя и настроил.

Вот фотография того, что получилось в итоге:


Сверху с четырьмя лампами лежит "база" от ИК-наушников, правее нее выглядывает приемник от Windows Media Center Remote.
Кстати, чтобы не таскать две дистанционки (одна от телевизора, от которой используется только выключатель и громкость, и вторая от WMC) - купил китайский обучаемый ИК-пульт и настроил его как мне было удобно. А сам телевизор через режим настроек Hotel Mode заставил при включении сразу переключаться на вход ПК, отключив у него не работающую ТВ-часть.

При декодировании HD контента нагрузка на процессор редко когда превышает 50%, а в среднем, нагрузка держится на уровне 20-30%. То есть, ресурсов вполне достаточно для Home Server. Kodi является в том числе и DLNA сервером - так что отдает свою медиатеку телевизору в другой комнате или на ПК/планшеты. Ранее я поднимал на нем же Kerio в качестве прозрачного прокси - ресурсов для этого было вполне достаточно. А вот если поставить роль Hyper-V и поднять в ней хотя бы XP с одним CPU - уже начинает страдать производительность Kodi. Но говорят, это из-за несовместимости Hyper-V и DXVA.

К слову, если отключить DXVA в Kodi - процессор забивается под 100% на HD роликах. Когда-то я пробовал "поиграться" с аппаратным декодером BCM70015 - если в двух словах, то оно того не стоит. Драйвера давно не обновлялись, декодирование работает исключительно в режиме без наложения (то есть, Kodi не может рисовать свой интерфейс поверх декодированной картинки в акселерированном режиме), периодически система "падает", и если сравнить с DXVA - DXVA нагружает процессор на несколько процентов меньше.

Встроенную WiFi пока никак не использую. В качестве планов - использовать старый телефон с 3G/4G, "спрятать" его на подоконнике, где сигнал получше, и раздавать с него интернет через WiFi. WiFi ловить на ТК, и использовать ТК как шлюз, автоматически переключающийся на 4G телефона при недоступности проводного интернета. Естественно, IP адрес ТК при этом придется раздавать как default gateway для всех остальных домашних устройств. USB модем в моем случае использовать не удастся - в том углу, где висит телевизор, связь довольно плохая.

2 комментария:

  1. Добры вечер! Хотел уточнить, у меня при установке на данный клиент система (win7/8) не видит HDD, драйвера подобрать не могу. Как у вас прошла установка?

    ОтветитьУдалить
  2. в аппаратной части не рылся, отсюда и вопрос. На зверьке 12 вольт присутствуют? и блок питания тянет внешний 3.5 диск без проблем? разница будет только в том что я дебиан прикрутил по той же причине что и вы. правда на родные 16 га флешки. и еще 6 осталось. ставил только самбу. все остальное тянет в себе телек. после долгих раздумий дырку крутить буду со стороны запорной крышки.

    ОтветитьУдалить