Installing Transmission-daemon in Raspberry Pi running Raspbian

Transmission is a tool to download files using torrent service. Transmission-daemon is basically the same, but without user interface. We install it in always-on server (like Raspberry Pi), then access it from different computers. This guide assumes you already have Raspbian OS installed in your Raspberry Pi with LAN setting properly established. My Raspbian image file is dated 9 Feb 2013. Different version of Raspbian might produce different behavior.

transmissionBefore installing new application or service in Raspbian, make sure to always type this into terminal :
sudo apt-get update
sudo apt-get upgrade
sudo apt-get dist-upgrade

If you’re installation is not the latest version, it might take a while as Raspbian will download the latest files from Internet.

Now, open terminal again and install Transmission-daemon:
sudo apt-get install transmission-daemon

Ideally, we need two folders to contain Transmission files:
mkdir /home/pi/progress (for incomplete downloads)
mkdir /home/pi/completed (for completed downloads)

We need to take care about some permission stuff:
sudo usermod -a -G debian-transmission pi (change “pi” with your Raspberry Pi username if necessary)
chgrp debian-transmission /home/pi/progress
chgrp debian-transmission /home/pi/completed
chmod 770 /home/pi/progress
chmod 770 /home/pi/completed

If you wish to combine Raspberry Pi with an existing NAS server for downloading torrents, there’s a chance you will get error message related to permission. There are various ways to solve it, but I shall go with the easiest one: adding your Raspbian username into debian-transmission group (in my case “pi”) then change ownership of your mounted folders using the following commands:
sudo service transmission-daemon stop (stopping Transmisssion)
sudo adduser pi debian-transmission (add pi or your username to debian-transmission group)
sudo nano /etc/init.d/transmission-daemon (change startup user for transmission, change user name to your username: USER=pi)
sudo chown pi -R /var/lib/transmission-daemon/info/ (change owner rights to transmission configuration files to you)
sudo chown pi -R /home/pi/progress (change owner right of download folder to your user)
sudo chown pi -R /home/pi/completed (change owner right of download folder to your user)
sudo chown pi -R /etc/transmission-daemon/settings.json (change owner right of configuration file to your user)
sudo service transmission-daemon start (start Transmission again)

Next, we need to take care of some settings:
sudo nano /etc/transmission-daemon/settings.json

You shall see many setting lines. Feel free to explore those settings one by one, but for now let’s focus only on few important settings to get started.

1. Find rpc-username and rpc-password, change the values. This is supposed to be different from your Raspbian username.
2. Find rpc-whitelist and add the IP addresses of your other computers there (computers you plan to access Transmission from). For my case, I simply add 192.168.1.*
3. Find download-dir and change it into /home/pi/completed or whatever the name of the folder you have prepared before.
4. Find incomplete-dir and change it into /home/pi/progress or whatever the name of the folder you have prepared before.
5. Find watch-dir and change it into /home/pi/torrentwatch or whatever the name of the folder you have prepared before.

Save the settings.json file and force transmission-daemon to load it:
sudo service transmission-daemon reload

Transmission-daemon saves configuration file when it closes. So using restart parameter instead of reload will get the previous settings revert back.
If you change the password, then type sudo service transmission-daemon reload followed by sudo service transmission-daemon restart.

Now you need to know the IP address of your Raspberry Pi.
ifconfig eth0 (if you’re using network cable)
ifconfig wlan0 (if you’re using WiFi)

You might also want to make your Raspberry Pi having a static IP address:
sudo nano /etc/network/interfaces

Then change this line:
iface eth0 inet dhcp
iface eth0 inet static
and add the following lines below the iface line:
address (change this with your desired address for the Pi)
Of course, you should adjust the lines according to your network settings.

All done. You might want to restart your Raspberry Pi, then try the connection from another machine.

In the other machine, open web browser and type:

For example:

You will be asked username and password, which you need to answer with the value of rpc-username and rpc-password.


Also read: my other posts about Raspberry Pi


By |2014-11-19T12:05:14+00:0012 Apr 2013|Guide, Technology|16 Comments


  1. Gee 26 Jan 2017 at 8:09 pm - Reply

    After a couple of days stumbling around with other instructions trying to get transmission to work I stumbled upon this and it’s got it up and running, no problem. Thank you very much for taking the time to share your skills with the world, you have solved my headaches (which were largely permission problems I think).

  2. Bart 08 Oct 2016 at 8:10 pm - Reply

    I have added watch dir setting to the end of settings.json as:

    “watch-dir”: “/media/Pi/Dropbox/Torrent_files/”,
    “watch-dir-enabled”: true,

    unfortunately this stops transmission from starting with:

    Job for transmission.service failed. See ‘systemctl status transmission.service’ and ‘journalctl -xn’ for details

    Removing watch dir from setting solves the problem and transmission starts.

    Any ideas how to resolve this problem, I’d really like to be able to use watch dir function.

    Transmission is running on osmc on raspberry Pi 3; I tried setting permissions to the Torrent_files foldes as described above, but it did not work

  3. Femin Dharamshi 07 Jan 2016 at 9:26 pm - Reply

    will this method work on new raspbian jessie ?

  4. Juggern4ut 22 Nov 2014 at 2:35 am - Reply

    Whenever I try to download a torrent, it downloads about 500KB and then stops saying:
    “Error: Permission denied (Path/to/the/file.ext)

    I set all the permission preferences but I still can’t seem to get it to work.
    Any idea what to do?

  5. Augustus 05 Sep 2014 at 10:31 am - Reply

    I have learn a few good stuff here. Certainly price bookmarking for revisiting.
    I surprise how a lot effort you set to make any such magnificent informative web site.

  6. Kintaro 03 Jul 2014 at 6:26 pm - Reply

    and if you need and updated version of transmission without build it from the source you can use this instructions:

  7. 18 Feb 2014 at 11:04 am - Reply

    Remarkable issues here. I am very glad to see your post.
    Thanks a lot and I am having a look ahead to touch you. Will you kindly drop me a e-mail?

  8. raspberries 16 Feb 2014 at 9:24 pm - Reply

    Hey there! Would you mind if I share your blog with my myspace group?

    There’s a lot of people that I think would really enjoy your
    content. Please let me know. Thank you

  9. Cobby 31 Dec 2013 at 9:11 pm - Reply

    Hi would you mind sharing which blog platform you’re working with?
    I’m planning to start my own blog in the near future but I’m having a tough
    time selecting between BlogEngine/Wordpress/B2evolution and Drupal.
    The reason I ask is because your design and style seems different then most
    blogs and I’m looking for something unique.
    P.S Apologies for being off-topic but I had to ask!

  10. chris 13 Sep 2013 at 6:51 am - Reply

    thanks guys, it all works perfectly well.

  11. Seba 16 Jul 2013 at 6:41 am - Reply

    Hi Robert and thanks for this post.

    I´ve installed transmission and transmission-daemon before find you post but I have a question.
    When I installed the daemon I never can start the web-interface, only when I set the daemon user as root. Then I follow your instructions about permissions but still the same problem. If I use the pi user daemon start but web-interface no.
    Do you have any idea where could be the problem?

  12. RobMan 17 Jun 2013 at 7:16 am - Reply

    Got it up and running on my Rpi too.

    Important is to set a comma at the end of the line directly above the watch entry and none after that:

    “utp-enabled”: true

    “utp-enabled”: true,
    “watch-dir”: “/media//USB-250//torrentwatch/”,
    “watch-dir-enabled”: true

    GREAT! That watching is the only advantage deluge had for me and that’s gone now. ;-)

  13. chris 11 Jun 2013 at 7:59 am - Reply

    It looks like you have also need to add permission to the following folder:

    chgrp debian-transmission /home/pi/torrentwatch
    chmod 770 /home/pi/torrentwatch

    otherwise, the torrentwatch function won’t work. It’s very frustrating!!!

    if you have problem using “” to get access transmission via web gui, please use “” to access it.

  14. graham 29 May 2013 at 5:51 pm - Reply

    Correction on watchdir syntax (leading and trailing bonus slashes):

    “watch-dir”: “\/blah//torrentwatch\/”,
    “watch-dir-enabled”: true

  15. graham 29 May 2013 at 2:19 pm - Reply

    Thanks very much for the post, worked well and i’m up and running here.

    As others may benefit, I had to add:

    “watch-dir”: “/blah//torrentwatch/”,
    “watch-dir-enabled”: true

    to my settings.json at the bottom.. it wasn’t already there. seems to work ok.

    I also had to make sure the daemon was stopped while editing the settings. I tried your method 2-3 times and the file kept getting overwritten so i’m not sure why that is (Your explanation and logic of the overwriting isn’t lost on me, it just seems to keep happening unless the service is stopped).

    For what it’s worth at the end I can also browse http://raspberrypi:9091 from my desktop as a shorter way to access transmission. just another way to accomplish the same.

Leave A Comment

This site uses Akismet to reduce spam. Learn how your comment data is processed.