Premise Premise, UDP, SSDP, and WTF???

Motorola Premise

123

Senior Member
One thing that has always bugged about Premise Builder is that it fails to list all available Premise Servers. All it does is show "localhost". The problem was mentioned in this thread.

I used a network sniffer to observe Builder's communications and learned it employs the SSDP protocol to request and discover available Premise Servers. SSDP talks UDP via port 3976. I also learned that you need to open this port on each PC equipped with Premise Server. I added "prkernel.exe" (that's Premise Server) as an Exception to Windows Firewall and that did the trick on one PC. On another PC, this techique was insufficient and I had to explicitly open port 3976 to UDP traffic.

Did this fix Builder? No. When Builder starts it issues an "M-SEARCH" command and all Premise Servers dutifully reply, yet Builder does nothing with their responses. On the other hand, if you restart a Premise Server, Builder will see and display the Server's name ... but this only happens when a Server is restarted so it's not very useful.

Why all of this interest in Premise's Server Discovery mechanism? Because it is very useful when writing an application or driver based on MiniBroker. In MiniBroker, there's a method called "SubscribeToDiscovery" and it informs you of a Premise Server's status:
  1. If it is present.
  2. When it starts.
  3. When it stops.
If you plan to write an application/driver that resides on a remote PC (i.e. not on the Premise Server PC), the Server Discovery mechanism will help you manage the connection. The moment you shutdown/startup the Premise Server, the remote driver will be informed and can take the appropriate action. However, the driver should also periodically poll the Premise Server to confirm the network connection is intact. Naturally, if you install the (MiniBroker-based) driver on the Premise Server PC, polling is unnecessary and the Server Discovery technique is sufficient.
 
I think I posted something about this in the Yahoo group or the old premise forum. As I recall, the issue is with how UPnP is implemented within Premise. For me the problem arose when I moved to FIOS and started using a Verizon-provided DLINK router. The sniffer traces I took showed the router replying to a non-standard UPnP broadcast which effectively told Builder to ignore responses from SYS servers. As a test, turn off your router and see if SYS servers show up in Builder. That works for me every time. Unfortunately, I couldn't find a fix, so I'm stuck with statically adding SYS servers to Builder.
 
Thanks, John. I recall your post and just tried your suggestion.

My tests were carried out with port 3976 open to UDP traffic on all Premise Servers.

I disconnected two PCs, equipped with Premise Servers, from my Netgear router and connected them to a 4-port D-Link switch. I confirmed connectivity by pinging each PC. Unfortunately, Builder still does not list the remote Premise Server (only "localhost"). I confirmed that Builder can connect to the remote server via "Add Site". In my case, the router isn't the culprit.

As mentioned in my previous post, if the remote Premise Server is restarted while Builder has its "Connect to Premise Home Control Server" form open, the remote Server's name will be displayed in Builder's list. This suggests two things:
  1. Builder knows how to handle a Server's initial "Hello I'm alive!" broadcast.
  2. Builder does not handle replies to its "Anyone out there?" query.


FWIW
For newcomers, Ctrl+Shift+C opens the "Connect to Premise Hme COntrol Server" form. Handy to know if you want to switch from one Premise Server instance to another without restarting Builder.
 
Back
Top