Contents |
If your network doesn't support Bonjour or your computer and phone are on different subnets (all this described here) then syncing will not work. Here's a kludge to get you going. Improvements would be very welcome, but it does work.
You'll need Bonjour Browser (discussed elsewhere) and either Network Beacon or the mDNSResponder source code from Apple. You also need nmap from fink or macports.

If you grab the mDNSResponder source and compile it (go into the mDNSPosix directory and do a "make os=panther") you'll get a utility called mDNSResponderProxy which works similarly to Network Beacon (all compiled tools are in build/prods). Put this tool somewhere in your path (I used /usr/local/bin) and then you can use this script:
#!/bin/sh
IP=<iphone ip address>
THINGSID=<your things id string>
PORT=`nmap -PN -p 55000-60000 $IP | grep "open" | awk -F/ '{print $1}'`
mDNSProxyResponderPosix $IP "" $THINGSID _cciphonethings._tcp $PORT
Save it as something like sync.sh, open Things on your desktop, open Things on your phone, run ./sync.sh, and wait a little while. It takes right around 45 seconds for me.
I think there's a way to query mDNS with a unicast address, which would let you determine the port without the nmap battering. Anyone who knows how to do this, please update this.