NSLU2-Linux
view · edit · print · history

Enhanced CTorrent is a modified version of CTorrent, maintained at http://www.rahul.net/dholmes/ctorrent/.

The original CTorrent (http://ctorrent.sourceforge.net) has not been updated for a while and is now officially discontinued. This new version is the result of an effort to fix some problems in the existing code and to add new features. It is also meant to keep the original goals of being a lightweight implementation of a BitTorrent client. It is a good command line client for the slug, low on memory and cpu requirements.

The Enhanced CTorrent package for Unslung is built from the patched sources for version dnh3.2, available at http://www.rahul.net/dholmes/ctorrent/. The new and enhanced options are described at the change log.

Installation

If you want to install it, just update the list of packages available for ipkg and then install it:

ipkg update
ipkg install enhanced-ctorrent

The executable file is called enhanced-ctorrent, in order to prevent a conflict with the original ctorrent package.

Features

Highlights of the enhanced client include:

  • Support for large files (>2GB) and large torrents (>255 files)
  • Strategic selection of pieces to request for download
  • Continuous queueing of download requests, tuned based on latency and throughput for each peer
  • Improved download performance, including parallel requests in initial and endgame modes
  • Improved bandwidth regulation
  • Improved compatibility with other peers
  • Performance optimization and bug fixes
  • An interface for monitoring and managing multiple clients

Release Notes

According to the change log for version dnh3.1, it is important to set the upload bandwidth limit. Quoting straight from the author:

You should always specify an upload bandwidth limit. With the most recent changes in the program, this "option" is not just a limit to stay under, but an advisement to the client as well. Enhanced CTorrent now tunes its upload performance based on the limit. Without a limit, the client has no idea how much bandwidth your line can support and so cannot perform this tuning. It is now possible to achieve better upload rates with a limit than without. Due to the tit-for-tat nature of bittorrent, this can also indirectly increase your download performance.

Version dnh3.1 uses an improved version of the CTCS protocol, so it is recommended that you use CTCS version 1.4.

Usage

There are new command line options and some runtime commands that can be used while the program is running. Please check the User's Guide for complete instructions.

General Options:

-h/-H           Show this message
-x              Decode metainfo (torrent) file only, don't download
-c              Check pieces only, don't download
-v              Verbose output (for debugging)

Download Options:

-e int          Exit while seed <int> hours later (default 72 hours)
-E num          Exit after seeding to <num> ratio (UL:DL)
-i ip           Listen for connections on specific IP address (default all/any)
-p port         Listen port (default 2706 -> 2106)
-s filename     Download ("save as") to a different file or directory
-C cache_size   Cache size, unit MB (default 16MB)
-f              Force saved bitfield or seed mode (skip initial hash check)
-b filename     Specify bitfield save file (default is torrent+".bf")
-M max_peers    Max peers count (default 100)
-m min_peers    Min peers count (default 1)
-z slice_size   Download slice/block size, unit KB (default 16, max 128)
-n file_list    Specify file number(s) to download
-D rate         Max bandwidth down (unit KB/s)
-U rate         Max bandwidth up (unit KB/s)
-P peer_id      Set Peer ID prefix (default "-CD0302-")
-A user_agent   Set User-Agent header (default "Enhanced-CTorrent/dnh3.2")
-S host:port    Use CTCS server at host:port
-a              Preallocate files on disk
-T              Convert foreign filenames to printable text
-X command      Run command upon download completion ("user exit")
-d              Daemon mode (fork to background)

Make metainfo (torrent) file options:

-t              Create a new torrent file
-u url          Tracker's url
-l piece_len    Piece length (default 262144)
-s filename     Specify metainfo file name

Status line

The status line that is output by the client is different form the original CTorrent. This is the format of the new status line, according to the documentation:

       / 0/33/110 [672/672/672] 0MB,1130MB | 0,20K/s | 0,0K E:0,31 P:4/10
       - - -- ---  --- --- ---  --- ------   - --      - -    - --   ----
       A B  C  D    E   F   G    H     I     J  K      L M    N  O     P

A: Ticker; this character changes to indicate that the client is running.
B: Number of seeders (complete peers) to which you are connected.
C: Number of leechers (incomplete peers) to which you are connected.
D: Total number of peers in the swarm, as last reported by the tracker.
E: Number of pieces of the torrent that you have completed.
F: Total number of pieces in the torrent.
G: Number of pieces currently available from you and your connected peers.
H: Total amount of data you have downloaded.
I: Total amount of data you have uploaded.
J: Your current total download rate (20 second average).
K: Your current total upload rate (20 second average).
L: Amount of data downloaded since the last status line update.
M: Amount of data uploaded since the last status line update.
N: Number of tracker connection errors.
O: Number of successful tracker connections.
P: Completion ratio of current file (when -n is used)

Additional information such as tracker connection status may be displayed at the end of the status line when appropriate.

CTorrent Control Server

CTorrent Control Server (CTCS) is an interface for monitoring and managing Enhanced CTorrent clients, also developed by Daniel Holmes. It can manage allocation of bandwidth, provide status information, and allow changes to the running configuration of each client. Communication with CTorrent is via a TCP connection, and the user interface is a web browser.

There is an Optware package available for CTCS. If you want to know more about it, please check its wiki page.

If you want to keep your torrent downloads running in the background, you can start them with nohup, send their output to a log file and use CTCS to monitor their progress. You will need the coreutils package that provides nohup so, if you haven't installed it before, you can do it using ipkg:

ipkg install coreutils

Now go to the directory where your .torrent files are and start Enhanced CTorrent with nohup, using the -S parameter to keep it in touch with CTCS. Here is an example:

nohup enhanced-ctorrent -S localhost:2780 [other options]] Some.torrent 2>logfile.txt >&2 </dev/null &

In this case, "2>logfile.txt >&2" redirects both standard output and standard error to a file named logfile.txt (this is the correct syntax for ash and busybox), and "</dev/null" prevents the program from getting keyboard input from the terminal.

An alternative to nohup is using the -d option on the command line, i.e:

enhanced-ctorrent -S localhost:2780 -d [other options]] Some.torrent

Known issues

These are the known issues, as of June 21, 2006:

  • Enhanced CTorrent has only been tested on the NSLU2, although it builds correctly on some other platforms. Testers are welcomed.
  • Enhanced CTorrent is not available for the DS101, due to the fact that it depends on libstdc++, which is currently marked as broken for that platform. It is also not available for the following platforms, due to build problems still being worked on: DS101J, WL500G.
Page last modified on March 22, 2008, at 09:16 AM