|
#1
|
|||
|
|||
|
Hello all,
I have been frustrated for a while with the features and performance in the Philips Media Manager for my Streamium MC-i200. On top of that, my own frustrations are echoed in the posts I see on the Streamium Cafe site. While the Streamium pretends to be UPnP, it is not really, nor is it compatible with other true UPnP devices. On top of that, Philips maintains true UPnP support can not be implemented into future firmware releases and that is because of some limitations in the hardware. I contend that this is not true, and is only because Philips does not wish to support hardware that is only a few years old. To prove my point, I present StreamyUPnP, a proxy between Streamiums and true UPnP servers. StreamyUPnP is a Perl program that looks like PMM to your Streamium, translates Streamium requests to your UPnP server, gets the UPnP results, and translates/sends them back to the Streamium. It is actually quite simple, as evidenced by the small size of this script. Streamiums have about 4mb or so of RAM internally and are actually quite sophisticated inside. I wrote this in a matter of a few hours, basing the PC-Link part on Nathan Peterson's code, and the UPnP part on the straight sample code from CPAN. It should still only be taken as a proof of concept. There are probably a few bugs here and there, it hasn't been fully tested, and the code isn't as well formatted as I would like it to be. If I have time in the future, I will update it and add features as necessary. If you have feedback, send me a note. http://www.kreation.com/projects/Str...amyUPnP.pl.txt Features / Benefits: <ul type="square">[*] Can sit on the same machine as your UPnP software, as long as PMM is not running[*] The only thing that requires configuration is the PreferredServerName[*] Acts completely transparently to the Streamium, which will never know it is not connecting with a PMM server[*] Will allow users to run Vista, which PMM cannot run on[*] No need to re-organize and run scripts to collect info about your music collection when your UPnP server has already done the work[/list] Room for improvement: <ul type="square">[*] Only simple testing performed with: SimpleServer Basic, TwonkyVision, On2Share Pro[*] Untested or unable to get working in: WinAmp Remote (something goes haywire after trying to browse the next level down[*] Only tested on Windows machines so far[*] Although there is an option for SortCriteria, defaulting to track number, so far I have not seen this supported by UPnP media servers[*] It is based on Nathan Peterson's code, so it also does not know how to handle two Streamiums on the same network.[*] I'll admit I have a limited knowledge of the UPnP protocol, thus the implementation must be even more limited[*] No real error handling, which might cause issues[*] In writing the program, I found that the Streamium cannot accept Node IDs that are not numeric, which UPnP node IDs usually are, thus I had to keep my own index of node IDs as they were browsed by the Streamium. This may cause issues.[*] The Streamium gets data in chunks of 32 nodes. This may not be completely implemented here.[/list] Requirements <ul type="square">[*] Perl 5.8.x (I have been using the Active State Perl package)[*] Net::UPnP Package[*] XML::Simple Package[/list] Thanks to the following folks: <ul type="square">[*] Nathan Peterson (http://www.siteswap.org/streamium/) for his PCLink code and analysis of the protocol when it first came out[*] The wonderful community at Streamium Cafe[*] UPnP Perl writer Satoshi Konno[*] Perl XML Simple writer Grant McLean[*] Streamiumd writer Dave Witt[*] The few folks at Philips who do try to help people when they can[/list] |
|
#2
|
|||
|
|||
|
I have recently bought a mc-i250 via ebay installed the machine and installed youre script. As media server I use TVersity, everything is working great. (Only the internet section isn't working) The only problem I have is that the artists etc etc are not in the correct alphabetical order, also the album tracks are in random order do you have a quick solution?
|
|
#3
|
|||
|
|||
|
Hi Ottie,
I'd been thinking of implementing a sort into the program but haven't had the chance just yet. UPnP is supposed to have a sort capability, but it doesn't look like it was implemented. So I have to sort the records themselves with alphabetic sort on the directory level and track order sort on the track level. I'll give it a second look and let you know if I have an update. - George |
|
#4
|
|||
|
|||
|
George,
I fixed the problem, the problem lies in the way the upnp response is stored in perl, the upnp reply is stored in a hash , this hash isn't ordered, so if you retrieve the keys from the hash then the keys are unsorted, so the only thing you have to do is sort the keys of the hash. I also changed the information you sent to the mc i250, i filled in the title field, with the correct value and I filled in the year value. I haven't had time to reply, and if you are interested I can attach the changed script. Next thing I wanna do is retrieve the list information in chunks, now all upnp data is retrieved in once and this can hangup the mc i250, because the data can be to much, as you can see in the streamium protocol the mc i250 tries to retrieve the data in chunks of 32 elements so I wanna translate this to the correct upnp calls. |
|
#5
|
|||
|
|||
|
George
Fixed all the "problems" I had with the script I will attach it to this post, I added my "story" to your preface and now I give the script back to community. Changes: # After buying a mc-i250 on ebay I installed the mc-i250 and started this # script, I had already a mediaserver running on my server. This media server # was TVersity so I updated the script so it could work with the TVersity # server. # # After some testing I discovered that the way the media was displayed differed # from my other media players, all media was sorted in the wrong maner, afer # playing with upnp filters and sortcriteria I discovered the reason why the # data was wrongly sorted. # The cause was the way the upnp data retrieved from the TVersity server was # stored. This data is stored in a hash and this is unordered, so I sorted # the keys of the hash and my media was sorted again. # # Also I updated the information that was sent to the mc-i250, updated the # artist field and the year field, all this info can be checked on the mc-i250. # # After this I discovered that all data of a node was retrieved in once, this # could lead to mc=i250 hangups if 8000 music files where retrieved in once, # and the connection was lost. # # On Nathan Peterson site I read that the original mc-i250 streamium protocol # retrieved the data in chunks of 32 nodes, so I implemented this feature also # in the retrieving of the media from the upnp TVersity server, because # the upnp protocol also supports the retrieving of media in chunks of 32 # nodes. # # So finally after a week of searching the internet and learning a new # programming language I updated the program, and is it the way I want # it to be. So enjoy it all. Thanx George McMullen for the program. |
|
#6
|
|||
|
|||
|
Link to updated StreamyUPnP version:
http://home.tiscali.nl/ottie/StreamyUPnP.pl.txt Attachment of previous post didn't worked. |
|
#7
|
|||
|
|||
|
Awesome! Thanks for giving back. I'm going to replace my version with your version so there is no confusion. Also, thanks for all the comments and reformatting. It will certainly help anybody else who wants to read the code.
Quick question: It looks like you pass the index and numelems through to the UPnP server. Have you found any conflicts between that and the sorting? For example, if you have an unsorted list of artists 1000 long, and only get items 33-64 and then sort, will it seem confusing when the whole list is displayed? Or are you confident that the responses you get from the UPnP server are already sorted properly? Finally, I'm going to add that the script has been tested with TVersity. I'm really glad you've found the program useful and have improved upon it. Thanks! - George |
|
#8
|
|||
|
|||
|
The items returned from the upnp server are sorted but became unsorted by the hash of perl.
Found that there is a problem with the sort mechanisme for example with artists started with "the" like "the doors" this is correctly sorted by the upnp server but if you sort the keys of the hash table then its not correct, example: upnp media server sorted data: <font color="red">do</font>g eat dog the <font color="red">do</font>ors <font color="red">du</font>ran duran data after sorting the keys of the hash: <font color="red">do</font>g eat dog <font color="red">du</font>ran duran <font color="red">th</font>he doors Should find a solution for this. With TVersity it is also possible to listen to internet radio, because TVersity transcode the media stream to an mp3 stream. |
|
#9
|
|||
|
|||
|
Updated the StreamyUPnP application again and fixed al the sorting problems.
Changes: # Updated the parsing of the XML reply of the UPnP media server, the reply is # parsed in a way it is possible to loop through the data the way it occured # in the XML reply. So it is no longer necessary to sort the keys of the # hashes etc. etc. # # After this update the media is displayed on the mc-i250/i200 device the same # way as it should be displayed on an UPnP compatible media renderer. # # With TVersity as media server it is also possible to listen to internet # radio streams, if the stream is not in the correct format the TVersity # media server will transcode the stream. # # If you want more information you can find me on the streamium cafe forum # (www.streamiumcafe.com) as user Ottie. Link: StreamyUPnP.pl.txt |
|
#10
|
|||
|
|||
|
Awesome man! You've totally rocked on this and given it a new life. Thanks!
Dave Witt's StreamiumD script works with multiple Streamiums and could be a good base for improving the overall communications. I had looked at it a while back, but got too busy to begin converting over the program (as with so many projects). Also, it is significantly more complex as it can run as a daemon and has its own HTTP server. If you want to take a look, it is located here. http://www.witt.tv/streamiumd/streamiumd Thanks again! - George |
| Thread Tools | |
| Display Modes | |
|
|
Similar Threads
|
||||
| Thread | Thread Starter | Forum | Replies | Last Post |
| UPNP for MC-i200 | blaess | MC-i250 - MC-i200 - SL50i Music Systems | 0 | 01-01-2008 12:59 PM |
| MC-i200 / MC-i250 any chance to get UPNP | blaess | MC-i250 - MC-i200 - SL50i Music Systems | 0 | 07-30-2007 05:38 PM |
| HTTP proxy server by address? | ItsMe | SL300i - SL400i - MX6000i - Streamium TV A/V Systems | 1 | 04-14-2005 04:42 PM |
| mc-i200 bug | joe12 | MC-i250 - MC-i200 - SL50i Music Systems | 4 | 09-23-2004 07:09 AM |