Facebook Twitter
Linkedin LJ
Git Instagram
IPv6
2 posts tagged

железо

Как я делал телевизор на кухне из Samsung’a ue40c6510uw, WD TV Live и 802.11n

Проект

Я планировал пойти по легкому и универсальному пути: панель + компьютер. Преимущества очевидны: гибкость и всеядность компьютера как плеера + возможность пользоваться им для других целей. Недостатки тоже есть: обилие не уместных проводов, наличие клавиатуры и мышки, нетривиальность подключения “телевизионного” пульта ДУ, невозможность совершенно бесшумного решения, цена.

Кандидатом выходил Eee Box (или аналогичный Acer) на nVidia ION, но от него пришлось отказаться по совершенно неожиданной причине: предложений его продать не было. Плюс пришлось бы решать что-то для замены интерфейса 802.11g на n. Идея поставить mac mini была признана упаднической, так как его цена слишком высокая. На помощь пришли производители телевизора, которые вроде как встроили все необходимое прямо в него.

Телевизор

Посмотрев на то, что предлагают сегодня разные производители, я решил, что телевизор должен поддерживать 1080р, быть с LED-подсветкой и 100Гц частотой. LED считаю необходимым качеством, если телевизор висит на стене, иначе он сильно из нее выделяется, это не красиво. Был выбран Samsung 6й серии 2010 модельного года, привезен домой и повешен на стену. Встроенный плеер прекрасно открывает с накопителя любой файл (народ говорит, что не такой уж он всеядный, но я не нашел среди своих файлов того, что он не ест), позволяет выбирать звуковую дорожку. Отлично, подумал я, а теперь давайте устроим все то же самое, но по сети. И тут начались проблемы.

Медиасерверы

Я никогда не был поклонником велосипедостроения ради упрощения жизни “обычным пользователям”, я считаю такой подход глубоко порочным. В первую очередь потому, что никто не занимается вопросом “что нужно обычному пользователю” кроме пары компаний, а остальные лепят это так как увидел программист глядя на ТЗ, которе сделал маркетолог глядя в исследование рынка, которое сделали инопланетяне. В телевизоре Samsung у них получилось так, что плеер может ходить в сеть только по протоколу DLNA, а по CIFS или NFS не может.

В чем проблема сходить в сеть и взять там видеофайл? Пользователю надо ввести пароль! А еще ему, возможно, понадобится информация об именах ресурсов и путях в них. Плюс неплохо было бы не показывать медиаплееру файлы, которых он не поймет, можно логически отделить музло от киношек и предусмотреть возможность перекодировать видео-аудио, если сеть не поспевает или клиент не понимает формат. Отличные идеи, которые реализовали в стандарте DLNA (uPnP самсунгом не поддерживается, по этому ничего не могу сказать об этом типе серверов, но предполагаю, что проблемы те же и они тоже не нужны).

Первым мне попался Twonky Media Sever, который уже работал на моем файловом сервере WD Share Space. Некоторые файлы телевизор проигрывал без проблем, некоторые не воспринимал. MKV не воспринимал все. Так как файлсервер маломощный, то опция transcode была не доступна, переустановил Twonky на большой компьютер. Результат ровно такой же, транскодинг не помог.

Далее был Elgato eyeconnect с тем же результатом: часть файлов проигрывсется, часть нет.
Далее выясниласть глобальная засада на уровне протокола DLNA: невзможность выбора звуковой дорожки. Решение было в виде PS3Mediaserver, который виртуально размножал файл на несколько (по одному на дорожку) и умел транскодировать фильмы в нужном для телевизора формате. Очень круто, но есть 1 проблема: сколько я ни бился и не читал форумы, сколько бы я не пробовал настроек, телевизор файлы не воспринимал.

По инерции попробовал Mediatomb с таким же результатом.

Стало ясно, что без внешнего плеера никуда.

Плеер

Свой выбор я остановил на WD TV Live. Во-перывх, он умеет все, что мне нужно. Во-вторых, в отличие от того же Попкорна, он не стоит как крыло Боинга. В третьих, WiFi-донгл с поддержкой n, который у меня был, подходит к нему без проблем (Trendnet TEW664UB, выбран, потому что подходил к телевизору, так как Samsung не поставляет собственные WiFi-донглы в Россию, а с Амазона он приедет еще не скоро). В четвертых, WD TV маленький и поддерживает HDMI, что позволяет скрыть его с глаз долой на холодильник, а к телевизору пойдет всего 1 провод.
Плеер решил все проблемы совместимости, но вылезли еще 2 проблемы:

  • VOB’ы по сети заикаются. Это признанная проблема прошивки, которую должны были решить в текущей прошивке (и так написано в релизноте), но не решили.
  • остальные фильмы тоже инода заикаются.

Вторая проблема оказалась немного более сложной. Дело в том, что роутер у меня Asus WL-500W с прошивкой “от последователей Олега” и передача данных по WiFi – не самая сильная его сторона. Я решил выделить отдельный WiFi-сегмент, который будет обслуживать только телевизор при помощи Apple Airport Express (он гарантированно поддерживает n). Результат вышел почти удовлетворительный, почти все проблемы прошли когда я сделал 2 вещи:

  • У WiFi есть такой неочевидный параметр Multicast Rate. Подсказка в настройках по нему невнятная (мол, данный параметр определяет Multicast Rate, выбирайте по умолчанию), но на самом деле он очень важен. Это минимальная пропускная способность, которая выделяется на клиента. Чем больше величина, тем меньше радиус покрытия, тем меньше возможное число клиентов, но и тем большая стабильность скорости у каждого клиента. По умолчанию там настройка как для интернет-кафе, 2 мегабита.
  • В smb.conf файлового сервера надо было прописать socket options = TCP_NODELAY SO_RCVBUF=65536 SO_SNDBUF=65536, который говорит серверу, что у нас быстрая сеть и нам нужны минимальные задержки.

Почти все, но не все, потому что WiFi работает медленно.

Как заставить работать WiFi 802.11n быстрее, чем 802.11g и добиться от него работы эффективнее, чем 22 Мб/c? Очень просто: заменить его на ethernet.

Почему так получается, ведь на коробке с оборудованием нарисована цифра 300 мегабит в секунду? Потому, что 802.11n для работы на скоростях выше, чем g должен использовать несколько каналов, до 2/3 всего диапазона. В практическом плане это означает, что в изолированной комнате, где никто больше не использует WiFi и оборудование на его частотах, скорость для одного клиента будет близка к указанной в рекламе. В реальности, если выполняется хотя бы 1 пункт из списка:

  • есть клиенты, не поддерживающие n
  • много клиентов (по отзываем “много” – это больше 1го)
  • есть еще сегменты, которые сидят на вашем канале (в многоквартирном доме они точно есть)
  • есть соседи с не подконтрольным вам WiFi (точки доступа которых стремятся захватить несколько каналов)
  • все проваливается в g и максимально, что удается выжать – это 22 мегабита. Даже, если приемник и передатчик находятся в прямой видимости. К списку можно еще добавить пункт “производитель приемника и передатчика должен совпадать”, так как n долго не ратифицировался, а draft-n клепать никто не стеснялся, понимая стандарт по-своему.

Зачем это все и почему 22 Мб/с мало? Вообще говоря, 22 мегабита в секунду – это довольно много. Достаточно, чтобы смотреть веб, онлайновые ролики, слушать музыку и играть в сетевые игры. Даже для видео HD-качества этого почти достаточно, фильм в 720р (да и 1080р) сжатый x264 будет иметь средний битрейт около 5 мегабит. Но в том-то и дело, что средний, в динамической сцене может вырасти до 25 и больше, произойдет затык, который может быть плохо обработан плеером. Например, WDTV после затыка теряет синхронизацию видеопотока по времени (видео играется то быстрее то медленнее, а звука нет). Приходится жать на паузу, ждать, пока все вернется на место и только потом смотреть дальше. Когда так смотришь фильм, успеваешь выучить все места, где изображение резко меняется, а большинство спецэффектов можно вообще не увидеть, придется их проматывать.

Такие дела.

802.11n? PLC!

Вечером попробовал заменить одну технологию другой, так как неожиданно мне предложили 2 Trendnet TPL-303e (заявляют до 200Мбит/c, у меня цепляются друг за друга на ~100), за что ему огромное человеческое спасибо. По простому, это такие штуки, которые позволяют делать из линий передачи электричества в квартире делать большой управляемый свитч на столько портов, сколько есть этих девайсов (у меня 2). Замеров не делал, только тесты на просмотр фильмов, потом может отпишусь подробнее.

  • заметно стабильнее WiFi в плане неожиданного падения скорости.
  • заметно быстрее WiFi: из 3х моих тестовых фрагментов остались тормозящими только титры “Ситы” в 1080р, где такие цветные фейрверки (которые судя по всему совсем не жмутся) и то, теперь плеер нормально обрабатывает эту ситуацию, не сваливается в рассинхронизацию.
  • подвержен влиянию помех. В той же розетке сидит холодильник, когда он включается, скорость несколько падает.
  • утилита конфигурирования написана на .Net 1.1. Даже не буду комментировать как она работает. Благо, задача разбиения на VLANы не стоит.

Заключение

По какой-то тайной причине производители, которые делают просто отличное железо (Samsung, WD) по прежнему выпускают очень странные прошивки, а написанное в рекламном буклете может не соответствовать реальности. WiFi же годен для чтения почты и просмотра SD-контента.

Итого: задача выполнена на 99%, этот 1%, конечно, раздражает, но стену ковырять и плинтус открывать пока не буду. В принципе, если поставить htpc с VLC вместо wdtv и выкрутить у VLC префетч, то будет все совсем гладко.

PS
Комментарий жены: “и это все ради того, чтобы не носить флешку?”.

2015   IT   linux   железо

Time Capsule своими руками за 2 часа и 5000р

Задача

У меня есть macbook, старенький по нынешним временам, но любимый. С ростом объемов баз Aperture и iTunes проблема резервного копирования встала довольно остро, для чего был в свое время приобретен WD mybook на 500 Гигабайт и Hitachi с USB-коробкой на 400. Хитачи использовался как диск с данными, а WD для резервного копирования Time Machine, подключалось же все по USB. Данная схема меня не устраивала обилием проводов и привязкой к столу: отключаясь от USB я терял связь с накопителями, пойти на кухню с ноутбуком и музыкой я не мог. Я решил сделать файловый сервер, который бы раздавал нужные мне файлы по сети, скажем через WiFi. Здесь обнаружились некоторые проблемы:

• если я буду раздавать файлы по NFS или CIFS, то сами носители мне придется как-то конвертировать из HFS+ в ext3. На сколько мне известно, единственный способ, это стереть и разметить заново, что с 250Gb нужных данных как минимум муторно.
• если я буду раздавать файлы по NFS или CIFS, то TimeMachine будет игнорировать эти диски и как объекты для резервного копирования, и как ресурсы для резервного копирования.
• Spotlight не будет правильно работать с CIFS.

Конечно, я могу реализовать Time Machine своими руками на bash’е, cron’e и rsync’е, но знание решения этой задачи делает ее неинтересной. Кроме того, Time Machine просто работает (tm) и тесно интегрирована с различными программами Apple. Удобная она. Решение мне подсказали коллеги, надо использовать iSCSI, который работает на уровне устройства и отдает файл или дисковый массив с сервера (так назваемый target) на клиент (initiator) как блочное устройство. Для клиента такой диск ничем не отличается от локально подключенного SCSI-устройства, что решает мои проблемы.

Специальные требования

В целях борьбы с гаджетоманией и косньюмеризмом бюджет был определен в 5000р максимум без учета стоимости накопителей, что дешевле Time Capsule в несколько раз. Решение не должно иметь ни одного вентилятора, а желательно чтобы оно не имело движщихся частей вообще.

Аппаратная часть

Я знал, что один мой коллега когда-то делал беспроводную точку доступа, совмещенную с файловым сервером своими руками, но что-то у него не заладилось и компьютер отправился на шкаф. В результате за символические деньги мне досталась старая безвентиляторная VIA Epia c процессором VIA Samuel-2 в хорошем корпусе и 128 мегабайт оперативной памяти к ней. Конечно, следовало бы купить Intel D301GLY, цена которой в Москве 1500р, Mini ITX корпус (еще 1500-2000р) и память DDR II (еще около 1000р). Оставшиеся деньги можно вложить в карточку WiFi и flash, с которой будет загружаться операционная система. Я просто взял флешку, которой не часто пользовался, а WiFi у меня раздает роутер Asus WL-500W. Если роутера нет, то можно использовать свободный PCI-слот для сетевой карты с несколькими портами, а WiFi повесить на USB или использовать Apple Airport Express, что вплотную приблизит нас к формфактору Time Capsule.

Замечу, что даже с учетом роутера, даже более дорогого гигабитного LinkSys и жесткого диска, вся система получается дешевле оригинального Time Capsul и функциональнее ее, хотя и больше по размеру.

Можно также в качестве платформы использовать Ausus EEEPC или просто старый ноутбук.

Программная часть

В качестве операционной системы был использован Debian Etch в минимальной конфигурации и build essential для сборки сервера. Для Linux есть реализация iSCSI-target, то есть сервера,http://iscsitarget.sourceforge.net/. С раздела downloads требуется скачать архив, так как готовой сборки нет, распаковать его, выполнить make && make install. Все проходит без ошибок, собственно, сервер вполне готов к работе.

Конфигурационный файл iSCSI-target находится в /etc/ietd.conf. Единственные строчки, играющие принципиальное значение на этапе тестирования нашей системы, это имя ресурса, которое вообще говоря может быть любым, и запись вида Lun 0 Path=/dev/sda, где /dev/sda – устройство, которое мы собираемся отдавать. Клиентом на Macintosh будет globalSAN iSCSI initiator, который совершенно бесплатен. Для Windiws есть также бесплатный Microsoft iSCSI software initiator. Обе программы обладают очевидным интерфейсом: надо вписать IP сервера на 1й вкладке и выбрать Lun по имени на второй, после чего в системе появится еще 1 жесткий диск, который можно разбивать, форматировать или использовать уже существующие разделы.

Так как все мои компьютеры находятся в 1й локальной сети без доступа извне, то шифрования канала и авторизации я не делал, хотя iSCSI поддерживает CHAP, а сам iSCSI можно инкапсулировать в IPSec, если вы хотите работать со своими дисками скажем издалека.

Производительность и результат

Что тут можно сказать? Даже моя откровенно слабая и старая VIA Epia огараничена сверху производительностью сети, скорость работы с диском чуть менее 100 мегабит в секунду. Кеширование диска происходит и на стороне клиента и на стороне сервера, так что больший объем оперативной памяти на сервере – лучше. Aperture стала заметно быстрее работать с коллекцией, точнее, ее работа перестала сказываться на отклике самого ноутбука. Time Machine сразуже опознала свой старый диск и синхронизировала резервную копию. Теперь я могу ходить с ноутбуком по всему дому не теряя связи со своими накопителями.

2015   IT   linux   железо