From MLDonkey
Jump to: navigation, search


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 (while and 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:

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 /usr/share/doc/mldonkey-server/changelog.gz).

Where can I find support on mldonkey ?

Visit MLdonkey support forums, where you can either contact the developers or ask other users for advices. There is also an IRC channel #mldonkey on FreeNode.

MLdonkey Project Site hosts :

Where can I download mldonkey ?

The latest stable binaries for Windows, Linux and Mac OS can be downloaded from the Project Download page.

If you want the most recent version of mldonkey, you need to check out the sources from the CVS and compile it yourself.

Running mldonkey

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)):

telnet localhost 4000
where localhost is the host running mldonkey and 4000 is the default port for the telnet interface.
There are many commands available. Use the help command to display all of them.
where  localhost is the host running mldonkey and 4080 is the default port for the WEB interface.

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.

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
max_hard_upload_rate max_hard_download_rate max_hard_upload_rate max_hard_download_rate
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:

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 identifier.

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:

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:

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, localhost is your mldonkey host, and 4080 is the http_port of 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 = ~[[\"\"; \"\"; \"\"]]

for example allows your localhost ( to control mldonkey, all the hosts from the network 192.168.., and the host

If you don't want to stop mldonkey, just connect locally with the telnet, and type:

set allowed_ips \"\"

The GUI is immediatly disconnected from the core, or keeps connecting and disconnecting very fast  ?

There are two cases to consider:

Building mldonkey

How can I download the latest sources of mldonkey ?

Checkout the sources of mldonkey from the official CVS repository.

Alternatively get release tarballs from the download page.

What do I need to compile mldonkey on my system ?

You need ocaml-3.06 ([Ocaml site]) installed for the code and [lablgtk] compiled in native code with ocaml 3.06 for the GTK gui.

The easiest way is to download binaries for your system. Otherwise, use the following lines to install them:

    ~~/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
    ~~/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

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:

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

If the error messages are related to camlzip, a workaround is to edit manually the file config/Makefile.config, and to change the line ZLIB~no and SOULSEEK~no (only soulseek requires camlzip).

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:

Why can't mldonkey connect to any server ?

 * 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.

How can I import my old edonkey files under mldonkey ?

import \"/home/bidule/edonkey\"
 * 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:

 * The most famous is [Share Reactor]
 * [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 of max_connected_servers is.

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 ?

[Overnet] is a network using the same download protocol as edonkey, but a different [search/localisation protocol], that doesn't need servers.

MLdonkey 2.00 is able to search for files and sources on Overnet. For that, you must make sure that:

  1. The \"overnet_search_sources\" and \"overnet_search_keywords\" options are set to true.
  1. 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).
  1. 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 file downloads.ini : port is the TCP port, while the UDP port is always computed as port + 4.

How can I share multiple directories ?

Just edit the shared_directories option in downloads.ini:

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, 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 [LimeWire network] is a network built upon the [Gnutella 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.

Currently, the LimeWire support in MLdonkey also allows mldonkey client to use [Gnucleus], [Morpheus], and MyNapster ultra-peers as servers.

On this network, you can mainly search for small files, you have no way to chat nor browse other peers.

When I search for files, I receive unrelated results ?

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 [checkout/mldonkey/mldonkey/distrib/ChangeLog?revHEAD&content-typetext/plain ChangeLog])

Features eDonkey Direct Connect Open Napster Gnutella LimeWire Soulseek Audio Galaxy OpenFT
Download Server List 1.16 CVS CVS CVS CVS CVS
Server Connect 1.16 CVS CVS CVS CVS CVS CVS
View Server Users 1.16 CVS
Search Files 1.16 CVS CVS CVS CVS (web) CVS
Browse Peer 1.16 CVS CVS
Download Files 1.16 CVS CVS CVS CVS CVS CVS
Recover Files 1.16 CVS CVS CVS CVS
Recover Sources 1.16 CVS CVS CVS
Pause Downloads 1.16 CVS
Cancel Downloads 1.16 (not CVS) CVS
Upload Files 1.16
Upload File List 1.16 CVS
Friends 1.16
Public Messages CVS CVS
Private Messages 1.16
Import Windows Config 1.16
Config File downloads.ini directconnect.ini opennap.ini limewire.ini soulseek.ini audiogalaxy.ini openft.ini

Miscellaneous issues

What about anonymity ?

Anonymity, i.e. hiding your IP number from other peers, is not implemented in MLdonkey for the following reasons:

In the meantime have a look at [Freenet||] and GNUnet.

If you have any comments, if you want to add some questions, or improve this FAQ, send a mail to [Wiki&pagenameHomePage], or do it yourself at the wiki.

LanguagesEnglish  • 中文

Personal tools