{"id":183,"date":"2014-04-29T03:09:22","date_gmt":"2014-04-29T01:09:22","guid":{"rendered":"http:\/\/grenzdebiel.no-ip.biz\/wordpress\/?p=183"},"modified":"2016-03-17T05:42:20","modified_gmt":"2016-03-17T03:42:20","slug":"ushare-upnp-dlna-server","status":"publish","type":"post","link":"https:\/\/blog.grenzdebiel.dynv6.net\/?p=183","title":{"rendered":"uShare &#8211; UPnP \/ DLNA Server"},"content":{"rendered":"<p><strong>uShare<\/strong> ist ein Audio\/Video UPnP Server. Der Dienst stellt Mediensdaten UPnP bzw. DLNA Endger\u00e4te zur Verf\u00fcgung.<br \/>\n<!--more--><\/p>\n<p>Der Server ist recht einfach zu konfigurieren. Ich habe das Programm aus den Quellen \u00fcbersetzt da Debian(Raspbian) hier eine \u00e4ltere Version bereitstellt.<\/p>\n<p>Um die DLNA Unterst\u00fctzung aktivieren zu k\u00f6nnen wird die libdlna in der Version >0.2.3 ben\u00f6tigt. Die Bibliothek libupnp und das dev-Package libupnp-dev wird in der Version >1.4.2 ben\u00f6tigt. Ich habe das Paket &#8222;libupnp6&#8220; und &#8222;libupnp6-dev&#8220; genutzt.<\/p>\n<p>Vorbereitung:<\/p>\n<pre class=\"brush: bash; gutter: false\">aptitude install libavformat-dev libavformat-extra-53 libupnp6 libupnp6-dev<\/pre>\n<p>Anschliessend wird die &#8222;libdlna&#8220; gebaut und installiert.<\/p>\n<p>Download:<\/p>\n<pre class=\"brush: bash; gutter: false\">cd ~\r\nwget http:\/\/libdlna.geexbox.org\/releases\/libdlna-0.2.4.tar.bz2\r\ntar xfj libdlna-0.2.4.tar.bz2<\/pre>\n<p>Der ber\u00fchmte 2-Zeiler:<\/p>\n<pre class=\"brush: bash; gutter: false\">.\/configure\r\nmake && make install<\/pre>\n<p>Jetzt wird der eigentlich DLNA\/UPnP-Server ushare gebaut:<\/p>\n<p>Download:<\/p>\n<pre class=\"brush: text; gutter: false\">cd ~\r\nwget http:\/\/ushare.geexbox.org\/releases\/ushare-1.1a.tar.bz2<\/pre>\n<p>Konfiguration und Bau:<\/p>\n<pre class=\"brush: text; gutter: false\">tar xfj ushare-1.1a.tar.bz2\r\ncd ushare-1.1a\r\nCFLAGS=\"-Os\"; .\/configure --enable-dlna --prefix=\/usr\r\nmake<\/pre>\n<p>endet mit der Meldung:<br \/>\n<code>ushare.c: In function \u2018handle_action_request\u2019:<br \/>\nushare.c:191:29: error: \u2018struct sockaddr_storage\u2019 has no member named \u2018s_addr\u2019<br \/>\nmake[1]: *** [ushare.o] Error 1<br \/>\nmake[1]: Leaving directory `\/source\/ushare-1.1a\/src\u2019<br \/>\nmake: *** [all] Error 2<\/code><\/p>\n<p>\u00c4ndert die Zeile 191 in ushare.c:<br \/>\n<code>ip = ((struct in_addr*)&request->CtrlPtIPAddr)->s_addr;<\/code><\/p>\n<p>f\u00fchre wieder ein &#8222;<strong>make &#038;&#038; make install<\/strong>&#8220; aus und diesmal wird es fehlerfrei \u00fcbersetzt.<\/p>\n<p>init-Skript:<\/p>\n<pre class=\"brush: bash; gutter: true\">#!\/bin\/sh\r\n\r\n# chkconfig: 345 99 10\r\n# description: Startup\/shutdown script for ushare-DLNA daemon\r\n#\r\n### BEGIN INIT INFO\r\n# Provides:          ushare\r\n# Required-Start:    $network $local_fs $remote_fs\r\n# Required-Stop::    $network $local_fs $remote_fs\r\n# Should-Start:      $all\r\n# Should-Stop:       $all\r\n# Default-Start:     2 3 4 5\r\n# Default-Stop:      0 1 6\r\n# Short-Description: DLNA-Server\r\n### END INIT INFO\r\n\r\nUSHARE=\/usr\/local\/bin\/ushare\r\nARGS=\"-D -f \/etc\/ushare\/ushare.conf\"\r\n\r\n. \/lib\/lsb\/init-functions\r\n\r\ncase \"$1\" in\r\nstart)  log_daemon_msg \"Starting ushare\" \"ushare\"\r\n        start-stop-daemon --start --quiet --pidfile \/var\/run\/ushare.pid --startas $USHARE -- $ARGS $LSBNAMES\r\n        log_end_msg $?\r\n        ;;\r\nstop)   log_daemon_msg \"Stopping ushare\" \"ushare\"\r\n        start-stop-daemon --stop --quiet --pidfile \/var\/run\/ushare.pid\r\n        log_end_msg $?\r\n        ;;\r\nrestart|reload|force-reload)\r\n        log_daemon_msg \"Restarting ushare\" \"ushare\"\r\n        start-stop-daemon --stop --retry 5 --quiet --pidfile \/var\/run\/ushare.pid\r\n        start-stop-daemon --start --quiet --pidfile \/var\/run\/ushare.pid --startas $USHARE -- $ARGS $LSBNAMES\r\n        log_end_msg $?\r\n        ;;\r\nstatus)\r\n        status_of_proc -p \/var\/run\/ushare.pid $USHARE ushare && exit 0 || exit $?\r\n        ;;\r\n*)      log_action_msg \"Usage: \/etc\/init.d\/ushare {start|stop|restart|reload|force-reload|status}\"\r\n        exit 2\r\n        ;;\r\nesac\r\nexit 0<\/pre>\n<p>Konfiguration(\/etc\/ushare\/ushare.conf):<\/p>\n<pre class=\"brush: bash; gutter: true\">#Name des Servers\r\nUSHARE_NAME=NAS\r\n# Netzwerkschnittstelle, die benutzt werden soll\r\nUSHARE_IFACE=eth0\r\n# Der Port, auf dem der Server laufen soll\r\nUSHARE_PORT=49200\r\n# Verzeichnisse, die der Server mit anderen Ger&amp;amp;auml;ten teilen soll\r\nUSHARE_DIR=<DIR>\r\n# Webinterface aktivieren (ja\/nein)?\r\nUSHARE_ENABLE_WEB=yes\r\n# Xbox360-Support.\r\n#USHARE_ENABLE_XBOX=yes\r\n# Playstation3-Support.\r\nUSHARE_ENABLE_DLNA=yes<\/pre>\n","protected":false},"excerpt":{"rendered":"<p>uShare ist ein Audio\/Video UPnP Server. Der Dienst stellt Mediensdaten UPnP bzw. DLNA Endger\u00e4te zur Verf\u00fcgung.<\/p>\n","protected":false},"author":3,"featured_media":305,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[27,12],"tags":[44,47,121,48,118,45,46],"class_list":["post-183","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-linux","category-software-pi","tag-dlna","tag-linux-2","tag-multimedia","tag-nas","tag-netzwerk","tag-upnp","tag-ushare"],"_links":{"self":[{"href":"https:\/\/blog.grenzdebiel.dynv6.net\/index.php?rest_route=\/wp\/v2\/posts\/183","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/blog.grenzdebiel.dynv6.net\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blog.grenzdebiel.dynv6.net\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blog.grenzdebiel.dynv6.net\/index.php?rest_route=\/wp\/v2\/users\/3"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.grenzdebiel.dynv6.net\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=183"}],"version-history":[{"count":1,"href":"https:\/\/blog.grenzdebiel.dynv6.net\/index.php?rest_route=\/wp\/v2\/posts\/183\/revisions"}],"predecessor-version":[{"id":185,"href":"https:\/\/blog.grenzdebiel.dynv6.net\/index.php?rest_route=\/wp\/v2\/posts\/183\/revisions\/185"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/blog.grenzdebiel.dynv6.net\/index.php?rest_route=\/wp\/v2\/media\/305"}],"wp:attachment":[{"href":"https:\/\/blog.grenzdebiel.dynv6.net\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=183"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.grenzdebiel.dynv6.net\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=183"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.grenzdebiel.dynv6.net\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=183"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}