rtorrent too slow? try this!


Rtorrent is by far my favourite command line app and absolute favourite bittorrent client. However, its not like transmission or utorrent, there is some manual configuration required to get it working how you want.

and for me, the most important thing is transfer speeds.

Its something i read on countless forums – “I down load a torrent with transmission, and i get full speed. I try the same torrent with rtorrent and its really slow, or wont even connect”

So you opened ports 6881-6889 on your router and still no joy?

I had this problem too, and it is easier than you might think to fix. The first place you need to look is:

~/.rtorrent.rc

If that file doesnt exist, you need to create it your self using a text editor – just paste the below text into it.

# 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 = ./# 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 = ./

# 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

# Stop torrents when reaching upload ratio in percent,
# when also reaching total upload in bytes, or when
# reaching final upload ratio in percent.
# example: stop at ratio 2.0 with at least 200 MB uploaded, or else ratio 20.0
#schedule = ratio,60,60,”stop_on_ratio=200,200M,2000″

# 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 = 6881-6889

# Start opening ports at a random position within the port range.
#port_random = no

# 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 = no

# 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 = 10

Thats just the default .rtorrent.rc, and nearly all options are commented out, so at the moment this RC does very little. Anyway, i'm not hear to explain the this whole thing, if thats what you need, i'll point you back kmandla's post.

The only thing we are going to change in this file is where it says

# Port range to use for listening.
# port_range = 6881-6889

All we are going to do is remove the '#' from the port_range line, which will force rtorrent to use the ports we have specified. make sure ports you want to use are specified - if you are unsure, use the same as I have.

Ok, now save the file. The next time you run rtorrent wit will be using these ports only. thats the same as the ports you forwarded from your router yes? but you still have slow/no connections?

This is because of iptables - the firewall that comes built in to most linux distos. To look at your iptables output, type:

sudo iptables -L

It should look something like this:

Chain INPUT (policy ACCEPT)
target prot opt source destination

Chain FORWARD (policy ACCEPT)
target prot opt source destination

Chain OUTPUT (policy ACCEPT)
target prot opt source destination

You'll need to enter two commands to set iptables to allow the specified port range (port 6881-6889)

Enter:

sudo iptables -A INPUT -p tcp --destination-port 6881:6889 -j ACCEPT
sudo iptables -A OUTPUT -p tcp --source-port 6881:6889 -j ACCEPT

And thats it. To summarise, we:
- Ensured we had a working .rtorrent.rc file in the home directory
- Edited the .rtorrent.rc file to force rtorrent to use certain ports
- Set iptables to permit the specified port range

About these ads
4 comments
  1. This is just what i was looking for. Thanks for sharring.

  2. nogui said:

    You’re welcome =) I have actually still had problems on one of my machines after following all of these steps – if I figure out how to fix that, I will update the post!

  3. i’m sorry that didn’t work. I’ll let you know if i find anything but on my machine transmission stills flies and rtorrent is still too slow

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

Follow

Get every new post delivered to your Inbox.

%d bloggers like this: