mldonkey : Frequently Asked Questions
What is mldonkey ?
Formerly, mldonkey was a Linux client for the eDonkey network, built from a reverse-engineered version of the protocol. Now, it is also able to connect to multiple networks (BitTorrent, DirectConnect, Gnutella, Soulseek, etc).
MLdonkey runs on most Unix clones: Linux (x86, alpha, sparc), Mac OS X, Solaris, Free/OpenBSD, etc, and Windows as well.
It runs as a daemon, in the background, downloading and sharing files, 24 hours a day. You can interact with your mldonkey daemon, either locally or remotely, by a telnet interface, a WEB interface or a GTK GUI. Other GUIs have also been created for mldonkey.
Why use Objective-Caml to program mldonkey ?
Most programmers associate functional languages with languages theory, lambda-calculus, recursivity, and non-mutable variables, ie the most boring lectures at university.
Fortunately, Objective-Caml is not only a functional language: it also
provides many other programming paradigms, such as imperative constructs
for loops, mutable variables, records),
object-oriented constructs, and a powerful C-interface. Moreover, its
native-code compiler carefully checks your program for typing errors (no
more segfaults !), and produces a very efficient code (even faster than C
on many examples).
If you don't believe me, check the following links:
- A comparison between many languages]
- Two Objective Caml programs won first and second prizes at the ICFP'2000 programming contest, to write a ray-tracer program.
- An Objective Caml program ranks first at the ICFP'1999 programming contest.
Where can I find the latest MLdonkey documentation ?
Usually you would prefer this FAQ and Wiki itself.
You should also find useful the documentation coming with your linux distro, probably in
/usr/share/doc/mldonkey-server/, wich often includes interesting notes of the packager. Be sure to have a recent version of MLdonkey, so you have fresh features and documentation.
But for bleeding edge features, still not included in the above texts, your best chances are looking in the online ChangeLog (there should be one in your local documentation, probably
Where can I find support on mldonkey ?
MLdonkey Project Site hosts :
- mldonkey-users mailing list for discussion between users.
- bug report system to report bugs appearing when running mldonkey.
- patch tracking system with patches that may fix some problems but require more testing before going into release.
Where can I download mldonkey ?
The latest stable binaries for Windows, Linux and Mac OS can be downloaded from the Project Download page.
How should I start mldonkey ?
mldonkey will install its configuration files in the directory where you start it. So, first, choose the right directory, where you want it to run. Then, copy the \"servers.ini\" file that is in the distribution in this directory. I suppose here that mldonkey is started in its directory.
Start mldonkey with:
It should display some debug info. DON'T CLOSE THE TERMINAL WHERE IT WAS STARTED, otherwise it might get blocked on terminal output.
Once you are sure it works correctly, you can dump the debug info in a file (but it can become very big) or better in /dev/null, the next time you start it:
./mldonkey &> /dev/null
How can I control mldonkey ?
You have three different ways to control the mldonkey daemon (note that, by default, mldonkey is configured to accept only control connections from the host running mldonkey (more info)):
- The telnet interface: the telnet interface allows you to control mldonkey locally or remotely from a terminal with simple commands:
telnet localhost 4000
localhostis the host running mldonkey and 4000 is the default port for the telnet interface.
There are many commands available. Use the
helpcommand to display all of them.
- The WEB interface: the WEB interface allows you to control mldonkey through your favorite navigator. The default url is:
localhostis the host running mldonkey and 4080 is the default port for the WEB interface.
- The GTK GUI: you can use a powerful GTK interface to control mldonkey. It is called
mldonkey_gui. Use the File::Setting menu to configure how to connect to your mldonkey daemon.
Where/what are mldonkey configuration files ?
MLdonkey creates its configuration files in the directory where it is started. All of them terminate with a .ini extension. You should not modify them while mldonkey is running since it periodically overwrites them. Instead you should either stop it, or modify the options using one of the interfaces.
downloads.ini: the basic options (and historically, the edonkey plugin options)
files.ini: the list of files being currently downloaded, and informations needed to recover the download after a stop.
servers.ini: the list of all known servers for all networks.
friends.ini: the list of your friends (peers you like to browse files) on all networks.
- Other configuration files are used by mldonkey plugins, normally one per network.
~/.mldonkey_gui.ini: the GUI configuration file is the only one which is not stored in the mldonkey directory.
How can I control the bandwidth used by mldonkey ?
There are two options in the downloads.ini file: max_hard_upload_rate and max_hard_download_rate. Setting these options to 0 means that there are no limits. They are expressed in kilobytes/second (not kilobits/second !). The upload limit both applies to the files which are downloaded from you, and for the messages you send to ask for files: be careful not to limit your upload too much !
|Your Connection Type||Low Bandwidth Usage||High Bandwidth Usage|
|T1 and more||50||0||0||0|
|Cable/ADSL 512/128 kbs||2||6||6||12|
If you have troubles with these values, find the best one corresponding to your link and send us the information to fix this table !
When I modify an option in the config file, mldonkey overwrites it with its old value ?
There are two cases:
- When you edit a config file, mldonkey must not run. Indeed, mldonkey saves its configuration periodically, overwritting any changes made in the files.
- Be careful with the syntax. If mldonkey can't parse the config file, it will generate a new file with the old values for all options that couldn't be read correctly. You must remember that you must put filenames and directory names between \"\" (they are not always required if there are no special characters inside the name (such as spaces, slashes, etc...), so mldonkey can remove them in some cases).
Where are the files I have downloaded with mldonkey ?
Files being currently downloaded are temporarily stored in the
temp/ directory at the level of mldonkey config files. Files in this
directory are identified by their MD4 (for edonkey files) or by a random
When the download of a file is finished, the file is added to a list of files that have to be \"committed\". These files are not renamed, so they are still kept in the temp directory.
To move finished downloads into the
incoming/ directory with
their final name, you need to use the command
commit in the
telnet, or the \"Save\" buttons in the GUI.
Why does MLdonkey automatically pause some of my downloads ?
If the file is downloaded via BitTorrent: then MlNet will stop the download if th file does not have any usable trackers left. You can check this using the "log" command to dump the recent log to the console and check the last few lines for the file name. If this happens try to find a new download tracker.
When MlDonkey receives data for a file from the network, it tries to write this data in the file in the temp/ directory. If, for some reason, it cannot write the data, it immediately pauses the file.
This can happen for different reasons:
- You have no space left on the disk. You can verify it with the "df" command, and free some space for the downloads to continue.
- The user running MlDonkey has not write permissions to write in your temp/ directory, or on the file temporary file.
How can I reach mldonkey WEB interface if my firewall only allows port 80 ?
If you want to access the WEB interface (port 4080) through a firewall, and the firewall only allows port 80, and you don't want to run mldonkey as root, you can set up the apache WEB server to redirect requests to mldonkey:
- Edit your \"httpd.conf\" : Insert the following lines somewhere in the \"Section 2: main server configuration\":
RewriteEngine on ProxyRequests on RewriteRule /mldonkey http://localhost:4080/$1 [[P,L]] RewriteRule /(submit.*) http://localhost:4080/$1 [[P,L]] RewriteRule /(files.*) http://localhost:4080/$1 [[P,L]] ProxyPassReverse /(.*) http://localhost:4080/$1
where, of course,
localhostis your mldonkey host, and
- With these rules,
aaa.bbb.ccc.dddis the IP address of the host running the apache server, should connect to your mldonkey.
Running the GTK GUI
When I start the GUI, I get a lot of error messages, and the GUI terminates with a \"Segmentation Fault\" ?
You probably use the \"static\" binary of mldonkey GUI. Download the \"shared\" binaries from this site, and use that GUI. This bug is caused by an incompatibility between the statically linked GTK library and the themes installed on your distribution.
I can't connect to mldonkey from a remote host, neither by telnet, WWW or the GUI ?
You need to modify the \"allowed_ips\" option in the downloads.ini file to define which hosts are allowed to control your mldonkey core.
You can either stop mldonkey, and edit the downloads.ini file:
allowed_ips = ~[[\"127.0.0.1\"; \"192.168.255.255\"; \"184.108.40.206\"]]
for example allows your localhost (127.0.0.1) to control mldonkey, all the hosts from the network 192.168.., and the host 220.127.116.11.
If you don't want to stop mldonkey, just connect locally with the telnet, and type:
set allowed_ips \"127.0.0.1 192.168.255.255 18.104.22.168\"
The GUI is immediatly disconnected from the core, or keeps connecting and disconnecting very fast ?
There are two cases to consider:
- You have set a password in the core to access it through the GUI: you must enter the password in the GUI too (use the
Files :: Settingsmenu for that.
- You have two GUIs connected to the same core: the core (1.99 and later) only allows one GUI to be connected simultaneously. When you connect, it immediatly disconnects the previous GUI. This can only work if the previous GUI does not try to reconnect automatically:
mldonkey_guiwill not reconnect, but maybe you are using another contributed GUI, which tries to automatically reconnect, and make the core disconnect your GUI ? Then, tell its author to remove this feature or to put an option to disable it.
How can I download the latest sources of mldonkey ?
Alternatively get release tarballs from the download page.
What do I need to compile mldonkey on my system ?
The easiest way is to download binaries for your system. Otherwise, use the following lines to install them:
- Installing Objective-Caml 3.06 in
~~/tmp> tar zxf ocaml-3.06.tar.gz ~~/tmp> cd ocaml-3.06 ~~/tmp/ocaml-3.06> ./configure ~~/tmp/ocaml-3.06> make world opt opt.opt ~~/tmp/ocaml-3.06> make install
- LablGTK 1.2.3 for example
~~/tmp> tar zxf lablgtk-1.2.3.tar.gz ~~/tmp> cd lablgtk-1.2.3 ~~/tmp/lablgtk-1.2.3> make configure ~~/tmp/lablgtk-1.2.3> make ~~/tmp/lablgtk-1.2.3> make opt ~~/tmp/lablgtk-1.2.3> make install
Do not forget the \"make opt\" which is required to get a native-code version of the libraries.
How do I compile mldonkey on my system ?
To compile the core, you just need to use the following commands:
cd mldonkey ./configure ~[[...options...]] make depend make
You should now have a \"mldonkey\" executable ... No \"make install\" is provided.
If you get strange errors from make, you probably need to use \"gmake\" on your system.
You can use the following options for the configure:
- --enable-batch : install Objective-Caml and Lablgtk locally just to be able to compile mldonkey.
- --disable-multinet: allows you to only compile support for edonkey
- --disable-audiogalaxy: allows you to remove support for Audio Galaxy
- --disable-opennap: allows you to remove support for Open Napster
- --disable-limewire: allows you to remove support for LimeWire
- --disable-directconnect: allows you to remove support for Direct Connect
- --disable-soulseek: allows you to remove support for SoulSeek
- --disable-openft: allows you to remove support for OpenFT
- --disable-donkey: allows you to remove support for eDonkey
I just updated from CVS, and I get an error while compiling ?
After an update from the CVS, you MUST restart the configure script, and
rebuild the dependencies:
cd mldonkey cvs login cvs -z3 up -d ./configure ~[[...options...]] make depend make
If the error messages are related to camlzip, a workaround is to edit
manually the file
config/Makefile.config, and to change the line
no (only soulseek requires
The eDonkey plugin
What is the eDonkey network ?
The [eDonkey network] is a network specialized in sharing really big files (between 0 to 1.4 GB).
This network offers a set of characteristics that cannot be found on other networks:
- Files can be downloaded from different sources at the same time.
- Files are identified by uniq identifiers (MD4) that can be used to find new sources for a file.
- Files are checked using checksums, and chunks (9MB) that are corrupted are downloaded again.
- Files chunks can be downloaded in any order.
- Files are shared as soon as a checked chunk has been downloaded, to speed up the spreading of files.
Why can't mldonkey connect to any server ?
- First, check that you have some servers known by mldonkey: connect to mldonkey by telnet (telnet localhost 4000) and use the \"vma\" command to display all known servers.
- If you have no servers known, you need to add a list of servers for mldonkey to connect to them: you can either:
* Manually add them in the telnet :) * Import a Windows server.met file (downloaded on the WEB): use the \"servers\" command in the telnet, for example:
servers \"/mnt/windows/bureau/edonkey server list/server.met\"
* You can restart mldonkey after copying the \"servers.ini\" file that was in the distribution.
- If you already have a list of known servers, maybe the list is not up-to-date, and maybe the servers are full. Try to add some new servers like above.
How can I import my old edonkey files under mldonkey ?
- Use the
importcommand with the donkey directory containing your old config as parameter. If your old edonkey was running on
/home/bidule/edonkey(mldonkey should find a \"pref.met\" file in this directory), you can send the following command on mldonkey console:
- This might not work for a Windows configuration, since the absolute path under windows is not the same as under linux (different mount points). In this case, retry this command, but before, make sure that:
* The files you want to import are in a \"temp\" directory, inside the directory you give to the \"import\" command. * Remove the \"pref.met\" file, so that mldonkey does not try to use the temp directory specified in this file.
Where can I find files on eDonkey without searching on servers ?
There are two kinds of WEB sites where you can find ed2k:// links for files on eDonkey:
- Recommandation Engines: on these Web sites, you will find commented files, that you are sure to find complete on the eDonkey network.
* The most famous is [Share Reactor]
- Search Engines: these Web sites allow you to search for files that are currently available on some servers. However, you have no guaranty they are complete:
* [File Donkey] * [Jigle]
Why does mldonkey only connect 5 servers, whereas
max_connected_servers is greater ?
Being connected to several servers can be useful to spread the files you are uploading, and to initially find more sources to begin a download.
However, each server on which you are connected is not available for
another user. For this reason, you should not stay connected to too many
servers. mldonkey enforces this policy by limiting to 5 the number of
servers on which you remain connected for a long time, whatever the value
Thus, you should simply see
max_connected_servers as the
number of servers mldonkey tries to connect concurrently to at the
startup, not as the number of servers he will remain connected to.
What's about Overnet ?
MLdonkey 2.00 is able to search for files and sources on Overnet. For that, you must make sure that:
- The \"overnet_search_sources\" and \"overnet_search_keywords\" options are set to true.
- You have a (recent) list of Overnet peers that you can connect to. For that, you can:
* Use the \"servers.ini\" file from the most recent distribution of mldonkey. It contains a long list of Overnet peers.
* Use the \"boot IP PORT\" command, to add a new peer.
* Use the \"ovweb URL\" command, to download a .ocl file from url URL containing a list of recent peers.
You can use the \"ovstats\" command, to display how many peers you have been able to connect to (well, they have replied to a connect UDP packet).
- If you have enabled \"overnet_search_keywords\", replies to search can arrive from Overnet peers. These results are not very accurate (they only need to match only one of the keywords, instead of all for example).
As for all networks, you can activate post-filtering of results (very useful on Gnutella too): set the \"filter_search\" option to true, and maybe the \"filter_search_delay\" option (period between results updates in seconds). Then, only results matching exactly your query will be displayed.
I'm behind a firewall, what should I do ?
MLdonkey uses two ports for incoming connections, one on TCP (default is 4662) and the other one for UDP (4666). Thus, you should open these ports in your firewall, and forward them to the computer running mldonkey. More generally, you can do that for all ports between 4660 and 4670.
Allowing incoming connections is important as it is the only way for you to connect other sources which are behind a firewall.
If you have no control on the firewall, and your administrator blocks
port 4660 to 4670, you should change the port used by mldonkey in the configuration
port is the TCP port, while the
UDP port is always computed as
port + 4.
Just edit the
shared_directories option in
shared_directories = ~[[ \"/usr/share/documents\"; \"/usr/share/videos\"]]
The Soulseek plugin
What is the Soulseek network ?
The [Soulseek Network] is a network similar to Napster.
You connect on a single server, and there, you can search for (mainly audio) files, you can join rooms to chat with other users, and you can browse other users files.
Why can't mldonkey connect to any server ?
There is only one server on Soulseek, and the one you have in soulseek.ini is probably not up-to-date. Normally, mldonkey will download another one, so that you will have to servers in your list of servers.
By default, mldonkey_gui does not display the servers you are not connected to. So you have to use the \"Display All Servers\" button, and ask mldonkey to try to connect to the second soulseek server.
Currently, the server is
mail.slsk.org, port 2242.
Mldonkey behavior will be improved to automatically connect to the current server from the soulseek site Web page.
The LimeWire plugin
What is the LimeWire network ?
The main difference is that all nodes in this network do not broadcast each received message to its neighbours. Instead, special nodes, called ultra-peers, with higher connectivity are dedicated for this task, whereas other smaller nodes (such as mldonkey) only connect and ask ultra-peers.
On this network, you can mainly search for small files, you have no way to chat nor browse other peers.
On Gnutella, there is no specified protocol for asking complex queries to other peers. Instead, each peer is free to interpret your query as it wants and reply what it wants.
In particular, multiple-words queries are often understood as logical-or queries between words, ie each document that contains at least one word is returned.
As for Overnet, you can activate post-filtering of sources. Then, results which are received are checked by mldonkey against the query and only displayed if they are accurate. Post-Filtering is activated by setting the \"filter_search\" option to true, and modifying the \"filter_search_delay\" depending on the period you want between updates (for example, 30 means that results will be added only every 30 seconds).
The other plugins
What is the current Development Status of mldonkey plugins ?
The current Development Status of mldonkey (in the CVS) at 2002/09/09 is
shown on the following table (also have a look at the
|Features||eDonkey||Direct Connect||Open Napster||Gnutella LimeWire||Soulseek||Audio Galaxy||OpenFT|
|Download Server List||1.16||CVS||CVS||CVS||CVS||CVS|
|View Server Users||1.16||CVS|
|Cancel Downloads||1.16 (not CVS)||CVS|
|Upload File List||1.16||CVS|
|Import Windows Config||1.16|
- eDonkey 
- Direct Connect 
- Open Napster 
- Gnutella LimeWire 
- Soulseek 
- Audio Galaxy 
- OpenFT 
- Bittorrent 
What about anonymity ?
Anonymity, i.e. hiding your IP number from other peers, is not implemented in MLdonkey for the following reasons:
- It is almost impossible
- If it was possible it would be up to the maintainers of the actual p2p-protocols (e.g. eDonkey, Gnutella, Soulseek) to implement it
- If it is done it will likely mean serious drawbacks on performance
- If it will be done it will probably not be done until IPv6 is commonplace
If you have any comments, if you want to add some questions, or improve
this FAQ, send a mail to [
Wiki&pagenameHomePage mailto:firstname.lastname@example.org], or do it yourself at the wiki.