--- bin/prepare_fwupgrade
+++ bin/prepare_fwupgrade
@@ -42,7 +42,7 @@
 voipd -s
 avmike -s
 killall printserv
-/sbin/igdd -s
+[ -x /sbin/igdd ] && /sbin/igdd -s
 usermand -s
 if [ "$1" = "start_from_internet" ] ; then
 # we will download the update image from the internet so
@@ -107,6 +107,7 @@
 killall avmike
 killall dsld
 killall websrv
+[ -x /etc/init.d/rc.websrv ] && /etc/init.d/rc.websrv stop 2> /dev/null
 killall wpa_authenticator
 killall wstart
 /sbin/multid -s
@@ -120,6 +121,7 @@
 killall -9 dsld
 killall -9 thttpd
 killall -9 websrv
+[ -x /etc/init.d/rc.websrv ] && /etc/init.d/rc.websrv kill 2> /dev/null
 killall -9 wpa_authenticator
 killall -9 wstart
 killall -9 multid
--- etc/init.d/rc.net
+++ etc/init.d/rc.net
@@ -46,8 +46,14 @@
    WLAN_TEST=0
 fi
 
+# Do we have a websrv or was ist stripped from the firmware?
+_websrv=$(basename $(which /sbin/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)
+
 igddstart()
 {
+   [ "$_igdd" ] || return;
    if [ "`pidof igdd`" = "" ] ; then
       igdd $VERBOSEPARAM
       sleep 1
@@ -212,14 +218,15 @@
 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
    DAEMONS=
    for i in $AVMDAEMONS ; do
     eval $i -s
    done
+   [ "$_websrv" ] || /etc/init.d/rc.websrv stop
    sleep 3
    for i in $DAEMONS $AVMDAEMONS ; do
      killall -15 $i
@@ -269,9 +276,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
@@ -331,9 +344,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
