[GUIDE] Install Transmission 2.77

UPDATED 4/30/2013







Mad props to Timmy1024 for the modified startup script which now auto updates the blocklist!

Lists will update everytime you restart your device (or manually run the init script with /etc/init.d/transmission-daemon)


This SHOULD work on the latest MBLDUO firmware as well

Connect to the MBL with PuTTY or Terminal and install optware

wget http://mybookworld.wikidot.com/local--files/optware/setup-mybooklive.sh
sh setup-mybooklive.sh

Issue the following commands to ensure that we can use the command “ipkg” from any directory

echo "export PATH=$PATH:/opt/bin:/opt/sbin" >> /root/.bashrc
echo "export PATH=$PATH:/opt/bin:/opt/sbin" >> /etc/profile

Close PuTTY or Terminal (Very Important)

Open PuTTY or Terminal and connect to the MBL again

ipkg update
ipkg install transmission libevent

Start Transmission


Stop Transmission

killall transmission-daemon

Delete the json settings file and replace it with the text in the REPLACEMENT TEXT window

rm /root/.config/transmission-daemon/settings.jsonnano /root/.config/transmission-daemon/settings.json

REPLACEMENT TEXT (Right mouse click in the PuTTY window to paste)

{    "alt-speed-down": 50,     "alt-speed-enabled": false,     "alt-speed-time-begin": 540,     "alt-speed-time-day": 127,     "alt-speed-time-enabled": false,     "alt-speed-time-end": 1020,     "alt-speed-up": 50,     "bind-address-ipv4": "",     "bind-address-ipv6": "::",     "blocklist-enabled": true,     "blocklist-url": "http://www.bluetack.co.uk/config/level1.gz",     "cache-size-mb": 4,     "dht-enabled": true,     "download-dir": "/DataVolume/shares/Public/TR-Downloads",     "download-queue-enabled": true,     "download-queue-size": 5,     "encryption": 1,     "idle-seeding-limit": 30,     "idle-seeding-limit-enabled": false,     "incomplete-dir": "/DataVolume/shares/Public/TR-INCOMPLETE",     "incomplete-dir-enabled": true,     "lpd-enabled": false,     "message-level": 2,     "peer-congestion-algorithm": "",     "peer-limit-global": 240,     "peer-limit-per-torrent": 60,     "peer-port": 51413,     "peer-port-random-high": 65535,     "peer-port-random-low": 49152,     "peer-port-random-on-start": false,     "peer-socket-tos": "default",     "pex-enabled": true,     "port-forwarding-enabled": false,     "preallocation": 1,     "prefetch-enabled": 1,     "queue-stalled-enabled": true,     "queue-stalled-minutes": 30,     "ratio-limit": 2,     "ratio-limit-enabled": false,     "rename-partial-files": true,     "rpc-authentication-required": false,     "rpc-bind-address": "",     "rpc-enabled": true,     "rpc-password": "{5d73272dade2dccb326e823e555a8bccd6c235f2SkqI2LBJ",     "rpc-port": 9091,     "rpc-url": "/transmission/",     "rpc-username": "",     "rpc-whitelist": "",     "rpc-whitelist-enabled": false,     "scrape-paused-torrents-enabled": true,     "script-torrent-done-enabled": false,     "script-torrent-done-filename": "",     "seed-queue-enabled": false,     "seed-queue-size": 10,     "speed-limit-down": 100,     "speed-limit-down-enabled": false,     "speed-limit-up": 100,     "speed-limit-up-enabled": false,     "start-added-torrents": true,     "trash-original-torrent-files": false,     "umask": 0,     "upload-slots-per-torrent": 14,     "utp-enabled": true}

Hit control and o

Hit enter

Hit control and x

This will save your edited file

Change the file permissions

chmod 600 /root/.config/transmission-daemon/settings.json

Now we are gonna create a startup script

nano /etc/init.d/transmission-daemon

Copy the following text to the PuTTY window (Right mouse click in the PuTTY window to paste)

#! /bin/sh### BEGIN INIT INFO# Provides:          transmission-daemon# Required-Start:    $remote_fs# Required-Stop:     $remote_fs# Default-Start:     2 3 4 5# Default-Stop:      0 1 6# Short-Description: Start or stop the transmission-daemon# Description:       This file should be used to construct scripts to be#                    placed in /etc/init.d.### END INIT INFOTRANSMISSION_BLOCKLISTS_DIRECTORY=/root/.config/transmission-daemon/blocklists# Bluetack: badpeers# http://www.iblocklist.com/list.php?list=bt_templistwget -P $TRANSMISSION_BLOCKLISTS_DIRECTORY/ "http://list.iblocklist.com/?list=bt_templist&fileformat=p2p&archiveformat=gz"rm -f $TRANSMISSION_BLOCKLISTS_DIRECTORY/bt_templistgunzip $TRANSMISSION_BLOCKLISTS_DIRECTORY/bt_templist.gz# Bluetack: level1# http://www.iblocklist.com/list.php?list=bt_level1wget -P $TRANSMISSION_BLOCKLISTS_DIRECTORY/ "http://list.iblocklist.com/?list=bt_level1&fileformat=p2p&archiveformat=gz"rm -f $TRANSMISSION_BLOCKLISTS_DIRECTORY/bt_level1gunzip $TRANSMISSION_BLOCKLISTS_DIRECTORY/bt_level1.gz# The Blocklist Group: Primary Threats# http://www.iblocklist.com/list.php?list=ijfqtofzixtwayqovmxn&fileformat=p2p&archiveformat=gzwget -P $TRANSMISSION_BLOCKLISTS_DIRECTORY/ "http://list.iblocklist.com/?list=ijfqtofzixtwayqovmxn&fileformat=p2p&archiveformat=gz"rm -f $TRANSMISSION_BLOCKLISTS_DIRECTORY/ijfqtofzixtwayqovmxngunzip $TRANSMISSION_BLOCKLISTS_DIRECTORY/ijfqtofzixtwayqovmxn.gz# Do NOT "set -e"# PATH should only include /usr/* if it runs after the mountnfs.sh scriptPATH=/opt/sbin:/opt/bin:/sbin:/usr/sbin:/bin:/usr/binDESC="Transmission - daemon"NAME=transmission-daemonDAEMON=/opt/bin/$NAMEDAEMON_ARGS="--options args"#PIDFILE=/var/run/$NAME.pidSCRIPTNAME=/etc/init.d/$NAMEUSER=rootSTOP_TIMEOUT=3# Exit if the package is not installed[-x "$DAEMON"] || exit 0[-e /etc/default/$NAME] && . /etc/default/$NAME# Read configuration variable file if it is present[-r /etc/default/$NAME] && . /etc/default/$NAME# Load the VERBOSE setting and other rcS variables. /lib/init/vars.sh# Define LSB log_* functions.# Depend on lsb-base (>= 3.0-6) to ensure that this file is present.. /lib/lsb/init-functions## Function that starts the daemon/service#do_start(){    # Return    #   0 if daemon has been started    #   1 if daemon was already running    #   2 if daemon could not be started    if [$ENABLE_DAEMON ! = 1] ; then        log_progress_msg "(disabled, see /etc/default/${NAME})"    else            start-stop-daemon --start \        --chuid $USER \        --exec $DAEMON -- $OPTIONS    fi    # Add code here, if necessary, that waits for the process to be ready    # to handle requests from services started subsequently which depend    # on this one.  As a last resort, sleep for some time.}## Function that stops the daemon/service#do_stop(){    # Return    #   0 if daemon has been stopped    #   1 if daemon was already stopped    #   2 if daemon could not be stopped    #   other if a failure occurred    start-stop-daemon --stop --quiet --retry=TERM/30/KILL/5 --pidfile $PIDFILE --name $NAME    RETVAL="$?"    ["$RETVAL" = 2] && return 2    # Wait for children to finish too if this is a daemon that forks    # and if the daemon is only ever run from this initscript.    # If the above conditions are not satisfied then add some other code    # that waits for the process to drop all resources that could be    # needed by services started subsequently.  A last resort is to    # sleep for some time.    start-stop-daemon --stop --quiet --oknodo --retry=0/30/KILL/5 --exec $DAEMON    ["$?" = 2] && return 2    # Many daemons don't delete their pidfiles when they exit.    rm -f $PIDFILE    return "$RETVAL"}## Function that sends a SIGHUP to the daemon/service#do_reload() {    #    # If the daemon can reload its configuration without    # restarting (for example, when it is sent a SIGHUP),    # then implement that here.    #    start-stop-daemon --stop --signal 1 --quiet --pidfile $PIDFILE --name $NAME    return 0}case "$1" in  start)    ["$VERBOSE" != no] && log_daemon_msg "Starting $DESC" "$NAME"    do_start    case "$?" in        0|1) ["$VERBOSE" != no] && log_end_msg 0 ;;        2) ["$VERBOSE" != no] && log_end_msg 1 ;;    esac    ;;  stop)    ["$VERBOSE" != no] && log_daemon_msg "Stopping $DESC" "$NAME"    do_stop    case "$?" in        0|1) ["$VERBOSE" != no] && log_end_msg 0 ;;        2) ["$VERBOSE" != no] && log_end_msg 1 ;;    esac    ;;  #reload|force-reload)    #    # If do_reload() is not implemented then leave this commented out    # and leave 'force-reload' as an alias for 'restart'.    #    #log_daemon_msg "Reloading $DESC" "$NAME"    #do_reload    #log_end_msg $?    #;;  restart|force-reload)    #    # If the "reload" option is implemented then remove the    # 'force-reload' alias    #    log_daemon_msg "Restarting $DESC" "$NAME"    do_stop    case "$?" in      0|1)        do_start        case "$?" in            0) log_end_msg 0 ;;            1) log_end_msg 1 ;; # Old process is still running            *) log_end_msg 1 ;; # Failed to start        esac        ;;      *)          # Failed to stop        log_end_msg 1        ;;    esac    ;;  *)    #echo "Usage: $SCRIPTNAME {start|stop|restart|reload|force-reload}" >&2    echo "Usage: $SCRIPTNAME {start|stop|restart|force-reload}" >&2    exit 3    ;;esac:

Hit control and o

Hit enter

Hit control and x

This will save your edited file

Set the script permissions and add it to all the rc folders

chmod 755 /etc/init.d/transmission-daemon
update-rc.d transmission-daemon defaults

For those wishing to have access to the actual Torrent files easily from the DataVolume

Create a folder called torrents in your Public folder

SSH in and move any Torrents you currently have in /root/.config/transmission-daemon/torrents to your computer

SSH in and issue

rmdir /root/.config/transmission-daemon/torrents
ln -s /DataVolume/shares/Public/torrents /root/.config/transmission-daemon/torrents

Your torrents will now be stored in /Public/torrents

Start Transmission again

/etc/init.d/transmission-daemon start

Login to Transmission using a web browser using your mybooklive network name or ip:9091

Click the wrench icon and go to the peers tab and make sure you click UPDATE to setup your Blocklist

Make any other changes you need from the GUI as well



Thanks nfodiz.

Any chance you have a script to automatically extract RAR’ed archives into another folder upon download completion?

Eg. Torrent finishes downloading into the default destination folder. MBL script automatically senses this and extracts .avi file into a different folder for viewing on other DNLA devices.

Bonus points for leaving the original torrent in its original location to allow uploading/seeding to continue.



1 Like

UPDATED 4/29/2013

TorrentExpander Auto Unrar and Unzip script Guide

To see all that TorrentExpander is capable of, see the following link



  • Automatically extract compressed archive
  • Rename Movie & Series as you like
  • Automatically copy or move your downloads in ordered directory
  • Build .nfo for each movie file (useful with Jukebox or Movie Catalog software)
  • Download Poster from imdb
  • Download Fanart from TheMovieDB
  • Put Movies, Series and Music in different folders
  • Automatically update itself
  • Many More

First stop Transmission Daemon

killall transmission-daemon

You will need to download these dependencies for the script

ipkg install unrar

 Edit settings.json

nano /root/.config/transmission-daemon/settings.json

Replace these lines

"script-torrent-done-enabled": false, 
    "script-torrent-done-filename": "",

With these lines

"script-torrent-done-enabled": true,
    "script-torrent-done-filename": "/var/lib/scripts/torrentexpander.sh",

Hit control and o

Hit enter

Hit control and x

This will save your edited file

Create the scripts directory, download the script, and make it executable

mkdir /var/lib/scripts
cd /var/lib/scripts
wget http://torrentexpander.googlecode.com/svn/trunk/torrentexpander.sh
chmod 755 /var/lib/scripts/torrentexpander.sh

Now lets run the setup script


The only change you NEED to make is to:


Change it to

destination_folder=/DataVolume/shares/ whatever share and folder you want the files extracted to

Make sure the share and folder already exist on the NAS

Extracted ZIP and RAR archives will be extracted here in a folder named after the archive

Non-archive files will also be placed in this folder

Hit control and o

Hit enter

Hit control and x

This will save your edited file



Guide updated with a proper init.d startup script so transmission will now automatically start if you reboot the drive

1 Like

Thankyou kindly. I’ll give it a go and report back with results. :smiley:

[Edit] The “Install Transmission” Guide works perfectly. My “FeaturePack Manager” (with associated software) was wiped when I upgraded to WD’s latest firmware today (v 02.42.02-012). I followed your instructions above and can confirm each step works correctly. Thank you very much.

As a suggestion (and to prevent further enquiries from linux noobs like me), could you please add the following instructions after the sections where nano text is to be replaced within the files?


Press Ctrl-o, then press Enter

Press Ctrl-x to save the file.

I’ll report back on the second section of the guide (the auto-extraction section) after I’ve tried it. Cheers!

Wow, I don’t know how I missed that as I always have those steps listed in my guides. Will make that change today when I get to my desktop. Thank you for pointing it out :slight_smile:

EDIT: Guide updated

1 Like

Thanks nfo! You’re THAT guide in every forum community that is truly dedicated to helping the community! :smiley:

I’ll try this as soon as I have time (and finish fiddling with the apache settings ;))

Can’t thank you enough, so I kudos’ed (?) every post :slight_smile:

See ya

LOL; *guy (instead of guide!)

[Edit] - This post is outdated as the Auto-Extract Script Guide has been updated.

Hi there,

I found I needed to create a “scripts” directory to allow the posttorrent.sh script to save:

mkdir /var/lib/scripts
cd /root

I also found that if I wanted to keep the original .rar files for seeding, I had to edit the “posttorrent.sh” file and get rid of the part that said:

transmission-remote -n $TR_USERNAME:$TR_PASSWORD -t $TR_TORRENT_HASH --remove-and-delete

 …and replace with:

transmission-remote -n $TR_USERNAME:$TR_PASSWORD -t $TR_TORRENT_HASH --remove

I downloaded a small 80MB video that was in .rar form to test if the script works - but I can’t find it anywhere on my MBL!

Might start over again!!

1 Like

LOL, keep me posted and we can collaborate and add it to the guide :slight_smile: Take good notes

I confirm that this worked great on the My Book Live Duo.

I had to change the download directory, because even though it was DataVolume/shares/Public/, the downloaded files didn’t appear there (I don’t know where they went)

I’ll try the automatic unrar as soon as it’s fixed, thanks for that too.

By the way, I’ll restore the disks images from the mybookwiki site… so wish me luck, hopefully the drives won’t brick even more! :open_mouth:

Hello nfodiz!

Another brilliant guide from you! Just installed Transmission on My Book Live with the latest firmware version which just came out and it seems to work perfectly fine. The only thing that confused me that I can’t see the download folder TR-Downloads in /DataVolume/shares/Public If I understand correctly incomplete torrent files are  temporarily stored in /root/DataVolume/shares/Public/TR-Downloads When the file has finished downloading it is finally moved to /DataVolume/shares/Public/TR-Downloads

Thanks for great guide!

If I remember correctly, the folder wasn’t created until I downloaded Ubuntu 12.10 torrent to test it. I will look into this more later. It may be I need to change paths. I will be away until aroud noon EST today

Yep, my download is going directly to Public/TR-Downloads as a .part file
If you get an incomplete download I’m guessing it would create a TR-INCOMPLETE folder and move it there?

EDIT: You need to stop transmission and edit this line with nano
nano /root/.config/transmission-daemon/settings.json

“incomplete-dir-enabled”: false,
“incomplete-dir-enabled”: true,

Restart Transmission

It should then create a TR-INCOMPLETE folder in the Public folder for downloads and move the download to TR-Downloads when complete

Should I edit the guide to reflect this change?

Thanks for the finding nfo. Sure, you could edit it if you want, for posterity and other users finding it :slight_smile:

By the way, do you know where (and if) .torrent files are saved? For example, in uTorrent there is a special folder dedicated to keeping the .torrent files. Does Transmission do the same?

The torrent files are saved to /root/.config/transmission-daemon/torrents

Not sure if we can change that or not. I would prefer to have them somewhere on the DataVolume

Wouldn’t a symlink work? Replace that dir with a symlink to another pointing at the shares/xxx?

yep, was just gonna post that lol

Create a folder called torrents in your Public folder

SSH in and issue

rmdir /root/.config/transmission-daemon/torrents
ln -s /DataVolume/shares/Public/torrents /root/.config/transmission-daemon/torrents
1 Like

My question now is how do I save the .torrent file? Once I remove a file from the Transmission screen it removes the .torrent file as well.

I know it needs to stay there as long as I am seeding, but what about when I’m done seeding? Is there any reason to keep the .torrent file? If not, the whole symlink thing really isn’t necessary as the .torrent files wouldn’t build up and take up alot of space, correct?

Please excuse my noobiness on Torrents :slight_smile: