Brian's BitTorrent FAQ and Guide
Welcome! If you are new to BitTorrent, this site should help clear up a lot of commonly asked questions.
If you would like to contribute a question (and presumably the answer as well), please use the contact page and send me a note.
Disclaimer: I am a Windows user, and so by default the answers will tend to apply to Windows if not otherwise stated. I've tried to include as much Linux and Mac information as I can. If you have anything to add on those subjects, by all means please contribute.
This FAQ is also available in a different form at btfaq.com. That site uses the FAQ-o-Matic script, which splits the FAQ up into individual sections, whereas this version is mostly all in a single large file. However, this site is the one that I maintain, so the btfaq.com site is likely to be a bit behind. I'm still debating if I want to drop one of the two, as maintaining both is hard. Please let me know if you have opinions on this matter.
Table Of Contents
Use these links to jump to specific parts of this document, or just page down if you'd prefer to browse the whole thing.
- What is BitTorrent?
- How does BitTorrent compare to other forms of file transfer?
- Where can I download the BitTorrent program?
- What other BitTorrent-related utilities are out there?
- I've installed BitTorrent, now what? There's no program to run!
- I just installed BitTorrent but whenever I click on a link I just get a small file and nothing happens?
- What is this Mandrake thing I'm invited to download after BitTorrent?
- How do I uninstall BitTorrent?
- What do all these words mean? (seeding, uploading, share rating, etc.)
- Where can I go for support or to ask questions?
- What ports does BitTorrent use? Will it work with a firewall/NAT?
- Can I use a proxy server with BitTorrent?
- What if I need to use SOCKS to access the Internet?
- BitTorrent says I'm uploading, what files am I sharing? What's being sent?
- What happens if I cancel a download? How can I resume?
- Why is my downloaded file huge even though I only downloaded a small bit?
- Why does my hard drive go crazy at the beginning of a resumed download?
- What is seeding? How do I do it? Why should I leave the client open after it finishes downloading?
- I'm getting an error message, what does it mean?
- What can I do if I get a blue screen error, spontaneous reboot, or lockup?
- My internet connection drops, often during very fast downloads. What can I do?
- My download speed seems slow, what can I do to increase it?
- How can I get a list of the people to whom I'm connected?
- Is there a way to preview a file before it's finished?
- I just downloaded a file ending in .xyz, how do I open it?
- How do I change the command line parameters in Windows?
- How can I make Internet Explorer ask me if I want to save the torrent link rather than automatically opening the download GUI?
- What are the command line parameters for BitTorrent?
- How do I create a new torrent (share a file I have with others)?
- How do I run a tracker?
- How do I configure a web server for .torrent files?
- Is there a way to download or seed a number of files at once without launching a bunch of copies of the client?
- Useful BitTorrent Resources
What is BitTorrent?
BitTorrent is a protocol designed for transferring files. It is peer-to-peer in nature, as users connect to each other directly to send and receive portions of the file. However, there is a central server (called a tracker) which coordinates the action of all such peers. The tracker only manages connections, it does not have any knowledge of the contents of the files being distributed, and therefore a large number of users can be supported with relatively limited tracker bandwidth. The key philosophy of BitTorrent is that users should upload (transmit outbound) at the same time they are downloading (receiving inbound.) In this manner, network bandwidth is utilized as efficiently as possible. BitTorrent is designed to work better as the number of people interested in a certain file increases, in contrast to other file transfer protocols.
One analogy to describe this process might be to visualize a group of people sitting at a table. Each person at the table can both talk and listen to any other person at the table. These people are each trying to get a complete copy of a book. Person A announces that he has pages 1-10, 23, 42-50, and 75. Persons C, D, and E are each missing some of those pages that A has, and so they coordinate such that A gives them each copies of the pages he has that they are missing. Person B then announces that she has pages 11-22, 31-37, and 63-70. Persons A, D, and E tell B they would like some of her pages, so she gives them copies of the pages that she has. The process continues around the table until everyone has announced what they have (and hence what they are missing.) The people at the table coordinate to swap parts of this book until everyone has everything. There is also another person at the table, who we'll call 'S'. This person has a complete copy of the book, and so doesn't need anything sent to him. He responds with pages that no one else in the group has. At first, when everyone has just arrived, they all must talk to him to get their first set of pages. However, the people are smart enough to not all get the same pages from him. After a short while they all have most of the book amongst themselves, even if no one person has the whole thing. In this manner, this one person can share a book that he has with many other people, without having to give a full copy to everyone that's interested. He can instead give out different parts to different people, and they will be able to share it amongst themselves. This person who we've referred to as 'S' is called a seed in the terminology of BitTorrent. There's more about the various terms in a later section.
How does BitTorrent compare to other forms of file transfer?
The most common method by which files are transferred on the Internet is the client-server model. A central server sends the entire file to each client that requests it -- this is how both http and ftp work. The clients only speak to the server, and never to each other. The main advantages of this method are that it's simple to set up, and the files are usually always available since the servers tend to be dedicated to the task of serving, and are always on and connected to the Internet. However, this model has a significant problem with files that are large or very popular, or both. Namely, it takes a great deal of bandwidth and server resources to distribute such a file, since the server must transmit the entire file to each client. Perhaps you may have tried to download a demo of a new game just released, or CD images of a new Linux distribution, and found that all the servers report "too many users," or there is a long queue that you have to wait through. The concept of mirrors partially addresses this shortcoming by distributing the load across multiple servers. But it requires a lot of coordination and effort to set up an efficient network of mirrors, and it's usually only feasible for the busiest of sites.
Another method of transferring files has become popular recently: the peer-to-peer network, systems such as Kazaa, eDonkey, Gnutella, Direct Connect, etc. In most of these networks, ordinary Internet users trade files by directly connecting one-to-one. The advantage here is that files can be shared without having access to a proper server, and because of this there is little accountability for the contents of the files. Hence, these networks tend to be very popular for illicit files such as music, movies, pirated software, etc. Typically, a downloader receives a file from a single source, however the newest version of some clients allow downloading a single file from multiple sources for higher speeds. The problem discussed above of popular downloads is somewhat mitigated, because there's a greater chance that a popular file will be offered by a number of peers. The breadth of files available tends to be fairly good, though download speeds for obscure files tend to be low. Another common problem sometimes associated with these systems is the significant protocol overhead for passing search queries amongst the peers, and the number of peers that one can reach is often limited as a result. Partially downloaded files are usually not available to other peers, although some newer clients may offer this functionality. Availability is generally dependent on the goodwill of the users, to the extent that some of these networks have tried to enforce rules or restrictions regarding send/receive ratios.
Use of the Usenet binary newsgroups is yet another method of file distribution, one that is substantially different from the other methods. Files transferred over Usenet are often subject to miniscule windows of opportunity. Typical retention time of binary news servers are often as low as 24 hours, and having a posted file available for a week is considered a long time. However, the Usenet model is relatively efficient, in that the messages are passed around a large web of peers from one news server to another, and finally fanned out to the end user from there. Often the end user connects to a server provided by his or her ISP, resulting in further bandwidth savings. Usenet is also one of the more anonymous forms of file sharing, and it too is often used for illicit files of almost any nature. Due to the nature of NNTP, a file's popularity has little to do with its availability and hence downloads from Usenet tend to be quite fast regardless of content. The downsides of this method include a baroque set of rules and procedures, and requires a certain amount of effort and understanding from the user. Patience is often required to get a complete file due to the nature of splitting big files into a huge number of smaller posts. Finally, access to Usenet often must be purchased due to the extremely high volume of messages in the binary groups.
BitTorrent is closest to Usenet, in my opinion. It is best suited to newer files, of which a number of people have interest in. Obscure or older files tend to not be available. Perhaps as the software matures a more suitable means of keeping torrents seeded will emerge, but currently the client is quite resource-intensive, making it cumbersome to share a number of files. BitTorrent also deals well with files that are in high demand, especially compared to the other methods.
Where can I download the BitTorrent program?
There are several choices here, because unlike some peer to peer applications (such as Kazaa), the BitTorrent implementation is open source. This means that programmers are free to take the source code to the program and modify it, if they feel there is something they'd like to change. Here are the various clients of which I am aware:
- The Shad0w's experimental client - Recommended! This client incorporates the codebase of the official version as well as all the improvements of the experimental version, below. Additionally, there are some misc. bug fixes, improvements from the latest development CVS sources, a user preferences feature that remembers its settings, and more. I highly recommend this version! (alternate) (alternate 2)
- burst! - Recommended! This client features a smaller memory footprint compared to the others, due to replacing the wxPython GUI with one written in Delphi. The GUI lets you control multiple transfers from a single window, in addition to many other handy features such as a built-in TorrentSpy-like capability. It uses the same Python back-end as The Shad0w's client so you also get all of the recent developments included therein.
- burst plus! - A client which is based on the burst base and includes Spanish language support, as well as some other additions.
- SimpleBT - Another fork of the burst code base that features Chinese language support.
- ABC ("Another BitTorrent Client") - This is a relatively new client that includes many of the most recent changes in the experimental versions, as well as other added features such as controling multiple downloads from a single window, queueing, automatic seeding, etc. See also: Sourceforge page.
- Official client - This is the "official" client in that it is the latest supported version from Bram Cohen, architect of BitTorrent. It has the fewest features of all the clients, and releases are much more conservative than the experimental versions. Use this if you want stability but don't need any of the common features of the other clients, such as upload rate limiting. See also: (CVS view), Sourceforge page.
- Eike Frost's Experimental client - This is based on the official version, with patches to allow upload rate control and show statistics about the number of peers and seeds, among other things. New in the "-2" revision is support for displaying additional details about the peers that are connected, as well as some annoyance and bug fixes.
- Azureus - A very nice Java client that incorporates a full-featured GUI with extensive visualizations/statistics about the transfer. You will need the 1.4 JRE installed to run this, which can be obtained from this link. See also: Screen shots.
- Personal Torrent Collector (PTC) - This is an alternative GUI interface to the Python BitTorrent client. It has support for a number of interesting features, such as the ability to control the total bandwidth usage of a group of BitTorrent transfers, and RSS syndication for organizing torrent files. See also: SourceForge page.
- Shareaza - Newer public beta versions of this program now include BitTorrent support, in addition to the eDonkey2k and Gnutella protocols. However, the BitTorrent support may still have bugs, and some things (such as seeding a file) may not be as straightforward as with dedicated BitTorrent clients.
- NovaTorrent - I welcome reviews of this client. :-) I have not personally evaluated it yet.
- BitTorrent++ - This is an alternative to the official client. It supports extra functionality such as multiple downloads from a single GUI. Some people (myself included) have experienced major bugs with this program, so consider it unstable and use a different client unless you want to experiment. It appears to be abandoned and has not had any bug fixes in a long time. Therefore, since these bugs have the ability to adversely affect the performance of the BitTorrent swarm, so pleae do not use this client.
Mac OS X
- Official client v3.2.2a - This is the newest build of the client for OS X 10.2 (Jaguar.) It incorporates adjustments for upload rate control, as well as preferences for min/max port. Also included are some statistics (number of peers, total uploaded/downloaded) and support for Rendezvous (ability to find peers on the same side of the firewall and allow trackerless operation in the local domain.) Note: If you get the error message Download failed when you try to open a torrent with this version, try the following fix. Note: Apparently the new 3.2.2a version linked above fixes this glitch.)
- Move all installed copies/versions of bittorrent to the trash.
- Empty the trash.
- Open the BitTorrent_OSX_3.2.2a.dmg file again and copy the bittorrent program directly into the Applications folder.
- Official client v3.1 - Try this previous version of the client if you have difficulties with 3.2.2.
- 3.1 client with rate limiting patch - I have no additional details about this version.
- Sarwat Khan's OS X client - You may also want to try this alternative to the stock OS X build. See also: Screenshots
- Additionally, you should be able to run any of the various Python/wxPython based clients directly from the source code, but it may take a little bit of work. Here are the steps you should follow. Note, I am not a Mac user so I can't guarantee this will work, if someone could do it and send me the exact instructions, I'll post it here.
- Install Python. If you are running 10.2, download this bundle of Python 2.3a3 (see also: Home Page.) If you are running 10.1, there is a pre-packaged version here &emdash; please read the instructions on the home page, note that you cannot use stuffit with this archive. If you want more information on Python and Macs, try this link.
- Install wxPython. For 10.2 and Python 2.3, use this package (18.104.22.168). If you don't have Python 2.3, you may have to use a previous version, such as this one (22.214.171.124). This page at Sourceforge contains the latest as well as several previous versions.
- Install the source code for the BitTorrent client. The above section for Windows clients has links to source code.
- To start the GUI client, run "python btdownloadgui.py --responsefile file.torrent", where file.torrent is the torrent file which you have already downloaded. See also the section below on using the BitTorrent command line tools. Also, the command-line version of Python should be in your path for this to work. See this page for instructions on adding /usr/local/bin to your path.
Max OS 9
There is no official support for Mac OS 9. Further, wxPython does not seem to be ported to Mac OS 9, which means you cannot run the GUI versions. However, there is hope: you can still use BitTorrent, although it will take a little bit of extra work.
- Download and install MacPython. Please refer to this page for more information on Python and Macs.
- Download and unpack the source code to the client.
- Option-Drag the file btdownloadheadless.py from the source code to PythonInterpreter. Then click Set unix-like command line interpreter, and enter "--url http://server/file.torrent", except substitute the actual URL of the .torrent file. This is the same as the "download" link on whatever web page offered the torrent. Select Go and the file should begin downloading. If you get an error message that ends in ImportError: cannot import name getpid, use the following procedure:
- Find the file download.py from the source code (it's in the subfolder named BitTorrent) and open it with any plain-text editor.
- Search near line 23 for the following:
from os import getpid, path, makedirs
And remove the getpid word so that the line now reads:
from os import path, makedirs
- Search near line 177 for the following:
myid = (chr(0) * 12) + sha(repr(time()) + ' ' + str(getpid())).digest()[-8:]
and change it to the following:
myid = (chr(0) * 12) + sha(repr(time())).digest()[-8:]
- Save the file, and retry the above procedure for downloading, hopefully this time without the error message.
Most of the clients that are pure Python/wxPython (e.g. the official BitTorrent client, Eike Frost's experimental, Shad0w's experimental) will run under *BSD/Linux without problems. The source code tarballs for all of these clients are available at the home pages; see the links above. Clients written in other cross-platform languages such as Java (e.g. Azureus) should also work.
The biggest challenge to running a BT client under *BSD/Linux is getting the required libraries installed. At a minimum you will need Python 2.2 or greater. If you want to use the '-gui' versions of the clients you will also need wxWindows, which has Python bindings called wxPython. These should all be available as packages for your system. Your first step should be to consult your distribution's package system and get these prerequisites installed.
For Debian systems there is a package called bittorrent, which requires the python 2.2 package. You should also install the packages libwxgtk2.4-python and mime-support, if you plan to use the GUI version of the client.
If you are using Mandrake with Cooker, you might want to try the RPMs listed here.
Below are some general instructions for installing on a Unix/Linux system.
Install Python, preferably version 2.2. You can run "python -V" to see what version you currently have installed, if any. Also, you may have multiple versions of Python installed, so you might check /usr/bin for commands like python2.2 if plain python says it's version 1.x. If your distribution uses packages, use the search tool to find prepackaged versions before trying to manually install. Try here and here for Python RPMs.
Install wxPython if you want to use the GUI version. Note that this will require the GLib and GTK+ libraries, which are probably already on your system if you have GNOME installed. (Start here or search your distribution's package manager if you need GTK+.) You'll want to find the wxPython package corresponding to the version of Python which you have installed. For RPM systems such as RedHat and Mandrake, you might try the following wxPython RPMs corresponding to version 2.1, version 2.2, and version 2.3 of Python. More RPMs are available at the Sourceforge site, and you can also consult the wxPython download page. Please be aware that the RPMs linked above assume that Python is installed under /usr and that the Python libs are in /usr/lib/python2.x/. If this is not the case, you will probably need to tell the installer this information.
Finally, install the source tarball for the BT client to a directory of your choice. To integrate the client with your web browser, it will be necessary to associate files of type "application/x-bittorrent" with the BitTorrent client. You will need to add a line such as the following to your /etc/mailcap file:
application/x-bittorrent; /usr/local/bin/btdownloadgui.py --responsefile %s; test=test -n "$DISPLAY"
Note that you should substitute the correct path for the location in which you installed the source tarball. If don't have wxPython or would prefer to use one of the text-mode clients you can replace btdownloadgui.py with btdownloadcurses.py or btdownloadheadless.py. Also note there's an error in the INSTALL.unix.txt file, which is missing the --responsefile argument.
Other web browsers may have a different way of associating a command with a MIME-Type, so you may want to try looking at the preferences or init file for details.
Java Clients (platform independent)
- Azureus - A full-featured Java BitTorrent client with many enhancements and features.
- snark 0.4 - Snark is an implementation of BitTorrent protocol that uses gcj, the GNU Compiler for Java. In addition to acting as a regular client, Snark also includes an integrated .torrent file creator, micro-HTTPd server, and tracker. With Snark the user can share files with a single command, without the usual hassle of installing a tracker, finding a web server, posting the .torrent file, etc. Compilation requires gcj 3.3 or higher; alternatively you can find a precompiled bytecode version here. See the home page for more information.
- Effusion 0.3 - Experimental Java client with IRC integration. See home page for details and usage.
- JTorrent 0.1 - This is a line-by-line port of the 3.0.2 python client/tracker to Java. It currently installs and runs under Windows and Unix, and requires the JRE v1.4 or greater. To install, download the installer and have a look at the README file. See also the project status README. Note that this is alpha-level code, so be prepared for bugs.
What other BitTorrent-related utilities are out there?
- TorrentSpy - Recommended! An MS Windows tool which allows you to query a tracker about a specific torrent, view metadata info, check a file's hashes, etc. A new feature is the "create" tab for making torrent files to upload.
- maketorrent - A utility for creating torrent files, by the author of the burst! client. Version 1.x of MakeTorrent was a modified version of the Python 'completedir' program with extra features. Version 2.x is a complete rewrite in Delphi. Highly recommended!
- completedir 1.0.1 - A utility for creating new .torrent files, part of the official BitTorrent client package. This is packaged as a Windows installer, get the source code for use with other platforms.
- BNBT - This is a C++ implementation of a BitTorrent tracker. It should compile under most any Unix with GCC available, as well as MS Windows with MSVC (binaries included.) It includes all of the functionality of the reference Python tracker, but it also includes many enhancements: user accounts, improved web interface, statistics, etc. See also the TrackPak for a bundled BNBT and installer that's easy to use.
- Java BitTorrent Tools - A metafile viewer/editor, availability checker, and a basic tracker.
- BTChange 0.94a - For modifying tracker info in an existing .torrent file. Use this if the tracker changes, so that you don't have to recreate the file. See also: Sourceforge page.
- PHPBTTracker - a free (GPL) tracker implementation in PHP with a MySQL back-end, includes built-in statistics collection and reporting. See also: sample output.
- DumpTorrentCGI - Use this handy web page to parse and output the contents of a .torrent file (from either your local system or a link URL.) Use this to quickly determine a torrent's hash ID or which tracker is hosting it.
- trackerlyze.pl 1.11 - A free (GPL) Perl script that analyzes the logfile of a tracker and creates graphs and reports of the bandwidth used and number of peers/seeds. See also: Home page.
- libbt - A library implementation of the BitTorrent protocol in C. This project is still under development, and is not suitable to end-users at this point.
I've installed BitTorrent, now what? There's no program to run!
BitTorrent is not like other peer-to-peer applications (such as Winmx, Kazaa, Gnutella, etc.) in that it does not have its own "universe." Put another way, BT lives on top of the Web, which means that all of the searching/listing of available files is done on the web. When you find a file you want to download, you click on it and the BitTorrent client program will run and ask you where to put it, and then start downloading. See the links section for some starting points on the web if you're new.
I just installed BitTorrent but whenever I click on a link I just get a small file and nothing happens?
Try closing and restarting your web browser. When BitTorrent installs, it registers a new MIME-Type (application/x-bittorrent) and this change will not take effect until the next time the web browser is opened.
What is this Mandrake thing I'm invited to download after BitTorrent?
You don't need it. Mandrake is a full Linux distribution, a replacement Operating System. It is an example of the kind of thing that BitTorrent was designed to distribute -- large programs which, upon release, cause a flood of eager downloaders. In other words, it's not related to BitTorrent in any way, it's just something a lot of people might be interested in.
How do I uninstall BitTorrent?
Go to Add/Remove Programs in the Control Panel. There should exist an entry for BitTorrent. If it's not there, suspect an incorrect install. You can always reinstall the latest version and then uninstall it.
If you know what you are doing, you can manually remove BitTorrent by deleting the directory C:\Program Files\BitTorrent\ (substituting the actual location of your Program Files dir) and removing the following registry keys:
- HKEY_CLASSES_ROOT\MIME\Database\Content Type\application/x-bittorrent
Mac OS X
Simply drag the application to the trash. If you also wish to delete the preferences, trash the file ~/Library/Preferences/BitTorrent.plist as well.
What do all these words mean? (seeding, uploading, share rating, etc.)
Here is a brief list of words associated with BitTorrent and their meanings.
- Usually this refers to the small metadata file you receive from the web server (the one that ends in .torrent.) Metadata here means that the file contains information about the data you want to download, not the data itself. This is what is sent to your computer when you click on a download link on a website. You can also save the torrent file to your local system, and then click on it to open the BitTorrent download. This is useful if you want to be able to re-open the torrent later on without having to find the link again.
- In some uses, it can also refer to everything associated with a certain file available with BitTorrent. For example, someone might say "I downloaded that torrent" or "that server has a lot of good torrents", meaning there are lots of good files available via BitTorrent on that server.
- A peer is another computer on the internet that you connect to and transfer data. Generally a peer does not have the complete file, otherwise it would be called a seed. Some people also refer to peers as leeches, to distinguish them from those generous folks who have completed their download and continue to leave the client running and act as a seed.
- A computer that has a complete copy of a certain torrent. Once your client finishes downloading, it will remain open until you click the Finish button (or otherwise close it.) This is known as being a seed or seeding. You can also start a BT client with a complete file, and once BT has checked the file it will connect and seed the file to others. Generally, it's considered good manners to continue seeding a file after you have finished downloading, to help out others. Also, when a new torrent is posted to a tracker, someone must seed it in order for it to be available to others. Remember, the tracker doesn't know anything of the actual contents of a file, so it's important to follow through and seed a file if you upload the torrent to a tracker.
- When there are zero seeds for a given torrent (and not enough peers to have a distributed copy), then eventually all the peers will get stuck with an incomplete file, since no one in the swarm has the missing pieces. When this happens, someone with a complete file (a seed) must connect to the swarm so that those missing pieces can be transferred. This is called reseeding. Usually a request for a reseed comes with an implicit promise that the requester will leave his or her client open for some time period after finishing (to add longevity to the torrent) in return for the kind soul reseeding the file.
- The group of machines that are collectively connected for a particular file. For example, if you start a BitTorrent client and it tells you that you're connected to 10 peers and 3 seeds, then the swarm consists of you and those 13 other people.
- A server on the Internet that acts to coordinate the action of BitTorrent clients. When you open a torrent, your machine contacts the tracker and asks for a list of peers to contact. Periodically throughout the transfer, your machine will check in with the tracker, telling it how much you've downloaded and uploaded, how much you have left before finishing, and the state you're in (starting, finished download, stopping.) If a tracker is down and you try to open a torrent, you will be unable to connect. If a tracker goes down during a torrent (i.e., you have already connected at some point and are already talking to peers), you will be able to continue transferring with those peers, but no new peers will be able to contact you. Often tracker errors are temporary, so the best thing to do is just wait and leave the client open to continue trying.
- Receiving data FROM another computer.
- Sending data TO another computer.
- share rating
- If you are using the experimental client with the stats-patch, you will see a share rating displayed on the GUI panel. This is simply the ratio of your amount uploaded divided by your amount downloaded. The amounts used are for the current session only, not over the history of the file. If you achieve a share ratio of 1.0, that would mean you've uploaded as much as you've downloaded. The higher the number, the more you have contributed. If you see a share ratio of "oo", this means infinity, which will happen if you open a BT client with a complete file (i.e., you seed the file.) In this case you download nothing since you have the full file, and so anything you send will cause the ratio to reach infinity. Note: The share rating is just a number that is displayed for your convenience. It does not directly affect any aspect of the client at all. In general, out of courtesy to others you should strive to keep this ratio as high as possible, of course.
- distributed copies
- In some versions of the client, you will see the text "Connected to n seeds; also seeing n.nnn distributed copies." A seed is a machine with the complete file. However, the swarm can collectively have a complete copy (or copies) of the file, and that is what this is telling you. Referring again to the "people at a table" analogy, consider the case where the book has 10 pages, and person A has pp.1-5 and B has pp.6-10. Collectively, A and B have a complete copy of the book, even though no one person has the whole thing. In other words, even if there are no seeds, as long as there is at least one distributed copy of the file everyone can eventually get a complete file. Meditate on this, the Zen of BitTorrent, grasshopper.
- This is a term used in the description of the BitTorrent protocol. It refers to the state of an uploader, i.e. the thread that sends data to another peer. When a connection is choked, it means that the transmitter doesn't currently want to send anything on that link. A BT client signals that it's choked to other clients for a number of reasons, but the most common is that by default a client will only maintain --max_uploads active simultaneous uploads, the rest will be marked choked. (The default value is 4 and this is the same setting that experimental client GUI lets you adjust.) A connection can also be choked for other reasons, for example a peer downloading from a seed will mark his connection as choked since the seed is not interested in receiving anything. Note that since each connection is bidirectional and symmetrical, there are two choked flags for each connection, one for each Tx endpoint.
- Another term used in the protocol specification. This is the corollary to the choked flag, in that interested refers to the state of a downloader with respect to a connection. A downloader is marked as interested if the other end of the link has any pieces that the client wants, otherwise the connection is marked as not interested.
- If the client has not received anything after a certain period (default: 60 seconds), it marks a connection as snubbed, in that the peer on the other end has chosen not to send in a while. See the definition of choked for reasons why an uploader might mark a connection as choked. The real function of keeping track of this variable is to improve download speeds. Occasionally the client will find itself in a state where even though it is connected to many peers, it is choked by all of them. The client uses the snubbed flag in an attempt to prevent this situation. It notes that a peer with whom it would like to trade pieces with has not sent anything in a while, and rather than leaving it up to the optimistic choking to eventuall select that peer, it instead reserves one of its upload slots for sending to that peer. (Reference)
- optimistic unchoking
- Periodically, the client shakes up the list of uploaders and tries sending on different connections that were previously choked, and choking the connections it was just using. You can observe this action every 10 or 20 seconds or so, by watching the "Advanced" panel of one of the experimental clients.
Where can I go for support or to ask questions?
See the Links and Resources section of this page for mailing lists, web sites, forums, etc.
What ports does BitTorrent use? Will it work with a firewall/NAT?
The quick summary: You need to forward your ports if you have NAT in order to get the fastest speeds. This is probably the most common thing that people fail to do when using BitTorrent. Read on for more details of what all this entails, and if it's something that you need to do.
Prior to version 3.2, BitTorrent by default uses ports in the range of 6881-6889. As of 3.2 and later, the range has been extended to 6881-6999. (These are all TCP ports, BitTorrent does not use UDP.) The client starts with the lowest port in the range and sequentially tries higher ports until it can find one to which it can bind. This means that the first client you open will bind to 6881, the next to 6882, etc. Therefore, you only really need to open as many ports as simultaneous BitTorrent clients you would ever have open. For most people it's sufficient to open 6881-6889.
The port range that BitTorrent uses is configurable, see the section on command line parameters, specifically the --minport and --maxport parameters.
The trackers to which BitTorrent must connect usually are on port 6969, so the client must have outbound access on this port. Some trackers are on other ports, however.
BitTorrent will usually work fine in a NAT (network address translation) environment, since it can function with only outbound connections. Such environments generally include all situations where multiple computers share one publicly-visible IP address, most commonly: computers on a home network sharing a cable or xDSL connection. If you are unsure of whether you have NAT or not, then try this link which will try to determine if you are behind a NAT gateway.
However, you will get better speeds if you can accept incoming connections as well. To do this you must use the "port forwarding" feature of whatever is performing the NAT/gateway task. For example, if you have a cable or DSL connection and a router/switch/gateway/firewall, you will need to go into the configuration of this device and forward ports 6881-6889 to the local machine that will be using BitTorrent. If your device makes it hard to enter a range of ports (if you must enter each one separately), then you can just do the first 10 or so ports, or however many simultaneous clients you plan to ever have open. If more than one person behind such a gateway wishes to use BitTorrent, then each machine should use a different port range, and the gateway should be configured to forward each port range to the corresponding local machine.
If you have one of these broadband router/NAT devices (such as the Linksys BEFSR41, D-Link DI-701/704, Netgear RT311, SMC Barricade, 3Com Home Ethernet Gateway, etc.) you will usually need to enter the web configuration of the device. If you're not sure, try http://192.168.1.1 or sometimes http://192.168.0.1. If you can't figure it out, try the manual for the device -- they are often on the manufacturer's web site in PDF form. You can also try the forums at places like Broadband Reports or Practically Networked. To see an example of what you're looking for, this is a link to the Linksys BEFSR41 manual. Look at page 55, under the section "Port Range Forwarding."
If you are using Microsoft's ICS (Internet Connection Sharing), this article on mapping ports might be useful.
If you are using a software firewall, then you must also enable incoming connections to be answered by the BitTorrent client program. Note that Windows XP includes a primitive firewall ("Internet Connection Firewall" or ICF) which you may have to configure for BitTorrent. Here are the directions for opening ports in the Windows XP firewall:
- Open the 'Network Connections' folder (click Start, then Control Panel, then Network and Internet Connections, then Network Connections.)
- Click the shared connection or the Internet connection that is protected by Internet Connection Firewall, and then, under Tasks, click Change settings of this connection.
- On the Advanced tab, click Settings.
- For each port you wish to forward, (i.e. 6881, 6882, ... 6889) do the following:
- On the Services tab, click Add and enter all of the following information:
- In Description of service, type an easily recognized name for the service, such as "BitTorrent".
- In Name or IP address of the computer hosting this service on your network, enter 127.0.0.1 (this means "the local machine.")
- In both External and Internal port number for this service, enter the port number, e.g. 6881.
- Select TCP, then OK.
See this link or this link for more information about the XP firewall.
If you are running another type of software firewall (such as Zone Alarm Pro, Norton Firewall, McAfee Firewall, BlackICE Defender, etc.), you may have to do something similar to allow inbound access on ports 688x to the BitTorrent client (usually btdownloadgui.exe.)
For example, in Zone Alarm Pro, in the Program Listings, click on the program's name (btdownloadgui.exe) and then click the Options button and then enter the ports to use. If you're having trouble connecting, you might try giving BitTorrent access to all ports.
To open ports in the Mac OS X firewall, do the following:
- Open System Preferences.
- Click Sharing.
- Select the Firewall tab.
- Click the New... button.
- Click the popup menu in the dialog that appears, and choose Other....
- In the Port Number, Range, or Series field, enter 6881-6999.
- In the Name field, enter BitTorrent (or any other identifying string.)
- Click OK.
Can I use a proxy server with BitTorrent?
First, note that there are two types of connections that the BitTorrent program must make:
- Outbound HTTP connections to the tracker, usually on port 6969.
- Inbound and outbound connections to the peer machines, usually on port 6881 and up.
A web proxy can only be used for the first type of connection, since the second type is not HTTP. Theoretically, you could use the HTTP CONNECT command to tunnel them through an HTTP proxy, but this would require additional code support in the client. There is a possible workaround for this scenario, however; see the final point below.
That having been said, here is how to configure an HTTP proxy for the tracker connections:
- If the proxy does not require authorization, the system-wide proxy configuration should work. For Windows, open the Control Panel select Internet Options, click on the Connections tab, select your connection and click Settings... (or Lan Settings... if you have a direct connection.) Make sure the Use a proxy server option is selected and enter the proxy's address and port.
- If your proxy requires basic authorization, set the http_proxy environment variable to http://username:password@hostname:port, where username and password are your login and password, and hostname:port is the address and port of the proxy server. If you don't know how to set environment variables, there are instructions for Windows on this page by Mike Ravkine (krypt).
- If your proxy requires NTLM authorization (a Microsoft-proprietary scheme), you may have to use a third party program. Fortunately there is a utility called NTLM Authorization Proxy Server. It is a program you run on your local machine that acts as a proxy for your proxy. In other words, it takes the (unauthenticated) proxy requests from the application (BitTorrent) and forwards them on to your organization's proxy, adding the necessary NTLM authorization. It is written in Python and available as source, so you must install Python on your computer before running it. Refer to the home page for more information.
- If you are in a firewalled environment where NO outbound connections are allowed except those through an HTTP proxy, you will have difficulty using BitTorrent. One method which might work is as follows: The desproxy program can serve as a SOCKS 4 or 5 server than tunnels requests through the proxy server. Then use SocksCap to "socksify" (intercept the network calls and redirect them to the SOCKS server) the BitTorrent program. See below for a few notes about SocksCap. Note: If you get this method to work, please report your steps and results so that I can improve this part of the FAQ. Thanks.
What if I need to use SOCKS to access the Internet?
Look into a program called SocksCap. It can be used to socksify any normal program. The complication here is that you have to give SocksCap a command line to run, and the btdownloadgui command line will be different for each torrent. One suggestion would be to setup a command line in SocksCap of btdownloadgui.exe --responsefile "c:\downloads\file.torrent". (Substitute any suitable directory in the command.) Now, when you want to open a torrent, save it as "file.torrent" in "c:\downloads" (or whatever you used) and then run the command in SocksCap.
BitTorrent says I'm uploading, what files am I sharing? What's being sent?
Don't worry. When you are downloading a particular torrent, you are also uploading that torrent at the same time. The parts of the file(s) that you have already downloaded are uploaded to other peers. This is normal, and it's how the protocol works. There is no "shared directory" setting as with other peer-to-peer applications. If you have a certain file (or files) that you want to make available to others, you must first create a .torrent file and upload it to a server, and then seed the file. See the section creating a new torrent for the detailed procedure.
What happens if I cancel a download? How can I resume?
BitTorrent fully supports stopping and later resuming a partial download. You don't have to do anything special. If you cancel a download before it's finished, the partial download remains on your hard drive. To resume the transfer, just click on the same torrent link again and when asked where to save the file, select the same location as last time. BitTorrent will see that the file exists and check it to see how much has already been downloaded. It will then pick up where it left off the last time. See also the section regarding file size.
Note: To resume properly, you must make the same selection when prompted as you made the first time. For torrents consisting of a single file, this is rather straight-forward: simply select the file. However, torrents that consist of a folder of multiple files can be a bit more confusing. To resume, you must select the folder that contains the BitTorrent folder.
Here's an example of resuming a folder-type torrent. Let's suppose that you downloaded a torrent called SomeCoolBand, and selected to put it in the folder Downloads. So your directory structure resembles something like \Downloads\SomeCoolBand\file1, \Downloads\SomeCoolBand\file2, and so on. The important part of this example is that should you resume this transfer, when asked to select a destination folder you must select the \Downloads folder and NOT \Downloads\SomeCoolBand. It may seem a bit counter-intuitive, but just remember to always make the same selection as the original choice. When you first started the transfer there was no SomeCoolBand folder; you instead selected \Downloads and BT created the SomeCoolBand folder.
Why is my downloaded file huge even though I only downloaded a small bit?
When BitTorrent starts, it allocates space for the entire file(s). That is what you see at startup as the progress bar moves across the screen and the disk drive goes crazy. The reason it does this is because it downloads the file in pieces, and those pieces arrive in an arbitrary order. Unlike http or ftp, which download the file from start to finish, BT downloads it in random order.
Why does my hard drive go crazy at the beginning of a resumed download?
When you open a torrent and give BitTorrent a filename/directory that already exists, it must check the file to see how much of it is useful data and how much is junk. (Recall that BT allocates space for the entire file when you first start a torrent.) To do this it must read the entire contents of the file, and generate what's known as a hash for each piece of the file. A hash is a cryptographic function that creates a small summary or digest of a large amount of data. BitTorrent uses the SHA hash function to determine which parts of the file are good and which are bad.
What is seeding? How do I do it? Why should I leave the client open after it finishes downloading?
First, you may want to review the answers to the question on terminology. A seed is a client which has a complete file. Seeding is the process of connecting to a torrent when you have a complete file. There are two ways to do this:
- ...by leaving your client open after the download completes. Once you have the entire file you become a seed, and the BitTorrent client remains connected to the swarm, sending to other users until you close it.
- ...by clicking on a torrent link (or opening a saved .torrent file) and selecting a filename of a file that has already completed. BitTorrent will check over the file and realize that it's already complete, and continue to connect to the tracker and serve as a seed.
It's generally considered a good idea to leave your client open as long as possible, since it helps other users. Some communities have guidelines on when it's permissible to disconnect, typically after the ratio of bytes received to bytes sent reaches 1:1, or 24 hours after the download completes. Please be nice, and do what you can to contribute to other users.
I'm getting an error message, what does it mean?
The best thing to do in general if you're having connectivity problems is just wait. Often trackers are unavailable or slow to respond, usually due to high load or sometimes DDoS attacks. Some torrents can take a while to get up to speed, so patience is a virtue. That being said, below are some common error messages with explanations and what to do about them.
Note: Often you will get a red error message when there's a problem connecting to the tracker, but the client will keep on retrying. This is normal. It can result in the download progressing normally and successfully, even with an error message displayed on the screen. Make sure to note the time-stamp on the error, and if it's more than 5 to 10 minutes old, you can ignore it. The newer versions of the experimental client "age away" the error messages after 5 minutes to deal with this situation.
- Problem getting response info - [Errno 2] No such file or directory: "C:\\Documents and Sett..."
- For some reason, Internet Explorer sometimes doesn't save the torrent file in the Temporary Internet Files directory properly. The solution seems to be to right click on the link and choose Save As..., and save the torrent file to disk, and then double-click the file to launch the client. Clearing the IE cache seems to help if this problem is recurring. It seems to be related to torrent files with square brackets (']' and '[') in the filename.
- Too many args - 0 max.
- This error in indicative of a bad command line. See the section on setting the command line and ensure that the arguments to the BitTorrent program include --responsefile "%1".
- A piece failed hash check, re-downloading it
- This is a benign message, you can safely ignore it. It means that you received a piece of the file that didn't check out as being correct, so it will be downloaded again. Probable cause of this might be someone incorrectly using the "skip hash check" option.
- bad data from tracker -
- Usually you can ignore this, it seems to happen when the tracker is overloaded or otherwise flaky.
- Problem connecting to tracker - timeout exceeded
- Problem connecting to tracker - HTTP Error 503: Connect failed
- Problem connecting to tracker - [Errno socket error] (10061, "Connection refused")
- Problem connecting to tracker - (111, 'Connection refused')
- There was a problem contacting the tracker. Trackers tend to be heavily loaded, and connections sometimes fail. The best thing to do is just be patient and leave the client open. If you find you're getting this a lot, you can try increasing the HTTP request timeout by adding the parameter "--http_timeout 120" (the default is 60, unit is seconds.) See the section on changing the command line if you need help doing this.
- Problem connecting to tracker - HTTP Error 400: Not Authorized
- This indicates that the administrators of this tracker are not allowing it to be used for this torrent. Some trackers will only track torrents that are also posted in their forums/website, for example. Usually this indicates a stale torrent -- try going to the web site associated with the tracker and see if you can find an updated torrent.
- Problem connecting to tracker - HTTP Error 404: Not Found
- Probably a stale torrent. Try to find a new link to the torrent.
- Problem connecting to tracker - HTTP Error 407: Proxy Authentication Required
- You may need to configure a username and password for your proxy server setting in order to contact the tracker. See this section for details.
What can I do if I get a blue screen error, spontaneous reboot, or lockup?
Some network cards and DSL modems have buggy drivers. Common symptoms include a blue screen (with a DRIVER_IRQL_NOT_LESS_OR_EQUAL error) or a spontaneous reboot. Here are some common culprits:
- Linksys LNE100TX model 5, Linksys NC100, Skymaster SK1207E, Planex FNW-9803-T, or any other network card based on the AN983B chipset by ADMtek, sometimes also sold under the no-name "Asound" or "Fast" brands. Note that this includes some motherboards' built-in Ethernet controllers, such as: MSI (Microstar) MS-6378, DFI NS70-EL & AZ30-EL, USI PM-845, Fujitsu D1451. The solution seems to be to install one of the following drivers from ADMtek: Windows XP, Windows ME/2000, Windows 98. These are drivers from the chipset manufacturer and are Microsoft certified. Use these drivers in place of any other driver for those cards, including the latest version from Linksys.
- Netgear FA311 - Try this version (1.30) of the drivers from Netgear.
- Netgear FA312 - Seems to have the same problem as the FA311, but try this version (1.8) of the drivers instead. (Note that this driver should work with both the FA311 and FA312, so also try it if you have the FA311 and the above driver doesn't work.)
- Alcatel Speed Touch USB DSL modem - Install these drivers.
If your network interface card (NIC) or DSL/cable modem were not listed above, then check with the manufacturer's website and make sure you have the latest drivers.
My internet connection drops, often during very fast downloads. What can I do?
This issue is still unresolved, but my guess is that it's due to buggy firmware in the xDSL/cable modem or router. Reports on the mailing list seem to indicate that transfers complete without issue if the download rates are low. It seems that some people have come up with some very creative workarounds to deal with this, such as stopping the transfer if it gets too fast and restarting.
Limiting the download rate is much harder than limiting the upload rate, because one can only really control the rate at which packets leave the system. The rate at which they arrive is determined by the originating systems and any routers, gateways, or traffic shapers along the path. However, there are several ways that software can achieve the effect of limiting the download rate -- they amount to basically dropping some packets if they're coming in too fast, which will cause the TCP/IP stack of the sender to back off somewhat.
For those having these sorts of problems, here are the methods of which I'm aware to limit the download rate:
- For Windows, the Netlimiter program claims to be able to limit both the download and upload rate of individual programs or connections. The program is still in beta-testing, and it shows. My initial trial of it was not positive: it reported vastly wrong figures of its estimation of the BitTorrent program upload rate, its sockets wrapper broke Apache and rsync-over-ssh on my cygwin system, and its installer was ill- behaved. Finally, it is not free software, in both the "free speech" and "free beer" senses of the word. Not recommended at all.
- For Linux, *BSD, and Solaris, there is trickle, which is a userspace traffic shaper that uses the dynamic library preload facility. This has the advantages of requiring neither root privileges nor a recompiled kernel, and a simple command line e.g. trickle -u 20 -d 80 btdownloadgui.py --responsefile "%1".
- For Linux, you can try using the QoS features of the kernel to set an ingress filter. A recent mailing list post gives an example script that uses the tc (traffic control) command. Note that for this to work you will need root access and you may have to recompile the kernel (for netlink sockets and QoS.) See this page for information about configuring the kernel, this page about the ingress queueing discipline, and the Linux Advanced Routing & Traffic Control HOWTO as well as the Advanced Networking Overview for more information. The BSDs surely have traffic shaping as well, if anyone would like to contribute some links I will update this section.
- For Mac OS X (10.2.x only), Carrafix claims the capability to limit both upload and download rate for each port.
- Finally, another option is to limit the number of connections that BitTorrent makes. The number of connections does not directly correlate with download speed, however, since a client may be connected to a number of slow peers or just one or two very fast peers. The command line parameters that affect the download rate are: (see this section for details on modifying the command line in Windows)
So, you might try --min_peers 5 --max_initiate 10 --request_backlog 3 (for example) and see if it helps alleviate the sporadic disconnects or other related problems.
- --min_peers n
- determines the minimum number of peers that the BT client should be connected to before it will stop asking the tracker for more. The default is 20.
- --max_initiate n
- determines when the client should stop initiating new peer connections. The default is 40. Note: I believe, but am not positive, that this only affects outgoing, i.e. initiated connections. In other words the client will still continue to accept new connections past the number specified here, but will not initiate any further outbound connections.
- --request_backlog n
- determines the number of download requests to keep queued, defaults to 5. Setting this to a lower value should decrease the overall download efficiency and speed.
Note: Please let me know of any successes or failures at using these methods to cure the disconnect issue. I have no personal experience with the issue so I don't know what's worth trying.
My download speed seems slow, what can I do to increase it?
Here are some general guidelines to getting fast connections with BitTorrent.
- Give it time! Be patient! This is the most important suggestion for most speed-related problems. Sometimes it can take a while to contact a slow tracker. The beginning of a download will be especially slow since you don't have any pieces of the file to share with others. Recently, trackers have been quite overloaded and it's common to get timeout-related errors. Leave the client open and eventually it will connect.
- If your network uses NAT, make sure the BitTorrent ports are forwarded to the machine that runs the client. This will allow inbound connections from peers. Otherwise, only outbound connections will succeed. See this section of the FAQ for more details.
- If you have a software firewall, make sure the BitTorrent client has the proper access.
- Make sure the torrent is "live." Use an experimental build of the client that shows the number of peers and seeds to which you are connected. Or, check the status of the torrent (using the website's statistics or TorrentSpy) and make sure there are other people connected. To get decent speed, a torrent must have at least a few other people connected. The more peers, the faster the transfer will be in general.
- Sometimes, limiting your upload rate will increase your download rate. This is especially true for asymmetric connections such as cable and ADSL, where the outbound bandwidth is much smaller than the inbound bandwidth. If you are seeing very high upload rates and low download rates, this is probably the case. The reason this happens is due to the nature of TCP/IP -- every packet received must be acknowledged with a small outbound packet. If the outbound link is saturated with BitTorrent data, the latency of these TCP/IP ACKs will rise, causing poor efficiency.
Use a client that allows limiting of the upload rate, and set it to around 80% of the maximum rate observed. It can be tempting to limit the rate to very small values. On very healthy torrents, this will not adversely affect the download rate. However, when there are fewer peers you will generally get higher download rates by allowing the highest upload rate possible before saturating the link -- the (approx.) 80% sweet spot.
To limit the upload rate with Mac OS X, try Carrafix. You'll want to set an individual cap for each BitTorrent port (6881 and up.)
- Ensure that your network allows the outgoing connections necessary for BitTorrent to work. Some networks (usually at schools, workplaces, etc.) are firewalled and all connections must go through a proxy server. In other cases, only well-known ports are available. There are too many different situations to list every possible scenario, but if you are trying to download a torrent that you know to be "live" yet the client still reports zero peers and seeds, then this is probably the case. See also the question about proxy settings.
How can I get a list of the people to whom I'm connected?
Try the command "netstat -an" from a command prompt. This should work for Windows, Linux/Unix, and Mac OS X. It will give you a list of all the network connections on your machine. Generally, you are only interested in connections where the state is ESTABLISHED. Also, connections with the local address of "127.0.0.1" are usually not interesting, as they indicate local-only connections.
For Windows, there is a much better tool for this that gives a more informative output with a GUI instead of a command line interface. Download TCPView, a free program. It will show an output similar to the netstat command, but it will also list the program name and PID (process ID) of which program "owns" each connection. Try the Show Unconnected Endpoints button to hide connections that are not in a state of ESTABLISHED. The Resolve Addresses command will perform a reverse-DNS lookup, which will display the hostname of the machines to which you are connected (if available), instead of their numeric IP addresses. TCPView even has an option to close a specific connection, if you right click on the desired row and choose Close Connection.
Using either netstat or TCPView, you can figure out which connections are inbound and which are outbound. Those with a Local Address ending in ":6881" through ":6999" (or any port number in the port range that you have specified) are inbound connections. The rest are probably outbound, especially if it has a Remote Address that ends in ":6881" through ":6999".
In the latest build of the experimental client (3.2.1b-2), if you click on the Advanced button you will get a screen showing details about each of the machines you are connected to for the current torrent.
Is there a way to preview a file before it's finished?
There is no good way to do this. Because the BitTorrent protocol downloads pieces in arbitrary order, there is no guarantee that the part of the file necessary for previewing (usually the beginning of the file) is present. To further complicate matters, some torrents are packaged as an archive, which would be quite difficult to extract until it's complete.
Still, if you want to attempt to view the file periodically, you may eventually get lucky. First, make sure the file you are downloading is not an archive. If it's a ZIP or RAR (R00, R01, ...) file, forget it. Next, you'll have to interrupt the download, since BitTorrent locks the file in an exclusive mode until the file is complete. You can now try opening the file in whatever application is meant to be used to view it, but don't be surprised if very strange things happen. Finally, you'll want to resume the transfer, unless you've determined that you no longer want the file.
I just downloaded a file ending in .xyz, how do I open it?
Below is a list of common file types you will encounter with BitTorrent, and how to handle them.
|.R00, .R01, .Rnn
||If you find a directory with a bunch of files ending in .Rnn, it's a RAR archive split into multiple parts. This is commonly done for posting to Usenet newsgroups. Open the .RAR file and extract the contents with WinRAR (Windows) or UnRarX (OS X.) Either program should automatically see all the parts if they are in the same directory.|
||These are comics in a compressed archive. For Windows, download the free program CDisplay. Or simply rename them (CBR to RAR, CBZ to ZIP) and open with your usual archive program, such as WinRAR or WinZIP. For OS X, try Book Image Viewer after extracting with unrar or unzip.|
|.PAR, .P01, .Pnn
||These are parity files, used to reconstruct any missing parts of the archive. Ordinarily you will not have to do anything with them -- they are extraneous unless a part is missing or bad, in which case the torrent's creator should have fixed the archive before distributing the torrent. If WinRAR does give you a message about a missing or corrupt part, then get SmartPAR (Windows) and open the .PAR file. The program will then check all the files and recreate any missing or damaged parts. For OS X, UnRarX should also process the PAR file.|
||Files that end in .NFO are plain text files that often contain very useful information about the files you have just downloaded. Always read the NFO file if you are having a problem! Unfortunately, the .NFO extention also has another meaning to Windows, so sometimes when you try to open these files you will get an error from MS System Information about a corrupt file. If this is the case you will also probably see the file listed with a type of "MSInfo File" or something similar. You should open the NFO file in Notepad, or any plain-text editor. More info here.|
||Simple File Verification file - used to verify the integrity of a set of files, this is a text file containing file names and typically CRC32 checksums. For Windows, try a program such as QuickSFV or fsum to verify the integrity. Mac OS X users should try MacSFV. Normally these files should not be necessary with BitTorrent, since the BT protocol has its own error checking method (on top of TCP's checksumming.) If you find some file that doesn't match the checksum in its SFV file, blame the torrent's creator, since he or she should have fixed it before creating and distributing the torrent.|
|.BIN, .CUE, .ISO
||These are images of a CD. If the file is a movie, they are most likely VCDs or SVCDs. There are several ways to deal with these. For Windows:|
For OS X:
- Use a program such as Nero to burn the images to a CDR and then view them in your standalone DVD player, or your DVD drive with your DVD player software. Some instructions for burning BIN files with common software applications can be found at this link.
- If you know it's a VCD/SVCD, you can use a tool such as VCDGear to extract the MPEG data. VCDs will be MPEG-1 type files, and SVCDs will be MPEG-2 type files. Usually the easiest way to view these is with a DVD player such as PowerDVD which can read input from a file.
- Use a program such as Daemon Tools or Alcohol 120% to 'mount' the file as a virtual disk. Then you can use PowerDVD or whatever application is appropriate to view the data from that drive.
- Use FireStarter FX to burn (S)VCDs from CUE or BIN files.
- Play (S)VCD files, and most others, with VLC.
How do I change the command line parameters in Windows?
The command line that Windows sends to the BitTorrent program is stored in the registry, with the file-type association for TORRENT files. It can be changed as follows:
- Go to Folder Options in the Control Panel.
- Select the File Types tab at the top of the dialog.
- Wait a moment for Windows to load the list, then scroll down and select the TORRENT extension. Tip: press the 't' key to jump to entries starting with t. Note: The file extension column might be truncated to just TORR...
- Click the Advanced button.
- In the list of Actions, select open, probably at the top of the list, then click the Edit button.
- The contents of Application used to perform action is the command line. By default it should be:
"C:\Program Files\BitTorrent\btdownloadgui.exe" --responsefile "%1"
Note the double-quotes around %1, and your Program Files directory might be different. To add more command line parameters, simply change this string. For example, to change the port range, you might use:
"C:\Program Files\BitTorrent\btdownloadgui.exe" --minport 10000 --maxport 10100 --responsefile "%1"
See this section of the FAQ for a list of all the available command line arguments and their defaults.
- Finish by clicking OK to close all the dialogs.
Also note that if you are using TorrentSpy to launch BitTorrent, the command line used is contained in the TorrentSpy configuration. Use the System tab in TorrentSpy to modify the command line parameters used in this case.
How can I make Internet Explorer ask me if I want to save the torrent link rather than automatically opening the download GUI?
Some people like to save the .TORRENT files to disk, so that it's easy to restart transfers without finding the original link. It's possible to make Internet Explorer ask you if you want to save the file or open it in place, rather than automatically running the GUI. To do this, follow steps 1 through 4 under the section above about changing the command line parameters. On the dialog now on your screen you should see a check box labeled Confirm open after download. Put a check in this box and IE will ask you what you want to do when you click on a torrent link. Use this as an alternative if you find yourself always right clicking and choosing Save As....
What are the command line parameters for BitTorrent?
I have moved this section to a seperate page as this one is getting quite large. Click Here for the list of command line parameters.
How do I create a new torrent (share a file I have with others)?
Sharing files that you have with others is relatively easy with BitTorrent, but a little extra work is required compared to marking a directory as "shared" as with some other file sharing applications. There are essentially three elements necessary to sharing a file with BitTorrent:
- The tracker, which coordinates connections among the peers. Bandwidth required is very moderate compared to the size of the files being shared.
- The web server, which stores and serves the .torrent file. This is usually a quite small file, and is only requested once by each peer before initiating the transfer. The web server also serves to index and organize the torrents, since there is no built-in search capability in the BitTorrent protocol -- existing web techniques are instead used.
- At least one seeder. This is the only element of the three that contains any of the file's actual contents. The seeder is almost always an end-user's desktop machine, rather than a dedicated server machine.
In earlier periods of BitTorrent, the process was somewhat more difficult because frequently you had to run your own tracker (and possibly web server) in addition to the seeder. Recently, however, torrent communities have sprouted which take care of many of the details of running a tracker and distributing the .torrent metadata file. For most purposes, using one of these communities is the quickest and easiest way to share data.
For the purposes of this part of the FAQ, we will assume you already have a tracker and web server, or access to them. Most of the sites listed in the links section run trackers and web servers that you are welcome to use. The rule of thumb here is to never create a torrent for a tracker which you do not have permission to use. In most cases that simply means that if you intend to use a tracker, you should also post your .torrent file to the website associated with the tracker, so that the whole community can benefit.
If you still desire to run a tracker or web server, see the following questions on running a tracker and configuring a web server.
Below are the steps to create and distribute the .torrent file, and begin the seeding.
- Decide what you want to share. A torrent can contain either a single file, or a directory of many files. This is often quite convenient, since it avoids the step of creating an archive (.zip, .rar, etc.) if you need to store multiple files. For example, if you are sharing a 2-CD movie, put both of the files in a directory and create a torrent for that, rather than zipping the files and then creating a torrent for the single archive file.
IMPORTANT NOTE! Despite what I would call common sense and courtesy, I see people doing stupid things at this point all the time! For example, if the file you are sharing was originally posted to Usenet and came in a number of parts (.RAR, .R00, .R01), do not put those parts in an archive and then create a torrent of that. Most media files are already compressed, and rar-ing or zip-ing them just adds an additional step for everyone that receives the files. And for the love of $DEITY, do not include the parity files in your torrent! In summary, if the end product you are sharing is an .AVI file, create a torrent for that. This makes it easier for people to hold on to the original form of the torrent, and this tends to lead to it being shared longer. If you distribute your AVI file as an RAR containing 33 parts, which itself contains a ZIP, then people will trudge through the processing of the files to get the AVI, and then most likely delete the original since it's in a form that is useless to them. Therefore, they cannot (re-)seed the torrent since they've lost the original format. Finally, you do your part to put an end to the neverending stream of "How do I open .R00 files?" questions. (end opinionated rant)
- Run maketorrent. (See this section of the FAQ if you haven't installed it.) If you are sharing a single file, click the (file) button, otherwise click the (dir) button. In either case a file dialog will appear, and you should select the file/directory that you wish to share.
- Enter the tracker's announce url in the space provided, or use the drop-down list to select from one of a common list of trackers. Remember, if you use a site's tracker when creating a .torrent file, plan to upload/post the file to that community. You can also add a comment, but it's optional.
- Select the piece size, or just accept the default value of (auto). In general, the smaller the piece size, the more efficient the BitTorrent download will be, but will result in a larger .torrent file. 256 kB seems to be the most common piece size in use these days, but you can experiment with other settings if you want. Avoid very large piece sizes for small files; likewise avoid small piece sizes for very large files.
- Click create torrent to begin the process of creating the file. You can then select if you want to create a single .torrent for all the files in the directory, or a number of separate .torrents. Most of the time you want a single .torrent for the whole folder, unless you know what you're doing. When finished, you should find a newly created .torrent file in the same directory as the file/directory you selected to share.
- Upload this .torrent file to a web server. Usually this means going to the web page of the site whose tracker you used and clicking the "Upload torrent" link. The procedure varies from site to site, but it's usually always explained in a FAQ link or forum posting. If you are running your own web server (and have configured it appropriately) then upload the file to your server's public web space, or whatever method you use to put files on your server.
- Finally, you must seed the file. Until this step, nothing but metadata has been transferred. Seeding is necessary to actually transmit your file to others. There are several ways to do this, but the simplest is to use your ordinary BitTorrent client just as you would with any other file. Navigate to the page on the web server where your .torrent is posted, click the link, and when the BitTorrent client starts be sure to select the same file/ directory that you used in maketorrent in step 2 above. The client should check the files and verify that they are complete, and then connect to the tracker and begin seeding. There are several important points about this step:
- Be sure the machine that you are seeding from can accept incoming network connections on the ports BitTorrent is using. Usually this means configuring port forwarding if you are in a NAT environment. See this section for details.
- If you are running the tracker on the same machine as the seeding client, and you are in a NAT environment, you must add the "--ip address" parameter to the client command line, where address is the publicly-visible IP address of the machine. For example, your machine might be on an internal network, sharing a DSL or cable modem connection behind a router/gateway. In this case it probably has an internal (unroutable) IP address such as 192.168.x.x or 10.x.x.x. It is necessary to tell the tracker your true public IP address instead of this internal address. If you're not sure what that is, try a site such as this one. For details on how to add or change command line parameters in Windows, see see this section of the FAQ. Finally, remember that in a lot of cases you will have a dynamic IP address (one that is assigned to you each time you connect), and if this is true you will have to ensure that you are using the correct one each time. Again, this process applies ONLY if you are seeding and running a tracker on the same machine, and you have a NAT setup.
- Make sure to leave the seeding client open long enough. The exact amount of time depends on a number of factors. If the file you are seeding is very popular, then you can often seed just long enough to get several distributed copies into the swarm, and then disconnect. If the torrent is sufficiently "healthy," the seeder leaving will have no adverse effects, since there are enough distributed copies of the file to support the swarm. If the file has fewer interests, you will generally have to seed longer. A good policy is to check back later on the tracker's stats page or in the forums and make sure that no one has been left stranded.
- If you want to seed a number of different torrents, it is often cumbersome to open a number of copies of the GUI client. In this situation the btlaunchmany.py version of the client is very useful. See this section below for details on its use.
How do I run a tracker?
There are several options for running a tracker, as explained below. However before going to the trouble of installing and running your own tracker, you should first consider whether you actually need to run a tracker in the first place. There are many public BitTorrent trackers out there at the moment, see the links section for a good list. Unless you have some compelling reason why you want to run your own tracker, it's probably best to use someone else's. Hosting a tracker on a workstation-type machine with a dynamic IP address is possible but can be very tricky. In short, if you're not sure whether you need to run a tracker or not, then you don't need to.
Before starting on your tracker, make sure you've read and understand the section on making and uploading a torrent, especially the part about the need for the --ip parameter for seeding machines on the same side of a NAT gateway as the tracker.
Below are the common ways to run a tracker:
- Run the Python tracker. This is relatively straightforward:
- Install Python if you don't already have it on your system. Windows users should follow this link to download the Python 2.2.3 installer from python.org. If you use Linux (or BSD, OS X) you will want to consult your distribution's package management system. There are some details on this in the section above.
- Get the Python source code of BitTorrent. Note: A lot of changes have been made to the source since 3.2.1 was released, I strongly recommend that you get the latest sources from CVS if you want to run the tracker. To check out the source from CVS, issue the following command, assuming that you have a CVS client installed:
cvs -d:pserver:email@example.com:/cvsroot/bittorrent co BitTorrent
This will create a BitTorrent directory under the current working directory. Note: Sourceforge's CVS server has been very flaky recently, presumably due to overload. If you find that you cannot get the above command to work, i.e. you get "Connection reset by peer" or some sort of timeout error, you can try this alternative server:
cvs -d:pserver:firstname.lastname@example.org:80/cvsroot/bittorrent co BitTorrent
If you need help installing a CVS client on your system, consult the Sourceforge documentation for Windows users here as well as the general CVS documentation here. Note that you can also access the sources through WebCVS.
- Page through the README.txt file for general instructions on how the tracker works. Essentially, you change to the directory that contains the bttrack.py file and issue a command such as:
python bttrack.py --port 6969 --dfile dstate --logfile tracker.log
Note that if this command is successful you won't see anything on the screen at all -- the tracker will remain open until you kill it, so you may want to put the command in a batch file for easy startup. To check your tracker's operation, connect to the machine running the tracker, i.e. by loading "http://machine-name:6969/" into your browser. If successfull you should see a status page in your browser.
Your tracker's announce URL will be "http://machine-name:6969/announce". This is what should be entered in the appropriate field when creating a .torrent for your tracker.
- You should review the command line parameters and make any changes as appropriate. Note that the "--logfile" parameter is new in CVS and not present in 3.2.1. If you must use the 3.2.1 sources, you will want to redirect the log messages on stdout to a file, e.g. by appending ">> tracker.log" to your command line. You can also run "python bttrack.py to get a list of command line parameters. Some parameters that might be of interest are:
See the command line section of the FAQ for a complete list of command line parameters.
- --nat_check n
- If 1 (default), don't allow users behind NAT gateways use the tracker. You probably want to set this to 0 for a general-access site.
- --allowed_dir dir
- Use this to restrict the files which your tracker will track. This parameter specifies a directory name, and it will only track torrents that exist in this directory. If this parameter is present you must somehow place the .torrent file in the specified directory before the tracker will accept it.
- --show_names n
- If set to 1, the tracker will show filenames of torrents that it knows about in its allowed_dir, instead of just showing info_hash's on its status page.
- As an alternative to the Python tracker, you can try BNBT which is a tracker written in C++. It is slightly easier to install since it comes with precompiled binaries for Windows, and is relatively easy to build with g++ under Linux/OS X. BNBT has more advanced stats-pages, but its configuration is very similar to the Python tracker. Refer to the home page for downloads and manuals.
- You can also try the TrackPack, which combined BNBT with an easy to use installer for Windows. With this combination you can have a tracker up and running very quickly. You can read more about the TrackPak and how to use it at Trinity's site and the forums at Filesoup.com.
- If you have a web server capable of PHP and MySQL, there are a couple of free (GPL) tracker implementations. One is PHPBTTracker, another is bytemonsoon.com. Both of these solutions run integrate the tracker with the web server, and offer quite extensive stats. Refer to the PHP source for installation details.
How do I configure a web server for .torrent files?
You must associate files ending in .torrent with the Content-Type application/x-bittorrent. For Apache, you should add the line:
AddType application/x-bittorrent .torrent
to your httpd.conf configuration file. If you cannot modify the main httpd.conf file (such as in the case of a shared or virtual hosting scenario), you can also put the above AddType directive in a .htaccess file. This presumes that the server's administrator has enabled this ability with the AllowOverride FileInfo directive. Also note that settings in a .htaccess file only apply to the directory containing the file, so make sure this is the directory that will contain the .torrent files.
Alternatively, you can add the line:
to your mime.types file, which is used if the TypesConfig directive is present in httpd.conf.
To add MIME types with Microsoft's IIS web server:
- Right-click the Web site and choose Properties.
- Select the HTTP Headers tab.
- In the MIME Map box, click File Types, and then click New Type.
- Enter the extension ".torrent" and the MIME type "application/x-bittorrent" in the appropriate boxes.
- Select OK to close all the dialogs.
If you cannot configure the application/x-bittorrent type, you could place the .torrent files in an archive (.zip, .rar, etc.) and serve that instead. Doing so will forfeit the ability to click on a torrent link and automatically launch the BitTorrent client, however. The user must manually unpack the .torrent file and then launch it to start the transfer.
Is there a way to download or seed a number of files at once without launching a bunch of copies of the client?
section under construction
Useful BitTorrent Resources
Major BitTorrent Sites
BitTorrent sites come and go often. In the past I had attempted to keep a set of links in this section, but this requires constant maintenance. Therefore, I will simply point you to the three main BT link sites out there:
Most every BitTorrent site out there is bound to be listed on one or more of the above sites, so if you're looking for interesting things try those links. If you're looking for a particular thing and want to search for it, you can try one of the following: NovaSearch, watchen.tv, and torrent-episodes.cjb.net. But be aware that things offered with BitTorrent tend to be short-lived and so take all search results with a grain of salt. Any listing that's older than a few weeks is likely to be useless.
Another good source for torrents are the various Forums, such as: Filesoup.com, Digital Update, Bytemonsoon.net (completely unrelated to the old bytemonsoon.com), p2pforums.com, btrocks.com, and probably many others.
Finally, there are a number of web sites that offering 100% legitimate BitTorrent files: BitTorrent Files for Slashdot Effect Victims, TradeFriendly torrents at etree.org, Colorado Tapers community site, Phishhook, Musicfreaks
More BitTorrent Help
There are a handful of BitTorrent-related mailing lists maintained on Yahoo Groups. There are surely many more BitTorrent related YahooGroups than what I've listed below, so you may want to search for "torrent" or "bittorrent" at the yahoogroups.com site and see what's out there. To join these lists, either click on the link and use the web interface, or send an email message to email@example.com where group is the name of the group. Please ensure that your post is on-topic and sent to the correct list.
- BitTorrentTalk - A general list for anything related to BitTorrent, such as finding sites or help with converting/viewing/burning downloaded files, etc.
- torrent-talk - General discussion area for users of BitTorrent software. Post here if you are looking for links, specific files, reseed requests, help opening/converting a file, etc.
- Bittorrentfiles - For exchanging links to files, etc.
- BitTorrent - This list is strictly for development of the BitTorrent software. Post bug reports and questions on the BitTorrent protocol, etc. Do NOT ask about where to find files or how to open them, convert movies, play multimedia, etc. Note: I have assembled an archive of all posts to this Yahoo-group in mbox fomat, click here to download it. This file is approx 1.4MB in size (compressed with bzip2) and contains approx. 3300 emails. The messages are in standard mbox format which can be imported by most all email applications, and the Yahoo-groups advertisements and other clutter has been removed. Use this archive if you wish to search or browse the messages offline. (This archive made with the yahoo2mbox tool and some perl scripts to clean up the Subject lines.)
- BitTorrent_help - Post requests for technical support for using the BitTorrent software.
- btports - A group for the technical discussion of the development of BitTorrent clients in other languages or platforms.
A more complete list of torrent-related channels can be found on this page as well as this page. Additionally you can search for torrent channels using netsplit.de and searchirc.com.
If you have a web site or other resource not listed here, send it to me and I'd be happy to add it to the list.