Buy me a Coffee


rTorrent on Raspberry Pi

3 min read

rTorrent is a command line ncurses BitTorrent client written in C++, based on the libTorrent. rTorrent is very lightweight and has a very clean command line user interface. rTorrent is also one of the most lightweight BitTorrent clients used by most of the BitTorrent distribution servers. rTorrent is a really good BitTorrent client for Raspberry Pi. rTorrent is lighter and faster compared to BitTorrent clients like Transmission, Deluge and takes lesser CPU resource.

rTorrent performs better on the tests I have done on my Raspberry Pi. The Raspberry Pi I have been using is a Model B.

Let’s get started

Updating your local repository database.

``` sudo apt-get update ```
Installing screen and rTorrent. If you are a Tmux user you can go ahead and use it instead of screen.
``` sudo apt-get install screen rtorrent ```
Now create a `rtorrent.rc` file.
``` touch ~/.rtorrent.rc ```
Open the file in nano and add the example config below.
``` nano ~/.rtorrent.rc ```
Here is an example config of `.rtorrent.rc`.
``` # This is an example resource file for rTorrent. Copy to # ~/.rtorrent.rc and enable/modify the options as needed. Remember to # uncomment the options you wish to enable.

Maximum and minimum number of peers to connect to per torrent.

min_peers = 40

max_peers = 100

Same as above but for seeding completed torrents (-1 = same as downloading)

min_peers_seed = 10

max_peers_seed = 50

Maximum number of simultanious uploads per torrent.

max_uploads = 15

Global upload and download rate in KiB. "0" for unlimited.

download_rate = 0

upload_rate = 0

Default directory to save the downloaded torrents.

directory = /the/place/where/the/torrent/will/be/stored/

Default session directory. Make sure you don't run multiple instance

of rtorrent using the same session directory. Perhaps using a

relative path?

session = ./session

Watch a directory for new torrents, and stop those that have been

deleted.

schedule = watch_directory,5,5,load_start=./watch/*.torrent

schedule = untied_directory,5,5,stop_untied=

Close torrents when diskspace is low.

schedule = low_diskspace,5,60,close_low_diskspace=100M

The ip address reported to the tracker.

ip = 127.0.0.1

ip = rakshasa.no

The ip address the listening socket and outgoing connections is

bound to.

bind = 127.0.0.1

bind = rakshasa.no

Port range to use for listening.

port_range = 6890-6999

Start opening ports at a random position within the port range.

port_random = yes

Check hash for finished torrents. Might be usefull until the bug is

fixed that causes lack of diskspace not to be properly reported.

check_hash = yes

Set whetever the client should try to connect to UDP trackers.

use_udp_trackers = yes

Alternative calls to bind and ip that should handle dynamic ip's.

schedule = ip_tick,0,1800,ip=rakshasa

schedule = bind_tick,0,1800,bind=rakshasa

Encryption options, set to none (default) or any combination of the following:

allow_incoming, try_outgoing, require, require_RC4, enable_retry, prefer_plaintext

The example value allows incoming encrypted connections, starts unencrypted

outgoing connections but retries with encryption if they fail, preferring

plaintext to RC4 encryption after the encrypted handshake

encryption = allow_incoming,enable_retry,prefer_plaintext

Enable DHT support for trackerless torrents or when all trackers are down.

May be set to "disable" (completely disable DHT), "off" (do not start DHT),

"auto" (start and stop DHT as needed), or "on" (start DHT immediately).

The default is "off". For DHT to work, a session directory must be defined.

dht = auto

UDP port to use for DHT.

dht_port = 6881

Enable peer exchange (for torrents not marked private)

peer_exchange = yes

Do not modify the following parameters unless you know what you're doing.

Hash read-ahead controls how many MB to request the kernel to read

ahead. If the value is too low the disk may not be fully utilized,

while if too high the kernel might not be able to keep the read

pages in memory thus end up trashing.

hash_read_ahead = 10

Interval between attempts to check the hash, in milliseconds.

hash_interval = 100

Number of attempts to check the hash while using the maincore status,

before forcing. Overworked systems might need lower values to get a

decent hash checking rate.

hash_max_tries = 5


</div>You can edit the `<code class="highlighter-rouge">.rtorrent.rc` as per your needs.

Now we can start using rTorrent.

<div class="highlighter-rouge">```
screen rtorrent  
You can detach to the rtorrent screen by typing CTRL + A + D.

To connect back to the rTorrent screen.

`screen -r `
To add a BitTorrent simply hit ENTER

Now you have you rTorrent running on your Raspberry Pi. If you have any question feel free to leave a comment below.