- 1 F.A.Q. on aMule
- 2 by Jacobo221
- 2.1 What is aMule?
- 2.2 What is ED2K?
- 2.3 What is Kademlia?
- 2.4 What is a chunk?
- 2.5 What is a hash?
- 2.6 Why after searching, some files which are the same appear as a different file in the results, although they even have the same name?
- 2.7 What is LowID and HighID? What does that depend on?
- 2.8 Which ports do I have to configure in a firewall or router to run aMule?
- 2.9 What does each port do?
- 2.10 Is there any limitation on the ED2K network?
- 2.11 In search window, what filter stands for which filetype?
- 2.12 What is a source?
- 2.13 What is all that credits, rate and score stuff about?
- 2.14 What do those colors in the progress bar mean?
- 2.15 What are all this icons?
- 2.16 What do all those numbers in the sources column in the transfers window mean?
- 2.17 Why are there two transfer rates in the uploading transfer list?
- 2.18 What do are all those files aMule creates on the first time it is run?
- 2.19 Can I use eMule's files and settings and viceversa?
- 2.20 What's is all that stuff in amulesig.dat and onlinesig.dat?
- 2.21 I just installed aMule for the first time. How do I set it up?
- 2.22 How do I start my aMule experience?
- 2.23 What are the best settings I can set to have a nice download rate?
- 2.24 Can I manage aMule remotely through telnet in the same way I do with eDonkey?
- 2.25 Is there any way to start aMule with no graphical interface?
- 2.26 Can I run two aMule instances at the same time?
- 2.27 How can I get those nice aMule statics some people post on the IRC channels?
- 2.28 What is a slot? And a friend slot?
- 2.29 What is the real point on setting up Line Capacities in Preferences? Shouldn't aMule only care for the Bandwidth Limits?
F.A.Q. on aMule
What is aMule?
aMule is a multiplatform client for the ED2K file sharing network based on eMule.
aMule started in August 2003 as a fork of xMule, formerly lMule.
It currently supports Linux, FreeBSD, OpenBSD, Windows, MacOS X and X-Box on both 32 bits and 64 bits computers.
It is pretended to be as user-friendly as feature-plenty and to remain similar to eMule in the way of use so that it becomes easily usable.
Based on eMule's source code in most of it's nature it is always in the cutting-edge of the ED2K clients implementations.
What's best, it is developped by a great team which is even more user-friendly than aMule itself (if possible), so please join #amule on irc.freenode.net or forums at <a href="http://www.amule.org/amule">http://www.amule.org/amule</a> if you have any suggeestion, question, problem, bug, fix or whatever.
What is ED2K?
ED2K is a protocol originally used by the p2p (Peer-to-peer) client eDonkey2000 (that's were the name comes from). It is half a server-client based protocol and a p2p protocol. When your client (your ED2K application, such as aMule) is started, it tries to connect to a server. Once successfully connected, the client can ask (search) for any file and the server will provide the client will all the files which match the demanded file. Then the client might ask (if the user asks to) to download the file. What's really happening is that the server will provide the IPs the clients connected to that server who are sharing that file. If both users are on HighID (read below to know what this means) the transfer will be done directly from client to client (peer-to-peer). If one of the clients is on LowID (read below to know what this means), the transfer will be done through the server (this means, the data goes from the first client to the server and then to the target client). If both clients are on LowID, no transfer is allowed.
What is Kademlia?
Kademlia is the natural evolution of the ED2K network. Kademlia is the future. If you read "Is there any limitation on the ED2K network?" below, you'll realise what I mean.
Kademlia's principle is to avoid the ED2K necessity of connecting to servers.
So, to connect, instead of connecting to a server, you just connect to any client (known it's IP and port) with Kademlia network support. This is called the Boot Strap.
Once connected, depending on if you can be contacted freely or not, you are given "open" or "firewalled" status (similar to high and low ID on the ED2K network). Then you are given an ID. Since "firewalled" users are currently not supported by the Kademlia network, they won't be given an ID and will be unable to connect. Firewalled support will be added later.
When searching, each client acts as a small server and is given a responsibility for certain keywords or sources. So this adds the complexity on finding the appropiate client for giving you the results of your search.
Anyway, at the moment, Kademlia support isn't in aMule, although it will bee soon.
What is a chunk?
In the ED2K protocol, to avoid sharing corrupt files, each file is divided into various parts, which are known as chunks and then each chunk is hashed /read below to know what a hash is). Each chunk is 9.28MB in size, so a 15MB file will be divided into two chunks (9.28MB + 5.72MB), a 315KB file will be a single chunk and a 100MB file will be divided into 11 chunks (10x9.28MB + 7.2MB).
What is a hash?
Dividing each file in chunks (read above to understand what a chunk is) will avoid the problem of downloading a whole corrupt file since only the corrupted chunk will have to be redownloaded, but there has to be a method to know whether the downloaded chunk is corrupted or not. So, a hash is a unique value each chunk is given and is the result of a mathemathical operation on every single bit on the chunk. This means that modifying a single bit in that chunk would result in a completly different hash (search for information on MD5 to understand this on details). Not only the chunks are hashed but also the whole files (all chunks together) so that each file on the ED2K network has an identifying value. When a file is selected to be downloaded, the server provides to your client the hashes of all the chunks in the file so that whenever a chunk is completed, it can be verified and, if the hash of the obteined chunk does not coincide with the original one, the whole chunk will be redownloaded.
Why after searching, some files which are the same appear as a different file in the results, although they even have the same name?
If you understood "What is a hash" you will understand this quickly. When a search is started, the server tells the ED2K client the filename of the found file and the hash of the complete file for each file which matches tthe search. If two files, although being the same, have some difference in their content, no matter if it's big or small, the hash is different, so they are considered as a different file. That's also the reason why two file with different file name appear as the same file: on the ED2K network, the filename isn't important, the hash is.
What is LowID and HighID? What does that depend on?
Each client is assigned an identifying number, an ID, which will be uniqueand will distinguish him from any other client on the server. If this ID is below 16777216 (16 million) then you have a LowID. If it's over, then you have a HighID. To be given a high or low ID will only depend on having TCP port 4662 (or the one set up in Preferences) opened. If you understood "What is ED2K" you might understand that chances are that clients on LowID may be unable to connect to many other clients (all those on LowID) so will have a lower transfer rate. That's why having port 4662 TCP (or the one set in Preferences) is so important. Also, some bug servers refuse clietns on LowID to connect to them since LowID clients have data transfered through the server and so, those big servers could be overcharged.
For HighID clients, their ID is the result of a mathematical operation with their IP which corresponds to A + 256*B + 256*256*C + 256*256*256*D, where the IP is A.B.C.D. Also have in mind that this ID has identification purposes, nothing else, so apart from having and ID over or under the 16777216 number, it does not matter if the ID is bigger or smaller. This means a client with an ID like 50000000 isn't better than a client with an ID like 49999999.
There's still an exception. Sometimes badly configured or very busy servers give LowID to some clients allthough the 4662 TCP port is opened. This are rare exceptions, but it might happen sometime.
Which ports do I have to configure in a firewall or router to run aMule?
No specific ports need to be opened for aMule to work, but yes to have HighID. As mentioned above, to be given a HighID, port 4662 TCP (or the one set in Preferences) must be listening.
Apart from that port, to have an optim ED2K experience, two more ports should be enabled too. First, the UDP port 4672 (which can be configured to any other number in Preferences too) and secondly, the secondary UDP port which can't be set in Preferences. This UDP port is your TCP port + 3 (i.e.: TCP=4662 then UDP=4665).
What does each port do?
Well, since most ports can be configured to be set to any other number, the defaults will be listed:
4662 TCP: Client to client transfers.
4672 UDP: Extended eMule protocol, Queue Rating, File Reask Ping
4661 TCP: Opened on server. Allows connection to server.
4665 UDP: Opened on server. Allows asking for sources. It is always server TCP port + 4.
4711 TCP: WebServer listenning port.
4712 TCP: External Connection port. Used to communicate aMule with other applications such as aMule WebServer or aMuleCMD.
Although officially the seconday UDP port is server TCP port + 4, some (most?) implementations use it as client TCP + 3. Any way, this port is mostly not used (aMule doesn't use it, eMule doesn't have it).
Is there any limitation on the ED2K network?
Not much, but yes, there are: two natural limits and a "forced" limitation. The two natural limits have already been mentioned before. First, the issues on LowID users (their transfers involve data through the server and two LowID clietns can't share between them). The second, although ED2K is a p2p protocol, it needs servers to stablish the p2p connection. This latter one is solved in the Kademlia protocol.
About the "forced" limitation, it's only a limit to make sure that clients share so that the ED2K network will not disappear: clients which have an upload limit of X KBps, where X is between 0 and 3.99 (both included) can download at a maximum of X*3 KBps. Clients which have an upload limit of Y KBps, where Y is Between 4 and 9.99 (both included) can download at a maximum of Y*4 KBps. Clients with an upload limit of 10KBps or more have no downloading limitations. This restriction is set in the client application so it could be by-passed by hacking the code, but that would probably result in being banned from the servers you connect to.
In search window, what filter stands for which filetype?
Have in mind that the filters in the search window don't depend on the file type, but on the extensions of the filenames, in the following way:
Archive: .ace .arj .rar .tar.bz2 .tar.gz .zip .Z
Audio: .aac .ape .au .mp2 .mp3 .mp4 .mpc .ogg .wav .wma
CDImage: .bin .ccd .cue .img .iso .nrg .sub
Picture: .bmp .gif .jpeg .jpg .png .tif
Program: .com .exe
Video: .avi .divx .mov .mpeg .mpg .ogg .ram .rm .vivo .vob
So, a movie which's filename is "Birthday.zip" will appear in the Archive filter, but not in the Video filter.
What is a source?
A source is a client which is sharing some chunk in some file you have in your downloadung queue which you still have not completed. Obviously, the more sources you can get for a given file, the more possiblities you have to download the file and the quicker you'll download it. Have in mind that there's a difference between "sources" and "available sources" if you're on LowID, since "sources"s stands for clients sharing a chunk or file you still haven't completed, while "available sources" stands for clients sharing a chunk or file you still haven't completed and from who you can download (that is, a sources who is on LowID).
What is all that credits, rate and score stuff about?
What do those colors in the progress bar mean?
On the downloading transfers list:
Red: Chunks in read are chunks with no sources on current session found.
Blue: Chunks in blue are chunks with at least one available source. The more solid blue it is, the more sources available have been found.
Yellow: Chunks in yellow are chunks which are being downloaded at this very moment.
Black: Chunks in black are chunks which have been already downloaded and verified.
Green: When a file is in green it means that it's been completely downloaded and successfully verified (so, it'll be in the Incoming folder).
On the expanded transfers list (can be viewed by double-clicking a transfer):
Black: Chunks which that client has and you don't have.
White: Chunks which that client doesn't have.
Green: Chunks which that client has and you have too.
Yellow:Chunks which that client is currently uploading to you.
On the uploading transfers list:
Black: That client has completed and verified that chunk.
Grey: That client doesn't have that chunk.
Have in mind that not al clients support telling other clients which parts they have already completed when uploading.
On the shared files window:
Red: When there's no source found to have that same chunk (apart from you, of course).
Blue: The more solid the blue is, the more spread that chunk is.
On the search windows:
Black: Files in black are those which only a client has been found to have.
Blue: Files in blue are those which two or more clients have been found to have. The more solid the blue is, the more clients have been found ot have it.
Red: Files in red are those which are already in the downloading queue.
Green: Files in green are those which you are already sharing (you completly downloaded it).
What are all this icons?
What do all those numbers in the sources column in the transfers window mean?
The sources format is XX/YY + ZZ (WW) where
XX stands for the amount of avaliable sources (the amount of sources found you can download from).
YY stands for the amount of found sources (the total amount of sources found)
ZZ stands for the number of "Asked for another file" sources
WW stands for the amount of sources from who you are currently downloading some chunk of that file.
Why are there two transfer rates in the uploading transfer list?
When you are uploading some file to some client, the uploading transfer list will show the transfer rate (speed in KBps) in which you are uploading to that client. If, at the same time, that client is uploading to you some file (or files), then the transfer rate's format will change to XX/YY where XX stands for the speed inwhich you are uploading to that client and YY will stand for the speed in which that client is uploading to you. If you search in the downloading transfers list you'll find that client.
This is useful if you are trying to get a rare file, since you can which file that client is uploading to you and, if it's the rare file, you can set him a friend slot so that you uoload to that client faster and gain more credits on that clients (an censequently, download faster from the client).
What do are all those files aMule creates on the first time it is run?
Most them are the same as eMule's. Here is a list and the meaning of each of them (have in mind that you might not have all of them on your hard disk):
~/.eMule: aMule's personal configuration (that is, things such as you nickname, your Temp and Incoming directories, your upload and download limits, and such...).
~/.aMule/addresses.dat: Contains a list of serverlist URLs to check (if enabled in Preferences) for new servers on startup.
~/.aMule/amulesig.dat: This is aMule's OnLineSignature file, which is the same as eMule's signature (see onlinesig.dat below) but with extended information (extended information includes nickname, session and total downloaded and uploaded bytes, aMule version, aMule uptime and number of shared files).
~/.aMule/aMule.tmpl: This is the template file which aMule WebServer uses to create the web page.
~/.aMule/aMule-online-sign.png: This file will only exist if CAS has been run sometime with the -o switch and ~/.aMule/casrc was successfully configured. It is an image containing details on aMule's status.
~/.aMule/casrc: This file will only exist if CAS has been run sometime with the -o switch. It contains the settings for the CAS image creation.
~/.aMule/clients.met: Contains the credits for the clients who have uploaded to you.
~/.aMule/cryptkey.dat: It contains the unique 384 bit private RSA key of your client.
~/.aMule/emfriends.met: Contains your friends list configuration
~/.aMule/ipfilter.dat: This file contains the IP ranges and access levels restrictions which will be passed to ipfilter.
~/.aMule/Incoming: By default, the directory where aMule stores the completed downloads.
~/.aMule/known.met: This file stores the hash and some details of your shared files like size, path, statics, etc...
~/.aMule/lastversion: This is only for aMule to know if it's the first time you're starting aMule, if you had aMule installed before and which version you had instaled previously.
~/.aMule/logfile: This file contains the log of the last aMule execution.
~/.aMule/muleconn: This file is a socket for aMule comunications.
~/.aMule/onlinesig: This is an eMule compatible OnLineSignature file. It's used by other applications to know basic information on aMule's stat (if it's online, which server it's connected to, upload and download rate, and clients in queue).
~/.aMule/preferences.dat: Contains the user hash, which is a hash value the uniquely identifies you in the ED2K network and which is used to avoid cheatign with credits and with friends lists.
~/.aMule/server.met: This is a list of all known servers and you're preferences on them (priority, name, ip, port and such).
~/.aMule/shareddir.dat: Stores the paths to all shared directories.
~/.aMule/Temp: By default, the directory where aMule stores the not completed downloads (temporary files).
~/.aMule/webserver: This directory contains the necessary files for aMuel WebServer to display a nive Web page.
Other files on ~/.aMule/ are most surely backups of some of the above files.
Also, on the Temp directory (which is ~/.aMule/Temp by default but can be set to any other on Preferences), aMule will create, for each download three or four files):
*.part: This file contains the downloaded parts (not chunks, since not completed chunks are also stored here) of the download. As aMule is able to download from more than one user at the same time, this file has the size of the complete file. The missing parts are filled with zeros.
*.part.met: This file contains information on the downloaded parts of the download, the verified chunks, the hash values of the remaining chunks, etc...
*.part.met.bak: This are backups of the *.part.met files. Every now and then aMule creates this backups since without the *.part.met file, a download has no meaning for aMule. If any *.part.met file "disappeared, you should rename the *.part.met.bak to *.part.met.
*.part.met.seeds: This files only exist if you have enabled, in preferences, to store the some sources's IPs on rare files so that it can try to connect to those sources on next aMule exection. It contains exactly that, some sources to be able to connect later.
Can I use eMule's files and settings and viceversa?
Most of them yes. The only one you can't share between aMule and eMule is the program configuration (that is, preferences.ini in eMule and ~/.eMule in aMule). All the ED2K network related stuff can be successfully shared between both applications with no more efford than copying the files in ~/.aMule to eMule's directory and viceversa. But have in mind that some files in ~/.aMule are aMule specific, such as amulesig.dat or aMule.tmpl, so it's better to just move those files which are both on the aMule and eMule directories.
What's is all that stuff in amulesig.dat and onlinesig.dat?
I guess you already read what amulesig.dat and onlinesig.dat are for above. So, this is the meaning of their contents (have in mind that if aMule crashes, the contents of both files will be the last written status):
It is composed of two lines. The first one, when aMule is offline, will contain a 0 (zero) and nothing else, but when aMule is online, it'll contain a 1 (number one) followed by | (the pipe character) then the name of there server it's currently connected to followed by the pipe character, then the IP of the server it's currently connected to followed by the pipe character and finally the port it is connected to on that server.
The second line contains, in this order, the downloading rate, the uploading rate and the number of users on queue, with a pipe character between each of them and ended with an end of line character ('\n').
When aMule is cleanly closed the second line contains the same strucutre but filled with zeros, while the first line will only contain a single zero.
aMule's signature file is much more powerfull than eMule's and has as much lines as fields. It's structure is:
The first line will contain a 0 (zero) if aMule is disconnected, connecting or has been cleanly closed, or a 1 (number 1) if it's online.
The second third and forth line contain the name, IP and port of the server aMule is connected to (in this order) or a zero if it's offline or cleanly closed.
The fifth line will contain an capital H or a capital L depending if aMule is connected on high or low ID. If aMule is disconnected or cleanly closed, this line will contain a zero.
The sixth and seventh lines contain the speed in which aMule is downloading and uploading respectivly. Both lines contain "0.0" when aMule is cleanly closed.
The eigth and nineth lines contain the number of clients on the upload queue and the amount of shared files respectivly. Both lines are aset to zero too when aMule is cleanly closed.
The tenth line contains the nickname of the user.
The eleventh and twelve lines contain the total amount of bytes downloaded and uploaded respectivly.
The thirteenth line contains the aMule version.
The fourteenth and fifteenth line contains the amount of bytes downloaded and uploaded in the current session respectivly.
The sixteenth (and last) line contains the amount of tie aMule has been running. It will be followed by a space and "secs" "mins" or "hours" depending on the value.
The last line must be followed by a new line character ('\n').
I just installed aMule for the first time. How do I set it up?
Setting up aMule properly is just a matter of tastes and depends on many factors. If yuo just wish a quick startup configuration, then continue reading.
Open aMule and click on the Preferences button. Set a nickname and the language in which you wish to have aMule. Then switch to the Connection tab and input your Line Capacities. Then input the Bandwidth Limits according to the maximum amount of bandwith you want aMule to use. Then swith to the Directories tab and set a directory for both the temporary files (where files will be stored until they are completely downloaded) and the completed files. Finally, select the directories which you want to share. It is not recommended to share too much files. Read bellow "What are the best settings I can set to have a nice download rate". To select recusively all directories inside a certain directory, hold CTRL while clicking over the directory.
How do I start my aMule experience?
Just click on the Connect button. You should have some servers listed on the Servers window, though. If you have no servers listed, then click on the little button below the Connect button in the Servers window before clicking the Connect button. After some time, aMule will be connected to some server (you'll know because in the lower right corner the "Not connected" message will dissapear). When conencted, switch to the Search window and search for the file you want and once you find the file you want, double-click on it.
For general aMule usage, join aMule #amule in irc.freenode.net or ask in forumas at <a href="http://www.amule.org/amule/">http://www.amule.org/amule</a>.
What are the best settings I can set to have a nice download rate?
If you understood "Is there any limit on the ED2K network?" then you might have seen that, if your provider allows you, the best is to have hte upload limit set to a minimum of 10 KBps. Also, if you understood "What is all that credits, rate and score stuff about?", you might also understand that the more you upload, the more you donwload, so take the upload limit up as much as you can, share well known and popular files (don't share too much (not more than aproximatly 200 files) or you'll get banned from some servers for giving too much traffic) and try to share small-sized popular files since some ED2K clients give extra credits for providing them a whole small-sized files. A good tip (thanks to kaouete) when you are trying to download some rare or "never completing" file, is, whenever you see someone uploading to you some chunk of that file, give that client a friend slot so that, if it tries to download something from you, it gets preference and you gain credits on that client.
Can I manage aMule remotely through telnet in the same way I do with eDonkey?
Yes you can, but not exactly in the same way as you do with eDonkey. Just start a normal telnetl session with the host computer (the one running aMule) and, once in, use amulecmd to take control over aMule. To start new downloads just use the ed2k command. Remember amulecmd must be configured.
Another aMule utility that might be of your interest is CAS (which's command is
cas) which will show basic aMule statics.
Also, aMule WebServer might be what you are looking for if you can and don't mind using a web browser on the client computer. Have in mind that aMule WebBroser must also be configured.
Is there any way to start aMule with no graphical interface?
aMule is a monolithic application. This means that core and GUI are a whole unsplittable block (allthough some effords are already focused in splitting core from GUI). Even though, there's still a walkaround to run aMule on command line but it's not a direct way. You should run
xvfb and then run aMule in it. Afterwards you can take control over aMule using amulecmd and ed2k in the same way as you would if you were accessing aMule remotly over telnet (see above). If you need help on this issue, ask at aMule's forums at <a href="http://www.amule.org/amule/">http://www.amule.org/amule</a>.
Can I run two aMule instances at the same time?
Yes you can, although it is not recommended. aMule will only check if the concurrent user was is running some aMule instance, so you can run as much aMule instances as user accounts you have access too. To do this, just run
xhost + and then
su as another user and run aMule from that shell.
Be aware, since aMule can't check if a user is running aMule on another X display. So, if your account is already running some aMule instance in some other X display, do not run another aMule instance on another X display or you might end up with lost configuration settings and corrupt chunks.
How can I get those nice aMule statics some people post on the IRC channels?
You can either copy and paste CAS's (C aMule Statics) output (to execute CAS, run
cas) or, if you use xChat as your IRC client and have the Perl module installed, you could use XAS (xChat aMule Statics).
What is a slot? And a friend slot?
When uploading files, your upload bandwidth (which may vary depending on the upload limit set in Preferences or the natural connection-type upload limit) will be divided into slots. So, each slot is an amount of KBps which will be assigned to each client who tries to download from you. This bandwidth set to each slot can be set in Preferences, but it will be ignored if the bandwidth set per slot doesn't allow at least three connections at the same time.
So, after knowing what a slot is, a friend slot is just a slot which is assigned to a client in the friends list. Only one friend can have a slot at the same time. Whenever that friend (who has the friend slot enabled) tries to download a file from you, it will be given highest priority in the uploads queue.
What is the real point on setting up Line Capacities in Preferences? Shouldn't aMule only care for the Bandwidth Limits?
aMule really only cares for the Bandwidth Limits. Line Capacities are only set for the Statics display. Let's see: Imagine you have a 100KBps conection, imagine you want to set the Limit at 40KBps because you have a web server which needs a minumum of 60KBps to serve all the petitions. Now imagine you download rare indonesian free songs. You most surely never download at more than 3KBps ever. So, you could set Line Capacities at 5KBps so that the graph at Statics has some meaning, since if you set it up as a 100KBps connection, the graph will show an horitzontal line with no meaning at all.