Feature Documentation of the pHoeniX Mod


[New Bandwidth Control]


[Show comments]


[Modeless Dialogs]


[Upload and Download Stop Reason]


[QueueRank Diff]





[Infinite Queue]


[Selective Chunk sharing]












[ICS: Inteligent Chunk Selection]

[Anti HideOs]

[Reask Sources After IP Change]



[New Tooltips]

[CrashRpt Lib]

[New Timer Management]

[Close backdoor in ListenSocket]

[Spread Request]

[Unnecessay Protocol Overload]

[Auto HardLimit]

[XP Style Menus]

[New Messages Window]

[SNAFU v3]

[Winsock 2]



[One queue per file]

[Save ed2k files to disc]

[Sort servers by linear priority]

[ZZ Downloadmanager by linear priority]

[Full friends improvements]

[Mini Mule]

[Credits Selection]


[Categories Improvements]

[Copy BBcode elinks]

[New Transfers Window Style]

[Delay start-up to avoid busy sever message]

[Fade on Exit]


[SaveLoad Sources]

[Select process priority]


[UPnP NAT Support]

[Invisible Mode]

[New Bandwidth Control] - Author: Maella/TPT

Here is one of the most important parts of this mod. A new hybrid bandwidth control. Why hybrid? The heart of the code is from Maella, but we have adapted it to ZZ code, one thread for packets and other thread for USS. This is the unique mod with USS and NAFC at the same time! And there is more... Some pawcio features were adapted in order to work with this code: Minimize upload slots and Cumulate bandwidth (focus slot).


An extensive explanation for each feature:

> Minimize upload slots: If this option is selected eMule will open fewer slots than original if thatís possible (if fewer users can take more bandwidth). It means that the chunks will arrive faster for users.

> Cumulate bandwidth for upload slots: If this option is not selected eMule tries to upload to all users on upload queue with the same speed. Selecting this option is causing that eMule always uploads to one user (Priority client - no matter whether he has slow or fast connection) and then give the remaining bandwidth to the fastest users (faster spreading of chunks). The priority client is always the one who was first in the upload queue (stayed the longest), thanks to this every client ("fast", "slow") will be able to get data.

> MTU: Maximum Transmission Unit, this is the max IP datagram size you can send across a network. If you set it higher... you can get frame fragmentation. If you set itvery low... youīll have to send more frames so...more overhead (less efficient)

> Send Socket buffer size: You can configure the buffer size where the stored data is located before you send it to the network.

> Manage Conections: If this option is selected and you have too high values of "Max connections" and "Max connections per 5 sec for your connection, they will be adjusted automatically when needed.

Note: Since version 1.10, we have changed the code and adapted it to official code.

> New Upload Slot Sharping: If you enable it, eMule will try to full the upload bandwidth of your connection but it may open many slots to achieve this.

Note: Donít use it with minimize slots

> Network adapter Feedback Control: What is NAFC? Here is a statement of the big Maella about this dynamic upload system:




All applications that need to regulate their upload bandwidth face the same problems. When you ask the operating system (OS) to send data to a remote client, three different things can happen:

- The sending could proceed immediately.

- The sending could be delayed by the OS (e.g. remote client not ready, limit of the capacity of the network already reached).

- The sending could be never proceeded by the OS (e.g. connection with the remote client is lost).


Another problem is that a part of the traffic on the network is generated by the protocol itself. So typically when data are received from a remote client, the OS must send some acknowledge (ACK) packets to the remote side to validate the transfer. These ACK will increase the overall traffic as well. The protocol creates an overhead that an application can not fully control.


And finally, other applications can generate traffic for their own purposes (e.g. ftp, browser).


In summary: when an application attempts to regulate its traffic, it knows what it's trying to send, but it doesn't know exactly when it is sent and what is sent.


Ideal Solution:


In the case of eMule, the ideal solution would be to know in real time the current level of the traffic though the modem (e.g. K56, ADSL, etc.). So if an application was aware of it, it would be a piece of cake to regulate the bandwidth. Keep in mind that the goal is to use all the time 100% of the capacity of the modem. Nothing more, nothing less!


Unfortunately, there is no easy way to retrieve this information from the modem.


Current solutions:


There are different approaches to solve the above problem. Here it a list with some of them:


1. Under use the bandwidth to insure having enough rooms for the protocol overhead (e.g. the official eMule).



-All bandwidth is not used


2. Try to send periodically packets (ping) with the purpose of measuring the reaction time of the modem. So if the reaction time gets too high, it could indicate a beginning of saturation of the modem (e.g. ZZ UploadSpeedSense).



-Add overhead to the traffic for the measure

-Limited reaction time > 1s

-Medium accuracy


3. Try to measure the reaction time of the remote clients. (E.g. SUC).



-No overhead



-Limited reaction time >1s

-Medium accuracy

-Depends on the capacity of both the local and remote modems.


4. Measure the traffic at the network adapter level (Ethernet card) and not at the modem level. If all the traffic is only exchanged with the modem, then the network adapter will have a 1 to 1 image the modem's traffic => NAFC



-No overhead

-Reaction time is very fast <100 ms

-Very accurate



-Not available with all OS (e.g. win95)

-Might require administrator right (could be changed somewhere in settings)

-Measure all the traffic sent or received by the local computer on the network (e.g. traffic with the modem + traffic with other computers on the local network)


5. Use the Layered Service Provider of windows....




NAFC is certainly the best solution, but only if the network adapter is only used to exchange data with the modem.


††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††† Maella


[Ip2Country] - Author: Superlexx/TPT

See the country flag and name of every client. This implementation uses GeoIp database provided by Maxmind (http://www.maxmind.com) to get IP countrys, so please... update it here:



[Show comments] - Author: SLUGFILLER

* Added option to indicate which files you set comments for in the Shared Files tab and in Transfers tab with icons.

* Received comments are now stored in a comment list for each file, instead of being stored in a single comment per user. As a result, a user can now send a comment for more than one file, and when the user disconnects the comments remain.

* Received comments can be viewed in the Shared Files tab, and are indicated with an icon.

* Comments and ratings for downloading files can be edited directly from the Transfers tab.

* New protocol extension allows downloading users to send comments to their sources, so users can now receive comments for files they have complete.


[Optimizer] - Author: eMulePlus/TPT

Memcpy/Memset for FPU, MMX, MMX2 (Athlon, Duron), SSE (PIII/PIV)


[Modeless Dialogs] - Author: SLUGFILLER

* Multiple dialogs in eMule are now modeless, meaning you can open a dialog, and continue working with eMule behind the dialog with the dialog still open, instead of having to first close the dialog, then work with eMule.

* The client details dialog is modeless. You can open one dialog per client. Trying to open the client details twice for the same client will bring the previously opened dialog to the front.

* All three file details dialogs, for downloads, search results, and shared files, are modeless. You can open one dialog per file. Trying to open the file details twice for the same file will bring the previously opened dialog to the front. If a file is removed, its dialog will automatically close.

* The preferences dialog is now modeless. Clicking on preferences while the preferences dialog is already opened will bring it to the front.

* The dialog for browsing the shared files as other users would see them is modeless. Trying to re-open it while it's already open will bring it to the front.


[Webcache] - Author: Yonatan\Superlexx\JP

From Webcache Mod, this feature allows eMule to use the http-proxy of the ISP to cache file parts, which can be downloaded by several users with full speed from the proxy.

Major advantages:

+ Much higher download speeds.

+ Some/most ISPs do NOT count traffic from their proxy server for the monthly limit!!

+ Less waste of upstream bandwidth.

+ Less waste of traffic for your ISP and the internet as a whole.

+ Less negative influence from Leechers.

+ Smaller queues (less waiting).

+ Principally better, because wasting is... well... a waste.

+ It's an add-on: eMule remains backwards compatible and only uses http file transfers when it chooses to do so.

More information: http://ispcachingforeMule.de.vu/


[Upload and Download Stop Reason] - Author: Maella/TPT

Full description of upload and download stop reasons, added to statistics, ...


[ViewSharedFiles] - Author: ItsOnlyMe

* When browsing another user's shared files and directories, they are shown in a directory in the client details dialog.

* File lists of shared directories are only requested from the other user when you try to view their contents, rather than all directories being requested right away.

* Results from shared files requests are cached, so that the same directory or the list of directories aren't requested twice from the same user. They can, however, be requested again by right clicking on the directory you wish request again, or on the root if you wish to request the list of directories again, and then clicking on "Refresh".

* Option to browse own shared files as other users would see them.


[QueueRank Diff] - Author: eMulePlus

You can see the change of your queue rank from the last reask in download list.

In green: Gained positions

In red: Lost positions


[shareSubDir] - Author: SlugFiller

* When a directory is shared, all of its subdirectories are shared as well.

* Only the root directory is saved in the .dat files, the subdirectories are rescanned every time the shared files are reloaded or refreshed. As a result, the dat file is smaller than one where all the subdirectories are shared manually, and if a shared directory's subdirectories change (renamed, created, deleted, etc), the change will be detected the next time the shared files are refreshed.


[seeTheNeed] - Author: xrmb

xrmb patch for seeing which chunks sources need from you in the sources status bar.


[SpreadBars] - Author: SlugFiller

* There is now a "progress bar" in the shared files list showing how many times each part of a file has been uploaded.

* Uses black and blue colors, like the download progress bar. Black means never uploaded, light blue means uploaded a little, dark blue means uploaded a lot.

* These statistics are saved in the known.met file, using a similar format to the saving of gaps in a part.met file.


[VirtualDirs] - Author: ItsOnlyMe

* It's possible to change the directory structure other users see the browsed files in by changing file paths to virtual directories, which are sent to other users in place of the real file paths.

* There are 3 forms of virtual directory mappings: Per-file - changing a file's path into a virtual one. Per-directory - changing the paths of all files in the directory to a virtual one. Per-directory with subdirectories - changing the paths of all files in the directory to a virtual one, and recursively converting all subdirectories into virtual subdirectories of the virtual directory. In case of multiple forms of mapping used on the same file, the most accurate applies (file, then directory, then closest parent directory).

* The virtual directories can be set through the mapping manager in the preferences.


[Infinite Queue] - Author: SlugFiller

Removes the queue size limit and allows your queue to grow as much as it needs to.


[HideOS] - Author: SlugFiller

This feature attempts to balance the amount of time different parts of each file are uploaded, by not revealing to other users parts that have been uploaded a certain amount of times more than others, making them only download the parts that have been uploaded less. It uses the data from the spreadbars to decide how many times each part was uploaded. It ignores, of course, any parts that either you don't have, or that the other user already has, so that at least one part that can be uploaded is always revealed to the other user. You can set the amount of times a part has to be uploaded more than others before it's hidden, or 0 to disabled (Default: 5).

You can configure it per file in shared list.


[Selective Chunk sharing] - Author: SlugFiller

You can choose to make hide overshares stricter by only revealing one chunk to each user, starting with the least uploaded chunks, and considering the chunks that were already offered when choosing the next. Hide overshares must not be disabled for this to work (Off by default).

You can configure it per file in shared list.


[Multisort] - Author: SlugFiller

Multi-layer sorting. If you sort a list by one column, then by another, the order of the sorting will be remembered, and when the items change it will fit the same order of sorting instead of just the last. Also, the sorting order is now saved in the preferences, so it's remembered even if you restart eMule.


[DLsortFix] - Author: SlugFiller

Revamped multiple aspects of downloadlist sorting. Also, you can now sort sources without sorting the downloads by holding the ctrl key while clicking on a column.


[OwnCredits] - Author: VQB

You can now see your own UL/DL modifier in the client details dialog, next to the client's UL/DL modifier (In brackets). Also, in the download queue, sources that would see you in their upload queue with a credits mark are now shown with a credits mark.


[SearchCatch] - Author: SlugFiller

Downloads can take sources from search results and browsed user files.


[CacheUDPsearchResults] - Author: ItsOnlyMe

Servers which return a file as a search result get cached, and are later on asked for sources for the file first if the file is downloaded. Also, if a server returns as a search result a file already being downloaded, than that server is asked for sources for the file.


[DoubleLucas] - Author: SlugFiller

Added checks to startup timer, so that if the controls aren't yet initialized, even after the delay, it waits for another timer cycle until they are before trying to initialize.


[reqFiles] - Author: ItsOnlyMe

You can right-click on a user in any list and select to view a list of all the files the user is a source of in a dialog. Also, in the status of A4AF sources you can see the file that they're asked for.


[clientDetails] - Author: ItsOnlyMe

Requested files, browsed shares and client details now appear in one dialog with tabs.


[reqBlocksClipping] - Author: SlugFiller

Requested blocks are now clipped to chunk limits and maximal allowed block size. This prevents any exploits regarding block requests, and enables certain Hybrid versions to download from eMule where they previously couldn't.


[showSharePermissions] - Author: xMule_MOD

You can now choose permissions for browsing shared files on a per-file basis, rather than just for all files.


[Powershare] - Author: ZZ/Morph/Pawcio/TPT

Powershare was designed for releasing files (extended version from Morph XT). If one file is being powershared it will be the only file that is being uploaded. Like that a releaser of a new file doesnít have to unshare all other files to achieve the same behaviour. PS is a powerful tool but it should be used correctly to avoid problems. Thatís why there are several modes for PS:


If PS is deactivaed by default it is still possible to powershare some files in the Shared Files section through the context menu.


PS is activated by default.


In this mode PS will decide itself if there are enough sources around or if the file should be powershared.


You can set a limit for PS. You can do this also in the Shared Files section. If The Mod detects as much complete sources as youíve entered as limit then it will deactivate PS for that file.

Now also, it is disabled is the file is not completed.


[ICS: Intelligent Chunk Selection] - Author: enkeyDev

To avoid two or more users choose to download the same chunk, ECS relies only on randomness: users choose randomly *hoping* to choose a different chunk each; in ICS users exchange infos about what chunk is being downloaded ATM, then a user can choose the less-downloaded (priority: spread the file faster); in ICS the user preference "first/last chunk" take importance only when there are NO rare chunks (priority: spread the file). With ICS, the same situation is a release-mode one, then you will choose the shortest-to-complete chunk that is not being downloaded ATM by any other client. This increases the probability you and the other clients would have downloaded different chunks and keep (globally) a complete source for the file, though a couple of sources quit...


[Anti HideOS] - Author: Netfinity

This feature analyzes which chunks are hidden by remote clients and allows proper calculation for ICS and Webcache feature


[Reask Sources After IP Change] - Author: Maella (idea Xman)

Your ISP usually changes providers about every 24 hour, but this depends on the type of service that you have. This feature will help to get things going again by Reasking your sources again right away for the files after you received a new IP.


[QuickStart] - Author: Tritant

Quickstart allows you to find a lot of sources in a short amount of time. You could say that this feature is turning our beloved eMule for a few minutes into a race horse.

Youíve already entered values for ĄMax Connections/5 sec and for Max Connections in the preferences of the official eMule. All values that you define for Quickstart will override the other settings at the startup of eMule for a few seconds. You may enter other values for the Quickstart but they should be higher than the values in the official eMule.

Quickstart will help you to find sources more quickly but it achieves this in an aggressive way. Thatís why this feature deactivates itself after a few seconds after the startup.


[MinToMB] - Author: Pawcio

Sometimes, a client can be dropped from upload list with a low data amount uploaded by time. With this feature, this drop will be done by data uploaded and not by time.


[New Tooltips] - Author: Rayita/MFCK/TPT

New improved tooltips in clients, status bar, files...

Also, you can get more tooltips in pHoeniX preferences that explain you the



[CrashRpt Lib] - Author: TPT based on Maella

With this lib, you can contribute to mod debug. You have to download the file: http://personal.telefonica.terra.es/web/pi.../depuracion.rar

Then, you have to extract the files in eMule folder and then, run eMule.

If you have a crash, a new window should appear: CrashRpt has encountered a problem and needs to close...

In this window, you can set an email to send the dump files (by default our email, thephoenixteam@yahoo.es) and make a comment: the version of your mod, what are you doing when the mod crashed...)

If you canít send it automatically, youíll get two files: eMule.xml and eMule.dmp. You only have to send them to: thephoenixteam@yahoo.es.

By the way... thanks


[New Timer Management] - Author: Maella

The management of the main timer was rewritten. With this refactory, a better supervision of the program's exceptions is possible. The application should not close any more by itself without generating a dump file. This modification should help for the debugging.


[Close backdoor in ListenSocket] - Author: Maella

A client (Hybrid + MLDonkey) might ask for a file to gain but is already downloading another one. When this is detected, the client will be put back in the waiting list with a penalty.


[Spread Request] - Author: Maella (idea SlugFiller)

Try to spread the TCP session over the time to avoid some pick in the level of simultaneous connections.

It adds a jitter of +-2 minutes to the default timing of request.


[Unnecessary Protocol Overload] - Author: Maella

Reduce by up to 50% the number of TCP creations to refresh the eDonkey download session. The ping signal is now correctly used and the client takes advantage of existing TCP sessions to perform all refresh operations.


[Auto HardLimit] - Author: Sivka/TPT

You can configure max. sources per file.


[XP Style Menus] - Author: TPT

New menus, with images and colors. In future versions, youíll be able to configure it more.


[New Messages Window] - Author: TPT

Two new things. We have cut the friends list and put there an info place where you can find friend information: mod, data uploaded,...

A new column in friend list to sort friends by state: connected, not connected and client.


[SNAFU v3] - Author: cmgrr (eWombat mod)

Detects and bans known lechers.

Detects hash-thieves.

Checking usage of data-tags which are not defined in eDonkey/eMule.

Detection is based on analyzing clients behavior.


[Winsock 2] - Author: cmgrr (eWombat mod)

Force use of winsock2.dll (Version 2) if available.


[indexPartFiles] - Author: SlugFiller

eMule now keeps index of all current downloads. If one of the download files becomes corrupt, or is unexpectedly deleted, or doesn't match the index, eMule offers to restore the download from the indexed backup. The index is saved only when it's changed, to reduce chances of it becoming corrupt


[HistoryList] - Author: MoNKi

On shared list tab, if you click the top-left button, you can see a new list with downloaded files. Also detects already downloaded files.



[One queue per file] - Author: Maella (idea bloodymad)

This could be the best way to share all your files equally. Also, this implementation has the possibility to reserve a slot for files that are set to release priority.


[Save ed2k files to disc] - Author: TPT

In download and shared lists you have the option to save the ed2k-links to disc. For this, a new folder named "Links" is

created in your eMule folder.


[Sort servers by linear priority] - Author: TPT

Now you can try to connect to a server by linear priority.


[ZZ Downloadmanager by linear priority] - Author: TPT

The ZZ Downloadmanager resumes the files by alphabetical order... with this feature, you can control the resume order by linear priority managed by yourself.


[Full friends improvements] - Author: TPT

This feature collects many changes. Now you can give a slot to a friend in all lists and donít need to move to the message window every time you want to do it. The friend slot now is marked in the upload list by a red background, and you can remove it directly in that list.

Note: We havenít modified the number of slots that can be given. Only one friend slot can be used, like official.


[Mini Mule] - Author: TBH/TPT

When you minimize eMule a new mini-window is shown where you can see a mini-graph of the speed and more information.


[Credits Selection] - Author: Lovelace/Pawcio

You can select the credits system you want to use. Four options:

- None: No credits system is used

- Official: it makes use of the official credit system

- Pawcio:

- Range from 1.0 to 100.0

- Multiplier of 3 (instead of 2) ---- 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 = 10.0 * received in MB (but not more than 100.0)

- Small bonus for clients that have given you many MB:

- if you get 100MB then user recieve ratio = 50.0 till you give back 108MB

- 50MB - ratio = 25.0 - 55MB

- 25MB - ratio = 12.0 - 28MB

- 9MB - ratio = 5.0 - 12MB

- Lovelace:

- Formula: downloadModifier =100*((1-1/(1+exp((3*{MB uploaded to us}^2-{MB downloaded from us}^2)/1000)))^6.6667)

- This credits system gives more credits to best uploaders.


[Fakecheck] - Author: Maella/Morph

You have two ways to check if your download is a fake.

> You can update the fakes.dat in pHoeniX preferences and control if the files is a fake in search tab.

> Also, you can check if your file is a fake in download list. This option opens a new browser window to search for this fake.


[Categories Improvements] - Author: Khaos

Linear priority, enhanced categories, category-selection dialog... many improvements to make your eMule life easier.

Configure it in: pHoeniX RelOad


[Copy BBcode elinks] - Author: Announ

You can copy the ed2klink with BBcode tags to be used in a forum. Since 0.44b version, this option is moved to the ed2k-link dialog.


[New Transfers Window Style] - Author: TBH

New download clients list to see those clients who are uploading to you.

New buttons in transfers tab to change between lists.


[Delay start-up to avoid busy sever message] - Author: TPT

You can run eMule with a delay to avoid this message error.


[Fade on Exit] - Author: TPT

If you have checked "Prompt on exit" in preferences... when you close eMule, it goes in grey scale, like windows XP shutdown.


[AutoBackup] - Author: TBH

Sometimes your eMule can corrupt your part, met, ... files. Then...you are very angry! With this feature you can do a Backup and prevent these situations. Also, you can do an auto backup every time you shutdown eMule.


[SaveLoad Sources] - Author: enkeyDEV

Adjustable Load and Save Sources. This will save 20 of the best sources including Source Exchange, to a subfolder in your temp directory under eMule called Saved Sources. Each file you are downloading will have a file in there. Also these files can read in a text editor such as notepad. There will be an ed2k-link in there incase you loose a download to use. This will help the next time that you start eMule this will help you get your downloads started faster again by loading the saved sources.

Note: This feature has been changed from original feature to make it conform to eMule-project rules. No manual save and load. Sources arenít saved for a long time.


[Select process priority] - Author: Rayita

In preferences you can give a priority to eMule process. This will have effect when you run eMule again.

Note: In windows 9x you will only have 3 priorities, in Win XP youíll have 5 priorities.

This option can make your system unstable.


[Notifier] - Author: enkeyDEV

New events added to notifier and the best... support for skins.

Since pHoeniX 1.9 with the binaries we include a pHoeniX skin for pHoeniX fans.


[UPnP NAT Support] - Author: MoNKi

The UPnP opens automatically the router ports or sets the shared internet connection to make eMule run properly.

But you must open firewall ports, if not... this feature doesnít work.

This feature only works with UPnP routers and Win XP shared internet connection, but you must enable the UPnP support.


[Invisible Mode] - Author: MoNKi

When you minimize eMule, you get an eMule icon in tray. With this feature, you can hide this icon, but eMule continues running (bye bye boss).


- And more things...


Maella -AntiCrash/AntiFake handling- (Vorlost/Mortillo)

Maella -Extended clean-up II-

Maella -Defeat 0-filled Part Senders

Maella -Overwrite Already Downloaded Parts and Chunks

Maella -Overhead compensation (pseudo full download rate control)

Maella small latency

pHoeniX Logs

Moonlight: Global shutdown event to wake up threads.

Elandal: multipleInstance

Notify message in tray when a new message is received...TPT

Maella [FAF] -Allow Bandwidth Settings in <1KB Incremements

Monki Transparency to show toolbar properly in Win 2000.

Lateral preferences banner [TPT]

Maella -Catch incoming packets exception

Md5 optimization by e+

Anticorruption handling

Monki high contrast support