[avahi] Strange MDNS response from Axis cameras

Iván Sánchez Ortega i.sanchez at mirame.net
Tue Feb 7 04:13:38 PST 2006


Hi there,

As this is my first message to this mailing list, I might as well introduce 
myself briefly. I'm Iván Sánchez, from Spain. Linux junkie, PHP programmer, 
Computer Science student. Quite some experience with webservers and IP 
networking, near-zero experience with Avahi and MDNS.


The fact is, I'm currently working with some Axis IP cameras [1]. Wonderful 
gadgets, they've got a 100Mhz µprocessor running Linux, featuring a webserver 
and some uPnP/zeroconf support. My goal is to detect a large number of these 
cameras in a large network, by using avahi.
[1] http://www.axis.com/products/video/camera/


However, I'm running into some problems. One of the cameras is returning a 
"strange" MDNS response, pointing to a non-existant IP address. I managed to 
capture that response with ethereal (my workstation is 01:00:5e:xx:xx:xx, the 
camera is 00:40:8c:xx:xx:xx at 192.168.2.81):



Frame 339 (354 bytes on wire, 354 bytes captured)
Ethernet II, Src: 192.168.2.81 (00:40:8c:xx:xx:xx), Dst: 01:00:5e:xx:xx:xx 
(01:00:5e:xx:xx:xx)
Internet Protocol, Src: axis-00408cxxxxxx.local (192.168.2.81), Dst: 
224.0.0.251 (224.0.0.251)
User Datagram Protocol, Src Port: 5353 (5353), Dst Port: 5353 (5353)
Domain Name System (response)
    Transaction ID: 0x0000
    Flags: 0x8400 (Standard query response, No error)
    Questions: 0
    Answer RRs: 8
    Authority RRs: 0
    Additional RRs: 0
    Answers
        axis-00408cxxxxxx.local: type A, class IN, addr 192.168.2.81
        axis-00408cxxxxxx.local: type A, class FLUSH, addr 169.254.154.134
        AXIS 213 - 00408CXXXXXX._http._tcp.local: type SRV, class FLUSH, 
priority 0, weight 0, port 80, target axis-00408cxxxxxx.local
        AXIS 213 - 00408CXXXXXX._http._tcp.local: type TXT, class FLUSH
        AXIS 213 - 00408CXXXXXX._axis-video._tcp.local: type SRV, class FLUSH, 
priority 0, weight 0, port 80, target axis-00408cxxxxxx.local
        AXIS 213 - 00408CXXXXXX._axis-video._tcp.local: type TXT, class FLUSH
        AXIS 213 - 00408CXXXXXX._rtsp._tcp.local: type SRV, class FLUSH, 
priority 0, weight 0, port 554, target axis-00408cxxxxxx.local
        AXIS 213 - 00408CXXXXXX._rtsp._tcp.local: type TXT, class FLUSH


This translates to:

ivan at silverspark:~$ avahi-browse -acr
[...snip...]
= eth0 IPv4 AXIS 213 - 00408CXXXXXX               Web Site             local
   hostname = [axis-00408cxxxxxx.local]
   address = [169.254.154.134]
   port = [80]
   txt = []



So, it seems that the camera is returning two addresses: the "real" address 
(192.168.2.81), and an ad-hoc zeroconf address (169.254.154.134). Avahi gets 
the non-existant, non-working ad-hoc address, while windoze's uPnP gets the 
"real", good address. I haven't tried with Apple's Zeroconf.


So, questions:

Avahi doesn't get the correct IP address from this camera. Who is to blame for 
this: Axis' implementation of MDNS responses, or Avahi's bad interpretation 
of it?

The cameras publish the _axis-video and _rtsp services. However, applications 
(such as the zeroconf:/ kioslave aren't aware of these services and ignore 
them. What would be the way to do this?



Thanks for reading all this,
-- 
----------------------------------
Iván Sánchez Ortega <i.sanchez at mirame.net> <ivansanchez at escomposlinux.org>

"I loathed every day and regret every day I spent in school.  I like to be 
taught to read and write and add and then be left alone."
 -    Woody Allen


More information about the avahi mailing list