Difference between revisions of "Firefly Openlink"

From NAS-Central Buffalo - The Linkstation Wiki
Jump to: navigation, search
(wonderful howto from for for Linkstation Pro added)
(added changes do not belong to openlink)
Line 8: Line 8:
 
#* [http://www.underbit.com/products/mad/ libid3tag]  
 
#* [http://www.underbit.com/products/mad/ libid3tag]  
 
#* [[w:SQLlite|SQLlite]]
 
#* [[w:SQLlite|SQLlite]]
== Installation - Install from prebuilt packages ==
 
There is a comprehensive description for the Linkstation Pro taken from the [http://forum.nas-central.org/viewtopic.php?f=39&t=3509 forum] by bawbagg:
 
 
This howto has borrowed huge chunks of text from forum user Jimbo's howto for Twonky. That thread can be found here. Many, many thanks to Jimbo for providing this. Without Jimbo's simple and easy to follow instructions for getting telnet running on an unmodified LS I would probably still be floundering around.
 
 
Many thanks also to kaiten - one of the developers on this site. He compiled the version of Firefly we are going to install, and provided the libraries that it requires.
 
 
Starting point:
 
 
Stock LS Live/Pro firmware opened for telnet access.
 
 
=== Download Firefly files and libraries ===
 
 
You need to download and save these packages onto your LS. There are a number of them required:
 
* [http://downloads.linkstationwiki.net/Users/kaiten/mt-daapd-svn-1586_arm9.tar.gz Firefly]
 
* [http://downloads.linkstationwiki.net/Users/kaiten/flac-1.1.4_arm9.tgz flac libs]
 
* [http://downloads.linkstationwiki.net/Users/kaiten/libid3tag-0.15.1b_arm9.tgz mp3 tag libs]
 
* [http://downloads.linkstationwiki.net/Users/kaiten/libogg-1.1.3_arm9.tgz ogg libs]
 
* [http://downloads.linkstationwiki.net/Users/kaiten/libvorbis-1.1.2_arm9.tgz vorbis libs]
 
* [http://downloads.linkstationwiki.net/Users/kaiten/sqlite-2.8.17_arm9.tgz SQLite DB libs]
 
* [http://downloads.linkstationwiki.net/Users/kaiten/oggdec-1.0.1_arm9.tgz ogg format decoder]
 
Save them all in the same folder for simplicity.
 
 
 
=== Telnet to LS and unpack the tarballs ===
 
 
Connect to your LS either with Putty (great for any serious linux use) or with the windows client (more than sufficient for this project).
 
Hint: From the command window enter
 
      telnet <ip linkstation>
 
replace <ip linkstation> with the address of your Linkstation!!
 
You are asked for a Login. Enter
 
      root
 
No password is required.
 
You should see something like the following:
 
      BUFFALO INC. LinkStation series HS-DHGL(JINMU)
 
      HS-DHGL90D login: root
 
      root@HS-DHGL90D:~#
 
Once connected, you are in the linux environment of the the LS. You are also connected as root (ie superuser). DON'T do anything you shouldn't!!!
 
 
Now we need to issue the commands to unpack the files we downloaded (tarballs). Assuming you saved in the default share folder (ie \\<your LS IP>\share), then type the following into the telnet session:
 
 
      tar -C / -xzvf /mnt/disk1/share/mt-daapd-svn-1586_arm9.tar.gz
 
You should see a list of files getting unpacked.
 
Now continue with the rest of the packages:
 
      tar -C / -xzvf /mnt/disk1/share/flac-1.1.4_arm9.tgz
 
      tar -C / -xzvf /mnt/disk1/share/libid3tag-0.15.1b_arm9.tgz
 
      tar -C / -xzvf /mnt/disk1/share/libogg-1.1.3_arm9.tgz
 
      tar -C / -xzvf /mnt/disk1/share/libvorbis-1.1.2_arm9.tgz
 
      tar -C / -xzvf /mnt/disk1/share/sqlite-2.8.17_arm9.tgz
 
      tar -C / -xzvf /mnt/disk1/share/oggdec-1.0.1_arm9.tgz
 
Some libraries unpack more files than others. As long as you see something getting unpacked for each command, you should be good to go.
 
 
 
=== Tell Firefly where your mp3 reside ===
 
 
You may want to create a share on your LS specifically for your mp3. Use the web interface to do this. I did, and I called it mp3 (funnily enough :wink:). I'll assume you've done the same.
 
 
So let's navigate to the folder containing the config file for Firefly (which is called mt-daapd.conf for legacy reasons). Enter
 
      cd /etc/mt-daapd
 
in your telnet session, then
 
      vi mt-daapd.conf
 
Now use the arrow keys to find the line that says
 
      mp3_dir = /mnt/disk1/<something or other>
 
In vi, the x key is delete, and the i key starts inserting text. It's easy once you get the hang of it :wink:. If you screw up, hit the escape button then enter ":q!". This will quit your editing session without saving anything. Once you are happy with your edits (your line should look like this)
 
      mp3_dir = /mnt/disk1/mp3
 
then hit escape and type ":wq" to save edits and quit the vi editor. (I remember once writing a couple of thousand lines of pascal code on an old unix machine with the vi editor. It is actually an incredibly powerful tool!!!)
 
 
 
=== Set permissions for /dev/null ===
 
 
The stock firmware only root has permissions for /dev/null. We need to open that up. Enter
 
      chmod 0666 /dev/null
 
 
 
=== Start Firefly ===
 
 
Assuming you have copied some of your mp3 to the newly created share on your LS, we are now ready to start Firefly. First, navigate to the init.d directory
 
      cd /etc/init.d
 
now let's start it up. Hopefully you'll get the same short response:
 
      root@HS-DHGL90D:/etc/init.d# ./firefly start
 
      Starting DAAP daemon: mt-daapd
 
 
TADA!!!! All working. If not, sorry - maybe I made a mistake :oops: in these instructions.
 
 
You can control Firefly and add some smart playlists at http://<your LS IP>:3689. The username and password is mt-daapd. There is also a nifty little streaming app you can run from your browser at http://<your LS IP>:3689/applet.html
 
 
You should now be able to connect to your LS from itunes, your xbox/xbmc, your soundbridge, your squeezebox etc etc.
 
 
 
=== Make Firefly start on boot ===
 
 
Enter
 
      cp /etc/init.d/rcS /etc/init.d/rcS_old
 
 
This makes a copy of the rcS file before we modify/screw it up. Then enter(exactly as typed)
 
      echo "exec_sh firefly start" >> /etc/init.d/rcS
 
 
All done!!! :up: :up: Now enjoy :up: :up:
 
  
  

Revision as of 11:56, 5 October 2007

Ff logo sm.gif

Contents

Requirements

  1. Lots of good music
  2. Something to play lots of your good music on - Like a Roku Soundbridge
  3. Or iTunes on your pc


Installation - Build From Source

Dependancies

Development Tools

  1. Install the Precompiled C development environment, running on the LS
  2. Get the source tarballs and compile

libid3tag

cd .. 
wget http://umn.dl.sourceforge.net/sourceforge/mad/libid3tag-0.15.1b.tar.gz
tar -xvzf libid3tag-0.15.1b.tar.gz
cd libid3tag-0.15.1b
./configure --prefix=/usr/local
make install

sqlite

cd .. 
wget http://www.sqlite.org/sqlite-3.3.17.tar.gz
tar -xvzf sqlite-3.3.17.tar.gz
cd sqlite-3.3.17
./configure --prefix=/usr/local
make install

OPTIONAL

Ogg Lib
cd /tmp
wget http://downloads.xiph.org/releases/ogg/libogg-1.1.3.tar.gz
tar -xvzf libogg-1.1.3.tar.gz
cd libogg-1.1.3
./configure --prefix=/usr/local
make install
Vorbis Lib
cd .. 
wget http://downloads.xiph.org/releases/vorbis/libvorbis-1.1.2.tar.gz
tar -xvzf libvorbis-1.1.2.tar.gz
cd libvorbis-1.1.2
./configure --prefix=/usr/local
make install

These libraries need to be registered with the linker. This can be done by creating a file called ld.so.conf in /etc as follows;

nano
Bar.png
if you don't already have nano you can follow the instructions on the nano page to either get the static binaries for your LS or compile it yourself


nano /etc/ld.so.conf

edit the file to add the line;

/usr/local/lib

save and exit. Then type

ldconfig -v

verify that the ogg and vorbis libs are listed.

Flac
cd .. 
wget http://kent.dl.sourceforge.net/sourceforge/flac/flac-1.1.2.tar.gz
tar -xvzf flac-1.1.2.tar.gz
cd flac-1.1.2
./configure --prefix=/usr/local
make install

The flac libs also need to be registered, so;

ldconfig -v
Howl

REQUIRED FOR MULTIPLE INSTANCES

cd .. (get back to /tmp directory)
wget http://www.porchdogsoft.com/download/howl-1.0.0.tar.gz
tar -xvzf howl-1.0.0.tar.gz
cd howl-1.0.0
./configure --prefix=/usr/local
make install

The howl libs need to be registered, so (assuming you've added the line to /etc/ld.so.conf as above);

ldconfig -v

Get and Compile Firefly

You will need to check out [the nightlies] and change the address below to the latest version

cd /tmp
wget http://nightlies.mt-daapd.org/dl.php?FILE=mt-daapd-svn-1463.tar.gz

Untar and enter folder (replace with whatever latest version is)

tar -zxvf mt-daapd-svn-1463.tar.gz
cd mt-daapd-svn-1463 

Either - (assuming flac, ogg and howl built)

./configure --prefix=/usr/local --enable-browse --enable-query --enable-mdns --enable-howl 
--with-howl-includes=/usr/local/include/howl --with-id3tag=/usr/local --sysconfdir=/etc --enable-sqlite3 --enable-flac    
--enable-oggvorbis

Or

./configure --prefix=/usr/local --enable-browse --enable-query --enable-mdns --with-id3tag=/usr/local --sysconfdir=/etc 
--enable-sqlite3
make install
mkdir /etc/mt-daapd
cp contrib/mt-daapd.* /etc/mt-daapd/
cd /etc/mt-daapd/


nano mt-daapd.conf 

You probably need to change the location of the music files for example to /mnt/media; the web_root location to /usr/local/share/mt-daapd/admin-root; the plugin directory to /usr/local/share/mt-daapd/plugins; the firefly database directory to for example /mnt/media; and the playlist directory to for example /etc/mt-daapd/mt-daapd.playlist. Check that all the directories you use actually exist on your installation. If you cannot access the Firefly web interface, check that the music file and web_root location exist, and remember Linux is case sensitive i.e. /mnt/media and /mnt/Media are different directories.

(allow any user to write to mt-daapd.conf to allow web interface to modify it)

chmod o=rw mt-daapd.conf

Startup Script

Create a startup script;

nano /etc/init.d/firefly

Add all this:

#! /bin/sh
set -e

# /etc/init.d/firefly: start and stop the DAAP daemon

DAEMON=/usr/local/sbin/mt-daapd
DAAPD_OPTS=""
DAAPD_CONFIG_FILE=/etc/mt-daapd/mt-daapd.conf

test -x $DAEMON || exit 0 

case "$1" in
 start)
   if ! grep -q /usr/local/lib /etc/ld.so.conf; then
     echo /usr/local/lib >> /etc/ld.so.conf
     ldconfig
   fi

   echo -n "Starting DAAP daemon: firefly"
   if pidof $DAEMON >/dev/null 2>&1; then
     echo " apparently already running."
   exit 0
   fi
   if [ ! -s "$DAAPD_CONFIG_FILE" ]; then
     echo " missing or empty config file $DAAPD_CONFIG_FILE"
     exit 1
   fi
   start-stop-daemon --start --quiet --background \
     --exec $DAEMON -- -c "$DAAPD_CONFIG_FILE" $DAAPD_OPTS
   echo "."
   ;;
 stop)
   echo -n "Stopping DAAP daemon: firefly"
   killall $DAEMON >/dev/null 2>&1
   echo "."
   ;;

 restart)
   set +e
   echo -n "Restarting DAAP daemon: firefly"
   killall $DAEMON >/dev/null 2>&1
   sleep 2
   if ! start-stop-daemon --start --quiet --background \
     --exec $DAEMON -- -c "$DAAPD_CONFIG_FILE" $DAAPD_OPTS
   then
     echo "start failed?"
   fi
   echo "."
   ;;

 *)
   echo "Usage: /etc/init.d/firefly {start|stop|restart}"
   exit 1
esac

exit 0


Mark the file as executable;

chmod a+x /etc/init.d/firefly

Create a symbolic link to this file in the startup dir;

cd /etc/rc2.d && ln -s /etc/init.d/firefly S20firefly
cd /etc/rc6.d && ln -s /etc/init.d/firefly K20firefly
cd /etc/rc0.d && ln -s /etc/init.d/firefly K20firefly

Run it

Should be able to start it up now

/usr/local/sbin/mt-daapd

or better still use the start/stop script

/etc/init.d/firefly start

This errors because it looks for mt-daapd.conf in /usr/local/etc/mt-daapd.conf ??

I've just linked to it

mkdir /usr/local/etc
ln -s /etc/mt-daapd/mt-daapd.conf  /usr/local/etc/mt-daapd.conf

Try it now

/etc/init.d/firefly start

Issue top and you should see mt-daapd at the top of the list -

top

Once that dissapears (it has finished checking your music library) you should be able to see it via the web interface

http://<LINKSTATION-IP>:3689

You can put whatever you like as user but the passwd is mt-daapd

That should show you something like this

Firefly.JPG

Run over to your Roku Soundbridge and check if its working - then fire up iTunes on your pc and see all your files

To add multiple instances

Create new subdirectories under /usr/local/var/cache/mt-daapd which correspond to the databases required. eg.

mkdir /usr/local/var/cache/mt-daapd/albums/

Set appropriate permissions

chown nobody:nogroup /usr/local/var/cache/mt-daapd/albums
chmod u+w /usr/local/var/cache/mt-daapd/albums

Create a new startup mt-daapd.conf with the appropriate path to the database dir (eg mt-daapd.albums.conf)

Modify the starup script to start mt-daapd using this conf file;

/usr/local/sbin/mt-daapd -c /usr/local/etc/mt-daapd.albums.conf

The startup script must also start Howl (mDNSResponder)

/usr/local/bin/mDNSResponder

(this should be started before the mt-daapd instances)

Troubleshooting

Bauldrick 13:05, 21 December 2006 (EST)