Zidowned!
One word: Why?
Today, I opened a paypal account. If you feel generous to help me out buy a 2nd Xbox so I can implement the P2P support I have been talking about, please do so by sending me donations using paypal@plutinosoft.com as the recipient. Thanks a bunch!
In a follow up to my comment, I experimented a bit tonite and indeed I was able to get the xbox to receive broadcast packets. This means that it would be possible for xboxes to find each other’s UPnP Media servers by broadcasting their search requests (and notify) on the broadcast address. This is very exciting. It would be possible to stream from one xbox to another. How sweet would that be? Of course, that means I need to buy a second xbox. Any donations are welcome ;-)
Yes! UPnP auto-discovery in xbmc now works! Per XBMCFanboy suggestion, I looked at the XBMS protocol (for auto-discovery) and realized they were using the 255.255.255.255 address to broadcast their search. I tried with Platinum and it worked! When I send a M-SEARCH request on this address & the UPnP port 1900, EVERY UPnP media servers respond to me! That means you can have more than 1 UPnP server on a host or many hosts and they will all be detected. This is very cool.
Now there’s still a pb I have to work on, since the xbox cannot receive multicast packets, it’s not able to receive the notifications when UPnP servers go away. Although it’s pretty rare, it is possible and the device would still be in the list in xbmc. Kind of a cosmetic detail but I am a complete freak when it comes to the last 5% that makes a good product a perfect one.
I haven’t done that in a long time but I pulled an allnighter today. From 9pm to 9am, working around the clock to fix the last bugs that spiff found. He couldn’t get to see Windows Media Connect. I remembered WMC didn’t seem to respond to M-SEARCH requests. Poking around the internet, I found out that actually it doesn’t respond to M-SEARCH requests issued from the same machine where WMC runs. So the whole Ssdp Proxy solution would work only if it was running on a different machine than WMC. So I was a little worried… But THEN I noticed something very strange. WMC would respond to M-SEARCH requests issued from the same machine when using Intel UPnP Sniffer in unicast mode. Somehow, the UPnPHost service had a bug that could help me!
After a few hours of debugging, I figured out that I was not setting the Host header on my SSDP packets and that UPnPHost was requiring it. After I added it (and it needed to be 239.255.255.250:1900 regardless of the destination), it worked fine. But the most amazing thing about it is that SsdpProxy is NOT required anymore! The xbox can send directly on port 1900 in unicast and wmc will respond to it (as long as it’s the only one listening on that port on the machine of course).
This is very exciting stuff. You don’t even need to set the port in the sources.xml anymore. Actually you don’t even need to add anything. XBMC has got a cool feature that lets you add new Network Locations from within xbmc, including upnp now thanks to spiff. He must have thought I was an idiot cause I couldn’t figure out what he was talking about (root bookmark, add network location, huh?).
Big thanks to spiff also for letting me become an official dev on the xbmc team. I got to meet pike, Donno, DeanPerry (aka C-Quel), jmarshall & Sollie so far. Very nice people. I’ll try to help as much as I can and not f*ck up the repo.
Long live XBMC.
Oh and it looks like the xbmc forums have been updated already about the subject ;-).
Here’s the way to add UPnP to Xbox:
– Download UPnPDirectory.rar and extract in xbmc\FileSystem
– Download libUPnP.rar and extract in docs\libUPnP
– Open libUPnP\libPlatinum.sln and compile both in Debug & Release
– run libUPnP\MakeLibPlatinum.bat (this will copy the proper header files and libs to xbmc\lib\libUPnP
– Download patch and apply to xbmc code
– Download SsdpProxy.exe and run it on your host, if somehow the default port (1901) is in used, you can specify a different port in the command line. (This is Win32 only for now. The linux version is coming soon…)
– Edit the XBMC UserData/Sources.xml and put your host IP in upnp://host/ (If you specified a different port with SsdpProxy, specify it here in upnp://host:port/)
– Run Windows Media Connect on your host
– Compile XBMC, Run & Enjoy
Update: If you have a standalone UPnP Media Server, most likely you won’t need the SsdpProxy. Just specify the ip address of the device in place of the host.