Skip to content

Introduction

eMule AI focuses on making the client more capable on modern networks through features such as NAT Traversal, uTP, IPv6 support, better list performance, and a broad set of quality-of-life improvements.

This page brings together the key information around the project: an overview of the client, technical guidance for advanced connectivity features, release notes for recent work, and support sections that help users get started and troubleshoot effectively.

Highlights

Modern Connectivity

NAT Traversal, uTP, eServer Buddy relay support, IPv6 handling, and stronger diagnostics improve connectivity in difficult network conditions.

High-Scale Performance

Virtual-list improvements, long path support, safer part-file writing, and smoother startup behavior keep large libraries responsive and stable.

Modern Connection Tuning

Connection parameters and related defaults were optimized to better match today's hardware and network conditions, improving balance, responsiveness, and overall transfer behavior.

Protection Panel

A dedicated control center for anti-leecher and safety rules gives users clearer policy choices, smarter actions, and more predictable enforcement.

Protection & Quality

Protection panel controls, spam and blacklist tooling, IP filtering improvements, and many stability fixes help keep long sessions predictable.

Dark Mode & UI Polish

Theme-aware windows, menus, tabs, list headers, and refined drawing updates make the client feel cleaner, clearer, and more modern.

Shared Files Automation

Threaded shared-file reloads, background file watching, and automatic subdirectory sharing reduce manual maintenance and keep libraries current.

Download Safety

Download Checker, richer source handling, and quality-oriented controls help prevent duplicates, reduce noise, and improve everyday file management.

Diagnostics & Tools

Connection Checker, stronger logging, toolbar shortcuts, and clearer troubleshooting signals make network and client issues easier to understand.

Built-In Language Support

Integrated language resources for 100+ languages reduce setup friction and make the client more accessible across a wide range of users.

Workflow Improvements

New toolbar actions, client history, expanded columns, note support, and improved search/list behavior streamline daily use for power users.

Settings Guide

This section provides clear explanations of eMule AI settings, so you can understand what each option does and choose the configuration that best fits your needs.

eMule AI Settings Reference
User Interface Tweaks

Here you can find tweaks related to user interface.

Dark Mode

You can turn on/off dark mode here.

Automatic

Sychronizes eMule's dark mode with your Windows setting.

Dark Mode

Enables dark mode.

Light Mode

Enables light mode.

Display speed graphics in toolbar

Display speed graphics in toolbar

Disable "Find As You Type"

"Find As You Type" is an official feature that starts filtering files immediately as you type on the lists. When you disable "Find As You Type", filtering will be started after an enter or return key press, when you complete typing your text filter.

List update period

This is the time interval in milliseconds that will be waited before updating items in lists.

Maximum Sort Order History

You can change the maximum number of sort order history for the specified list here. eMule can sort orders of lists by multiple number of colums by remembering user clicks on columns. So if the data of two rows in the last clicked columns (marked with arrow) are equal then eMule uses next columns in the sort order history. Default value is 4. 0 means unlimited number of sort order history. Please note that using 0 or big values can effect user interface performance negatively if you have too much items in your download/upload/shared file/file history lists.

Server list

You can change the maximum number of sort order history for the specified list here. eMule can sort orders of lists by multiple number of colums by remembering user clicks on columns. So if the data of two rows in the last clicked columns (marked with arrow) are equal then eMule uses next columns in the sort order history. Default value is 4. 0 means unlimited number of sort order history. Please note that using 0 or big values can effect user interface performance negatively if you have too much items in your download/upload/shared file/file history lists.

Search list

You can change the maximum number of sort order history for the specified list here. eMule can sort orders of lists by multiple number of colums by remembering user clicks on columns. So if the data of two rows in the last clicked columns (marked with arrow) are equal then eMule uses next columns in the sort order history. Default value is 4. 0 means unlimited number of sort order history. Please note that using 0 or big values can effect user interface performance negatively if you have too much items in your download/upload/shared file/file history lists.

Files lists

You can change the maximum number of sort order history for the specified list here. eMule can sort orders of lists by multiple number of colums by remembering user clicks on columns. So if the data of two rows in the last clicked columns (marked with arrow) are equal then eMule uses next columns in the sort order history. Default value is 4. 0 means unlimited number of sort order history. Please note that using 0 or big values can effect user interface performance negatively if you have too much items in your download/upload/shared file/file history lists.

Downloads list

You can change the maximum number of sort order history for the specified list here. eMule can sort orders of lists by multiple number of colums by remembering user clicks on columns. So if the data of two rows in the last clicked columns (marked with arrow) are equal then eMule uses next columns in the sort order history. Default value is 4. 0 means unlimited number of sort order history. Please note that using 0 or big values can effect user interface performance negatively if you have too much items in your download/upload/shared file/file history lists.

Downloading clients list

You can change the maximum number of sort order history for the specified list here. eMule can sort orders of lists by multiple number of colums by remembering user clicks on columns. So if the data of two rows in the last clicked columns (marked with arrow) are equal then eMule uses next columns in the sort order history. Default value is 4. 0 means unlimited number of sort order history. Please note that using 0 or big values can effect user interface performance negatively if you have too much items in your download/upload/shared file/file history lists.

Uploading clients list

You can change the maximum number of sort order history for the specified list here. eMule can sort orders of lists by multiple number of colums by remembering user clicks on columns. So if the data of two rows in the last clicked columns (marked with arrow) are equal then eMule uses next columns in the sort order history. Default value is 4. 0 means unlimited number of sort order history. Please note that using 0 or big values can effect user interface performance negatively if you have too much items in your download/upload/shared file/file history lists.

On queue clients list

You can change the maximum number of sort order history for the specified list here. eMule can sort orders of lists by multiple number of colums by remembering user clicks on columns. So if the data of two rows in the last clicked columns (marked with arrow) are equal then eMule uses next columns in the sort order history. Default value is 4. 0 means unlimited number of sort order history. Please note that using 0 or big values can effect user interface performance negatively if you have too much items in your download/upload/shared file/file history lists.

Known clients list

You can change the maximum number of sort order history for the specified list here. eMule can sort orders of lists by multiple number of colums by remembering user clicks on columns. So if the data of two rows in the last clicked columns (marked with arrow) are equal then eMule uses next columns in the sort order history. Default value is 4. 0 means unlimited number of sort order history. Please note that using 0 or big values can effect user interface performance negatively if you have too much items in your download/upload/shared file/file history lists.

Kad contacts list

You can change the maximum number of sort order history for the specified list here. eMule can sort orders of lists by multiple number of colums by remembering user clicks on columns. So if the data of two rows in the last clicked columns (marked with arrow) are equal then eMule uses next columns in the sort order history. Default value is 4. 0 means unlimited number of sort order history. Please note that using 0 or big values can effect user interface performance negatively if you have too much items in your download/upload/shared file/file history lists.

Kad current searches list

You can change the maximum number of sort order history for the specified list here. eMule can sort orders of lists by multiple number of colums by remembering user clicks on columns. So if the data of two rows in the last clicked columns (marked with arrow) are equal then eMule uses next columns in the sort order history. Default value is 4. 0 means unlimited number of sort order history. Please note that using 0 or big values can effect user interface performance negatively if you have too much items in your download/upload/shared file/file history lists.

GeoLite2

Provides information about the location of a server / client

Disable

Disable GeoLite2

Show country code

This option shows only country code, doesn't show country or city names.

Show country name

This option shows country name, doesn't show city name.

Display full name

This option shows country and city names

Show Flags

Show country flags

Connection Tweaks

Here you can find tweaks related to connection.

Check Connection

When activated, eMule constantly checks the internet if it is still connected, disconnects the Server/Kad connection when going offline and reconnects when going online. This prevents losing sources, Kad nodes or server entries when the connecion is offline. This implementation uses a native Windows API to check if the given URL address is reachable or not, instead of using ICMP which can be troublesome with some modem/router configurations. Enabling this option is recommended. Default: False

Activate connection checker

Toggle the connection checker. When enabled, eMule automatically monitors connectivity and reconnects when the link comes back.

URL

Please enter URL address in "https://www.google.com" format, otherwise you can break this functionality.

Enable uTP & NAT Traversal (NAT-T)

When enabled, eMule uses the uTP (Micro Transport Protocol) over UDP instead of TCP for peer connections. This helps to reduce latency and improve network friendliness. NAT Traversal (NAT-T) allows establishing direct connections between clients behind routers or firewalls by automatically bypassing NAT restrictions. Together, these options increase the number of successful peer connections and may improve download/upload performance, especially in NATed networks.

NAT-T Port Window

Accept incoming uTP by IP-only when the observed remote port is within ±N of the expected port. Helps sequential port-mapping NATs. Larger windows increase wrong-match risk; smaller windows reduce success on remapping NATs. Typical: 64–128. Set 0 to disable IP-only fallback.

NAT-T Sweep Window

Maximum +-N port sweep used for NAT-T hole punching around the expected remote port. Smaller values reduce stray probes and wrong matches; larger values improve success on remapping NATs but increase background traffic. Typical: 8-32. Set 0 to disable sweep behavior.

uTP Jitter Min (ms)

Lower bound for random jitter between uTP service cycles (used with “uTP Jitter Max”). Smaller values reduce delay but risk synchronized bursts; larger values spread load. Set equal to Max to remove variation. Recommended: 50–100 ms.

uTP Jitter Max (ms)

Upper bound for random jitter added between uTP service cycles (together with the Min value). Jitter staggers timers to prevent synchronized bursts. Larger values spread load but may add delay; keep within tens to low hundreds of milliseconds.

Kad Buddy Slots

Sets the number of clients you can serve as Kad buddies. Served Kad buddies are firewalled users who depend on you to relay Kad traffic. Raising this limit allows more firewalled clients to participate in file sharing and strengthens the network, but also increases your resource usage: typically only a few kbit/s of extra bandwidth per buddy, and around 0.3%% CPU load per buddy on a modern high-performance CPU. The default minimum is 5, and the maximum is 100.

eServer Buddy Slots

Sets the number of clients you can serve as eServer buddies. Served eServer buddies are LowID users who depend on you to establish callback connections via an eDonkey server. Raising this limit allows more firewalled clients to participate in file sharing and strengthens the network, but also increases your resource usage: typically only a few bytes/s of extra bandwidth per buddy, and around 0.1%% CPU load per buddy on a modern high-performance CPU. The default minimum is 5, and the maximum is 100.

Use Intelligent Chunk Selection

With Intelligent Chunk Selection (ICS) the clients exchange information about which chunk is being downloaded at the moment, then a client can select and download the less downloaded chunk. When"Try to download preview chunks" option is enabled, preview chunks are still prioritized until they are completed.

ICS has three working modes. These modes and upload/download chunk prioritizations are as follows:
RELEASE: complete sources <= 3: rarest>less downloaded>smallest>random
SPREAD: complete sources between 4 and 10: smallest>rarest>less downloaded>random
SHARE: complete sources over 10: smallest>preview (if selected in preferences)>random

Retry failed TCP connection attempts

This feature enables the client to retry a connection attempt after it failed, instead of directly dropping the source. This is an enhancement to bring the balance back with the dead source list. This way only clients land on deadsource list that are really no longer reachable.

ReAsk sources after IP change

When clients with a dynamic IP addresses disconnects and reconnects, their IP changes. Unless they reask the clients they want to download from, those clients cannot be aware about the IP change. So it's possible that a client wants to upload to you, but still thinks you have the old IP and then it fails. This feature helps reasking all the other clients as fast as possible in order not to create the mentioned situation. This feature doesn't work for LowID clients.

Inform queued clients after IP change

Informs all clients in the waiting queue when your IP changed, so they will not lose us and their queue position.

ReAsk Time for File Sources [29-55 min.]

Usually eMule reasks every client we want to download from every 29 minutes (58min for the clients with no needed parts). Clients in the upload queue lose their places in that queue after one hour. By increasing the reask time you may decrease overhead of your own client and also the network. But please not that You should not increase your reask time when you have low ID!

Download Checker

Define automatic checks when a file with the same hash or same/similar name is already downloading/downloaded/canceled/shared.

Disable

No download check will be performed.

Ask with a message box

Show a message box and ask user to approve or reject the download when a known file with same/similar name is found.

Reject same/similar name

This option will automatically reject any download request having an entry in the file history with the same file name.

Accept same/similar name conditionally

This option will automatically accept any download request having an entry in the file history with the same/similar file name if new file size is larger than the old one by the defined percentage. 0 means accept all; 10 means files %10 or more larger will be accepted.

File size percentage condition

When "Accept same/similar name conditionally" is selected, you can define a percentage here: 0 means accept all; 10 means files %10 or more larger will be accepted.

Reject canceled files

Enabling this option will Reject files with a corresponding entry in the canceled history having similar hash or name.

Reject files with same hash

Enabling this option will Reject files with same hash even if file names are different.

Reject blacklisted file names

Enabling this option will reject files that are manually blacklisted or have blacklisted names. Please note that this option requires the 'Enable manual blacklist' setting to be enabled in the Blacklist Panel.

Case insensitive file name comparison

Enabling this option will always perform case insensitive file name comparison.

Ignore file extension

Enabling this option will ignore file extension during file name comparison.

Ignore tags

Enabling this option will ignore tags enclosed in () [] {} <> during file name comparison.

Don't ignore numeric-only tags

Enabling this option will include numeric-only tags enclosed in () [] {} <> during file name comparison even though "Ignore tags" is enabled. For example tags like (25) or [25] or {25} or <25> will not be ignored.

Ignore non-alphanumeric characters

Enabling this option will ignore any non-alphanumeric characters during file name comparison.

Minimum file name comparison length

Anything shorter than this file name length will discard comparison and accept file. Results of name processing options "Ignore file extension", "Ignore tags" or "Ignore non-alphanumeric" will be reverted if previous step satisfies this condition. Defined value should be greater than 4.

Skip incomplete file download confirmation

Skip "Potentially Incomplete File" confirmation messagebox and download incomplete files.

Mark as blacklisted

If you enable this option, all rejected files will be automatically added to the manual blacklist, unless they are already known files (shared, downloading, downloaded, or canceled). Please note that this option requires the 'Enable manual blacklist' setting to be enabled in the Blacklist Panel.

Automatically check search results and mark as blacklisted

If you enable this option, once a search is completed, a background process will start to check all search results. Any rejected files will be automatically added to the manual blacklist if they are not already known (shared, downloading, downloaded, canceled). Please note that this option requires the ‘Enable manual blacklist’ option to be checked in the Blacklist Panel.

File Inspector

Upon activation, eMule periodically scans all downloading files, identifies empty (filled with binary zeros) fake files, incomplete (partially filled with binary zeros) files, DRM-protected media files and subsequently removes them from the download list. Additionally, it detects invalid file extensions and replaces them with valid ones.

Disable

No detection will be performed.

Log only

Empty (filled with binary zeros) fake files, incomplete (partially filled with binary zeros) files, DRM-protected media files and invalid file extensions will be detected, then logged. But these files won't be deleted/renamed.

Delete/Rename

Empty (filled with binary zeros) fake files, incomplete (partially filled with binary zeros) files, DRM-protected media files and invalid file extensions will be detected, deleted/renamed and then logged.

Detect Empty/incomplete files

Enables detection of Empty/incomplete files.

Detect DRM protected files

Enables detection of DRM protected files.

Detect invalid file extensions

When activated, the download list will be periodically scanned for files with invalid file extensions. Any invalid extensions detected will be automatically replaced with the correct, valid ones.

Check period (in minutes)

When File Inspector is activated, it periodically checks all downloading files. This parameter sets the interval (in minutes) between each check. Note that the first check will always occur approximately 1 minute after eMule starts or this feature is enabled. After the initial check, the defined period value will be used.

Minimum completed data size (in kb)

This parameter specifies the threshold value for downloaded data. Files with a downloaded data amount equal to or greater than this value will be inspected.

Empty data percentage threshold

Fake files are typically completely empty (filled with binary zeros), but they may also contain some garbage data interspersed with large empty sections. Additionally, there might be incomplete files (partially filled with binary zeros) on the network that you might want to cancel downloading. This parameter sets the threshold for the percentage of empty data relative to the total downloaded data. If this threshold is exceeded, the file will be considered fake or incomplete. A threshold value of 100 means that all downloaded data must be empty (binary zeros) for the file to be deemed fake.

Lower compression percentage threshold

This parameter specifies the lower threshold value for file compression percentage. Files with a compression percentage equal to or greater than this value will be inspected.

Bypass empty data check for high compression

Bypasses the empty data check for files with a high compression percentage and accepts them as fake files.

Upper compression percentage threshold

Specifies the upper threshold value for file compression percentage. Files with a compression percentage equal to or greater than this value will be accepted as fake files without checking the empty data percentage.

Search Tweaks

Here you can find tweaks related to search and search list.

Group known files at the bottom

Enabling this option groups all known (shared, downloading, downloaded, canceled) files at the bottom of the search result list. If "Spam" and/or "Blacklisted" features are also enabled then all these files will be grouped as a single group. When you sort search list this will be sorted as a group and will still stay at the bottom.

Spam threshold

"Mark As Spam" performs complex heuristic analysis and tries to mark possible similar files. During this process, it generates a value which indicates the probability of being a spam file. This value is compared with the default threshold value 60 and if it is more than or equal to the threshold then the file is marked as spam. Here you can increase the threshold value to minimize the possibility of having files marked as spam wrongly. A value equal or greather than 60 should be defined.

Kad Network search results threshold

A file search started on the Kad Network stops after a specific time limit or when the number of found files reaches a certain limit. Here, you can adjust this limit for the number of found files.

Show close button on search tabs

You can disable this option to prevent accidental clicks n close buttons that could lead to closing search tabs.

Server Tweaks

Here you can find tweaks related to E-Server.

Repeat server list after connection failures

When connection fails and there is no more server to try in the server list, start again from the first entry. Default: True

Don't remove static servers from serverlist

If a static server in the server list goes over the max number of retries it is disabled instead of being removed until the restart of eMule

Don't save part files after connecting server

Every server connection triggers saving all part files. When downloading hundreds of files, this takes ""A LOT"" of time and causes freezes. Enabling this option prevents this from occuring. Default: True

File & Share Tweaks

Here you can find tweaks related to shared files, file history lists and shares.

Show downloading files

Shared files and file history lists can include or exclude downloading files. You can switch this here.

Show shared files in file history list

File history list can include or exclude shared files. You can switch this here.

Show duplicate files in file history list

File history list can include or exclude duplicate files. You can switch this here.

Automatically share subdirectories

This option ensures that all existing and newly created subdirectories are automatically shared when a folder is shared.

Don't Share Files With Extensions

Excludes files with the defined extensions when sharing a folder.

List of extensions:

Define a comma seperated list for extension that will be excluded when sharing a folder.

Adjust NTFS daylight file time

On NTFS file systems, file timestamps may appear to shift by one hour if Daylight Saving Time (DST) is active. Enabling this option adjusts file times accordingly, which may help match files more accurately across DST changes.
WARNING: This adjustment may cause unnecessary rehashing of files when DST switches, potentially leading to performance issues, especially with a large number of shared files. To reduce this impact, consider enabling the "Allow DST time tolerance".

Allow DST time tolerance

Enabling this option allows a 1-hour tolerance when comparing file timestamps, which helps prevent unnecessary rehashing of files caused by Daylight Saving Time (DST) differences. This is especially useful when the "Adjust NTFS daylight file time" option is enabled, as it may shift file times by one hour depending on DST status. If this tolerance is not allowed, identical files may appear different and get rehashed each time DST switches, which can negatively impact performance, especially with large numbers of shared files.






Emulation Settings

Most of the other clients in the eD2k network prefer sharing with clients of their own kind. There are also some communities (which uses addons in the user names) prioritize uploading to their members. In order not to be in a disadvantage, you can activate these features which makes eMule pretend to be a client of the same kind of the connected clients and/or a member of the community that connected clients are belong to.

Emulate MLDonkey Clients

eMule will pretend to be a MLDonkey client when enabled.

Emulate eDonkey Clients

eMule will pretend to be a eDonkey client when enabled.

Emulate eDonkey Hybrid Clients

eMule will pretend to be a eDonkey Hybrid client when enabled.

Emulate Shareaza v2 Clients

eMule will pretend to be a Shareaza client when enabled.

Emulate Lphant Clients

eMule will pretend to be a Lphant client when enabled.

Emulate Communities

eMule will pretend to be a member of the community that connected clients are belong to by copying their community tags. This feature implements a smart learning mechanism: Analyzes all tags used in the user names of the all connected clients and if it encounters a tag (on different clients) nth time, where n is equal or more the defined treshold value during an eMule execution session, this tag will be saved in "preferences.ini" and started to be emulated. Any tags which is not saved will be ignored and dropped when sending user name.

Tag learning treshold

When eMule encounters a tag (on different clients) nth time, where n is equal or more than the defined treshold value during an eMule execution session, this tag will be saved in "preferences.ini" and started to be emulated. Any tags which is not saved will be ignored and dropped when sending user name. Default value is 3 and minimum allowed value is 2 since 1 can cause other mods ban/punish our client by sending random tags to see if we copy them.

Log Emulation

Enabling this option logs all emulation events to the verbose log output. You also need to activate verbose log option under Options-->Extended-->Verbose to see emulation event log.

Credit System

What credit system to use. A credit system is required in Morph. The priority of the peers in your waiting queue is based on the credit system.

Official Credit

Start:1 min:1 max:10
Ratio1=Uploaded Total x 2 / Downloaded Total
Ratio2=SQRT(Uploaded Total+2 )
Both ratios are compared and the lower value is used as modifier. Some boundary conditions also exist:
Uploaded Total less than 1MB => Modifier=1
Downloaded Total=0 => Modifier=10

Lovelace Credit

Start:1 min:0.1 max:100
Ratio:1:1.5
l-modifier=100*((1-1/(1+exp((3*{MB uploaded to us}^2-{MB downloaded from us}^2)/1000)))^6.6667)
Only clients using the 'SecureHash' are able to get a multiplier of 100. All others will stay at 10. In contrast to the original credit system, credits are evaluated more on differences and not on quotients. Using the original system you have the best credit values shortly after generating a new userhash. With the new credit system you get good credit values faster if you have already uploadeded many MB before (and did not cheat by killing the userhash).

Ratio Credit

In contrast to its name, it is not based on UL/DL ratio, but on DL, UL values and their differencies.There is no simple and the only formula.
Start:1
Progressively punishes near zero (<= 1 MB) uploaders.
Progressively boosts uploaders who got nothing paid back yet (<= 1 MB in total).
For client who uploaded to me > 1 MB and <=9 MB grants minimal credit DL/9.
For client who uploaded to me > 9 MB minimal credit is 0.7 + sqrt (DL+1)/10.
With balanced ratio credit raises proportional to sqrt (DL+1)
Credit is farther increased/decreased, depending on UL - DL difference.
No limiting values

Pawcio Credit

Start: 3 min: 1 max: 100.
Ratio = 3 * downloaded / uploaded
For new clients (downloaded and uploaded data less than 1MB)
ratio = 3.0 (instead of 1.0) - If you have received more than 1MB from someone but haven't given anything back user gets ratio = 100.0
Small bonus for clients that have given you many MB: If you get 100MB then user receive ratio = 50.0 till you give back 108MB.

EastShare Credit

Start:100 min:10 max:5000
Ratio=+6 per MB uploaded and -2 for downloaded
bonux +100 if upload 1MB+
low value if uploaded at least 1MB+, ratio = 50

Magic Angel Credit

Magic Angel credit system based on the official Creditsstem. The differences are:
it gives Credits for Upload more than 1.65MB (official 1.00MB)
the lowest modifier is 0.1 (official 1.0)
the highest modifier is 50.0 (official 10.0)

Magic Angel+ Credit

Magic Angel+ credit system based on Magic Angel Creditssytem, but increases the modifier a bit, if the client uploaded to us more than we uploaded to him. If the upload of the client minus his download is
<7MB: modifier+0.3
<15MB: modifier+1.0
<30MB: modifier+2.0
>=30MB: modifier+3.0

Sivka Credit

Ident Needed --> Ratio=0.75
Ident failed --> Ratio=0.5
Bad client --> Ratio=0
If upload-download>=1GB --> ratio=32
If 0<upload-download<1GB --> ratio=sqrt(upload-download in MB)
Otherwise ratio=1

S.W.A.T. Credit

There are two different credit modifier calculated:
Ratio1=Uploaded Totalx2.2/Downloaded Total
Ratio2=SQRT(Uploaded Total+2)
Both ratios are compared and the lower value is used as modifier.
Some boundary conditions also exist:
Uploaded Total<1MB (exactly!) => Modifier=1
Downloaded Total=0 => Modifier=10
The modifier may not be lower than 1 or higher than 100

TK4 Credit

If you are sharing completed files and someone downloads data from one of these from you, they probably cannot give you data back as you have all of the file. So in the TK4 system their credit rating remains unchanged. If you are downloading a file and someone takes data from you from the parts of the file you have they will be subject to the credit system and depending on how much they have given they may have their credit rating reduced. At any time if anyone gives you data they get a credit rating increase. The credit system works basically like this:
Start:10 Allowance:'Mb given'/4 + 1MbIf 'Mb taken' greater than 'Mb given + allowance + 1Mb (they have taken more than they gave + some)
Then if the file is a file we are downloading
If '(Mb taken - allowance)' is between 1 to 81Mb credit multiplier range = 9 to 1 math: 10 - square root('(Mb taken - allowance)' - 'Mb given') if '(Mb taken - allowance)' is greater than 81Mb credit multiplier range = 1 to 0.14 math: 9 / square root('(Mb taken - allowance)' -'Mb given')
If 'Mb given' is greater than 'Mb taken' (they have given more than they have taken)
Credit multiplier range = 10 to 342 math: 10 + log(2.72+('Mb given'-'Mb taken)*4)+('Mb taken/12)
There is no absolute range for multipliers but I have quoted a range of 0.14< to >342 (Assumes around a max. 4Gb difference) with a starting point of 10. Clients with failed SUI will start at 10, but not go up.

Xtreme Credit

It rewards clients which gives you a high download. This clients gets a bonus factor.
On the other side, clients you upload much data and the don't give something back to you will get a penalty for the current emule session.
Formula for positive bonus:
Bonus = (download - upload)/10485760 - 1.0/(download/10485760)
The max score ratio is 10. (like official)
A client can get a negative bonus of 0,1 if you gave him 1 chunk(9,28MB) more this session and also at complete comparision of download/upload without geting something back.
A client can get a negative bonus of 0,2 if you gave him more than 2 chunk (9,28MB) this session and also at complete comparsion of download/upload without geting something back.

ZZUL Credit

Start:1 min:1 max:10
Ratio1 = Uploaded Total x 2 / Downloaded Total
Ratio2=SQRT(Uploaded Total+1)
Both ratios are compared and the lower value is used as modifier. Some boundary conditions also exist:
Uploaded Total=0 => Modifier=1
Downloaded Total=0 => Modifier=10

Client History

You can enable and tweak setting related with saving and loading clients here. When this feature is enabled, clients will be reloaded after restarting eMule. Enabling this feature also helps protection panel, since all punishments will be restored whenever you restart eMule.

Enable

Enable this feature

Client history expiration days

Clients not seen since the defined number of days will be purged from clienthistory.met file.

Log client history events

Enabling this option logs all client history events to the verbose log output. You also need to activate verbose log option under Options-->Extended-->Verbose to see client history event log.

Remote Client's Shared Files

Here, you can enable and tweak setting realated with remote client's shared files.

Always use the user hash as the tab name

Default tab name is user name if it isn't empty otherwise user hash. But there're many clients using same user names, so it can be difficult to distinguish their tab names in the search list. If you activate this option, user hash will always be used as the tab name.

Add the client note to the tab name

If this option is enabled and a note has been added to the client, it will be appended in square brackets at the end of the tab name.

Auto query period

This is the time interval in minutes between shared files auto query processes executed.

Maximum clients to be queried in a single period

This is maximum number of clients that will be auto queried in the defined period.

Auto query period for the same client

This is the minimum time in minutes between consequent auto queries for the same client. Minimum value that can be defined is 30 minutes.

Set auto query for the clients downloaded from us

When enabled, the auto query will be activated for any clients which hasn't queried yet and has downloaded from us more than the specified threshold value.

Download threshold

Auto query will be activated any clients which hasn't queried yet and has downloaded from us more than this amount (in MB) of data.

Set auto query for the clients uploaded to us

When enabled, auto query will be activated for any clients which hasn't queried yet and has uploaded to us more than the specified threshold value.

Upload threshold

Auto query will be activated any clients which hasn't queried yet and has uploaded to us more than this amount (in MB) of data.

Save & Load Sources

You can enable and tune saving and loading sources here. When this feature is enabled, sources will be reloaded after restarting eMule.

Enable

Enable this feature

Maximum sources to save

You can limit number of sources here. This can be helpful to reduce saving and loading time and usage of system resources.

Source expiration (in days)

You can adjust the expiration day count for sources here. Expiration helps minimize saving and loading times and reduces system resource usage.

Met File Control

You can tune .met files expiration behaviour with these options.

Don't purge entries

Old entries in the known.met file will never be purged.

Partially purge entries (Official method)

Parts of old entries in the known.met file will be purged. This is the way the official does it.

Completely purge entries

Old entries in the known.met file will be purged completly.

Days until purge (0 = Default [31 days])

Clean up .met files after file has not been seen for the defined days. Saves diskspace. Applies for known*.met. Never set a very low value (less than 30) here.

Remove unused AICH hashes immediately

Enable if AICH hash of unshared files should be deleted immediately. Default: disabled

Client credit expiration days

Clients not seen since the defined number of days will be purged from clients.met file. Minimum value that can be defined here is 150 days.

Backup

These settings allow you to backup your eMule configuration data. Here, you can enable and adjust the backup settings.

Backup on exit

Enable automatic backup when eMule closes.

Automatic backup

Enable automatic backup at defined periods.

Backup period

This is the interval, in hours, at which a new backup will be created.

Maximum number of backups

This is the maximum number of backups. When this limit is reached, the oldest backup folder will be deleted to create a new backup.

Compress backup folder

This option recursively compresses the backup folder. It is only supported by the NTFS file system.

Advanced Preferences

Minor Preferences for advanced tweaking. Also supported in official by editing preferences.ini

MiniMule

Additional settings for the MiniMule feature.

MiniMule auto close

The MiniMule window will usually remain visible until closed. Setting this value to 0 will automatically close the window when the cursor is moved out of the window. Similar to a tooltip. (default=1)

MiniMule transparency

Controls the transparency of the MiniMule window. 0 and 100 are opaque 1 is translucent. (default=0), might require restart.

Display

How to display some items in the download window

Restore last main window

eMule remembers which of the main windows (Kademlia, Server, Transfer, was open, when before application exit and restores it. (default = unchecked)

Restore last log pane

Remember which of the log panes (Log, Verbose) has been used the last session.

Straight window styles

Changes the look of the statistic graph window and some other minor styles stuff. (might require restart)

Right to left windows layout

Adds right-to-left reading support to eMule. Useful for languages like Hebrew etc.

Show active download in bold

Enabling this option sets font of the active download as bold in download list.

Maximum chat history

Defines the maximum number of lines saved in the history of the irc messages. After this value is reached the oldest message is purged on new entry (FIFO - First In First Out). default =100

Maximum chat sessions

Maximum open chat sessions

Date&Time format

Date&Time format

Date&Time format for lists

Date&Time format for lists

Show vertical hour markers in the statics

Show an vertical line in the statics window every hour. Resize statistics window to see effect (default: enabled)

Disable some toolbar options

Option to disable toolbar options like i.e.: Added chevron support: If toolbar is too small to display all buttons a chevron ('>>' icon) is shown at the very right side which opens a menu with the remaining button commands. Tooltips for truncated button titles and in 'No Labels' mode of toolbar. Buttons can be moved and/or removed from the toolbar by holding down Ctrl+Alt key while draging a button with the mouse. Button sizes more similar to Windows Explorer. (default: checked)

Flash tray icon on new message

Flash the system tray icon when a new message is received. (default=on)

Show 'copy ed2k link' command

In the shared files windows, Show Copy link to clipboard menu option instead of the 'ed2k links....' context menu. (default = off)

Don't update Queue list in real time

The information displayed in the queue list will be updated not as often which will save some CPU time.

Don't recreate statistic graphs on resize

eMule may freeze briefly when the window is resized. This is caused by redrawing the graphs with saved data. If this option is checked, the graphs will not be recreated and start anew.

Use overlay to indicate up/down in taskbar

Windows 7 allows overlays for the taskbar icon. eMule can utilize this to indicate active up- and downloads. Default: disabled

Display all speed values in KB/s

eMule displays speed values in different units based on the speed to be displayed. This options forces all speed values to KB/s rather than B/s, KB/s, GB/s and TB/s.

Log

Additional settings for customizing the logging.

Maximum log buffer

Defines the amount of system memory eMule uses to display the logs. For Win XP a default 128 kB reserved. The logs are rotating, i.e. if the buffer is filled up to its limit an old message is purged when a new one arrives (FIFO).

Log file format

Changes the data format of the log files from unicode to UTF8 when set to 1.

Date&Time format for log

Date&Time format for log

Create crash dump

When this key is enabled eMule will automatically save a crash dump should eMule unexpectedly crash. This can help the developers to track down the problem. The dump is saved in eMule's installation folder, called 'eMule-version-number-Modversion.dmp'. Default=unchecked (disabled)

Ignore instances

Allows the execution of multiple eMule instances. Note: For two eMules running on the same machine they must be installed to different folders, must have different temp folders and also the ports used by each eMule have to be unique. It is not recommended to run two eMules concurrently apart from testing purposes. default:0

Notifier mail encryption certificate name

Name of the certificate for the encryption of email notifications with S/MIME. The certificate will be looked up in the local windows address book.

Preview small blocks

This function should be only activated when using VLC - VideoLAN Client to preview files. It allows to preview multimedia files when at least 16 kB data for .mpeg files or 256 kB data for all other multimedia content (.avi, CD-Images with multimedia content) has been downloaded. Using this option the 'Create backup for preview' setting has to be deactivated in the 'Video Player' dialog. Note that vlc version 8.5 and higher seem to have some problems with broken indexes.

Preview copied archives

When this option is disabled (=0), eMule will use a new preview method which is faster and uses less disk space in the temporary folder.

Preview on double click

If this setting is enabled, double clicking on a row in the download list will invoke the preview command for the related file. If 'Download list double-click to expand' is turned on in 'Preferences -> Display', clicking on the first column invokes the preview command and clicking on the other columns expands the row.

Internet security zone

Security Zones as per Internet Explorer Security settings. Defines which features are allowed in HTML code. Relevant for the MiniMule window. Allowed=Untrusted|Internet|Intranet|Trusted|LocalMachine

Text editor

The default program for editing the Webservices and IPFilter.dat may be entered here. Provide the complete path to the new executable if not using the default notepad.exe.

Server UDP port

Normally the local port for asking servers for sources or searching files on them is randomly chosen . If eMule runs on a machine in a more complex network, especially when routers are used, it may be necessary to fix this port to a defined value or to deactivate it at all. Disabling this port means that eMule will no longer be able to update the status of the servers in its server list and will also not be able to receive sources from them nor do a global search. Exempt from this is the server eMule is actually connected to. Usually the default setting should not be changed. Possible values for ServerUDPPort are: 0:Disabled / 1-65534: Fixed local UDP port / 65535:Random port (default)

Remove files to recycle bin

This setting affects the Delete From Disk function in the right click menu of the Files lists. If disabled then files will be permanently deleted from disk without moving them to the recycle bin.

High resolution timer

Option to make eMule use highres scheduling (better precision for sleeps and some timers). Currently the upload throttler takes advantage of it if enabled, which may give smoother upload performance and smoother pings while using eMule.

Trust every AICH hashset

Trusts every AICH hashset during the current session. Not recommended except debugging.

Intelligent Corruption Handing (ICH)

Intelligent Corruption Handling (ICH) helps recovering corrupted data downloaded from other clients.

Prefer restricted over user

Do not create a new eMule_secure account, but restrict the rights of the current account. Might be an alternative for securemode if you are running in a limited account.

User sorted server list

When enabled this will use the same server list sorting as shown in GUI when trying to connect to a server.

Webserver file upload size limit (in MB)

Amount in MB that are allowed to be downloaded over http from the webserver (Default 5,0=all)

Allowed IP's for webserver

IP addresses that are allowed to connect to the webserver, seperated by ';'

Debug search detail level

Debug search detail level (Default=0)

Crypt TCP padding length [1-254]

Maximum number of random padding bytes added to obfuscated TCP handshakes (default 128). Lower values reduce overhead, higher values increase packet size variation but also add more overhead.

Don't compress avi

Normally all file data is compressed before transfering, except for rar, zip and some other archive formats This options disables compressing avi files like rar files For high speed upload links this increases performance, but for some avi file some possible compression is lost. (default= false). Note that Morph has the option to disable/decrease compression for all files.

Rearrange Kad search keywords

If enabled eMule will automatically rearrange search keywords to avoid limitations by Kad. Default: enabled

Beep on errors

Beep on errors

Accept messages from valid clients only

Accept messages from valid clients only

Keep unavailable directories on fixed drives

Usually shared folders that are unavailable are being removed. Enabling this option will keep those folders if they are on fixed drives so they can be loaded again when they are available again. Default: disabled

Protection Panel Reference

Common Punishment Actions

Use these actions to decide how detected clients should be handled.

IP and user hash ban

Ban both client's IP address and user hash.

User hash ban

Ban client's user hash.

Upload ban

Don't upload to these clients.

Score *0.1

Reduce client score by multiplying 0.1.

Score *0.2

Reduce client score by multiplying 0.2.

Score *0.3

Reduce client score by multiplying 0.3.

Score *0.4

Reduce client score by multiplying 0.4.

Score *0.5

Reduce client score by multiplying 0.5.

Score *0.6

Reduce client score by multiplying 0.6.

Score *0.7

Reduce client score by multiplying 0.7.

Score *0.8

Reduce client score by multiplying 0.8.

Score *0.9

Reduce client score by multiplying 0.9.

No punishment

No punishment action will be taken against the clients of this type.

General Options

You can set general protection panel system options here.

Timing Options

You can set punishment cancellations timing options here.

Punishment cancellation scan period

Protection Panel scans all punished clients periodically and cancel bans and punishments if they are expired. You can change this period value here. This value is in minutes and should be between 2-20.

IP and user hash ban time

Time a client is banned in hours. Please note that all punishments will be reset whenever you restart eMule unless you've already enabled Client History feature. Valid value range is 1-720.

Upload ban & score reducing time

Time a client is upload banned or score reduced in hours. Please note that all punishments will be reset whenever you restart eMule unless you've already enabled Client History feature. Valid value range is 1-720.

Don't punish friends

When enabled, clients in the friend list will not be banned by the Protection Panel System.

Don't allow hot swapping files with a lower priority

If a client gets a slot for a particular file, then it can requests and download another file (which is called as file hot swapping) with a lower priority. This is a security leak that a leecher mod could exploit and also known as "Maella Backdoor". When this option enabled, file hot swapping with a lower priority will not be allowed, but file hot swapping with the same or a higher priority will still be allowed.

Inform bad clients via user name

Generates a user name including a warning text tag and send this to the bad clients.

Use custom text to inform bad clients

You can define your own custom text message used in the user name to inform bad clients here. Default text messages will be used if you leave this empty

Enable anti upload protection

Don't increase client score before it uploads more than the limit defined below. "Try to transfer full chunks to all uploads" need to be enabled to utilize this option.

Limit before a client gets credits [1000 - 2800 KB]

Limit before a client gets credits in KB. A value between 1000-2800 should be defined.

Enable uploader punishment prevention

Not every client detected by the Protection Panel Systems is really bad. Activating this feature prevents clients from being banned by comparing the defined limit with the upload amount or upload-download difference of a client. Score reduced clients may regain a trustworthy status.

Limit for punishment prevention in KB

You can set the limit (in KB) as the minimum upload amount or upload-download difference of a client that will activate punishment prevention.

UL >= Limit

Don't ban the clients who uploaded more than the defined limit.

UL-DL >= Limit

Don't ban the clients who has a "upload-download" difference more than the defined limit, until the difference reaches the limit.

UL-DL >= Limit till 1:1

Don't ban the clients who has a "upload-download" difference more than the defined limit, until the difference reaches 0 (If session ends before 0 is reached, then the client will have to reach the limit again in the next session).

Shield Leecher Detection

Shield is a customizable dynamic leecher protection module that identifies and punishes leecher clients. It represents an enhanced version of eMule XTreme mod's DLP. Unlike DLP, which relies on DLL files, Shield examines client fingerprints defined in the shield.conf configuration file, allowing easy modification by the user.

Check Mod Names

Checks mod names defined in shield.conf to detect leecher or fake mods, bad communities or other kinds of bad clients.

Check User Names

Checks user names defined in shield.conf to detect leecher or fake mods, bad communities or other kinds of bad clients.

Check User Hashes

Checks user hashes defined in shield.conf to detect leecher or fake mods, bad communities or other kinds of bad clients.

Hard Leecher Punishment

Hard leechers are defined in shield.conf. They leech community with extremely bad upload/download ratios or not uploading at all. Choose an action to be taken against detected clients.

Soft Leecher Punishment

Soft leechers are defined in shield.conf. Even though they upload fairly, their client softwares have bad features and not approved by the community. Choose an action to be taken against detected clients.

Ban Bad Kad Nodes [Safe Kad v2]

Detect bad Kad nodes by analyzing their behaviour and ban their IP addresses. Banning these nodes slows down their spreading inside Kad network.

Ban Wrong Package Senders

Detect wrong packages sent by clients causing processing errors and ban their IP addresses. This could either be due to a malfunctioning/misconfigured client or a malicious attempt resembling a DoS attack.

Anti-P2P Bot Detection

Detect Anti-P2P bots like MediaDefender and others by checking their user hashes.

Punishment

Choose an action to be taken against detected clients.

Available actions: IP and user hash ban, User hash ban, No punishment.

Wrong Tag Detection

Detect unknown hello and info tags sent by the clients. These are usually unofficial modification to the original code resulting broken functionality and/or buggy messaging. Bad clients like Applejuice and Darkmule may cause this.

Punishment

Choose an action to be taken against detected clients.

Available actions: IP and user hash ban, User hash ban, Upload ban, Score *0.1, Score *0.2, Score *0.3, Score *0.4, Score *0.5, Score *0.6, Score *0.7, Score *0.8, Score *0.9, No punishment.

Unknown Tag Detection

Detect wrong hello and info tags sent by the clients. These are usually unofficial modification to the original code, may or may not be a sign of a leecher client. So be carefull about the punishment.

Punishment

Choose an action to be taken against detected clients.

Available actions: IP and user hash ban, User hash ban, Upload ban, Score *0.1, Score *0.2, Score *0.3, Score *0.4, Score *0.5, Score *0.6, Score *0.7, Score *0.8, Score *0.9, No punishment.

Hash Thief Detection

Detect clients using our client's hash information and spending our credit information by imitate our client.

Punishment

Choose an action to be taken against detected clients.

Available actions: IP and user hash ban, User hash ban, Upload ban, Score *0.1, Score *0.2, Score *0.3, Score *0.4, Score *0.5, Score *0.6, Score *0.7, Score *0.8, Score *0.9, No punishment.

Mod Thief Detection

Detect clients faking our client's Mod ID.

Punishment

Choose an action to be taken against detected clients.

Available actions: IP and user hash ban, User hash ban, Upload ban, Score *0.1, Score *0.2, Score *0.3, Score *0.4, Score *0.5, Score *0.6, Score *0.7, Score *0.8, Score *0.9, No punishment.

User Name Thief Detection

Detect clients using our client's user name.

Punishment

Choose an action to be taken against detected clients.

Available actions: IP and user hash ban, User hash ban, Upload ban, Score *0.1, Score *0.2, Score *0.3, Score *0.4, Score *0.5, Score *0.6, Score *0.7, Score *0.8, Score *0.9, No punishment.

Empty User Name Detection

Detect eMule clients using empty user name

Punishment

Choose an action to be taken against detected clients.

Available actions: IP and user hash ban, User hash ban, Upload ban, Score *0.1, Score *0.2, Score *0.3, Score *0.4, Score *0.5, Score *0.6, Score *0.7, Score *0.8, Score *0.9, No punishment.

Mod Changer Detection

Detect clients changing their Mod ID very often. Using another eMule Mod with same configuration folder can cause this and this is generally OK. But changing Mod ID very often might be a sign of the leecher mods.

Mod change intervals

This is the time interval in minutes that will be inspected to decide if Mod ID change treshold is reached. A value between 30-1440 should be defined.

Mod change threshold

If this amount of Mod ID changes is reached inside defined time interval, the client will be punished. A value between 1-24 should be defined.

Punishment

Choose an action to be taken against detected clients.

Available actions: IP and user hash ban, User hash ban, Upload ban, Score *0.1, Score *0.2, Score *0.3, Score *0.4, Score *0.5, Score *0.6, Score *0.7, Score *0.8, Score *0.9, No punishment.

User Name Changer Detection

Detect clients without a mod name (acts as official client) changing their user names very often. User name changes are generally OK, except a client does this very often. This might be a sing of bad purposes.

User name change intervals

This is the time interval in minutes between user name change checks which will be used to decide if the user name change threshold is reached. A value between 30 and 1440 can be defined.

User name change threshold

If this amount of user name changes is reached inside defined time interval, the client will be punished. A value between 1-24 should be defined.

Punishment

Choose an action to be taken against detected clients.

Available actions: IP and user hash ban, User hash ban, Upload ban, Score *0.1, Score *0.2, Score *0.3, Score *0.4, Score *0.5, Score *0.6, Score *0.7, Score *0.8, Score *0.9, No punishment.

TCP Error Flooder Detection

Detect clients causing continuous TCP errors. While these errors are not uncommon, the frequency can be alarming with certain clients. This could either be due to a malfunctioning/misconfigured client or a malicious attempt resembling a DoS attack.

TCP error detection intervals

This is the time interval, in minutes, that will be inspected to determine if the TCP error threshold has been reached for a specific client. A value between 30 and 1440 can be defined.

TCP error threshold

If the number of TCP errors reaches the defined threshold within the specified time interval, the client will be punished. The minimum value can be 7.

Punishment

Choose an action to be taken against detected clients.

Available actions: IP and user hash ban, User hash ban, Upload ban, Score *0.1, Score *0.2, Score *0.3, Score *0.4, Score *0.5, Score *0.6, Score *0.7, Score *0.8, Score *0.9, No punishment.

Community Detection

Detect bad community tags in client user names.

Punishment

Choose an action to be taken against detected clients.

Available actions: IP and user hash ban, User hash ban, Upload ban, Score *0.1, Score *0.2, Score *0.3, Score *0.4, Score *0.5, Score *0.6, Score *0.7, Score *0.8, Score *0.9, No punishment.

Fake Version Detection

Detect clients faking client version.

Punishment

Choose an action to be taken against detected clients.

Available actions: IP and user hash ban, User hash ban, Upload ban, Score *0.1, Score *0.2, Score *0.3, Score *0.4, Score *0.5, Score *0.6, Score *0.7, Score *0.8, Score *0.9, No punishment.

Hex Mod Name Detection

Detect eMule clients with a mod name containing hexadecimal characters.

Punishment

Choose an action to be taken against detected clients.

Available actions: IP and user hash ban, User hash ban, Upload ban, Score *0.1, Score *0.2, Score *0.3, Score *0.4, Score *0.5, Score *0.6, Score *0.7, Score *0.8, Score *0.9, No punishment.

Ghost Mod Detection

Detect eMule mods sending empty mod name.

Punishment

Choose an action to be taken against detected clients.

Available actions: IP and user hash ban, User hash ban, Upload ban, Score *0.1, Score *0.2, Score *0.3, Score *0.4, Score *0.5, Score *0.6, Score *0.7, Score *0.8, Score *0.9, No punishment.

Spam Detection

Detect clients spamming chat messages.

Punishment

Choose an action to be taken against detected clients.

Available actions: IP and user hash ban, User hash ban, Upload ban, Score *0.1, Score *0.2, Score *0.3, Score *0.4, Score *0.5, Score *0.6, Score *0.7, Score *0.8, Score *0.9, No punishment.

eMCrypt Detection

Detect bad eMCrypt mods.

Punishment

Choose an action to be taken against detected clients.

Available actions: IP and user hash ban, User hash ban, Upload ban, Score *0.1, Score *0.2, Score *0.3, Score *0.4, Score *0.5, Score *0.6, Score *0.7, Score *0.8, Score *0.9, No punishment.

XS-Exploiter Detection

Detect clients exploting source exchange.

Punishment

Choose an action to be taken against detected clients.

Available actions: IP and user hash ban, User hash ban, Upload ban, Score *0.1, Score *0.2, Score *0.3, Score *0.4, Score *0.5, Score *0.6, Score *0.7, Score *0.8, Score *0.9, No punishment.

File Faker Detection

Detect clients that say they don't have a file but request it anyway.

Punishment

Choose an action to be taken against detected clients.

Available actions: IP and user hash ban, User hash ban, Upload ban, Score *0.1, Score *0.2, Score *0.3, Score *0.4, Score *0.5, Score *0.6, Score *0.7, Score *0.8, Score *0.9, No punishment.

Upload Faker Detection

Ban clients that failed many upload attempts in a row.

Punishment

Choose an action to be taken against detected clients.

Available actions: IP and user hash ban, User hash ban, Upload ban, Score *0.1, Score *0.2, Score *0.3, Score *0.4, Score *0.5, Score *0.6, Score *0.7, Score *0.8, Score *0.9, No punishment.

Agressive Client Detection

Detect clients that ask too often for a file.

Average time between reasks before banned [5-15 min.]

Define an average time limit in minutes between file reasks before banned. Defined value should be between 5-15.

Reask count limit before banned [3-10]

Define a counter limit for file reasks before banned. Defined value should be between 3-10.

Log reask times of agressive clients

If enabled, logs the reask times of aggressive clients to the verbose log. This can be useful for debugging and identifying problematic clients.

Punishment

Choose an action to be taken against detected clients.

Available actions: IP and user hash ban, User hash ban, Upload ban, Score *0.1, Score *0.2, Score *0.3, Score *0.4, Score *0.5, Score *0.6, Score *0.7, Score *0.8, Score *0.9, No punishment.

Punish non SUI Clients

Punish clients without a Secure User Identification.
Explanation of SUI:Clients in the network are identified by a unique value called user hash which is used to grant earned credits with other users. eMule can use an asymmetric encryption to avoid exploiting or manipulating other users hash values and this is called Secure User Identification. Secure User Identification can be turned on in Preferences -> Security and recommended to use it.

Punish non SUI MLDonkey Clients

Punish MLDonkey clients without a Secure User Identification.

Punish non SUI eDonkey Clients

Punish eDonkey clients without a Secure User Identification.

Punish non SUI eDonkey Hybrid Clients

Punish eDonkey Hybrid clients without a Secure User Identification.

Punish non SUI Shareaza Clients

Punish Shareaza clients without a Secure User Identification.

Punish non SUI Lphant Clients

Punish Lphant clients without a Secure User Identification.

Punish non SUI aMule Clients

Punish aMule clients without a Secure User Identification.

Punish non SUI eMule Clients

Punish eMule clients without a Secure User Identification.

Punishment

Choose an action to be taken against detected clients.

Available actions: Score *0.8, Score *0.9, No punishment.

Tweak Official Features

Ban Corrupted Data Senders

Ban clients sending corrupted data.

Ban Hash Changers

Ban clients changing their hash very often. This is usually a sign of the leecher mods.

Ban File Scanners

Ban clients that asked a few times in a row for files we don't have.

Ban Rank Flooders

Ban clients that send unrequested rank informations.

Ban Kad Request Flooders

Ban clients flooding Kad by sending excessive amount of packages.

Kad request flood treshold

This is a multiplier of the maximum number of allowed packages sent in a minute. Defined value should be between 1-4. 1 means a client will be banned if it sends more packages than the allowed number; 2 means a client will be banned if it sends more packages than two times of the allowed number; and so on. Default value is 4.

Blacklist Panel Reference

Blacklist Panel

Manage automatic matching, manual blacklisting, cleanup behavior, logging, and the blacklist definition list.

Enable automatic blacklist

Enabling automatic blacklist feature will mark files in search results as blacklisted when they contain the defined words.

Enable manual blacklist

Enabling this will add "Mark As Blacklisted" menu item to the context menu of the search list. When you mark a file on the search list with "Mark As Blacklisted", it will be listed at the bottom inside spam group as spam file with a distinctive text in "Known" column. This file actually will not be marked as a spam and there are some differences between these two: "Mark As Blacklisted" only marks a specific file with its hash value, while "Mark As Spam" performs more complex heuristic analysis and tries to mark possible similar files too. The performance cost of "Mark As Blacklisted" is lower than "Mark As Spam" and there is also no risk for having a file marked as spam wrongly with this option. Both options can still be useful in different situations.

Remove auto-blacklisted files from manual blacklist

Remove auto-blacklisted files from manual blacklist

Log when automatic blacklist matches a file

Enabling this option logs all file name matches of automatic blacklist definitions to the verbose log output. You also need to activate verbose log option under Options-->Extended-->Verbose to see automatic blacklist log.

Search Result Blacklist Definitions
Scenario

These file names are used in the examples below.

F1: "aaa bbb ccc"
F2: "bbb aaa ccc"
F3: "ccc aaa bbb"
F4: "aaabbbccc"
F5: "aaa.bbb.ccc"
F6: "bbbccc"
Space

Space character is used as a seperator of word blocks in a blacklist definition. So if you define multiple word blocks separated by spaces, all of these word blocks need to be included in the file name to blacklist it. So they'll be processed with a logical "AND".

Example: If you want to blacklist any file names including aaa and bbb at the same time, below definition will blacklist F1, F2, F3, F4, F5 but not F6 since it does not have aaa.

aaa bbb
Quotation Mark

If you want to use space characters inside your word block, you can enclose them by two ". So space characters inside " will be distunguished from the seperator spaces.

Example: Below definition will blacklist F1, F2, F3.

"aaa "
Additional Leading Space

A space character is added to the begining of the file automatically before the process. This helps defining filters matching to the beginning of the file name while excluding compound word blocks.

Example: To match bbb, but not aaabbbccc, below definition blacklist F1 and F2. You can notice that bbb at the beginning can still be matched by the blacklist definition even though there are no two spaces surrounding the bbb in original F2. If you want to match also end of a file name, assuming that the file has an extension seperated with . you can use / operator to replace that . with the space, so " bbb " can also match a file name like aaa ccc bbb.ext .

" bbb "
/ Operator

Using a / at the start of a line will replace any non-alphanumeric characters with space characters of both the file names of search results and current blacklist definition line. So both of them will be normalized before the comparison is performed.

Example: File names including . or _ characters can be hard to deal while preparing blacklist definitions. In this case you can define a single line in the blacklist definition to match all of these formats at once. If you want to match bbb but not aaabbbccc, below definition will blacklist F1, F2 and F5.

/" bbb "
| Operator

Using a | at the start of a line will remove all non-alphanumeric characters from both the file names of search results and current blacklist definition line. So both of them will be normalized before the comparison is performed.

Example: To match aaabbb or "aaa.bbb" or "aaa bbb", below definition will blacklist F1, F3, F4 and F5.

|aaabbb
- Operator

Using a - before a word block orders the process not to blacklist the file name if it includes this word block, even though other word blocks match. You can use "" to include spaces in your - definition. You can also use multiple word blocks with - in one line and in this case they will be processed with logical "OR".

Example: To match bbb, but not any file name having " b", below definition will blacklist only F5. A space character is added to the begining of the file automatically before each comparison, so F2 is also excluded since it becomes " bbb aaa ccc ".

bbb -" b" -bc
* Operator

Using a * before a word defines a file extension to blacklist. You can also use - if you want to exclude some files.

Example: To blacklist all files with ".ccc" extension, below definition will blacklist only F5.

*ccc
# Operator

Using a # at the start of a line will make this line to be ignored during processing. So you can "comment out" your definitions temporarily.

Example: Below definition doesn't blacklist anything.

#" bbb "
\ Operator

Using a \ at the start of a line will let you to define a regex. Try to use above operators instead of regex if possible, as regex will run noticeably slower.

Example: Below definition will blacklist only F5.

\.*.[a-zA-Z]{3}..*

Download & Installation

Download the Latest Release

For current builds, packaged downloads, and versioned release notes, visit the eMule AI Releases page on GitHub.

After downloading the release archive from GitHub, unzip it to any directory of your choice, then run eMule AI from that folder.

Supported Operating Systems

Windows 10 and Windows 11.

Optional External Resources

Some features require user-supplied external files such as server.met, nodes.dat, ipfilter.dat, or GeoLite2-City.mmdb.

If you already have these files, copy them to the eMule AI config directory and restart the application.

You can also load server.met from Servers > Update server.met from URL, nodes.dat from Kad > Nodes.dat from URL, and ipfilter.dat or ipfilter.zip from Options > Security > IP Filter > Update from URL.

GeoLite2-City.mmdb must be downloaded separately from MaxMind and is subject to MaxMind's terms. After copying it to the eMule AI config directory, enable GeoLite2 in Settings and restart the application.

Please use only sources you trust and review their origin, terms, license conditions, and legal status before use.

Migration & Configuration Guide

eMule AI includes a built-in Migration Wizard. For most users, this should be the first and preferred way to restore an older eMule setup. Manual migration is still available for advanced users who want to copy and review files themselves.

Migration Wizard

Start here first. On first launch, eMule AI can automatically offer to restore an older eMule configuration after language selection. The wizard checks the default Windows profile location used by classic eMule and can also let you choose another folder manually.

  • Automatic first-run flow: If a legacy configuration is detected, the wizard can guide you through the restore process right away.
  • Manual later use: You can request it again from Tools > Migration Wizard. When started from the Tools menu, eMule AI schedules the wizard for the next application start, so you should restart the client.
  • What it restores: The wizard copies supported legacy configuration files into the local eMule AI config folder and shows a clear summary when the operation finishes, including any files that could not be copied.
  • Why it is recommended: It is the safest way to preserve your identity, credits, Kad state, server lists, shared configuration, and other compatible settings without manually sorting files.
Recommended workflow: Use the Migration Wizard first. Choose manual migration only if you deliberately want to inspect, copy, or exclude files yourself.

Manual Migration

Manual migration is still supported for advanced users. eMule AI stores its active configuration in a local config folder next to emule.exe, not in the Windows user profile location used by older eMule builds.

If you prefer to copy files yourself, close eMule AI first, copy only the files you actually want to keep, and then start the client again. If your older setup stores downloads.txt in the main eMule folder instead of inside config, remember to bring that file over as well.

While manual migration is supported, a clean configuration can still be the better choice if you want to start with eMule AI's modern defaults for current hardware, high-speed networks, and newer connection handling.

Important Files to Preserve

If you migrate manually, these files are the most valuable ones to keep because they preserve your identity, credits, and network state.

Identity & Reputation

Your reputation and queue ranking with other clients are tied to your unique identification. Without these files, you lose your "earned luck" and will start from zero in other users' queues.

  • preferences.dat: Stores your unique User Hash. Do not lose this!
  • cryptkey.dat: Your 384-bit private RSA key used for secure identification.
Important: These two files must be migrated together. If you lose one, you lose your identity across the entire eMule network.
Credits & Sharing Socials

Preserve your social standing and the credits other users have earned with your client.

  • clients.met: Stores the credit data earned by other users on your client. Preserving it ensures fairness for those who have uploaded to you.
  • emfriends.met: Your stored friends list.
Connectivity & Initial State

Ensure a fast start without having to re-bootstrap your connections or re-scan your entire library.

  • nodes.dat: Known Kad nodes for instant bootstrap.
  • staticservers.dat: Your static eD2K server list.
  • server.met: All known servers.
Manual Migration Checklist & Tips
  • Copy while the client is closed: Always close eMule AI before manually replacing files in the local config folder.
  • Review directories and ports after startup: Confirm that your incoming, temp, and network settings match what you expect before reconnecting.
  • IP Filter Automation: eMule AI automatically merges all .p2p or .dat files in the config folder at startup, so no extra import step is needed for those files.
  • Modern Tuning: Connection parameters are optimized for today's high-speed internet. Prefer the default values for the best balance of speed and stability.
  • Sparse File Writing: If using NTFS, eMule AI handles sparse part-file writing more efficiently, saving disk space on unfinished downloads.

WARNING: Do Not Run eMule AI Inside an Existing eMule Folder!

This is not a Migration Wizard problem, and it is also not the normal result of a manual migration into a separate eMule AI folder. The real risk appears when eMule AI is copied directly into an existing classic eMule installation folder and started there against the same live configuration.

In that situation, files such as known.met and StoredSearches.met can be updated by eMule AI and may no longer remain compatible with the original eMule client if you later switch back to that same folder.

Safe practice: Keep eMule AI in its own folder and let it use its own local config directory. If you want to test, compare, or keep a fallback copy of classic eMule, work on a backup or a separate folder instead of reusing the original live installation.

Credits

What are these credits and why should I collect them?
Credits reward users who upload. The transferred amount of data determines the amount of credit you are given with a particular client. They are not global, meaning that they can only be used on the client who granted them to you. Credits are a major modifier when calculating how fast a client progresses through eMule's queue. The more credits you have the faster you will advance in other people's queues.
Where can I see my credit score?
To prevent manipulating the score, the credits are not stored locally on your hard disk but on the other client's hard disk. It is not possible to see your own credits.
I lost / deleted my clients.met file. Are my credits gone?
Losing this file doesn't mean that your credits are gone, but all credits other people have on your client are. eMule creates a backup of the clients.met file (clients.met.BAK) so you can restore the file by renaming the backup to clients.met.
Are credits secure?
eMule uses a key handshake method to make sure the credits belong to this special client. Credits stored for a user are only granted if this authentication has been successful.
How to lose the credits anyway?
As described above, the credits are coupled with the secure user authentication. The secret key for this authentication is calculated from information which is stored in preferences.dat and cryptkey.dat. Should one of these files be lost or deleted, you will no longer be able to prove that you are the rightful owner of the credits.
Note: If you lose only cryptkey.dat, it is mandatory to delete the preferences.dat file too.

High ID vs Low ID Explained

An ID is a value calculated from the client's IP address. It is assigned by the server when eMule successfully connects. The purpose of the ID is to indicate whether proper bidirectional communication is possible between two clients.

How to identify your status?

eMule displays your ID status graphically as colored arrows on the globe icon in the lower-right corner, next to the connected server. After connecting, the ID value itself is also visible in the Server's Log window.

High ID

A High ID means the port chosen in your connection settings (default 4662) is open and freely accessible from the internet. Your client is fully reachable by others.

Low ID

A Low ID means your connection port is blocked or cannot be reached. This is typically caused by firewalls, routers, or proxy servers. Any ID value less than 16,777,216 is considered a Low ID.


Disadvantages of a Low ID

  • Server Routing: Since your IP is not directly reachable, all requests (queue, connection, etc.) must be routed through the server you are connected to. This increases CPU load on the server.
  • Server Limitations: Many servers limit the number of Low ID users or may ban them entirely to reduce overhead.
  • Reduced Sources: Two clients with Low IDs cannot connect to each other because messages cannot be routed over two different servers. This leads to fewer available sources for your downloads.
  • Lost Messages: On busy servers, messages can get lost, causing you to miss important queue progression or download requests, which results in fewer credits and slower downloads.

Important Technical Notes:

  • Data Transfer: The ID only affects control message exchange. Actual data transfer is still handled client-to-client (Direct or via NAT-T paths in eMule AI).
  • No "Higher" ID: If your ID is High, it doesn't matter how high it is. There are no extra advantages to an "even higher" ID.
  • ID Calculation: To convert a High ID to an IP (A.B.C.D): High ID = A + 256*B + 256*256*C + 256*256*256*D.
  • Source Filtering: eMule drops some Low ID sources to minimize server load. Only sources on the same server or those downloading from you are accepted.

Troubleshooting Low ID

If you're stuck with a Low ID despite having correct settings, try connecting to a different server or using the Port Tester in connection options. Low user servers often have more resources to handle Low ID routing than congested ones.


Files & Descriptions

eMule AI Exclusive Files

These files are specific to eMule AI and handle its advanced protection, history, and automation features.

File Description
AC_BootstrapIPs.datSaved history of IP addresses used for Kad network bootstrapping.
AC_BootstrapURLs.datStored URLs used for downloading initial Kad node lists.
AC_IPFilterUpdateURLs.datHistory of URLs used for automated IP filter updates.
AC_ServerMetURLs.datStored history of server.met update URLs.
blacklist.confUsed for automated blacklisting of malicious or unfair clients. Stores definitions and patterns for effective filtering.
clienthistory.metManages long-term records of encountered clients, including data for identification and automatic purging based on last seen dates.
ipfilter_static.datContains a fixed set of IP ranges that are always filtered, regardless of dynamic updates.
ipfilter_white.datAn IP "White List" that overrides filters for specific trusted addresses or ranges.
shield.confCentral configuration for the Shield protection system. Defines anti-leecher rules and automated punishment levels.

Standard eMule Files

File Description
AC_SearchStrings.datStored search history for auto-completion. Also AC_ServerMetURLs.dat.
Addresses.datURL list for updating server.met at startup.
Cancelled.metTracks cancelled downloads to avoid marking them as new results.
Category.iniStores category settings (name, comments, color coding).
Clients.metStores all users who have earned credits on your eMule. Also see clients.met.BAK.
Collectioncryptkey.datEnables signing of collections to verify the same author.
Cryptkey.datUnique 384-bit private RSA key to verify your User Hash. If deleted, reset preferences.dat as well.
Emfriends.metStores your friends list.
eMule.log / eMule_Debug.logSaves the output of the Log/Debug windows if enabled in Extended options.
eMule.tmplTemplate files for the Webinterface layout and display.
Fileinfo.iniStores comments and ratings for your own shared files.
Ipfilter.datContains IP ranges and access levels to be filtered. See Security options.
Kad FilesIncludes nodes.dat, src_index.dat, key_index.dat, load_index.dat, and preferencesKad.dat for Kad network state.
Known.metSaves all files eMule knows of (shared, downloads, or past). Stores size, filename, hash sets, and statistics. Deleting this forces a rehash on next restart.
Known2.metNo longer used by eMule AI. Can be deleted unless downgrading to an older version.
Known2_64.metStores AICH hashes of all downloaded/shared files. Deleting this forces a rehash.
Onlinesig.datSmall file with connection and up/down stats for IRC scripts or widgets.
Preferences.datSaves your User Hash, used to identify your client in the network for credits and friends.
Preferences.iniMain configuration file for options, visual details, and advanced developer settings.
PreviewApps.datStores configuration for external applications used to preview media files.
Server.metContains all known eD2K servers.
Sharedir.datHolds paths to all shared directories.
Staticservers.datPermanent server list that doesn't change IP.
xx.part / xx.part.metUnfinished downloads and their metadata (hashes, status). Always keep together. Includes xx.part.met.BAK.

NAT Traversal (NAT-T) & uTP

What it is

This feature combines NAT Traversal (NAT-T) and uTP to create direct, reliable peer connections even when both sides sit behind NAT or firewalls.

In eMule AI it unlocks LowID-to-LowID transfers with UDP hole punching and uTP, improving connectivity and stability on difficult networks.

Because the NAT-T/uTP signaling and relay flow are eMule AI-specific, both peers must be running eMule AI to benefit; the more eMule AI users online, the more often this path is available.

How it works

ED2K HighID / LowID
Assigned by ED2K servers while connected to a server. HighID means inbound TCP is reachable. LowID means inbound TCP is blocked by firewall/NAT.

Kad Open / Firewalled
Kad status is server-independent. Open + Verified means UDP is reachable. Firewalled means UDP callback/hole punching is limited or unavailable.

Kad Buddy
Classic Kad mechanism. Used for Kad callback/rendezvous signaling only (not file data). In eMule AI Kad LowID<->LowID transfers, uploader side needs this buddy.

eServer Buddy (New in eMule AI)
A HighID eMule AI client on the same eServer that relays signaling for LowID<->LowID. This is a client-side eMule AI feature and does not require server NAT extension support.

uTP
UDP-based transport used by NAT traversal for hole punching and adaptive congestion control.
Enabling uTP switches peer connections to UDP-based transport with adaptive congestion control, while NAT Traversal adds direct callback and UDP hole punching to connect peers behind NATs.

How it works - end-to-end

  • IDs & reachability: HighID = inbound TCP reachable; LowID = inbound TCP blocked. Kad Open means UDP callback is verified; Kad Firewalled means direct UDP callback is unavailable.
  • Data vs control: File data uses TCP or uTP. Kad lookups, publishes, pings and callbacks use UDP.
  • Direct UDP callback (LowID->HighID): HighID peer sends a UDP callback; LowID opens outbound TCP back. No buddy is involved.
  • Kad buddy path: For Kad LowID<->LowID, uploader side needs Kad buddy and both sides must exchange UDP hole-punch traffic.
  • eServer Buddy path (new in eMule AI): LowID requester uses a connected HighID buddy on the same eServer. This relay is client-driven and does not rely on server NAT extension opcodes.
  • When target is not connected: Buddy can ask the server with classic OP_CALLBACKREQUEST, then continue relay after target comes back.
  • Compatibility: Requester side needs eServer buddy support. Target side can still be contacted through the relay flow.
  • Timers: Buddy discovery runs every 60 seconds (while server-LowID). Keep-alive ping runs every 20 seconds.
  • Diagnostics: Check logs for [eServerBuddy], OP_ESERVER_RELAY_REQUEST, OP_ESERVER_PEER_INFO, OP_HOLEPUNCH, and uTP.

Kad Buddy vs eServer Buddy (eMule AI)

  • Kad Buddy: Kad network callback/rendezvous helper. Used in Kad LowID<->LowID flow.
  • eServer Buddy: eMule AI specific relay over same eServer. This is the newer path added by eMule AI.
  • Main difference: Kad buddy depends on Kad path; eServer buddy depends on same-server eD2K path.
  • Common point: Both relay only control signaling, never the actual file data.

Buddy specifics

  • Who qualifies (eServer Buddy): HighID peer, connected TCP socket, same eServer as you, and advertised slot availability.
  • Slot model: Serving capacity is configurable between 3 and 100 peers (default 3).
  • Concurrency: Buddies carry control signaling only; file payload remains end-to-end between peers.
  • Security & abuse control: Buddy requests are rate-limited (max 3 requests per 10-minute window per peer) and stale relay contexts are expired automatically.

Diagrams

LowID peerTCP blockedKad Open + Verified (UDP) HighID peerTCP reachableKad Open Direct UDP callback Outbound TCP established
LowID -> HighID with direct UDP callback. No buddy required.
Uploader-side Buddy (HighID)Required for Kad rendezvousSignals callback only LowID DownloaderKad Open + VerifiedOwn buddy: optional LowID UploaderKad Open + VerifiedBuddy: required ReaskCallbackUDP Kad rendezvous ReaskCallbackTCP Bidirectional UDP hole punching -> uTP
LowID <-> LowID via Kad rendezvous. In eMule AI, only the uploader-side buddy is required for this path; downloader-side buddy is optional.
HighID eServer BuddySame eServer as requesterRuns relay handshake LowID Requester LowID Target OP_ESERVER_RELAY_REQUEST / OP_ESERVER_PEER_INFO Both peers hole-punch + active uTP connect
LowID <-> LowID via eServer Buddy relay. No Lugdunum NAT extension is required; buddy may optionally use classic OP_CALLBACKREQUEST to bring target online.

Scenarios

Kad Scenarios

Classic Kad-driven connectivity matrix where rendezvous and buddies coordinate hole punching.

# Kad TCP UDP Buddy Outcome
1Open
OpenInbound OK
OpenNot neededUse plain TCP/UDP; NAT-T not needed.
2Open
FirewalledInbound blocked
OpenNot neededDirect UDP callback works (LowID->HighID). NAT-T not needed for this path.
3Open
FirewalledInbound blocked
OpenStarted (to enable rendezvous)NAT-T/uTP possible via buddy-mediated rendezvous/hole-punch. Useful for LowID<->LowID.
4Firewalled
OpenInbound OK
FirewalledNot neededPlain TCP works; NAT-T not needed.
5Firewalled
FirewalledInbound blocked
FirewalledOutbound usually OK
Uploader's buddyNAT-T/uTP path via rendezvous + hole-punch. Uploader-side buddy is required; downloader buddy is optional.
6None
FirewalledInbound blocked
FirewalledVaries
UnavailableKad rendezvous is unavailable. Use eServer Buddy path only if requester has buddy on the same server.

eServer Buddy Scenarios

LowID<->LowID relay driven by eMule AI clients. This path does not depend on server-side NAT relay extensions; it uses OP_ESERVER_* signaling plus classic server callback when needed.

# Preconditions Peers Outcome
1Same eServer + requester has connected eServer buddyLowID requester <-> LowID targetBuddy runs OP_ESERVER relay handshake and both peers form uTP with hole punching.
2Target already connected to buddyLowID requester <-> LowID targetBuddy forwards OP_ESERVER_PEER_INFO immediately; no server callback round-trip is needed.
3Target not connected to buddyLowID requester <-> LowID targetBuddy first tries classic OP_CALLBACKREQUEST (if server callback is available). Relay completes only after target connects and ACK is received; otherwise it fails.
4Different eServer or no connected buddyAny LowID paireServer Buddy path is unavailable; fallback is Kad rendezvous (if prerequisites exist) or classic callback/TCP paths.

Setup & tips

Make UDP reachable

  • Open/forward the configured UDP port on your router (or enable UPnP).
  • Allow the app in OS firewall (UDP + TCP outbound).
  • Verify Kad shows Open and the UDP firewall test is verified.

Enable NAT-T / uTP

  • Ensure NAT Traversal (uTP) is enabled in Preferences.
  • Keep both peers on recent versions (supports rendezvous & uTP).

Buddy stability

  • For Kad LowID<->LowID, keep uploader-side serving buddy active.
  • For eServer Buddy path, keep your HighID buddy connected and on the same eServer as the target source.
  • eMule AI sends keep-alive pings and renews buddy discovery automatically while LowID.

Troubleshooting

LowID <-> LowID fails
Kad path: verify uploader has serving buddy and both sides can exchange UDP hole-punch traffic. eServer Buddy path: verify same-server condition and requester-side connected eServer buddy.
eServer Buddy relay does not start
Check that you are server-LowID, NAT-T service is enabled, and logs show an accepted OP_ESERVER_BUDDY_REQUEST. If buddy changed server, reconnect and wait for a new buddy candidate.
Kad bootstrap fails
Use the peer's UDP port (not TCP) for bootstrap and confirm firewall/router rules.

FAQ

Is ED2K LowID the same as Kad Firewalled?
No. ED2K HighID/LowID exists only while connected to a server and reflects TCP reachability. Kad Open/Firewalled is Kad's status about UDP reachability, independent of servers.
Does NAT-T help if one peer is Kad Firewalled?
No. Direct callback and hole punching require UDP reachability (Kad Open + Verified) on both sides.
What is the difference between Kad Buddy and eServer Buddy?
Kad Buddy is the classic Kad callback helper. eServer Buddy is a newer eMule AI feature for same-server LowID<->LowID relay. They are different paths with different prerequisites.
Can LowID <-> LowID work with only one buddy?
Yes. In Kad rendezvous, uploader-side buddy is required and downloader-side buddy is optional. In eServer Buddy path, requester-side eServer buddy is required while target-side buddy is not.
What about CGNAT and symmetric NAT?
Those NATs often create short-lived or address-dependent mappings which may break hole punching. Results vary and can be unreliable.

Version History

v1.2

  • Fixed an issue where obfuscated server logins could require multiple attempts even on fully obfuscation-capable server lists.
  • Fixed the “Shared eD2K | Kad” column in the Files window.
  • Fixed an issue where the download list didn’t refresh immediately after applying a category filter.
  • Fixed a crash caused the Download Clients list.
  • Fixed an issue where the upload speedometer could show non‑zero activity even when no active uploads were occurring.
  • Fixed right alignment of the Remaining column in the Download list.
  • Fixed some Spanish and Galician localizations (PR by PepinoGz and Aokromes).
  • Updated eD2K link dialog title

v1.1

  • Added the "Ratio" and "Session Ratio" columns to the Upload, Queue, and Files lists.
  • Fixed the "Enter an integer between 1 and 2147483647." validation error that could appear only in certain languages (e.g., Chinese/Korean) when leaving the eMule AI options page.

v1.0

Initial public release. See below sections for details.

New features

Protection Panel

A dedicated Options page that centralizes safety/anti-leecher controls with clear explanations, timed punishments, and friend exemptions. Choose actions (ban, score reduce, log only) per detection category to keep the swarm clean with minimal false positives.


Dark Mode

A full dark modern theme for windows, tabs, menus, list headers, and progress bars. It preserves readability, supports hover/pressed states, and can be toggled without restarting.


Fast and Fluid Lists

Provides a smoother experience in heavy lists (Files, Downloads, Search, Clients) with lower memory usage and faster responsiveness, smooth scrolling and quick updates even with hundreds of thousands of rows.


NAT Traversal & Extended Source Exchange

LowID <-> LowID now works through two distinct NAT-T paths. Kad Buddy path (classic): Kad rendezvous flow where uploader side needs a Kad buddy. eServer Buddy path (new in eMule AI): same-server relay between LowID peers using OP_ESERVER_BUDDY/RELAY packets. This eServer Buddy mechanism is a client-side eMule AI feature and does not require server NAT extension support (no dependency on Lugdunum NAT opcodes). If the target is not connected yet, the buddy can try classic OP_CALLBACKREQUEST and finish relay after target reconnect + ACK. External UDP port discovery, hole-punch retries, and uTP retries improve success under difficult NAT conditions. Extended Source Exchange further improves source discovery and transfer stability with richer peer metadata.


IPv6 Support

End-to-end IPv6 handling for peers, friends, and sockets alongside IPv4; addresses display and copy correctly across dialogs and tooltips.


Spam/Blacklist System

A Spam Rating column (0-100), a customizable spam threshold, logging of rating results, and a Blacklist Panel with "recheck now" combine to surface quality results and hide junk.


Client History

Lightweight history of clients you met (with retention control) to enable once-per-client automation like first-time shared-files queries.


Threaded Shared-Files Reload

Refreshing shared files runs in a worker thread and updates the UI progressively, avoiding stalls while scanning disks.


Shared Files Watcher

Background watcher keeps the Shared view in sync with filesystem changes without manual reloads.


Automatically Share Subdirectories

When enabled, subfolders under your shared roots are included automatically, both existing and newly created ones.


Download Checker

Before adding a file, checks duplicates/near-duplicates across downloads/history/shared and can warn, reject, or auto-blacklist by your preference.


Built-In Language Resources (116 Languages)

Language support is embedded, so external language DLL files are not required. Supported language codes (116): en, af, am, ar, ast, az, be, bg, bn, bs, ca, ca-VAL, ceb, co, cs, cy, da, de, el, eo, es, es-AR, et, eu, fa, fi, fr, fy, ga, gd, gl, gu, ha, haw, he, hi, hmw, hr, ht, hu, hy, id, ig, is, it, iw, ja, jw, ka, kk, km, kn, ko, ku, ky, la, lb, lo, lt, lv, mg, mi, mk, ml, mn, mr, ms, mt, my, nb, ne, nl, nn, no, ny, or, pa, pl, ps, pt, pt-BR, ro, ru, rw, sd, si, sk, sl, sm, sn, so, sq, sr, st, su, sv, sw, ta, te, tg, th, tk, tl, tr, tt, ug, uk, ur, uz, vi, xh, yi, yo, zh-CN, zh-TW, zu.


Connection Checker

One-click background connectivity test with clear start/stop log lines; helps diagnose DNS/routing hiccups without interrupting transfers.


Emulate Clients & Communities

Optional compatibility/emulation toggles for certain clients/communities to improve interoperability and prioritization.


New Toolbar Buttons

Quick actions for Save State, Reload Config (no restart), and threaded Backup. Numbered Preview buttons (1-10) launch your chosen preview apps directly; right-click can jump to the next previewable file.


Read PeerGuardian Lists Automatically

At startup, all *.p2p files in the config folder are merged into the active IP filter, just drop lists in and they apply.


Kad Search Limit Option

You can limit how many answers a Kad keyword search collects before auto-stopping.


Search / Transfer Window Filters

Fast, on-view filters to narrow lists to what you care about (for example, active/paused).


Friend / User Hash / ID Type / Client Version Columns

New columns in client lists show Friend status, User Hash, ID Type (High/LowID), and Client Version for quick grouping and sorting.


IP:Port Column

Shows each peer's current endpoint in a sortable column.


See Own Credits

Displays how your credit ratio appears to the remote side for clearer give-and-take diagnostics.


Cancel Download from Context Menus

Right-click in Search/Download/Shared lists to cancel downloads; an option lets you cancel without marking as "canceled" in history.


Remote Client's Shared Files - Status Columns

New columns indicate query status, last queried time, and number of files received for a client's shared list.


Client Note

Attach a short note to any client; optionally show it in the tab title when viewing that client's files.


Copy List Text with CTRL+C / CTRL+X

Copy selected list rows as neat plain text for pasting into notes/spreadsheets.


Clean Up Search Results

A command to quickly purge obsolete/blacklisted items from active search tabs.


Disable "Find As You Type" Option

Turn off type-to-search in heavy lists to avoid accidental scans.


Don't Mark As Canceled (Menu Action)

Cancel a download without adding it to the "canceled" history.


Friend Link Recognition

Understands ed2k "friend" links from clipboard to add friends quickly.


Source Cache

Temporarily caches discovered sources so paused/resumed files can reuse them without re-querying.


GeoLite2 (Country/City & Flags)

Shows country (and city when known) and a flag icon for peers/servers; can be disabled or limited to country only.


Client Version in Tooltips

Download-list tooltips include full client software/version lines.


Webservices Enhancements

Wide-character support and a "filename_untouched" placeholder in webservices.dat; multi-selection webservice actions.


SpeedMeter

Built-in live up/down graphs in the Connection page and main window for a lightweight visual of throughput.


Auto Query Remote Client's Shared Files (First Connect)

Optionally auto-query a client's shared files after first connection, paced by configurable per-period limits.


Save Application State (Button)

One-click save of list layouts, column orders, and preferences for easy layout "bookmarks".


Set Executable Directory as Default (First-Run Behavior)

If no choice exists yet, uses the app's folder as the base location for a portable-style setup.


Migration Wizard

Adds a built-in Migration Wizard that can run automatically on first launch after language selection or be scheduled later from Tools > Migration Wizard. It helps restore supported legacy eMule configuration files into eMule AI with directory detection, copy results, and clear follow-up guidance.


Don't Filter Private IPs Option

Allow local/private addresses even when an IP filter is active, useful on home/lab networks.

Improvements

Long Path Support

File operations (hash/preview/move/backup) work reliably beyond classic 260-char Windows limits by using long-path-safe APIs and formats.


Virtual-List Performance & List Engine

Compact backing stores, batched refresh, selection/scroll restore, and combined/heap sorting make giant lists smooth and responsive.


Search Results Load Faster

Only the active tab refreshes immediately; others update counters without full redraws. Virtualized storage accelerates inserts and sorting.


Safer, Faster Part-File Writing

File allocation, metadata flushing, and buffer moves occur inside the writer thread under scoped locks, with periodic disk-space checks, reducing contention and stutters.


Faster Pause/Stop/Remove/Complete & Sorting

Bulk operations coalesce UI work, and large lists use a single combined sort pass for steady ordering during heavy updates.


Reconnect & Notify After IP Change (Kad/eD2k)

On public IP changes, Kad reconnects gracefully; peers are informed and sources re-asked to minimize stalls.


Safe Configuration File Saving

Writes sensitive data to a temp file and atomically replaces the original, keeping files intact if something fails mid-write.


Search Parameter Restoration & Tab Titles

Complex Boolean expressions are preserved and appear as tab titles; restored searches match your original filters and fields.


KAD Bootstrap UX

Autocomplete/history for IP:port and URL fields, Enter-to-bootstrap, Delete to remove suggestions; remembers your last choice.


IP Filter Improvements

Static IP filter file, separate whitelist, better loader/merger behavior, and corrected save logic (no truncation).


GeoLite2 Clarity/Performance

Efficient flag handling and optional long vs. short country names; single-click enable/disable.


Auto-Refreshing Network Info

Keeps ports/IDs/Kad status current while open, with tidy formatting and consistent refresh.


Owner-Draw Polish (Dark Mode)

Menus/tabs get theme-aware drawing, clear submenu indicators, and crisp text rendering.


UI Tweaks & Multisort

Cleaner menus, better icons/spacing, and improved multi-level sorting for predictable results.


Better Passive Source Finding & UDP Reask Handling

Gentler retry logic and more realistic counters reduce misleading stats and improve source discovery.


Spread Requests & Timers

Request bursts are smoothed and reask timers clarified to keep queues fresh without spamming.


Extended Clean Up (Memory Footprint)

Idle clients and stale entries are cleaned more aggressively to keep long sessions lean.


Publish File List Faster

More compact server-publish packets and fewer unnecessary sorts make "publish to server" snappier.


Merge Search Results

Compatible results are merged while respecting spam heuristics to reduce duplicates and clutter.


Windows 11 Detection

Accurate OS detection helps choose safe defaults/paths on modern systems.


Faster Loading Part Files At Startup

Defers redraws during initial load to reduce repaint cycles and speed up UI bring-up.


Better WINE Desktop Integration

Opens files/links via GNOME/KDE helpers and translates paths properly under WINE.


Webservice Selection for Multiple Items

Apply web actions to multiple selections at once for faster lookups.


Don't Save Part Files on Every Server Reconnect

Skips redundant disk writes on reconnects, trimming stutter on large libraries.


Touch Default-Apps File Only When Needed

Checks the preview-apps map only when opening the menu to avoid periodic disk I/O.


Save/Load Path for Known Files

Stores full paths with known files for accurate restoration and display.


DST Tolerance for known.met

Accepts small timestamp shifts due to daylight saving, preventing needless re-hashing.


Advanced Preferences Page

Collects power-user toggles (Search/Server/File handling, etc.) with concise on-screen explanations.


Right-Click "Preview Next"

Quickly step through previewable items from the toolbar without changing selection.


Move/Resize Search Filter Box

Cleaner header layout reduces accidental clicks while preserving functionality.


Use File Type Tag Only If Needed

Search entries derive type from filename first, falling back to the tag only when necessary for accuracy.


Thread Names in Release Builds

Improves crash-report readability without impacting performance.


Optimization: Debug Trace Hygiene

Suppresses noisy traces by default and clarifies "missing icon resource" diagnostics for easier skin/theme troubleshooting.


Repeat Server List

Automatically loops the server list on failures to improve connection reliability.


SafeHash Behavior

Waits for full initialization before auto-connect and stops hashing immediately on exit for faster, cleaner shutdowns.


Save Search File Type

Remembers your preferred search category (Any/Audio/Video, etc.) between sessions.


Prevent Default Double-Click on Toolbar

Avoids accidental command executions from toolbar double-clicks.


Set Category Only If Changed

Skips redundant saves/re-sorts when a category remains the same.


Connection Parameters Tuned for Modern Hardware & Networks

Connection parameters and related defaults were optimized to better match today's hardware and network conditions, improving balance, responsiveness, and overall transfer behavior.

Bug fixes

"Encountered an improper argument" Crashes While Scrolling

Guards progress-bar drawing to avoid invalid GDI calls during fast scrolling in the Download list.


AICH Hashset Save

Waits properly for internal locks and stops hashing on exit to eliminate "Failed to save HashSet" after hashing.


Stored Searches File Corruption

Loads stored searches early to prevent creation of empty placeholder files at startup.


Race on Write Completion

Skips late completions for just-deleted files to avoid a rare crash during heavy cleanup/shutdown.


Sockets Leak on "Too Many Connections"

Releases sockets correctly when entering the "too many connections" state under load.


Null Current-File Guard

Prevents crashes by safely refusing source requests when the current file pointer is missing.


"View Shared Files" Folder Persistence

Restores the last used folder for that mode in stored searches.


Preview Backup Eligibility

No longer requires previewability checks; relies on free-space threshold to avoid false negatives.


UPnP/ATLTRACE Format Mismatch

Fixes a debug-build crash due to a wrong trace format string.


IP Filter: Save Truncation

Writes complete addresses without truncation when saving filter files.


IP Filter: 128-bit Range Merge Boundary

Keeps boundaries correct when merging ranges by comparing with computed "end+1".


"Wrong Connecting" Log

Logs "Connecting ..." only when a connection is actually pending.


Delete Completed Downloads Crash

Guards against null dereferences when removing multiple finished items.


Part-File Gap Handling

Removes empty gaps immediately and clamps boundaries correctly; progress/availability remain accurate.


Hashing Progress Denominator

Percentages use the actual hashed size as denominator to avoid misleading jumps and rare divide-by-zero.


MediaInfo Exception Handling

Clears buffers and closes gracefully when media details cannot be read instead of throwing.


Shared Files Sorting

Locale-aware, case-insensitive sort by "File Type" behaves predictably with neat sub-sorting.


Menu/GDI Leaks

Deletes custom brushes, detaches/destroys header image lists, and tightens ownership to close small GDI leaks.


RemoveAnchor vs ASSERT

Removes invalid anchors safely during layout changes to eliminate resize assertions.


Null CString Pointer

Defensive checks prevent crashes when an error string is unexpectedly null.


OP_MULTIPACKETANSWER_EXT2

Fixes extended multi-packet response handling for better peer compatibility.


ntohl Not Needed

Removes unnecessary byte-order conversions that could mislead logging/handling.


Splash Screen vs Clipboard Prompt

Ensures the ED2K clipboard prompt isn't hidden behind the splash screen on startup.


Delete Duplicate Search Results

Removes duplicates reliably without orphaning children; child items are also deleted correctly.


Skip Freed Items in Menus

Ignores just-deleted downloads when building context-menu state to prevent rare crashes.


Auto-Promote to 64-bit Tag

Promotes values exceeding 32-bit safely, preventing corrupted metadata and parsing errors.


Kademlia Fast-Refresh Logic

More conservative logic reduces stalls and prevents missed updates.


Always Log Assert to File (Stability)

ASSERTs are logged to file rather than popping intrusive dialogs in enabled mode, aiding diagnostics without interrupting transfers.


Wrong Percentage Sign in Log

Literal "%" characters in log messages print correctly (no accidental format parsing).


Media Parsing with Long Paths

Opens long-path files safely when reading metadata to avoid failures in deep directory trees.

Documentation

Access the official eMule help resources for setup guidance, feature explanations, and practical usage information.

Open the eMule help page

For official reference material and user guidance, visit the eMule Help page.

Community

Join the eMule forum

For community discussion, user tips, and broader ecosystem conversation, visit the eMule Forum.

Report an issue

Open the GitHub issue tracker

To report a bug, document a reproducible problem, or suggest an improvement, please use the eMule AI GitHub Issues page.

Compiling the Source Code

Build Environment

Built with Visual Studio 2016 v18.4.0, using the latest MSVC and MSVC Build Tools available at the time.

Libraries

Building eMule AI requires downloading and compiling additional third-party libraries that are not bundled with the distribution. The required dependencies are listed in the table below. Please note that some entries use official release versions, while others reference a specific commit and branch.

Download and place each library’s source code one directory level above the eMule AI source tree, then compile it. Check the project files for the expected folder names, or adjust the paths to match your layout.

Library Version / Commit Source
cryptopp8.9.0github.com/weidai11/cryptopp
id3lib3.9.0github.com/irwir/id3lib
libmaxminddb1.13.3github.com/maxmind/libmaxminddb
libutp#490874c@post-3.4-transmissiongithub.com/transmission/libutp
mbedtls4.0.0github.com/Mbed-TLS/mbedtls
MediaInfoLib26.01github.com/MediaArea/MediaInfoLib
miniupnpc2.3.3github.com/miniupnp/miniupnp
ResizableLib#733ea0d@mastergithub.com/ppescher/resizablelib
ZenLib0.4.41github.com/MediaArea/ZenLib
zlib1.3.2github.com/madler/zlib

Acknowledgements

Many thanks to everyone who contributed to eMule over the years. Without their work, eMule AI would not have been possible.

Developers: Merkur, John aka. Unknown1, Ornis, Bluecow, Tecxx, Pach2, Juanjo, Dirus, Barry, zz, Some Support, fox88

Modders: David Xanatos, Stulle, XMan, netfinity, WiZaRd, leuk_he, enkeyDev, SLUGFILLER, SiRoB, khaos, Enig123, TAHO, Pretender, Mighty Knife, Ottavio84, Dolphin, sFrQlXeRt, evcz, cyrex2001, zz_fly, Slaham, Spike, shadow2004, gomez82, JvA, Pawcio, lovelace, MoNKi, Avi3k, Commander, emulEspaña, Maella, VQB, J.C.Conner

Testers: Sony, Monk, Myxin, Mr Ozon, Daan, Elandal, Frozen_North, kayfam, Khandurian, Masta2002, mrLabr, Nesi-San, SeveredCross, Skynetman