Installing Firefly on a Linkstation Live / Pro
This process should work on all stock or stock-like (telnet-enabled/jtymod) arm9 based Linkstation / Terastation.
Text based on my posting in the Linkstation wiki forum posting found here.
This seems like a long but detailed article. If you read through, and are comfortable with the steps it should take about 5 minutes from start to finish.
I'm going to assume the reader is comfortable in windows command line mode, and knows the difference between windows and unix. These instructions are a summarised version of what I did to get Firefly running on my LS Live. YMMV. If you brick your LS, it's your responsibility. You do this AT YOUR OWN RISK!!!
Firefly: http://www.fireflymediaserver.org
Roku: http://www.rokulabs.com and http://www.rokulabs.co.uk
Starting point
An unmodified ARM based Linkstation Live/Pro or Terastation Live/Pro. If you are unsure if your device is ARM based, check at the Linkstation wiki.
Getting telnet access to your LS
You need telnet access to the LS to do the install. This is not enabled by default but can be turned on with the aid of a utility developed by the community at the Linkstation wiki. You only require acp_commander.jar. ACP Commander needs Java (on your PC) to run. See java.com for the latest runtime version for your operating system. Once (java) is installed, enter the following in a command (cmd) window from the same directory that contains your downloaded acp_commander.jar file.
java -jar acp_commander.jar -t <IP ADDRESS> -o
Replace <IP ADDRESS> with the address of your Linkstation. You should see something similar to the following:
Using random connID VALUE = FB6A7FCF57E6 Using target: 192.168.1.11/192.168.1.11 (your IP address) ** NO message ** ** NO message ** Password changed.
You should now have root telnet access with a blank (null) password until next reboot. (user = "root" without quotes, and no password is required). If it doesn't work, try again. It could take up 5 times before acp_commander works.
Note: You can simply use the windows telnet client, or you can download and use Putty. Putty is a great telnet and ssh client for windows (and *nix). It is free, and is available here. If you don't know about telnet, now is a good time to read up on it.
You may also want to enable telnet at startup, this will allow you to easily get back into your LS to make changes to your Firefly configuration. To do this you can use the vi editor to edit the rcS file and remove # from the line
#/usr/sbin/telnetd
The rcS file is located in /etc/init.d
Download Firefly files and libraries
Note: links in this section will need maintained
I'll assume you are able to connect to your LS via windows explorer. You need to download and save these packages onto your LS. There are a number of them required:
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. 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. 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.
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
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 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
... the Media Server.