IP Camera, how to detect it on the network?

Lasse V. Karlsen picture Lasse V. Karlsen · Feb 6, 2012 · Viewed 20.3k times · Source

I am creating a program to talk to a IP Camera, of this model:

CVUL-I125

This has a simple web interface and I've successfully talked to it in order to control it, and grab video and snapshots from it.

However, I can't find any good documentation on how to detect that this camera is on the network, nor which particular IP address it has.

So far the only tool I have that finds it is the bundled windows software.

I'm assuming (hoping!) that there is a better way than just iterating over all IP addresses in range and seeing if there's something that looks like the camera interface there.

Does anyone know how to do this?

Is there a known API for this sort of thing?

Note that since it is an IP camera, it doesn't connect directly to my computer, and thus there is nothing installed locally I can talk to.

Here are some more details:

  • The camera and the software I'm making will be sold, which means I cannot rely on any particular type of setup at the clients place, except for working DHCP
  • The camera has no API documentation that I can find, if anyone has stronger google-fu than me on that score, please enlighten me
  • The camera has DHCP support, so it does in fact connect to the network successfully, the question is how I can reliably find it afterwards
  • I do not know if it has a hostname, the documentation says nothing and my own DHCP server lists only the MAC address for it

Answer

Yahia picture Yahia · Feb 6, 2012

According to the link you provided this camera is capable of UPnP.

UPnP is a protocol which has several methods for device discovery/search:

Your code must multicast UDP packets as search requests. Your UPnP devices will answer (depending on configuration) with UPnP Search Responses which are UDP unicast packets.

UPnP Search Responses contains a HTTP URL to allow retrieval of an XML description of the device. The host in the HTTP URL usually is the devices IP/hostname.

Have a look at the UPnP spec.

You don't say which OS/language you are using - so just a small list of APIs and libraries: