View Issue Details

IDProjectCategoryView StatusLast Update
0000534MediaMonkey (current)Otherpublic2010-12-23 04:28
Status closedResolutionfixed 
Product Version 
Target Version4.0Fixed in Version4.0 
Summary0000534: Ability to share / stream library to other machines
DescriptionThis functionality is present in MediaJukebox, and would be needed to support various set-top boxes.

Needs to be specced.
Additional InformationOpen source implementation by user:

Article from Peke re. dlna servers:

Interesting implementation at:
Fixed in build1339


parent of 0005824 closedLudek Device configuration: Simplify Sync-list layout 
parent of 0006548 closedLudek UPnP server browsing is sometimes impossible because server list can't be refreshed 
related to 0001293 closedLudek Download Manager 



2004-03-23 21:16

administrator   ~0003545

I've been thinking a bit more about this, and now believe that we should consider adding this to MM 2.3. The reasoning is that it makes MM more viral than it currently is in the sense that users can share MM tracks from their home pc to their office PC, to their kid's PCs etc. Basically it makes MM more likely to be seen/publicised because of the fact that users will try to use it in more than one location.

A bit more research shows that the DAAP/mDNS/rendezvouz protocol is gaining traction and that this is probably the way to go for this functionality. More about this is at:


2004-03-29 08:20

administrator   ~0003587

I reviewed the subject briefly and DAAP/mDNS/rendezvouz seems to be too Apple related (actually except for mDNS) and in case of DAAP somewhat closed (even though it's planned to open it a bit).

Also the whole networking is quite a complex issue (in order to make is working well, without too much configuration, etc.) and thus it would be nice to involve someone else into its implementation (some MM users with knowledge of it, some developers of such products distributed as freeware).


2005-03-13 02:39

administrator   ~0005416

Setting to immediate in order to discuss opportunities for partering for this (e.g. partering with 'Grouper').


2005-05-24 02:06

administrator   ~0005590

If we decide to support upnp instead of rendezvouz, there's an open source bsd-licensed project for this.

see: and a reference implementation at:


2006-02-22 14:39

administrator   ~0006921

If we want to support upnp devices and slim devices' squeezebox, there are several potential partners: (upnp and slim variant of upnp) (upnp) (upnp) (open source berkely license upnp library)

If we want to develop this functionality, we don't really (at least initially) require any special hardware, since there are numerous clients with which we can test including:
-Windows MediaPlayer, twonkyvision (upnp)
-Softsqueeze and others (slim devices):

More information is available at:

Although I would like to add this functionality, my inclination would be to outsource it as a plugin, if possible.


2006-02-23 20:51

developer   ~0006932

Last edited: 2006-02-23 21:02

I Agree with you completly, Plugin only. Basic reason is.

We should be carefull about this as there is Cas ethat MM could be used to Allow hacker attacks or installing malware or other undessired applications at your system, as MM is certificated to be trusted app with no malware and Adware,...
I suggest that we proceide with care.

Additional Links:


2007-06-22 19:26

administrator   ~0009541

Note, when we eventually implement this we need to consider that the most popular playback 'devices' are probably xbox2 and playstation3, which support: &

PS3 native formats that I know of are:

    Sound:MP3, AAC, WMA.
    Video: mpeg-2, AVC mpeg-4, VC-1.


2007-09-18 17:12

administrator   ~0010817

Related idea:


2007-11-05 06:00

developer   ~0011785

Searching Other things I have found Free Delphi UPNP Components that can be possibly Used in MM


2008-03-20 15:18

administrator   ~0013407

Last edited: 2008-11-07 15:26

Brilliant implementation for iTunes that shares the library between 2 iTunes apps, even highlighting which Tracks are missing vs which are dups.


2008-11-07 15:27

administrator   ~0014875

More info from Jiri:


2008-11-10 12:37

administrator   ~0014883

re. DAAP - I found out that the current implementations support only older version of iTunes, iTunes 7 and particularly iTunes 8 added some kind of authentication that noone has hacked yet. Apple possibly licenses it, but I doubt that there will be any reasonable terms.

This leaves UPnP as the best choice (which it probably is anyway, due to its support in several devices). We should try to implement both UPnP client and server in MM. Our implementation can be based on several underlying technologies:
A. Windows UPnP API (
B. Another implementation, e.g. looks good.

Unless we find any problem with it, I'd prefer B, because it's cross-plaform, which could be useful in the future and completely open-source.

So, we should create a DLL based on B, exposing UPnP functionality as needed by MM. Then MM would expose its Library as a UPnP device and also on start it would look for other UPnP devices and show all of them in the main Tree. Both client and server parts should be possible to disable in Options.

Other useful links:
 - Intel UPnP Tools:
 - (Linux only?)
 - collection of UPnP links:
 - User contributed UPnP client and server for MediaMonkey:


2008-11-20 20:50

developer   ~0015033

Last edited: 2008-11-20 21:06

Another usefull link:


2008-11-21 12:53

developer   ~0015052

Based on what I read and what Jiri suggested (the solution B) it makes sense to use Platinum project to build own DLL for UpNp functionality.

But there is a small problem: Which licence we want to use (commercial or GPL). Based on the licence the DLL will be included within installation package or it will be separated plug-in (add-on).

There is info about license:

Platinum is copyrighted free software by Sylvain Rebaud <>.

Platinum uses a "dual licensing" business model. Under this model, users may choose to use Platinum under the free software/open source GNU General Public License (commonly known as the "GPL") or under a commercial license.

With the GPL license, Platinum is available free of charge. Users may download the software for free and modify, integrate and distribute it. However, GPL users must abide by the rules of the GPL, which stipulate that if a Platinum-based application is redistributed, the complete source code for this application must also be open and available for redistribution.

Plutinosoft offers a commercial license for organizations that do not want to release the source code for their application. Commercial license customers get a commercially supported product with a level of assurance from Plutinosoft, without the requirement that their Platinum-based software must be "open sourced". Plutinosoft is able to provide a commercial license because it has full ownership of the Platinum code.

As discussed with Jiri over IM, Rusty is going to cantact them for a license.


2008-11-26 14:19

developer   ~0015141

Last edited: 2008-11-26 14:21

I checked the Platinum stack. Tested it etc. All seemed to be fine, but I found that Platinum doesn't support unicode (isn't unicode enabled).

I run the Platinum media server with one shared folder where I had a file including some unicode chars in the file name. Both Platinum media controller and XBMC media center ( show only ?? instead of the unicode chars when browsing. Also watching the sources I found that Platinum is not unicode enabled.
Then I tried TVersity ( media server. I shared the same folder via TVersity and now the Unicode chars are there when I browse by using XBMC, but they are not there when I browse by the Platinum media controller sample app. It is strange, because XBMC is powered by Platinum.

Rusty, could you ask Sylvain Rebaud how is it with Platinum and Unicode?
Whether he plans to add unicode support?


2008-11-27 21:31

developer   ~0015205

Assigning to me, because I am working on it.


2008-12-03 12:59

developer   ~0015316

Sylvain published Platinum 0.4.5 on Sourceforge with a Unicode patch:


2009-02-09 21:53

developer   ~0016599

Last edited: 2009-02-10 21:06

I implemented and integrated UPNP browsing/sharing/playing based on the Platinum project and seems to work fine.

The functionality can be tested via files attached on our FTP, in the directory UPNP there are 2 files: UPNP.dll and MM.exe. Copy both the files to MM install folder and run MM.exe.

Create folder C:\Testing\ and copy some tracks to the folder, content of the folder will be shared as UPNP server on MM start up.

All available UPNP servers can be browsed and played via new 'UPNP Servers' node bellow 'Podcast Subscriptions' node.

So now it is about UI implementing (Tools|Options|UPNP) and specification.

I suggest following:

Add new options sheet called 'UPNP' or 'Universal Plug and Play' with following content:

| [x] Enable UPNP client
| Download UPNP files to: /My Music/Downloaded UPNP files/<Artist>/<Album>/<#Track>-<Title> [Browse]
| [ ] Enable UPNP shares (servers)
| -------------------------------------------
| | Server name: | Content to share:
| | [x] My Music server | C:\My Music\
| | [ ] .......... |
| |
| |--------------------------------------------
| [Add new server to share]

We should also probably add a download manager that would be usefull with regard to this functionality and would also meets user needs whenever any track is required to download directly via its http:// link, there is already open issue for this (0001293)

Assigned to Rusty for detailed specification.


2009-02-11 10:21

developer   ~0016617

Last edited: 2009-02-11 10:23

As discussed offline it would make sense to share content in a manner similar to how the user syncs content to a device or burns content to a DVD. If MM's upnp server is just going to share a directory, then there's not much benefit to integration with MM.

e.g. in a UI similar to the device config UI, the user would
-Share tracks from an AutoPlaylist
-Share a podcast
-Define a mask
and the path to the tracks would be some sort of 'virtual path' based on whatever mask the user defines.

Assigned to me for investigation (as post 3.1 task).


2009-02-19 14:30

developer   ~0016676

Last edited: 2009-02-19 14:32

I implemented the ablility for sharing music in the manner similar to how the user syncs content to a device.

Created test MM UPNP server that shares music with Genre = 'Rock' and under mask <Artist>/<Album>/<Title>

MM.exe and UPNP.dll are uploaded on our FTP in the UPNP folder.

So now its about UI adding, I would use the same dialog as for device configuration including "Auto-Sync list" and "Device Configuration" pages. In addition we could add "Auto-Conversion"?


2009-06-19 15:46

developer   ~0018455

Last edited: 2009-06-19 18:07

Rusty, Jiri, I would need to add an UI for the UPnP that I have implemented,
I suggest to add new option sheet called "UPnP" that would look like this:

| [x] Enable UPnP client
| Download UPnP files to: /My Music/Downloaded UPnP files/<Artist>/<Album>/<#Track>-<Title> [Browse]
| [ ] Enable UPnP shares (servers)
| -------------------------------------------
| | [x] My podcasts | [Options]
| | [ ] My favorite music | [Options]
| | <Add new server to share...>
| |
| |
| |--------------------------------------------

After clicking [Options] button there would be similar dialog as for device configuration including "Auto-Sync list" and "Device Configuration" pages. In addition we could add "Auto-Conversion"?
The "Auto-Sync list" tab I would rename to "Content to share" or "Shared content"
The "Device Configuration" tab I would rename to "UPnP Configuration" where would be only the first option leaved for now:
Share tracks as: [\<Album Artist>\<Album>\<Filename>] [>>] [Configure]
and above this option there should be another option:
Server Name: [My Favorite Music] -- "My favorite music" is just example

Additionally we could add also "Auto-Conversion" page where user with FLACs and WAVs in his library could configure that he want to share them as MP3s?


2009-06-19 17:49

developer   ~0018456

Last edited: 2009-06-19 18:09

Just for clarification:
The "My Podcasts" and "My favorite music" are just examples, you can set whatever name of the server.

Note that nothing is streamed automatically, you only set what you want to share and under which path and under which server name.
Then the servers will ne available under the "UPnP Servers" node in main tree that enables browsing of them (if '[x] Enable UPnP client' is checked).

If you use MM.exe and UPNP.dll from our FTP in the UPNP folder:
There is created test UPnP server that shares music with Genre = 'Rock' and under mask <Artist>/<Album>/<Title>


2009-06-22 12:39

administrator   ~0018465

As discussed with Ludek on phone, I'd suggest the following:

[x] Enable UPnP client
   - I don't think we need this, it can be enabled automatically as a tree node and in case user doesn't need it, it can be hidden using filters configuration.

Download UPnP files to: ...
   - Also doesn't seem to be needed. This could be somehow integrated with the upcoming Download Manager, so that user would right-click UPnP shared tracks to be downloaded, select Download and then a dialog would appear (useful for all types of downloads) where user could further confirm destination, etc.

So, there only remains something like this:

| [ ] Enable UPnP shares (servers)
| -----------------------------------
| | [x] Filter: Music [Options]
| | [ ] Filter: Videos
| | [ ] Filter: Podcasts
| |+[ ] Playlists
| |
| |----------------------------------

The idea is to simplify configuration, so that it isn't as complicated as Device or Burning configuration currently is. This would be very easy to configure, easy to understand by user and also easier to implement. (Note that I'd also think about using such a simplified approach for Device synchronization and Burning, because the current implementation is unnecessarily complex, hard to maintain and probably also rather hard to understand by users).


2009-06-22 22:55

developer   ~0018476

Last edited: 2009-06-22 23:00

1. I wonder if it would be clear to user that we use familiar UI similar to Sync?
| [ ] Enable UPnP shares (servers)
| [Library]{Playlists}---------------
| | [ ] Filter: Videos
| | [ ] Filter: Podcasts
| | [ ] Filter: AudioBooks
| | [x] Filter: General Music
| | [ ] Filter: Available Tracks
| |
| |----------------------------------

| [ ] Enable UPnP shares (servers)
| {Library}[Playlists]---------------
| |+[ ] Playlists
| |
| |
| |
| |
| |
| |----------------------------------

2. Regarding Enable UPnP client and Download UPnP files to I agree with Jiri


2009-06-23 08:16

administrator   ~0018480

Could be, but I'd still slightly prefer the original suggestion, since it would involve less mouse clicks and also would show everything in one place.


2009-06-26 09:59

developer   ~0018519

Last edited: 2009-06-26 11:48

I like the Jiri's idea to simplify configuration, so that it isn't as complicated as Device or Burning configuration currently is.

But if we want to let users to configure more own UPnP servers then I would prefer the layout I suggested:

| [ ] Enable UPnP shares (servers)
| -------------------------------------------
| | [x] Ludek's music | [Options]
| | [ ] Ludek's favorite music | [Options]
| | <Add media share...>
| |
| |
| |--------------------------------------------

and [Options] button would bring the layout Jiri suggested:

| Server name: [Ludek's music]
| Share tracks as: [\<Album Artist>\<Album>\<Filename>] [>>] [Configure]
| Content to be shared:
| -----------------------------
| | [ ] Filter: Videos
| | [ ] Filter: Podcasts
| | [ ] Filter: AudioBooks
| | [x] Filter: General Music
| | [ ] Filter: Available Tracks
| |+[ ] Playlists
| |
| |----------------------------------


2010-01-13 12:14

developer   ~0019942

Last edited: 2010-01-13 21:32

As Peke indicated there is something we should evaluate: supporting DLNA:
DLNA is derived from the UPnP

e.g. Mezzmo implemented it:

We use Platinum SDK so it seems that DLNA sould be easy to support, Sylvain added support of DLNA to version 0.5.3:


2010-01-13 21:54

developer   ~0019946

I think that yours QNAP NAS have ability of DLNA Server?


2010-01-21 23:42

developer   ~0019969

I just noticed one trivial thing. If multiple MM with enabled servers are used on LAN I think we should add ability to Change Each Server name directly in MM.


2010-02-03 20:16

administrator   ~0019995

Last edited: 2010-02-05 19:53

Based on our discussions, I've attached a couple of simpler UI proposals that attempt to meet the following requirements:

-Needs to only enable sharing of collections and playlists
-Should support other protocols in the future (e.g. Sharing content via a web/streaming interface, or via bonjour)

Per Server:
-Need to enable/disable server & provide status indicator re. sharing
-Need to define server name
Per Device:
-Would be nice to transcode on a per-device basis
-Needs to warn the admin if new device is connecting (so as to set transcoding rules)

Access Control:
-Need to restrict access to external IP addresses
-Should be possible to restrict Access per Collection and/or for ALL Playlists

Other requirements that I'm less certain of are:
(?) Nice to support multiple servers per server type? I don't see any benefit in doing so.
(?) Nice to present hierarchy for playlists (in order to better navigate large autoplaylists).

-Collections / Playlist hierarchy can be represented using MediaMonkey's tree structure (i.e. no need for a separately defined hierarchy).

Mockup 5 is the simplest design that meets the minimum requirements. Should we find that per-device access control / conversion is required, we can make some adjustments.

2010-02-03 20:17


UPnP4.png (404,505 bytes)

2010-02-05 19:49


UPnP5.png (430,007 bytes)


2010-05-28 13:50

developer   ~0020193

Last edited: 2010-12-14 16:27

View 2 revisions

Implemented based on the Mockup 5 and covered by automated regression tests.
Added also the <Access Control> page based on MAC address (because IP can be dynamic).

Added compatibility with the xBox 360 and various others clients:
Tested Windows clients: [WMP, tVersity, TwonkyMedia, XBMC]
Tested iPhone clients: [media:connect, PlugPlayer, UPnPPeek, Browse UPnP, MLPlayer]

Note that MediaMonkey Player (Volume, Next, Previous, Play/Pause, Stop, ...) can now be controlled via UPnP (as UPnP renderer) if the
'[x] Allow control of MediaMonkey player via UPnP/DLNA'
checkbox is enabled.

Added in build 1307.


2010-12-12 05:29

developer   ~0021761

Last edited: 2010-12-12 05:38

View 3 revisions

No files listed in WMP 12 Win 7 (Edit by Rusty: i.e. the Server is Visible, but no files are browsable), Accessing with FireFox gives blank page.

All Clients accepted in Options, server(s) is running.

tested with 1334


2010-12-12 06:30

administrator   ~0021767

I experienced the same problem as Peke--i.e. MM Server was visible but not browsable in WMP12. Note that WMP12 was able to browse and play tracks from twonkymedia server.

I also tested AirPlayer on the iPhone, and it was able to browse tracks from the MM server, but was unable to play them. Note that AirPlayer was able to play tracks from twonkeymedia server.

One other important note: there's no obvious way to enable the server. i.e. when the Checkbox is checked, the Config UI doesn't change Running/Stopped status, nor is there any indicator in the main UI that the server has started/stopped. Possible approaches to fixing this would be to remove the checkbox and add Start/Stop toggle button to the right of the 'Status Column'.


2010-12-16 12:27

developer   ~0021861

Last edited: 2010-12-16 12:43

View 5 revisions

Re: WMP 12 Win 7 issue
- it is fixed in build 1335.

Re: AirPlayer
I found that also tVersity and XBMC content can be only browsed by AirPlayer, but playing a file fails (AirPlayer quits on attempt to play a file). So it seems to be a kind of incompatibility between Platinum UPnP SDK and AirPlayer, because otherwise all the others iPhone's UPnP/DLNA clients works fine (media:connect, PlugPlayer, UPnPPeek, Browse UPnP, MLPlayer)
I haven't realized why AirPlayer crashes, because it doesn't send a request for a file at all (on attempt to play any) so I would suggest to wait for new version, because here they indicate that "Next version will fix some crash issue"

Re: there's no obvious way to enable the server
When the Checkbox is checked, the Config UI doesn't change, because MM is waiting for clicking the [OK] button to confirm and then immediatelly runs/stops the servers. This is compatible with all the others checkboxes in Options ([OK] button approves the changes)


2010-12-17 03:05

administrator   ~0021889

Tested build 1335.

WMP is working correctly, but there's a couple of bugs remaining:

a) AV upon enabling UPnP server. Elog submitted.
b) Whenever a new server is added, all playlists are pre-selected. They shouldn't be.
c) If the user enables the server, clicks 'ok', and then goes back to the 'Share Server' dialog, --> Server status is still 'stopped'! The only way to get it to start is by closing MM and restarting.
d) Re. 'there's no obvious way to enable the server', the checkbox should be changed to a Start/Stop toggle button, so that it's clear what is happening.


2010-12-17 21:45

developer   ~0021906

Last edited: 2010-12-17 21:46

View 2 revisions

a), b), c) are fixed in 1336

d) - as discussed over IM, I made it consistent with Collections config, i.e.
- added 'Enabled' column
- if a server is added, removed or disabled then it is applied only by approving via [OK] button (same as in case of collections)


2010-12-19 06:15

administrator   ~0021917

Last edited: 2010-12-19 17:41

View 2 revisions

Tested 1336.
a,b,c are resolved.
re. d. I suppose we can see what users say.

New issues:
e) If the user shares e.g. only Collection=Music, user can browse other collections e.g. Video using WMP!!

f) If the user configures MM to:

i) Share automatically, Notify user re. new device
--> Notification occurs, but:
The current dialog implies that sharing isn't enabled until the MM user clicks 'yes'! (sharing should be enabled automatically in this configuration)

ii) Continuing from i), if the user clicks 'no' (i.e. if he rejects connections), MM still allows the connection ! (i.e. MM user correctly receives notification on access attempts by new devices, but sharing is enabled even after the user rejects data sharing with the device via the notification dialog).

iii) Not share automatically, Notify user:
--> UPnP doesn't work at all--even when MM user accepts connection from new device

iv) Note: Wording of the dialog can be updated as follows (wording varies depending on the configuration):
New device has just attempted connection to MediaMonkey Server
Do you wish to share data with the device?


A new device is connecting to 'MediaMonkey Server'.

[MediaMonkey is configured to share data with this device. Do you wish to continue sharing data with the device?]

[Do you wish to share data with the device?]


2010-12-20 17:45

developer   ~0021961

Last edited: 2010-12-20 21:11

View 3 revisions

e) this is rather problem with WMP, because WMP (unlike the others UPnP/DLNA clients) doesn't respect the server hierarchy and scans everything into its library and then always presents the scanned content. This implies that if a server ever allowed the Video then WMP scans the video content and always presents it

f) In order to simplify things I resolved it this way:
[x] Share automatically with all new devices
is enabled only if
[ ] Notify me when a new device attempts to connect
is unchecked

It means that if user checked [x] Notify me... then MM always asks for allowing the access.

Fixed in build 1338


2010-12-20 21:50

administrator   ~0021983

e) Thanks--confirmed. WMP seems to cache content that has been shared.

f) There are still problems with permissions:
i) Share automatically / Notify: doesn't share automatically (it only shares after MM user clicks 'yes'). This is a minor issue, but it's an issue because MM doesn't behave according to the configuration.

ii) Continuing from above: if the MM user clicks 'No', and then the user attempts to access the server again, then MM shares the data!! (presumably because MM no longer considers it a 'new' device). What should happen is that when the user chooses 'No', the device should be added (unchecked) to the list of devices.

iii) Not share automatically, Notify user:
--> If the user clicks 'yes' when the notification message appears, UPnP doesn't work at all!--even when MM user accepts connection from new device

iv) Subsequent to iii) if the user tries to access the server with another new device, access is denied -- the notification message isn't even shown!!

v) The language is still a little confusing (it doesn't match the configuration language. i.e.

-Share/Notify: ==> MM shares with new devices, and notifies the MM user (so MM should share with the device, until the user clicks 'no', and the language of the notification should be:
A new device is connecting to 'MediaMonkey Server'.
MediaMonkey is configured to share data with this device. Do you wish to continue sharing data with the device?

-Notify: ==> MM doesn't share automatically, but notifies the MM user on any attempts to access. If the user agrees by clicking 'yes' then MM should give access to the device. In this case, notification should be:
A new device is connecting to 'MediaMonkey Server'.
Do you wish to share data with the device?


2010-12-21 12:52

developer   ~0022007

Fixed in build 1339


2010-12-22 11:30

developer   ~0022038

Testing note: if you want to test
[x] Allow control of MediaMonkey player via UPnP/DLNA
functionality then try e.g. these clients/controllers:

PlugPlayer app for iPhone:
1. Run PlugPlayer
2. Go to 'Devices'
3. Select 'MediaMonkey Renderer' as Renderer device

media:connect app for iPhone:
1. Run media:connect
2. Go to 'Controller'
3. Select 'MediaMonkey Renderer' as Renderer device


2010-12-23 02:16

developer   ~0022083

Last edited: 2010-12-23 02:17

View 2 revisions

Any PC app (PlugPlayer needs to have iPhone/Touch Hardware) that can do that? I have tried with XBMC and WMP (From Other PC) to see if they are capable.


2010-12-23 04:28

administrator   ~0022085

Verified 1340.

Note: UPnP renderer functionality is also much better performing.