Missing Sync – Bluetooth troubles

About a week ago, I got myself a new toy running Windows Mobile 2003. Since Microsoft decided the current standards in PIM synchronisation weren’t good enough for them, and came up with the ActiveSync protocol stack which, of course, is only available for Microsoft Windows, I had to go out and buy a software product to get this done on my Mac. I chose Markspace’s Missing Sync.
I had a lot of trouble getting bluetooth synchronisation to work. I paired my phone with my Mac, and hit “connect via Bluetooth” in the PDA’s ActiveSync utility, but then it would just say “Opening Port” and hang there forever. On my Mac, I could see the device get connected, but that was just about it. Catting and echoing to the device (/dev/cu.Bluetooth-PDA-Sync or /dev/tty.Bluetooth-PDA-Sync by default) gave me all sorts of unexpected results, but it certainly made clear the Bluetooth Serial connection was working as it should, and the problem was with Missing Sync not being able to open the serial device.
Luckily, one of the great things about paying for your software, is being eligible to technical support, which is exactly what I did: mail them! Thanks to Pete from Markspace, I now have working bluetooth synchronisation with my PocketPC, and I’m going to tell you exactly how I did it.
Add a Bluetooth Bond on your PDA
First of all, make sure you have paired your PDA or phone with your mac. In my experience, it is a good idea to have your phone initiate the pairing (or “bonding” as Microsoft calls it), not the Mac. To do this, go to the “settings” panel on your PDA, and select the “Connections” tab, which will contain an item named ” Bluetooth”. This Bluetooth utility will allow you to turn on Bluetooth (which is proably a good idea, if you are planning to use it), and search for new devices. To do this, click “New…” in the “Devices” tab, and select your Mac from the list of devices it shows after scanning. Be sure to answer “yes” to any questions about serial ports. Of course you should have Bluetooth enabled and set to Discoverable on your Mac, in order for this to work.
I like testing the Bluetooth connection by sending so called OBEX push transfers, since they don’t require Active Sync, Missing Sync or any other third party program to work on either the phone or the Mac. Microsoft calls this “beaming” a file over Bluetooth, and you can do it from any file context menu in the “file explorer” (tap and hold to have it pop up). If this works, the Bluetooth connection is OK, and you should be able to move on to the next part: getting Active Sync to work.
This should be really easy, but in my case it was not. As I said, opening ActiveSync and clicking “connect via Bluetooth” just left me with a stranded sync, so that didn’t get me anywhere. Apparently, Bluetooth synchronisation in Missing Sync 2.0 is a bit broken, and they fixed a lot of the bugs in their latest internal builds, which are not available for the public yet. If you experience these problems, don’t spend hours and hours trying to get it to work without first mailing Markspace’s support requesting a beta!Active Sync after it\'s connected successfully. Not to a Windows PC as it says though ;)
Next thing you want to do, is turn off any Bluetooth serial ports that can (and will) confuse Missing Sync. Go to the Mac OS X Bluetooth System Preferences window, and make sure “Bluetotooth-PDA-sync” is the only Bluetooth Serial port, and it is set to RS-232. To be sure, you can temporarily disable the other two services as well. In my experience, it is a good idea to reboot after doing this, to ensure there is no stuck process still locking your serial device, causing all kinds of trouble.
After rebooting, open Missing Sync, and turn on its log window from the Window->log menu. Make sure you enable the “Show more details in log” option in its preferences window, since it allows to spot problems a lot easier. Open a Bluetooth Preferences window as well, and look at the “Devices” tab.
Mac OS X Bluetooth Ports Dialog
With all set, open ActiveSync on your PDA, and click the “tools->Connect via bluetooth” option. You should see your PDA get connected in the Mac OS X Bluetooth window, as the device name gets bold. If all is well, you should now begin to see Missing Sync get connected to your phone. A successfull log looks somewhat like this:

8/5/05 23:14:07  Monitor:  Starting Monitor 2.0.1b1 (98) on Mac OS X 10.4.2
8/5/05 23:14:08  Monitor:  bt: Starting
8/5/05 23:14:08  Monitor:  bt: BSD path: /dev/cu.Bluetooth-PDA-Sync
8/5/05 23:14:08  Monitor:  bt: MyOpenSerialPort succeeded :9
8/5/05 23:14:09  Monitor:  Timer called to setup asyncdProxy
8/5/05 23:14:09  Monitor:  We have a root asyncdProxy
8/5/05 23:14:09  Monitor:  ascynd server is running
8/5/05 23:14:09  Monitor:  Communicating with ascynd
8/5/05 23:14:09  Monitor:  Serving Monitor for UI
8/5/05 23:14:09  Monitor:  Serving Monitor
8/5/05 23:14:11  Monitor:  USBToTTY starting
8/5/05 23:14:48  MSUI:  Found plugin: /Library/Application Support/...
8/5/05 23:14:48  MSUI:  Found plugin: /Library/Application Support/...
8/5/05 23:14:48  MSUI:  Found plugin: /Library/Application Support/...
8/5/05 23:14:48  MSUI:  Found plugin: /Library/Application Support/...
8/5/05 23:14:48  MSUI:  setMonCallback
8/5/05 23:15:36  Monitor:  bt: data: CLIENT
8/5/05 23:15:36  Monitor:  Connection status from 0 to 150
8/5/05 23:15:36  Monitor:  bt: Device initialized successfully.
8/5/05 23:15:36  Monitor:  bt: About to make connection
8/5/05 23:15:36  Monitor:  Connection status from 150 to 175
8/5/05 23:15:36  Monitor:  bt: forked pppd with pid: 231
8/5/05 23:15:36  Monitor:  bt: activate check for sharing
8/5/05 23:15:37  Monitor:  Firewall setup: 5
8/5/05 23:15:37  Monitor:  Connection status from 175 to 200
8/5/05 23:15:37  Monitor:  bt: Thread creation succeeded
8/5/05 23:15:37  Monitor:  bt: Thread creation succeeded
8/5/05 23:15:41  Monitor:  Connection status from 200 to 300
8/5/05 23:15:46  Monitor:  PPP connection expiration in 10 seconds
8/5/05 23:15:46  Monitor:  PPP connecton from 192.168.206.206: enabled
8/5/05 23:15:46  Monitor:  Connection status from 300 to 400
8/5/05 23:15:46  Listener:  Socket connecting
8/5/05 23:15:46  Monitor:  forgetDevice  rraServer:0
8/5/05 23:15:46  Monitor:  setAsyncCallback
8/5/05 23:15:46  Listener:  asyncdserver setConnectedMonitor
8/5/05 23:15:46  Listener:  Socket successfully connected from 192.168.206.206 1025.
8/5/05 23:15:46  Listener:  Received challenge
8/5/05 23:15:46  Monitor:  needPassword
8/5/05 23:15:46  MSUI:  Found password in keychain
8/5/05 23:15:46  Listener:  reading header
8/5/05 23:15:46  Listener:  reading deviceName
8/5/05 23:15:46  Listener:  reading deviceClass
8/5/05 23:15:46  Listener:  reading deviceHardware
8/5/05 23:15:46  Listener:  waiting for device to provide password
8/5/05 23:15:51  Listener:  Password was correct!
8/5/05 23:15:52  Listener:  Device Connecting: name "dawuss" class "PocketPC" hw "PM10A"
8/5/05 23:15:52  Listener:  owner "Michel Jansen" ip "192.168.206.206"
8/5/05 23:15:52  Monitor:  Connection status from 400 to 500
8/5/05 23:15:52  MSUI:  deviceName: dawuss device: PM10A ipAddress 192.168.206.206 vid:0x0000 pid:0x0000
8/5/05 23:15:52  Listener:  Connection state 0...1
8/5/05 23:15:52  Listener:  Connection state 1...2
8/5/05 23:15:52  Listener:  Connection state 2...3
8/5/05 23:15:55  Listener:  Connection state 3...4
8/5/05 23:15:59  Listener:  Connection state 4...5
8/5/05 23:16:03  Listener:  Connection state 5...6
8/5/05 23:16:03  MSUI:  connect
8/5/05 23:16:04  MSUI:  DLL found on device, testing it
8/5/05 23:16:04  MSUI:  Found version 1.28 on device
8/5/05 23:16:06  MSUI:  Send ConnectedMessageToPlugins
8/5/05 23:16:07  Monitor:  Waiting for connections on port 5678.
8/5/05 23:16:07  MSUI:  setting title
8/5/05 23:16:07  MSUI:  Address Book: initialize
8/5/05 23:16:07  MSUI:  iCal: initialize
8/5/05 23:16:07  MSUI:  TimeSync: initialize
8/5/05 23:16:08  MSUI:  asking for card info
8/5/05 23:16:09  MSUI:  CardInfo: {
    cards = (
        {free = 513015808; name = "\Storage Card"; total = 24; }, 
        {free = 7967744; name = "\Storage"; total = 24; }
    ); 
    name = dawuss; 
}
8/5/05 23:16:09  MSUI:  About to launch webdav
8/5/05 23:16:09  webdav:  listening on 49176
8/5/05 23:16:10  MSUI:  TimeSync: setStatusString string=idle
8/5/05 23:16:11  MSUI:  newURL = http://localhost:49176/dawuss
8/5/05 23:16:11  MSUI:  escapedString = http://localhost:49176/dawuss
8/5/05 23:16:14  MSUI:  Volume mounted
8/5/05 23:16:14  MSUI:  End of mount

If nothing happens in Missing Syncs log window at all, it probably can’t open your bluetooth serial device. Try opening it with a Terminal application such as ZTerm or minicom, or try catting your Bluetooth serial device. In ZTerm it will be called “Bluetooth-PDA-Sync”, and its device will look something like /dev/cu.Bluetooth-PDA-Sync. If that works, the port was probably blocked, and a reboot might help. In any case, it’s a good idea to contact Markspace about this, because it just shouldn’t happen.

If you forgot to delete any stray Bluetooth serial devices, you might see something like this:

8/5/05 22:43:41  Monitor:  Starting Monitor 2.0.1b1 (98) on Mac OS X 10.4.2
8/5/05 22:43:42  Monitor:  bt: Starting
8/5/05 22:43:43  Monitor:  bt: BSD path: /dev/cu.Bluetooth-Serial
8/5/05 22:43:43  Monitor:  bt: Error opening serial port /dev/cu.Bluetooth-Serial - Resource busy(16).
8/5/05 22:43:43  Monitor:  Timer called to setup asyncdProxy
8/5/05 22:43:43  Monitor:  We have a root asyncdProxy
8/5/05 22:43:43  Monitor:  ascynd server is running
8/5/05 22:43:43  Monitor:  Communicating with ascynd
8/5/05 22:43:43  Monitor:  Serving Monitor for UI
8/5/05 22:43:43  Monitor:  Serving Monitor
8/5/05 22:43:44  Monitor:  bt: BSD path: /dev/cu.Bluetooth-Serial
8/5/05 22:43:44  Monitor:  bt: Error opening serial port /dev/cu.Bluetooth-Serial - Resource busy(16).
8/5/05 22:43:45  Monitor:  bt: BSD path: /dev/cu.Bluetooth-Serial
8/5/05 22:43:45  Monitor:  bt: Error opening serial port /dev/cu.Bluetooth-Serial - Resource busy(16).
8/5/05 22:43:45  Monitor:  USBToTTY starting
8/5/05 22:43:46  Monitor:  bt: BSD path: /dev/cu.Bluetooth-Serial
8/5/05 22:43:46  Monitor:  bt: Error opening serial port /dev/cu.Bluetooth-Serial - Resource busy(16).

Delete the device from the Bluetooth Sharing tab, and try again.

If you get repeating “too many missed pings” errors like this:

8/6/05 00:25:44  Monitor:  PPP connection expiration in 9 seconds
8/6/05 00:25:44  Monitor:  PPP connecton from 192.168.206.206: enabled
8/6/05 00:25:44  Monitor:  Connection status from 300 to 400
8/6/05 00:25:44  Listener:  Socket connecting
8/6/05 00:25:44  Monitor:  forgetDevice  rraServer:0
8/6/05 00:25:44  Monitor:  setAsyncCallback
8/6/05 00:25:44  Listener:  asyncdserver setConnectedMonitor
8/6/05 00:25:44  Listener:  Socket successfully connected from 192.168.206.206 1039.
8/6/05 00:25:44  Listener:  missed too many pings
8/6/05 00:25:44  Listener:  In cancel
8/6/05 00:25:44  Monitor:  forgetDevice  rraServer:0
8/6/05 00:25:44  MSUI:  disconnect
8/6/05 00:25:44  Listener:  asyncdserver setConnectedMonitor clear
8/6/05 00:25:45  Monitor:  asyncd sent allowConnections: 1
8/6/05 00:25:45  Listener:  Reset
8/6/05 00:25:45  Monitor:  bt: finished relaying 0
8/6/05 00:25:45  Monitor:  Reseting firewall: 5 (0x00000005)
8/6/05 00:25:45  Monitor:  bt: deactivate check for sharing
8/6/05 00:25:45  Monitor:  bt: killing pppd: pid 426
8/6/05 00:25:48  Monitor:  bt: MyCloseSerialPort succeeded :9
8/6/05 00:25:48  Monitor:  bt: BSD path: /dev/cu.Bluetooth-PDA-Sync
8/6/05 00:25:49  Listener:  missed too many pings
8/6/05 00:25:49  Listener:  In cancel
8/6/05 00:25:49  Listener:  asyncdserver setConnectedMonitor clear

the daemon Missing Sync uses to connect to the PDA might be broken. To restart it, issue the following commands from the command line (using Terminal, iTerm or some other app).

ps -aux | grep Sync

Will print a list of processes used for synchronisation. Kill them all by entering

kill X

where X is replaced by the app’s process ID (the first number from the left).
Upon relaunching Missing Sync, it will restart the nessecary daemons automatically. Wait a few minutes before doing so though: any broken processes still keeping the serial device occupied will time out and stop causing problems.

If none of this works: contact Markspace’s tech support. Maybe they have found any new solutions I haven’t come up with yet. Please let me know if you find one yourself!

8 Responses to “Missing Sync – Bluetooth troubles”

  1. Pingback: Chris Valentine

  2. Pingback: Pieter

  3. Pingback: andy

  4. Pingback: Michel’s Exhaust » P1i

  5. Pingback: Someone

  6. Pingback: camo

  7. Pingback: camo

  8. Pingback: Kevin Faulk Jersey