Yesterday I replaced my old Belkin router, which had been randomly blocking Safari from looking at websites where lots of small images loaded at once.
I bought a shiny new ZyXEL P‑660HN. It’s a lovely little ADSL wireless router, it got a string of 5‑star reviews on eBuyer, and everything worked well out of the box. I only had one problem — well, apart from not being able to spell “ZyXEL” — which I’m documenting here just in case anyone else is having it and desperately looking for help on the internet.
I couldn’t get the Apple Remote App for iPhone to work with it. Not reliably, anyway. It would occasionally work, after rebooting everything, but it wouldn’t stay working. Crucially, I also couldn’t get the AirTunes Remote Speakers (hanging off my Airport Express) to work, either.
After I shuffled around the internet for a bit, I thought it might be something to do with Bonjour, but the ZyXEL didn’t seem to be clamping down with its firewall on the Bonjour ports internally. In fact, I eliminated the firewall completely: turning it off didn’t fix the problem.
Plunging further into the net, I found a couple of places that tangentially mentioned a couple of other apps in the same breath as the Apple Remote, including the 1Password app, which syncs with 1Password over WiFi. I tried that app for the first time with the new router, and what do you know? That didn’t work either.
My big clue came from this blog entry at packetevents.com, which goes into some really geeky detail about what happens when you fire up the Remote App:
When the iPhone remote starts, it began to send a Multicast-DNS packet to 188.8.131.52. This is a multicast which means the devices and computers in the same group will hear this packet.
Multicast. That’s the secret. I remembered seeing a setting for that on the ZyXEL, which I didn’t think was on by default. Sure enough, on the Network > LAN > IP page of the router’s configuration screens, there’s an Advanced Setup button. Click that, and there’s an RIP & Multicast Setup section. Multicast was set to “None” on my system.
I had no idea which of the options to choose — IGMP-v1, 2 or 3 — so I just chose the biggest number, on the grounds that version 3 of things is generally better than version 1 or 2. As soon as I’d chosen that and hit “Apply”, everything started working just fine. 1Password started syncing, my Remote app started working, and I’m listening to music over the AirTunes speakers right now.
Also, as pointed out by andrea in the comments below, you may also need to disable IGMP snooping (Network→Wireless LAN→Advanced on my router) for a reliable connection.
So — got a problem with a ZyXEL router and your iPhone apps? Try enabling multicast!