Recently I was working on an issue where Tanjays (Polycom CX700 or LG-Nortel IP8540) would not update their firmware. There were a variety of issues but there was one in particular that I noticed some open questions about on the forums so I thought I'd share the solution.
In this case the company's Tanjays all resided outside the organization because the workforce is mobile. All the ports and NATs seemed to be fine and indeed we could see a connection in the IIS logs to the Web Components server. However, the IIS log revealed the following:
2008-10-05 21:45:10 W3SVC1 10.1.1.13 POST /RequestHandler/ucdevice.upx - 80 - <user's external IP> Microsoft+UCPhone+Device 500 0 0
The 500 error code is the relevant item here. When the RequestHandler receives a connection from the Tanjay it then connects to the WSS site that holds the firmware using the internal FQDN that was specified during the configuration of the UC Update Service. Originally the configuration was done with different internal and external FQDNs but when an external certificate was purchased for the WSS site the Alternate Access Mappings, which basically tell WSS which URLs to use, were configured only for the external FQDN since the thought was that only external users would be using the service. However, since the RequestHandler needs to access WSS with the internal FQDN the connections were failing.
The fix was pretty simple - always make sure that WSS is accessible by both the internal and external names that you specify in the configuration. I've attached a vbs script that you can run on your OCS web components server to view the URLs that are configured for the update service. There may be another place to see this info but it was easier to just use WMI to show these values rather than figure out the lcscmd syntax if in fact that's even possible. A quick review of the validation output indicated that these values are not listed there. Just rename the file from .txt to .vbs and run it with "cscript updsrvurls.vbs" from a command line and it will list the URLs associated with the update server configuration on that OCS server. You can also run it remotely by changing the strComputer = "." line to strComputer = "<yourocsfeinternalfqdn>".