Еще одна заметка про настройку Excito B3. На этот раз, в ожидании поддержки UPnP стриминга на XBox 360 во встроенном Mediatomb, воспользуемся альтернативным решением и установим GeeXboX uSahre.
На самом деле эта заметка не появилась, если бы старый, добрый sudo apt-get install ushare работал. uShare пропал из репозиториев Дебиана, по крайней мере, с наскока я ничего достойного найти не смог. Потому воспользуемся проверенным методом и соберем все из исходников.
Для начала в домашней директории нашего пользователя создадим поддиректорию tmp, куда и свалим все, что накачаем. Во-первых, скачаем исходники uShare, на момент написания заметки самой новой была версия 1.1a, от 9 декабря 2007 года:
user@b3:~/tmp$ wget http://ushare.geexbox.org/releases/ushare-1.1a.tar.bz2
Во-вторых, скачаем исходники libupnp. Актуальной была версия 1.6.10 от 11 декабря 2010 года:
user@b3:~/tmp$ wget http://sourceforge.net/projects/pupnp/files/pupnp/libUPnP%201.6.10/libupnp-1.6.10.tar.bz2
В-третьих, поставим весь необходимый софт, который можно еще найти в репозиториях. Это gcc, собственно, для сборки, bzip2, чтобы распаковать архивы с исходниками, и pkg-config необходимый для uSahre:
user@b3:~/tmp$ sudo apt-get install gcc bzip2 pkg-config
Я намеренно не рассматриваю поддержку DLNA в uSahre потому, что в Mediatomb эта фича отлично реализована и работает.
Теперь перейдем к сборке. Для начала распакуем и соберем libupnp:
user@b3:~/tmp$ tar -jxf libupnp-1.6.10.tar.bz2
user@b3:~/tmp$ cd libupnp-1.6.10
user@b3:~/tmp$ ./configure
user@b3:~/tmp$ make
user@b3:~/tmp$ sudo make install
Потом повторим процедуру для uShare:
user@b3:~/tmp$ tar -jxf ushare-1.1a.tar.bz2
user@b3:~/tmp$ cd ushare-1.1a
user@b3:~/tmp$ CFLAGS="-Os" ./configure --prefix=/usr
user@b3:~/tmp$ make
user@b3:~/tmp$ sudo make install
Теперь нам надо подправить ushare.conf файл. Поскольку B3 работает в режиме “Server only” и подключен к LAN интерфейсу все пляски были вокруг eth1. Так же надо учесть, что с конфигом не все так безоблачно. Опции, касающиеся загрузки профиля совместимого с Xbox, надо передавать параметром при запуске, установку ENABLE_XBOX он игнорирует. Мой конфиг в конечном счете выглядел так:
# /etc/ushare.conf
# Configuration file for uShare
# uShare UPnP Friendly Name (default is 'uShare').
USHARE_NAME=B3
# Interface to listen to (default is eth0).
# Ex : USHARE_IFACE=eth1
USHARE_IFACE=eth1
# Port to listen to (default is random from IANA Dynamic Ports range)
# Ex : USHARE_PORT=49200
USHARE_PORT=49200
# Port to listen for Telnet connections
# Ex : USHARE_TELNET_PORT=1337
USHARE_TELNET_PORT=
# Directories to be shared (space or CSV list).
# Ex: USHARE_DIR=/dir1,/dir2
USHARE_DIR=/path/to/videos/dir
# Use to override what happens when iconv fails to parse a file name.
# The default uShare behaviour is to not add the entry in the media list
# This option overrides that behaviour and adds the non-iconv'ed string into
# the media list, with the assumption that the renderer will be able to
# handle it. Devices like Noxon 2 have no problem with strings being passed
# as is. (Umlauts for all!)
#
# Options are TRUE/YES/1 for override and anything else for default behaviour
USHARE_OVERRIDE_ICONV_ERR=
# Enable Web interface (yes/no)
ENABLE_WEB=yes
# Enable Telnet control interface (yes/no)
ENABLE_TELNET=
# Use XboX 360 compatibility mode (yes/no)
ENABLE_XBOX=
# Use DLNA profile (yes/no)
# This is needed for PlayStation3 to work (among other devices)
ENABLE_DLNA=
Далее подготовим сеть для вещания:
user@b3:~/tmp$ route add -net 239.0.0.0 netmask 255.0.0.0 eth1
Для реализации автостарта я воспользовался советом из этой полезной статьи. Существующий в /usr/local/etc/init.d/ushare скрипт на поверку оказался не рабочим, объем правок, необходимый для того, чтобы заставить его функционировать нормально слишком велик, оттого сейчас я описываю путь наименьшего сопротивления, хотя в итоге и получил рабочую версию скрипта.
Создаем файл /etc/ushare-start.sh
#!/bin/sh
/usr/local/bin/ushare -c -D
Меняем права на скрипт:
chown user:user /etc/ushare-start.sh
chmod 755 /etc/ushare-start.sh
Добавляем в rc.local:
start-stop-daemon --start --chuid user:user --exec /etc/ushare-start.sh
Плюс, надо не забыть настроить automount, если директория с раздаваемым контентом находится на внешнем носителе, который вы, в силу каких-либо причин (например, файловая система NTFS), подключаете не через WebUI.
Вот и все.