EMBedded Finder =============== Introduction ------------ I generally like my router to use dhcp, but this means finding it presents a problem. This OpenWrt package adds a daemon which implements a UDP-broadcast based discovery protocol for the router. A one-line change is needed to the udhcpc script (instructions in the tarball). Source files can be found in `svn <http://linux-adm5120.svn.sourceforge.net/viewvc/linux-adm5120/trunk/BR-6104K/OpenWrt/emb-finder/>`_ Copy them into the 'packages' directory and select from the menu ('emb-finder') when running 'make menuconfig' (find it under 'utilities'). Server ------ Embfinder allows a PC to discover the location of embedded devices on the network. A line is required in /etc/services so the daemon can decide which listening port to use:: embfinder 5122/udp # finder service. If the line isn't found, the service uses the default 5122. The client broadcasts a UDP request packet to this port. If the packet is the correct format a response is sent back to the originating port containing the IP address of the device. Client ------ A client is provided in Python - embfinder.py. It simply prints out the IP address returned, or times out in one second if it fails to get a response. udhcpc configuration -------------------- Unfortunately, udhcpc in default configuration does not seem to create a lease file anywhere, so you must create a file for emb-finder to read. You can do this on lease binding/renewal by changing /usr/share/udhcpc/default.script. You can do this by editing trunk/packages/base-files/files/usr/share/udhcpc/default.script then rebuilding the firmware. Add the line as follows:: renew|bound) ifconfig $interface $ip \ netmask ${subnet:-255.255.255.0} \ broadcast ${broadcast:-+} echo $ip > /var/myip.txt # <----- add this line Maybe there is a better way of doing this, but I couldn't figure it out.