ZeroConf for Arduino

I am trying to implement zeroconf on my arduino, using the RN131 (wifly) module, but run into a lot of conceptual documents and not one really explaining me how the protocol works.

I also found the library for ethernet shield, but it is written completely around the ethernet module, so I do not very easily get the required information out.

What do i need? Basically a sequence diagram, and the structure of packets that need to be send. Is there a way to get this? I really can only find long documents that explain just little parts of the concept.

I have the impression now that it works as following:

  1. arduino announces service to multicast address
  2. client can ask for detailed information
  3. aruindo sends him detailed information.

Anyone who can guide me into the right direction?

I started to look into the same thing myself a few weeks ago...

The WiFly already sends out a UDP broadcast with a configurable device ID and that turned out to be sufficient for my needs.

Wow! This is not a small undertaking. Good luck. It will be cool to have it.

You can start with the RFC for IPv4 link local: http://tools.ietf.org/html/rfc3927 . You can also check out the avahi project, which is an open source implementation of zeroconf.

I just Googled for 'zeroconf arduino' and came up with this link:
http://www.arduino.cc/cgi-bin/yabb2/YaBB.pl?num=1262819058

Does that help?

David

dpharris:
I just Googled for 'zeroconf arduino' and came up with this link:
http://www.arduino.cc/cgi-bin/yabb2/YaBB.pl?num=1262819058

Unfortunately this implementation is written around the ethernet shield. I looked into it a couple of times, but have to completely rewrite to be compatible with my needs i think...

Regarding UDP Broadcast... Could work, but it appears that my iPhone (the device that should receive the broadcast) can not listen to such, or at least the app can´t.

I’m also looking at changing the ethernet shield bonjour library. Let me know if you have any luck.

So far, I see the code is hanging up at _startMDNSSession() in EthernetBonjour.cpp because if (ECSockClosed == ethernet_compat_read_SnSr(i)) never is true, but that function calls a lot more functions so I have to dive deeper.

On a higher level, it seems that an internet connection via ethernet and wifi should be very similar.