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
Code language: JavaScript (javascript)

Installing screen and rTorrent. If you are a Tmux user you can go ahead and use it instead of the screen.

sudo apt-get install screen rtorrent
Code language: JavaScript (javascript)

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 = /thr/location/of/the/downloads/folder/ # 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 = #ip = rakshasa.no # The ip address the listening socket and outgoing connections is # bound to. #bind = #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 mincore status, # before forcing. Overworked systems might need lower values to get a # decent hash checking rate. #hash_max_tries = 5
Code language: Bash (bash)

You can edit the `.rtorrent.rc as per your needs.`

Now we can start using rTorrent.

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.

Darryl Dias

I’m Darryl. I’m a 3D Artist, Programmer and Linux enthusiast. On this site I share my insights, tips and tricks, tutorials, methods and best practices.

Join the Conversation


  1. You present a 70-line .rc file, and say “You can edit the .rtorrent.rc as per your needs.” with no guidance whatsoever as to what chaes might be suitable.

Leave a comment

Your email address will not be published. Required fields are marked *