--- etc/init.d/rc.net
+++ etc/init.d/rc.net
@@ -49,9 +49,27 @@
    WLAN_TEST=0
 fi
 
+# Do we have a websrv or was ist stripped from the firmware?
+_websrv=$(basename $(which websrv) 2> /dev/null)
+# Do we have a UPnP server (igdd) or was ist stripped from the firmware?
+_igdd=$(basename $(which igdd) 2> /dev/null)
+# Does a multid option to start without UPnP device (-u) exist?
+_multid_upnp=$(/sbin/multid -? 2>&1 | grep upnp)
+# Does a dsld option to start without igd (-g) exist?
+_dsld_upnp=$(/sbin/dsld -? 2>&1 | grep igd)
+# Set multid "no UPnP" option, if
+#   a) it has the parameter at all AND
+#   b) igdd binary does *not* exist
+[ "$_multid_upnp" ] && [ ! "$_igdd" ] && MULTIDPARAM="-u"
+# Set dsld "no igd" option, if
+#   a) it has the parameter at all AND
+#   b) igdd binary does *not* exist
+[ "$_dsld_upnp" ] && [ ! "$_igdd" ] && DSLDDPARAM="-g"
+
 
 igddstart()
 {
+	 [ "$_igdd" ] || return;
    if [ "`pidof igdd`" = "" ] ; then
       igdd $VERBOSEPARAM
       sleep 1
@@ -208,15 +226,16 @@
 stopall()
 {
    if [ "$CONFIG_DSL" ] ; then
-      AVMDAEMONS="avmike dsld igdd websrv multid"
+      AVMDAEMONS="avmike dsld $_igdd $_websrv multid"
    else
-      AVMDAEMONS="igdd websrv multid"
+      AVMDAEMONS="$_igdd $_websrv multid"
    fi
    termavmwait 999 $AVMDAEMONS
 
    if [ "$CONFIG_WLAN" = y ] ; then
     wlanstop
    fi
+   [ "$_websrv" ] || /etc/init.d/rc.websrv stop
 }
 
 startall()
@@ -254,9 +273,15 @@
      ctlmgr $NICEPARAM $VERBOSEPARAM
    fi
 
+   if [ "$_websrv" ]; then
    if [ "`pidof websrv`" = "" ] ; then
      websrv $NICEPARAM
    fi
+   else
+     if [ "$(/etc/init.d/rc.websrv status)" == "stopped" ]; then
+       /etc/init.d/rc.websrv start
+     fi
+   fi
    fi 
 
    igddstart
@@ -265,9 +290,9 @@
    if [ "$CONFIG_DSL" ] ; then
      if [ "`pidof dsld`" = "" ] ; then
        if [ "$CONFIG_RAMSIZE" = 8 ] ; then
-         dsld -i -n $NICEPARAM -r 600 $VERBOSEPARAM
+         dsld -i -n $NICEPARAM -r 600 $VERBOSEPARAM $DSLDDPARAM
        else
-         dsld -i -n $NICEPARAM $VERBOSEPARAM
+         dsld -i -n $NICEPARAM $VERBOSEPARAM $DSLDDPARAM
        fi
      fi
    fi
@@ -313,9 +338,9 @@
       if [ "$1" ] ; then
          AVMDAEMONS="$*"
       elif [ "$CONFIG_DSL" ] ; then
-         AVMDAEMONS="avmike dsld igdd multid"
+         AVMDAEMONS="avmike dsld $_igdd multid"
       else
-         AVMDAEMONS="igdd multid"
+         AVMDAEMONS="$_igdd multid"
       fi
 
       # stop the daemon with -s
