HowtoForge - Linux Howtos in English English|HowtoForge.de - Linux-Howtos auf Deutsch Deutsch

Set Up A Linux Playstation 3 Media Server (Ubuntu Hardy Heron)

Submitted by topdog (Contact Author) (Forums) on Fri, 2008-05-02 15:50. :: Linux | Ubuntu

Set Up A Linux Playstation 3 Media Server (Ubuntu Hardy Heron)

Version 1.0
Author: Andrew Colin Kissa <andrew [at] topdog [dot] za [dot] net>
Last edited 26/04/2008

Introduction

The Sony Play station 3 is a DLNA compatible device, DLNA is a framework where home electronics can share digital media and content seamlessly. This tutorial will provide instructions on setting up your Ubuntu hardy computer to share your video, music and photos, allowing you to play them through your DLNA compatible devices. Although several other open source media servers exist, i chose to use Fuppes due to its built in support for transcoding.

 

Requirements

  • Sony Play station 3 console (or other DLNA capable console/device)
  • Computer running ubuntu linux with working WLAN interface
  • Wireless LAN
  • Working internet connection (to download package)
  • Media to be shared

 

Installation

  • Download and install the fuppes debian package that i have packaged

wget http://www.topdog-software.com/oss/fuppes/fuppes_0+svn611-1_i386.deb
dpkg -i fuppes_0+svn611-1_i386.deb

 

Configuration

  • Edit the fuppes configuration file /etc/fuppes/fuppes.cfg and the the interface option, in my case i will be using the ip address 192.168.1.1.
  <interface>192.168.1.1</interface>
  • Start fuppes and point your browser to http://192.168.1.1:56596

/etc/init.d/fuppes restart

  • Select configuration on the menu on the left
  • Under "ContentDirectory settings" -> Add objects, Type the name of the directory you want to share media from (you can also share an itunes db) then click "submit query"
  • Add as many directories as you want; I added the following

/home/andrew/Videos
/home/andrew/Music
/home/andrew/Pictures

  • Rebuild the media database
  • Select Options on the menu on the left
  • Click "rebuild database"
  • Monitor the status of the rebuild on the status page, you will see the counters increase as you media is indexed.
  • Configure multicast route on your machine for the media server to be found by clients, create a file /etc/network/if-up/fuppes with the following content (substitute the interface for the one you are using on your machine)
#!/bin/bash
#
# in this case eth1 is my WLAN interface change to match yours
if [ "$IFACE" = "eth1" ]; then
        ip ro add 239.0.0.0/8 dev eth1
        /etc/init.d/fuppes restart &>/dev/null
fi

 

Testing

Sony Play Station 3

Connect to your PS3 and go to Video and then select search for media servers, if all went well you should find your media server named fuppes, select that and go to a folder with videos select and play. Repeat this procedure for your music and picture.

 

Nokia N95

Go to tools -> Connectivity -> Home media -> Browse media. You N95 will connect to the WLAN and begin searching and should find your fuppes media server, select it and you will see your folders, From there you can play your media and view your content or copy it to your device.

 

Xbox

Fuppes does support Xbox as well, I have not used it however as I do not own one.

 

Sample configuration files

  • /etc/fuppes/fuppes.cfg
<?xml version="1.0" encoding="UTF-8"?>
<fuppes_config version="0.7.2.3">
  <shared_objects>
  <dir>/home/andrew/Music</dir>
  <dir>/home/andrew/Videos</dir>
  <dir>/home/andrew/Pictures</dir>
  </shared_objects>
  <network>
    <!--empty = automatic detection-->
    <interface>192.168.1.1</interface>
    <!--empty or 0 = random port-->
    <http_port>56596</http_port>
    <!--list of ip addresses allowed to access fuppes. if empty all ips are allowed-->
    <allowed_ips>
      <!--<ip>192.168.0.1</ip>-->
    </allowed_ips>
  </network>
  <content_directory>
    <!--a list of possible charsets can be found under:
      http://www.gnu.org/software/libiconv/-->
    <local_charset>UTF-8</local_charset>
    <!--libs used for metadata extraction when building the database. [true|false]-->
    <use_imagemagick>true</use_imagemagick>
    <use_taglib>true</use_taglib>
    <use_libavformat>true</use_libavformat>
  </content_directory>
  <transcoding>
    <!--[lame|twolame]-->
    <audio_encoder>lame</audio_encoder>
    <!--[true|false]-->
    <transcode_vorbis>true</transcode_vorbis>
    <transcode_musepack>true</transcode_musepack>
    <transcode_flac>true</transcode_flac>
  </transcoding>
  <device_settings>
    <!--"default" settings are inhertied by specific devices and can be overwritten-->
    <device name="default">
      <!--specify the maximum length for file names (0 or empty = unlimited)-->
      <max_file_name_length>0</max_file_name_length>
      <!--[file|container]-->
      <playlist_style>file</playlist_style>
      <show_childcount_in_title>false</show_childcount_in_title>
      <enable_dlna>true</enable_dlna>
      <transcoding_release_delay>4</transcoding_release_delay>
      <file_settings>
        <!--audio files-->
        <file ext="mp3">
          <type>AUDIO_ITEM</type>
          <mime_type>audio/mpeg</mime_type>
          <dlna>MP3</dlna>
        </file>
        <file ext="ogg">
          <type>AUDIO_ITEM</type>
          <mime_type>application/octet-stream</mime_type>
          <transcode enabled="true">
            <ext>mp3</ext>
            <mime_type>audio/mpeg</mime_type>
            <dlna>MP3</dlna>
            <http_encoding>chunked</http_encoding>
            <decoder>vorbis</decoder>
            <encoder>lame</encoder>
            <bitrate>192</bitrate>
            <samplerate>44100</samplerate>
          </transcode>
        </file>
        <file ext="mpc">
          <type>AUDIO_ITEM</type>
          <mime_type>application/octet-stream</mime_type>
          <transcode enabled="true">
            <ext>mp3</ext>
            <mime_type>audio/mpeg</mime_type>
            <dlna>MP3</dlna>
            <http_encoding>chunked</http_encoding>
            <decoder>musepack</decoder>
            <encoder>lame</encoder>
            <bitrate>192</bitrate>
            <samplerate>44100</samplerate>
          </transcode>
        </file>
        <file ext="wav">
          <type>AUDIO_ITEM</type>
          <mime_type>audio/x-wav</mime_type>
        </file>
        <file ext="flac">
          <type>AUDIO_ITEM</type>
          <mime_type>audio/x-flac</mime_type>
          <transcode enabled="true">
            <ext>mp3</ext>
            <mime_type>audio/mpeg</mime_type>
            <dlna>MP3</dlna>
            <http_encoding>chunked</http_encoding>
            <decoder>flac</decoder>
            <encoder>lame</encoder>
            <bitrate>192</bitrate>
            <samplerate>44100</samplerate>
          </transcode>
        </file>
        <file ext="wma">
          <type>AUDIO_ITEM</type>
          <mime_type>audio/x-ms-wma</mime_type>
          <dlna>WMAFULL</dlna>
        </file>
        <!--image files-->
        <file ext="jpg">
          <ext>jpeg</ext>
          <type>IMAGE_ITEM</type>
          <mime_type>image/jpeg</mime_type>
          <convert enabled="false">
            <!--<dcraw enabled="true">-q 0</dcraw>-->
            <ext>png</ext>
            <mime_type>image/png</mime_type>
            <height>0</height>
            <width>0</width>
            <!--set "greater" to "true" if you only want to resize images greater than "height" or "width"-->
            <greater>false</greater>
            <!--set "less" to "true" if you only want to resize images less than "height" or "width"-->
            <less>false</less>
            <!--set "less" and "greater" to "false" if you always want to resize-->
          </convert>
        </file>
        <file ext="bmp">
          <type>IMAGE_ITEM</type>
          <mime_type>image/bmp</mime_type>
        </file>
        <file ext="png">
          <type>IMAGE_ITEM</type>
          <mime_type>image/png</mime_type>
        </file>
        <file ext="gif">
          <type>IMAGE_ITEM</type>
          <mime_type>image/gif</mime_type>
        </file>
        <!--video files-->
        <file ext="mpg">
          <ext>mpeg</ext>
          <type>VIDEO_ITEM</type>
          <mime_type>video/mpeg</mime_type>
        </file>
        <file ext="mp4">
          <type>VIDEO_ITEM</type>
          <mime_type>video/mp4</mime_type>
        </file>
        <file ext="avi">
          <type>VIDEO_ITEM</type>
          <mime_type>video/avi</mime_type>
        </file>
        <file ext="wmv">
          <type>VIDEO_ITEM</type>
          <mime_type>video/x-ms-wmv</mime_type>
        </file>
        <file ext="vob">
          <type>VIDEO_ITEM</type>
          <mime_type>video/x-ms-vob</mime_type>
        </file>
        <file ext="vdr">
          <type>VIDEO_ITEM</type>
          <mime_type>video/x-extension-vdr</mime_type>
          <transcode enabled="true">
            <ext>vob</ext>
            <mime_type>video/x-ms-vob</mime_type>
          </transcode>
        </file>
        <file ext="flv">
          <type>VIDEO_ITEM</type>
          <mime_type>application/x-flash-video</mime_type>
        </file>
        <file ext="asf">
          <type>VIDEO_ITEM</type>
          <mime_type>video/x-ms-asf</mime_type>
        </file>
        <!--playlists-->
        <file ext="pls">
          <type>PLAYLIST</type>
          <mime_type>audio/x-scpls</mime_type>
        </file>
        <file ext="m3u">
          <type>PLAYLIST</type>
          <mime_type>audio/x-mpegurl</mime_type>
        </file>
      </file_settings>
    </device>
    <!--If you have more than one device it is a good idea to set the ip address manually as some devices may have conflicting "user agents".-->
    <device name="PS3" enabled="true">
      <user_agent>UPnP/1.0 DLNADOC/1.00</user_agent>
      <user_agent>PLAYSTATION3</user_agent>
      <!--<ip></ip>-->
      <enable_dlna>true</enable_dlna>
      <transcoding_release_delay>50</transcoding_release_delay>
      <file_settings>
        <file ext="ogg">
          <type>AUDIO_ITEM_MUSIC_TRACK</type>
          <transcode enabled="true">
            <http_encoding>stream</http_encoding>
          </transcode>
        </file>
      </file_settings>
    </device>
    <device name="Xbox 360" virtual="Xbox 360" enabled="false"><description_values> 
      <friendly_name>%s %v : 1 : Windows Media Connect</friendly_name> 
      <model_name>Windows Media Connect compatible (%s)</model_name> 
      <model_number>2.0</model_number> 
	  </description_values> 
      <user_agent>Xbox/2.0.\d+.\d+ UPnP/1.0 Xbox/2.0.\d+.\d+</user_agent>
      <user_agent>Xenon</user_agent>
      <xbox360>true</xbox360>
    </device>
    <device name="Noxon audio" virtual="default" enabled="false">
      <!--Please enter the address of your Noxon. Automatic detection is impossible because the Noxon does not send a "user-agent" in it's requests-->
      <!--<ip></ip>-->
      <playlist_style>container</playlist_style>
      <show_childcount_in_title>true</show_childcount_in_title>
    </device>
    <device name="Telegent TG 100" virtual="default" enabled="false">
      <user_agent>dma/1.0 \(http://www.cybertan.com.tw/\)</user_agent>
      <user_agent>UPnP/1.0 DLNADOC/1.00</user_agent>
      <playlist_style>file</playlist_style>
      <max_file_name_length>101</max_file_name_length>
    </device>
  </device_settings>
</fuppes_config>
  • /etc/fuppes/vfolder.cfg
<?xml version="1.0" encoding="UTF-8"?>
<fuppes_vfolder_config version="0.2">
 <vfolder_layout device="default" enabled="false">
    <vfolder name="Genre">
      <vfolders property="genre">
        <items type="audioItem" />
      </vfolders>
    </vfolder>
    <vfolder name="Genre/Artists">
      <vfolders property="genre">
        <vfolders property="artist">
          <items type="audioItem" />
        </vfolders>
      </vfolders>
    </vfolder>
    <vfolder name="Artists/Albums">
      <vfolders property="artist">
        <vfolders property="album">
          <items type="audioItem" />
        </vfolders>
      </vfolders>
    </vfolder> 
    
    <vfolder name="ABC/Artists/Albums">
      <vfolders split="ABC">
        <vfolders property="artist">
          <vfolders property="album">
            <items type="audioItem" />
          </vfolders>
        </vfolders>
      </vfolders>
    </vfolder>
       
    <vfolder name="Photos">
      <vfolder name="All">
        <items type="imageItem" />
      </vfolder>
      <vfolder name="Folders">
        <folders filter="contains(imageItem)" />
      </vfolder>      
    </vfolder>
    <vfolder name="Videos">
      <vfolder name="All">
        <items type="videoItem" />
      </vfolder>
      <vfolder name="Folders">
        <folders filter="contains(videoItem)" />
      </vfolder>
    </vfolder>
    
    <vfolder name="shared dirs">
      <shared_dirs full_extend="true" />
    </vfolder>
    
  </vfolder_layout>
  <vfolder_layout device="Xbox 360" enabled="true">
    <vfolder name="Music" id="1">
      <vfolder name="Album" id="7">
        <vfolders property="album" type="container.album.musicAlbum">
          <items type="audioItem" />
        </vfolders>
      </vfolder>
            
      <vfolder name="All Music" id="4">
        <items type="audioItem" />
      </vfolder>
      
      <vfolder name="Artist" id="6">
        <vfolders property="artist" type="container.person.musicArtist">
          <items type="audioItem" />
        </vfolders>
      </vfolder>
      
      <vfolder name="Folders" id="20">
        <folders filter="contains(audioItem)" />
      </vfolder>
      
      <vfolder name="Genre" id="5">
        <vfolders property="genre" type="container.genre.musicGenre">
          <items type="audioItem" />
        </vfolders>
      </vfolder>
      
      <vfolder name="Playlist" id="15" />
    </vfolder>
   
    <vfolder name="Pictures" id="3">
      <vfolder name="Album" id="13" />
      
      <vfolder name="All Pictures" id="11">
        <items type="imageItem" />
      </vfolder>
      
      <vfolder name="Date Taken" id="12" />
      
      <vfolder name="Folders" id="22">
        <folders filter="contains(imageItem)" />
      </vfolder>
    </vfolder>
    <vfolder name="Playlists" id="18">
      <vfolder name="All Playlists" id="19" />
      <vfolder name="Folders" id="23" />
    </vfolder>
    <vfolder name="Video" id="2">
      <vfolder name="Actor" id="10" />
      <vfolder name="Album" id="14" />
      <vfolder name="All Video" id="8">
				<items type="videoItem" />
			</vfolder>
      <vfolder name="Folders" id="21" />
      <vfolder name="Genre" id="9" />
    </vfolder>
    <vfolder name="Browse Folders" id="21">  
<shared_dirs full_extend="true" />  
</vfolder>
  </vfolder_layout>
</fuppes_vfolder_config>

 

References


Comment viewing options

Select your preferred way to display the comments and click "Save settings" to activate your changes.
Please do not use the comment function to ask for help! If you need help, please use our forum: http://www.howtoforge.com/forums
Comments will be published after administrator approval.
Submitted by DeclanTM (Contact Author) (Forums) on Tue, 2008-06-03 04:46.

Love the tutorial, looks like a great tool that I would use regularly and it would allow my desktop to be freed of the job and instead running from my 24/7 server. However when attempting to install the package I recieve the error that its for 32 bit machines only, stupid of me to overlook but I was wondering if you have a AMD64 debian package for us 64 bit users.

Submitted by jiggleo (Contact Author) (Forums) on Wed, 2008-06-11 03:31.
I would be willing to build the 64 bit. I just installed a 32 bit next to the 64 bit and keep getting this error "[ERROR] failed to bind socket to : 192.168.2.1:56596" any help with that would be greatly appreciated.
Submitted by topdog (Contact Author) (Forums) on Fri, 2008-06-13 12:47.
Seems like something is already bound to that port, send me a message on the forum and i will send you the build.
Submitted by jiggleo (Contact Author) (Forums) on Wed, 2008-06-18 02:01.
Yeah I figured that myself so tried random ports and same issue.  It won't let me pm yet so this is the best I can do for now. I could post my yahoo e-mail as I'm use to all the junk e-mail in there.
Submitted by topdog (Contact Author) (Forums) on Fri, 2008-06-06 19:02.
unfortunately i do not have a 64bit machine, i can provide the sources however if anyone is interested in building
Submitted by maltokyo (Contact Author) (Forums) on Mon, 2008-06-23 05:42.

My server is 64-bit Ubuntu 8.04 (server version).  I'd be happy to build it, as I also ran into the 32-bit issue.

I assume it's possible to also share video with people outside my own network (over the internet) as long as I open the port - Is this correct?

Anyway, please let me know how I can get the source, and which packages I need to compile them..  or even better, why not release the source version also, so anyone can compile?  (Just an idea... I assume you have your reasons for not doing this..)

Submitted by topdog (Contact Author) (Forums) on Mon, 2008-06-23 09:40.

Am not sure about being able to share across the net as DLNA uses multicast to locate resources, this multicast traffic could be dropped by your ISP's routers.

 As per the source, fuppes is a GPLed project am not the author i just packaged an ubuntu package because there was none out there.

A howtoforge user offered to package the 64bit version i have not recieved feedback from him yet however i will make my build sources available for anyone to download and build for themselves. You can download them from http://www.topdog-software.com/oss/fuppes/source

Submitted by jiggleo (Contact Author) (Forums) on Thu, 2008-06-05 19:23.
I too would be greatly interested in a 64 bit tutorial
Submitted by alx (Contact Author) (Forums) on Thu, 2008-05-08 15:28.

...most amazing PS3 iconic representation at the diagram.  

Submitted by topdog (Contact Author) (Forums) on Fri, 2008-05-09 12:09.
wierd i did not actually notice the X until you pointed it out.
1
next page
last page