diff --git a/classes/image.bbclass b/classes/image.bbclass
index cbbbbd1..89d2712 100644
--- a/classes/image.bbclass
+++ b/classes/image.bbclass
@@ -104,7 +104,6 @@ LINGUAS_INSTALL = "${@" ".join(map(lambda s: "locale-base-%s" % s, bb.data.getVa
 
 do_rootfs[nostamp] = "1"
 do_rootfs[dirs] = "${TOPDIR}"
-do_rootfs[lockfiles] = "${IMAGE_ROOTFS}.lock"
 do_build[nostamp] = "1"
 do_install[nostamp] = "1"
 
diff --git a/classes/nylon-image.bbclass b/classes/nylon-image.bbclass
index 6d867ea..e973bf7 100644
--- a/classes/nylon-image.bbclass
+++ b/classes/nylon-image.bbclass
@@ -9,11 +9,10 @@ nylon_create_imgz() {
 	
         # copy the kernel (for mips on flash) into tmp  
         FLASH_BIN=${DEPLOY_DIR_IMAGE}/${KERNEL_IMAGE_NAME}.flash.bin  
-        test -f ${FLASH_BIN} && \ 
         cp ${FLASH_BIN} ${DEPLOY_DIR_IMAGE}/tmp/zImage.flash 
  
         # copy rootfs.jffs (or so) into tmp 
-	cp ${DEPLOY_DIR_IMAGE}/${IMAGE_NAME}.rootfs.${type} ${DEPLOY_DIR_IMAGE}/tmp/rootfs.${type}
+	cp ${DEPLOY_DIR_IMAGE}/${IMAGE_NAME}.rootfs.jffs2 ${DEPLOY_DIR_IMAGE}/tmp/rootfs.jffs2
 
 	# make an imgz out of tmp
 	( cd ${DEPLOY_DIR_IMAGE}/tmp; tar cvzf ${DEPLOY_DIR_IMAGE}/${IMAGE_NAME}.imgz * )
diff --git a/classes/nylon-mirrors.bbclass b/classes/nylon-mirrors.bbclass
index 02fddc0..11cc45c 100644
--- a/classes/nylon-mirrors.bbclass
+++ b/classes/nylon-mirrors.bbclass
@@ -1,6 +1,6 @@
 MIRRORS_append () {
-ftp://.*/.*	http://meshcube.org/nylon/stable/sources/
-https?://.*/.*	http://meshcube.org/nylon/stable/sources/
-ftp://.*/.*	http://meshcube.org/nylon/unstable/sources/
-https?://.*/.*	http://meshcube.org/nylon/unstable/sources/
+ftp://.*/.*/	http://download.berlin.freifunk.net/meshcube.org/nylon/stable/sources/
+http://.*/.*/	http://download.berlin.freifunk.net/meshcube.org/nylon/stable/sources/
+ftp://.*/.*/	http://download.berlin.freifunk.net/meshcube.org/nylon/unstable/sources/
+http://.*/.*/	http://download.berlin.freifunk.net/meshcube.org/nylon/unstable/sources/
 }
\ No newline at end of file
diff --git a/conf/bitbake.conf b/conf/bitbake.conf
index f53f7d6..9e026e4 100644
--- a/conf/bitbake.conf
+++ b/conf/bitbake.conf
@@ -329,7 +329,7 @@ STAGING_KERNEL_DIR = "${STAGING_DIR}/${MULTIMACH_TARGET_SYS}/kernel"
 # Specific image creation and rootfs population info.
 ##################################################################
 
-IMAGE_ROOTFS = "${TMPDIR}/rootfs"
+IMAGE_ROOTFS = "${TMPDIR}/rootfs/${PN}"
 IMAGE_BASENAME = "${PN}"
 IMAGE_NAME = "${IMAGE_BASENAME}-${MACHINE}-${DATETIME}"
 IMAGE_LINK_NAME = "${IMAGE_BASENAME}-${MACHINE}"
diff --git a/conf/distro/angstrom-2008.1.conf b/conf/distro/angstrom-2008.1.conf
index 2516312..740ff31 100644
--- a/conf/distro/angstrom-2008.1.conf
+++ b/conf/distro/angstrom-2008.1.conf
@@ -99,9 +99,8 @@ ANGSTROM_GCC_VERSION_xilinx-ml403	?= "4.1.1"
 # Blackfin has its on gcc
 ANGSTROM_GCC_VERSION_bfin			= "4.1.2"
 
-ANGSTROM_GCC_VERSION_armv7a		= "4.3.1" 
-
-ANGSTROM_GCC_VERSION_486sx = "4.3.2"
+ANGSTROM_GCC_VERSION_486sx      = "4.3.3"
+ANGSTROM_GCC_VERSION_armv7a     = "4.3.3" 
 
 # Uncomment this if want need to build an armv7a kernel with CSL toolchain (<2.6.27 don't boot with mainline gcc)
 #KERNEL_CCSUFFIX_armv7a= "-4.2.1+csl-arm-2007q3-53"
@@ -110,10 +109,14 @@ ANGSTROM_GCC_VERSION_486sx = "4.3.2"
 ANGSTROM_GCC_VERSION_avr32		?= "4.2.2"
 
 #Everybody else can just use this: 
-ANGSTROM_GCC_VERSION 			?= "4.2.4"
-PREFERRED_VERSION_binutils	?= "2.18.50.0.7"
-PREFERRED_VERSION_binutils-cross 	?= "2.18.50.0.7"
-PREFERRED_VERSION_binutils-cross-sdk 	?= "2.18.50.0.7"
+ANGSTROM_GCC_VERSION                     ?= "4.2.4"
+
+#2.19.51.0.3
+ANGSTROM_BINUTILS_VERSION                ?= "2.18.50.0.7"
+
+PREFERRED_VERSION_binutils               ?= "${ANGSTROM_BINUTILS_VERSION}"
+PREFERRED_VERSION_binutils-cross         ?= "${ANGSTROM_BINUTILS_VERSION}"
+PREFERRED_VERSION_binutils-cross-sdk     ?= "${ANGSTROM_BINUTILS_VERSION}"
 
 PREFERRED_VERSION_gcc                    ?= "${ANGSTROM_GCC_VERSION}"
 PREFERRED_VERSION_gcc-cross              ?= "${ANGSTROM_GCC_VERSION}"
diff --git a/conf/distro/include/sane-srcdates.inc b/conf/distro/include/sane-srcdates.inc
index 8be99a3..a9185f9 100644
--- a/conf/distro/include/sane-srcdates.inc
+++ b/conf/distro/include/sane-srcdates.inc
@@ -45,7 +45,7 @@ SRCDATE_waimea ?= "20060814"
 SRCDATE_xcompmgr ?= "20060814"
 SRCDATE_xirssi ?= "20060814"
 SRCDATE_xsvg ?= "20060814"
-SRCDATE_yamonenv ?= "20060814"
+SRCDATE_yamonenv ?= "20051022"
 SRCDATE_zaurusd ?= "20060628"
 
 # Freedesktop.org
diff --git a/conf/distro/nylon.conf b/conf/distro/nylon.conf
index 3d1f057..71050b2 100644
--- a/conf/distro/nylon.conf
+++ b/conf/distro/nylon.conf
@@ -1,39 +1,89 @@
+#############################################################################
 #@TYPE: Distribution
 #@NAME: Nylon Linux
 #@DESCRIPTION: Distribution configuration for Nylon Mesh Linux distribution
+#############################################################################
 
-# this distribution is mainly for wireless networking devices and includes
-# packages necessary for wireless LAN access point, routing, encryption and 
-# especially mesh routing applications
-#
-# it is primarily aimed at the 4G Systems MeshCube (mtx-1) and other 
-# mipsel based platforms
-#
-# Bruno Randolf <bruno.randolf@4g-systems.biz>
-
-TARGET_OS = "linux"
-
-INHERIT += "package_ipk debian nylon-mirrors"
-INHERIT += "linux-kernel-base"
-
-PREFERRED_PROVIDERS += " virtual/${TARGET_PREFIX}gcc-initial:gcc-cross-initial"
-PREFERRED_PROVIDERS += " virtual/${TARGET_PREFIX}gcc-intermediate:gcc-cross-intermediate"
-PREFERRED_PROVIDERS += " virtual/${TARGET_PREFIX}gcc:gcc-cross"
-PREFERRED_PROVIDERS += " virtual/${TARGET_PREFIX}g++:gcc-cross"
-PREFERRED_PROVIDERS += " virtual/${TARGET_PREFIX}libc-for-gcc:glibc"
-PREFERRED_PROVIDERS += " virtual/libx11:diet-x11"
-PREFERRED_PROVIDERS += " python:python-curses"
-PREFERRED_PROVIDER_classpath = "classpath-minimal"
+require conf/distro/angstrom-2008.1.conf
 
+#############################################################################
+# NAME and VERSION
+#############################################################################
+DISTRO_NAME = "nylon"
+DISTRO = ${DISTRO_NAME}
+DISTRO_VERSION = "${NYLON_VERSION}"
+BUILDNAME := "${NYLON_VERSION}"
+#DISTRO_TYPE = "release"
+DISTRO_TYPE = "debug"
 TARGET_FPU = "soft"
-
 SRCDATE := "20050527"
-
+TARGET_VENDOR = "-nylon"
+
+# Ensure some form of release config, so error out if someone thinks he knows better
+DISTRO_CHECK := "${@bb.data.getVar("DISTRO_VERSION",d,1) or bb.fatal('Remove this line or set a dummy DISTRO_VERSION")
+
+#############################################################################
+# PACKAGING
+#############################################################################
+# Chose the packaging system
+INHERIT += "nylon-mirrors"
+IMAGE_FSTYPES ?= "tar.gz jffs2"
+
+#############################################################################
+# IMAGES
+#############################################################################
+# Name the generated images in a sane way
+IMAGE_NAME = "${IMAGE_BASENAME}-${MACHINE}_${BUILDNAME}"
+KERNEL_IMAGE_NAME = "kernel-${KERNEL_VERSION}-${MACHINE}_${BUILDNAME}"
+CACHE ?= "${TMPDIR}/cache/${PREFERRED_LIBC}/${MACHINE}"
+DEPLOY_DIR ?= "${TMPDIR}/deploy/${PREFERRED_LIBC}"
+DEPLOY_DIR_IMAGE = "${DEPLOY_DIR}/images/${MACHINE}"
+
+#############################################################################
+# KERNEL
+#############################################################################
+KERNEL = "kernel24"
+MACHINE_KERNEL_VERSION = "2.4"
+
+#############################################################################
+# TOOLCHAIN
+#############################################################################
+fixedCxxflags = "${@bb.data.getVar('CXXFLAGS', d, 1).replace('-fvisibility-inlines-hidden','')}"
+CXXFLAGS := ${fixedCxxflags}
+
+#############################################################################
+# OVERWRITES adjusted from bitbake.conf to feature the MACHINE_CLASS
+#############################################################################
+OVERRIDES = "local:${MACHINE}:${MACHINE_CLASS}:${DISTRO}:${TARGET_OS}:${TARGET_ARCH}:build-${BUILD_OS}:fail-fast:pn-${PN}"
+
+# we're not supporting pcmcia right now
+DISTRO_FEATURES = "nfs smbfs wifi pcmcia ppp ext2 vfat usbhost pci"
+
+# FIXME: cannot build linux-libc-headers unless this is set.
+IPKGBUILDCMD = "stage-manager-ipkg-build -o 0 -g 0"
+
+#############################################################################
+# PREFERRED PROVIDERS
+#############################################################################
+#PREFERRED_PROVIDERS_virtual/${TARGET_PREFIX}gcc-initial = "gcc-cross-initial"
+#PREFERRED_PROVIDERS_virtual/${TARGET_PREFIX}gcc-intermediate = "gcc-cross-intermediate"
+#PREFERRED_PROVIDERS_virtual/${TARGET_PREFIX}gcc = "gcc-cross"
+#PREFERRED_PROVIDERS_virtual/${TARGET_PREFIX}g++ = "gcc-cross"
+
+#############################################################################
+# PREFERRED VERSIONS
+#############################################################################
+PREFERRED_VERSION_busybox = "1.7.2"
 PREFERRED_VERSION_glibc = "2.3.3"
+PREFERRED_VERSION_glibc-initial = "2.3.2"
 PREFERRED_VERSION_shorewall = "2.0.9-monolithic"
 PREFERRED_VERSION_ppp-dsl = "0.1-monolithic"
-PREFERRED_VERSION_mtd-utils = "0.0.0+cvs20060223"
+PREFERRED_VERSION_mtd-utils = "1.0.0+git"
 PREFERRED_VERSION_kismet = "2005-01-R1"
+PREFERRED_VERSION_automake-native = "1.10"
+PREFERRED_VERSION_pkgconfig-native = "0.23"
+PREFERRED_VERSION_netperf = "2.3"
+PREFERRED_PROVIDER_hotplug = "linux-hotplug"
 
 PREFERRED_VERSION_gcc-cross-initial = "3.3.4"
 PREFERRED_VERSION_gcc-cross-intermediate = "3.3.4"
@@ -44,67 +94,8 @@ PREFERRED_VERSION_binutils-cross = "2.14.90.0.7"
 PREFERRED_VERSION_binutils-cross-sdk = "2.14.90.0.7"
 PREFERRED_VERSION_binutils = "2.16"
 PREFERRED_VERSION_linux-libc-headers = "2.6.18"
-
 PREFERRED_VERSION_prism54-firmware = "1.0.3.0"
-
-KERNEL_VERSION_mtx-1 = "2.4.27"
-KERNEL_VERSION_mtx-2 = "2.4.27"
-
-#PREFERRED_VERSION_glibc_mtx-3 = "2.3.5+cvs20050627"
-PREFERRED_VERSION_gcc-cross-initial_mtx-3 = "3.4.4"
-PREFERRED_VERSION_gcc-cross-intermediate_mtx-3 = "3.4.4"
-PREFERRED_VERSION_gcc-cross_mtx-3 = "3.4.4"
-PREFERRED_VERSION_gcc-cross-sdk_mtx-3 = "3.4.4" 
-PREFERRED_VERSION_gcc_mtx-3 = "3.4.4"
-### did not compile with:
-#PREFERRED_VERSION_binutils-cross_mtx-3 = "2.16.91.0.7"
-#PREFERRED_VERSION_binutils-cross-sdk_mtx-3 = "2.16.91.0.7"
-### falling back to:
-PREFERRED_VERSION_binutils-cross_mtx-3 = "2.15.94.0.1"
-PREFERRED_VERSION_binutils-cross-sdk_mtx-3 = "2.15.94.0.1"
-PREFERRED_VERSION_binutils_mtx-3 = "2.16"
+#PREFERRED_VERSION_udev = "089"
+PREFERRED_VERSION_udev = "100"
 PREFERRED_VERSION_madwifi-modules = "0.9.3"
 PREFERRED_VERSION_madwifi-tools = "0.9.3"
-
-PREFERRED_VERSION_udev = "089"
-
-KERNEL_VERSION_mtx-3 = "2.6.15.4"
-PREFERRED_PROVIDER_virtual/kernel_mtx-3a = "linux-mtx-3a"
-
-
-#PREFERRED_VERSION_glibc_mtx-3a = "2.3.5+cvs20050627"
-PREFERRED_VERSION_gcc-cross-initial_mtx-3a = "3.4.4"
-PREFERRED_VERSION_gcc-cross-intermediate_mtx-3a = "3.4.4"
-PREFERRED_VERSION_gcc-cross_mtx-3a = "3.4.4"
-PREFERRED_VERSION_gcc-cross-sdk_mtx-3a = "3.4.4" 
-PREFERRED_VERSION_gcc_mtx-3a = "3.4.4"
-### did not compile with:
-#PREFERRED_VERSION_binutils-cross_mtx-3a = "2.16.91.0.7"
-#PREFERRED_VERSION_binutils-cross-sdk_mtx-3a = "2.16.91.0.7"
-### falling back to:
-PREFERRED_VERSION_binutils-cross_mtx-3a = "2.15.94.0.1"
-PREFERRED_VERSION_binutils-cross-sdk_mtx-3a = "2.15.94.0.1"
-PREFERRED_VERSION_binutils_mtx-3a = "2.16"
-
-PREFERRED_VERSION_udev = "100"
-
-KERNEL_VERSION_mtx-3a = "2.6.16.6"
-
-
-# usually overrrided from local.conf
-NYLON_RELEASE = "unstable"
-
-# use meshcub.org mirrors for CVS sources
-CVS_TARBALL_STASH = "http://meshcube.org/nylon/${NYLON_RELEASE}/sources/"
-
-export FEED_URIS = " \
-        nylon##http://meshcube.org/nylon/${NYLON_RELEASE}/feed \
-        nylon-bin##http://meshcube.org/nylon/${NYLON_RELEASE}/binary-feed"
-
-# image names
-DISTRO_VERSION = "${NYLON_VERSION}"
-BUILDNAME := "${NYLON_VERSION}"
-#this does not work: ${@base_read_file('${STAGING_DIR}/${HOST_SYS}/kernel/kernel-abiversion')}
-IMAGE_NAME = "${IMAGE_BASENAME}-${MACHINE}_${BUILDNAME}"
-KERNEL_IMAGE_NAME = "kernel-${KERNEL_VERSION}-${MACHINE}_${BUILDNAME}"
-
diff --git a/conf/machine/mtx-1.conf b/conf/machine/mtx-1.conf
index 33a69f4..7db1969 100644
--- a/conf/machine/mtx-1.conf
+++ b/conf/machine/mtx-1.conf
@@ -6,6 +6,8 @@ TARGET_ARCH = "mipsel"
 PACKAGE_ARCHS = "all mipsel ${MACHINE}"
 
 PREFERRED_PROVIDER_virtual/kernel = "linux-mtx-1"
+KERNEL_VERSION_mtx-1 = "2.4.27"
+MACHINE_FEATURES = "kernel24 usbhost vfat"
 
 # md: is the --pad=.. necessary? I believe not.
 # EXTRA_IMAGECMD_jffs2 = "--pad=0x1c00000 --little-endian --eraseblock=0x20000 -n"  
diff --git a/conf/machine/mtx-2.conf b/conf/machine/mtx-2.conf
index 438c1fe..67cc5bf 100644
--- a/conf/machine/mtx-2.conf
+++ b/conf/machine/mtx-2.conf
@@ -6,6 +6,8 @@ TARGET_ARCH = "mipsel"
 PACKAGE_ARCHS = "all mipsel ${MACHINE}"
 
 PREFERRED_PROVIDER_virtual/kernel = "linux-mtx-2"
+KERNEL_VERSION_mtx-2 = "2.4.27"
+MACHINE_FEATURES = "kernel24 usbhost vfat"
 
 EXTRA_IMAGECMD_jffs2 = "--little-endian --eraseblock=0x20000 -n"  
 
diff --git a/conf/machine/mtx-3.conf b/conf/machine/mtx-3.conf
index d6d14d8..f6e9e8a 100644
--- a/conf/machine/mtx-3.conf
+++ b/conf/machine/mtx-3.conf
@@ -10,8 +10,21 @@
 TARGET_ARCH = "arm"
 require conf/machine/include/tune-arm926ejs.inc
 
-
+# begin overrides mtx-3
+#PREFERRED_VERSION_glibc_mtx-3 = "2.3.5+cvs20050627"
+PREFERRED_VERSION_gcc-cross-initial_mtx-3 = "3.4.4"
+PREFERRED_VERSION_gcc-cross-intermediate_mtx-3 = "3.4.4"
+PREFERRED_VERSION_gcc-cross_mtx-3 = "3.4.4"
+PREFERRED_VERSION_gcc-cross-sdk_mtx-3 = "3.4.4"
+PREFERRED_VERSION_gcc_mtx-3 = "3.4.4"
+PREFERRED_VERSION_binutils-cross_mtx-3 = "2.15.94.0.1"
+PREFERRED_VERSION_binutils-cross-sdk_mtx-3 = "2.15.94.0.1"
+PREFERRED_VERSION_binutils_mtx-3 = "2.16"
+
+KERNEL_VERSION_mtx-3 = "2.6.15.4"
 PREFERRED_PROVIDER_virtual/kernel = "linux-mtx-3"
+PREFERRED_PROVIDER_hotplug_mtx-3 = "udev"
+MACHINE_FEATURES = "kernel26 usbhost vfat"
 
 EXTRA_IMAGECMD_jffs2 = "--little-endian --eraseblock=0x20000 -n"  
 
diff --git a/conf/machine/mtx-3a.conf b/conf/machine/mtx-3a.conf
index cb1b129..d3adce3 100644
--- a/conf/machine/mtx-3a.conf
+++ b/conf/machine/mtx-3a.conf
@@ -4,8 +4,21 @@
 
 include conf/machine/mtx-3.conf
 
-TARGET_ARCH = "arm"
+#PREFERRED_VERSION_glibc_mtx-3a = "2.3.5+cvs20050627"
+PREFERRED_VERSION_gcc-cross-initial_mtx-3a = "3.4.4"
+PREFERRED_VERSION_gcc-cross-intermediate_mtx-3a = "3.4.4"
+PREFERRED_VERSION_gcc-cross_mtx-3a = "3.4.4"
+PREFERRED_VERSION_gcc-cross-sdk_mtx-3a = "3.4.4"
+PREFERRED_VERSION_gcc_mtx-3a = "3.4.4"
+PREFERRED_VERSION_binutils-cross_mtx-3a = "2.15.94.0.1"
+PREFERRED_VERSION_binutils-cross-sdk_mtx-3a = "2.15.94.0.1"
+PREFERRED_VERSION_binutils_mtx-3a = "2.16"
+
 PREFERRED_PROVIDER_virtual/kernel = "linux-mtx-3a"
+KERNEL_VERSION_mtx-3a = "2.6.16.6"
+PREFERRED_PROVIDER_hotplug_mtx-3a = "udev"
+
+TARGET_ARCH = "arm"
 EXTRA_IMAGECMD_jffs2 = "--little-endian --eraseblock=0x20000 -n"  
 USE_VT = "0"
 SERIAL_CONSOLE = "115200 ttyS0 vt100"
diff --git a/recipes/base-files/base-files/mtx-1/fstab b/recipes/base-files/base-files/mtx-1/fstab
deleted file mode 100644
index 5c0e2b3..0000000
--- a/recipes/base-files/base-files/mtx-1/fstab
+++ /dev/null
@@ -1,9 +0,0 @@
-# /etc/fstab: static file system information. mtx-1
-#
-# <file system> <mount pt>     <type>     <options>         <dump> <pass>
-rootfs          /              auto       defaults          1      1
-tmpfs           /var/volatile  tmpfs      mode=0755,size=10m 0      0
-proc            /proc          proc       defaults          0      0
-devpts          /dev/pts       devpts     mode=0620,gid=5   0      0
-tmpfs                /dev/shm             tmpfs      mode=0777             0  0
-usbdevfs        /proc/bus/usb  usbdevfs   noauto            0      0
diff --git a/recipes/base-files/base-files/mtx-1/profile b/recipes/base-files/base-files/mtx-1/profile
deleted file mode 100644
index bedf2fc..0000000
--- a/recipes/base-files/base-files/mtx-1/profile
+++ /dev/null
@@ -1,25 +0,0 @@
-# /etc/profile: system-wide .profile file for the Bourne shell (sh(1))
-# and Bourne compatible shells (bash(1), ksh(1), ash(1), ...).
-
-PATH="/usr/local/bin:/usr/bin:/bin"
-
-if [ "`id -u`" -eq 0 ]; then
-   PATH=$PATH:/usr/local/sbin:/usr/sbin:/sbin:
-fi
-if [ "$PS1" ]; then
-# works for bash and ash (no other shells known to be in use here)
-   PS1='\u@\h:\w\$ '
-fi
-
-if [ -d /etc/profile.d ]; then
-  for i in `ls /etc/profile.d/`; do
-    . /etc/profile.d/$i
-  done
-  unset i
-fi
-
-export PATH PS1
-
-umask 022
-
-alias ll="ls -lah"
\ No newline at end of file
diff --git a/recipes/base-files/base-files/mtx-2/fstab b/recipes/base-files/base-files/mtx-2/fstab
deleted file mode 100644
index 8b9ad0f..0000000
--- a/recipes/base-files/base-files/mtx-2/fstab
+++ /dev/null
@@ -1,9 +0,0 @@
-# /etc/fstab: static file system information. mtx-2
-#
-# <file system> <mount pt>     <type>     <options>         <dump> <pass>
-rootfs          /              auto       defaults          1      1
-tmpfs           /var/volatile  tmpfs      mode=0755,size=10m 0      0
-proc            /proc          proc       defaults          0      0
-devpts          /dev/pts       devpts     mode=0620,gid=5   0      0
-tmpfs                /dev/shm             tmpfs      mode=0777             0  0
-usbdevfs        /proc/bus/usb  usbdevfs   noauto            0      0
diff --git a/recipes/base-files/base-files/mtx-2/profile b/recipes/base-files/base-files/mtx-2/profile
deleted file mode 100644
index bedf2fc..0000000
--- a/recipes/base-files/base-files/mtx-2/profile
+++ /dev/null
@@ -1,25 +0,0 @@
-# /etc/profile: system-wide .profile file for the Bourne shell (sh(1))
-# and Bourne compatible shells (bash(1), ksh(1), ash(1), ...).
-
-PATH="/usr/local/bin:/usr/bin:/bin"
-
-if [ "`id -u`" -eq 0 ]; then
-   PATH=$PATH:/usr/local/sbin:/usr/sbin:/sbin:
-fi
-if [ "$PS1" ]; then
-# works for bash and ash (no other shells known to be in use here)
-   PS1='\u@\h:\w\$ '
-fi
-
-if [ -d /etc/profile.d ]; then
-  for i in `ls /etc/profile.d/`; do
-    . /etc/profile.d/$i
-  done
-  unset i
-fi
-
-export PATH PS1
-
-umask 022
-
-alias ll="ls -lah"
\ No newline at end of file
diff --git a/recipes/base-files/base-files/nylon/fstab b/recipes/base-files/base-files/nylon/fstab
new file mode 100644
index 0000000..5c0e2b3
--- /dev/null
+++ b/recipes/base-files/base-files/nylon/fstab
@@ -0,0 +1,9 @@
+# /etc/fstab: static file system information. mtx-1
+#
+# <file system> <mount pt>     <type>     <options>         <dump> <pass>
+rootfs          /              auto       defaults          1      1
+tmpfs           /var/volatile  tmpfs      mode=0755,size=10m 0      0
+proc            /proc          proc       defaults          0      0
+devpts          /dev/pts       devpts     mode=0620,gid=5   0      0
+tmpfs                /dev/shm             tmpfs      mode=0777             0  0
+usbdevfs        /proc/bus/usb  usbdevfs   noauto            0      0
diff --git a/recipes/base-files/base-files/nylon/profile b/recipes/base-files/base-files/nylon/profile
new file mode 100644
index 0000000..04b6037
--- /dev/null
+++ b/recipes/base-files/base-files/nylon/profile
@@ -0,0 +1,34 @@
+# /etc/profile: system-wide .profile file for the Bourne shell (sh(1))
+# and Bourne compatible shells (bash(1), ksh(1), ash(1), ...).
+
+PATH="/usr/local/bin:/usr/bin:/bin"
+
+if [ "`id -u`" -eq 0 ]; then
+   PATH=$PATH:/usr/local/sbin:/usr/sbin:/sbin:
+fi
+if [ "$PS1" ]; then
+# works for bash and ash (no other shells known to be in use here)
+   if [ "$UID" = "0" -o "$USER" = "root" ]; then
+     B='# '
+   else
+     B='$ '
+   fi
+   if [ -n "$BASH" ]; then
+     PS1="\u@\h:\w\$B"
+   else
+     PS1="$B"
+   fi
+fi
+
+if [ -d /etc/profile.d ]; then
+  for i in `ls /etc/profile.d/`; do
+    . /etc/profile.d/$i
+  done
+  unset i
+fi
+
+export PATH PS1
+
+umask 022
+
+alias ll="ls -lah"
diff --git a/recipes/binutils/binutils-2.14.90.0.7/binutils-2.14.90.0.7-fix-broken-configure.patch b/recipes/binutils/binutils-2.14.90.0.7/binutils-2.14.90.0.7-fix-broken-configure.patch
new file mode 100644
index 0000000..30d4bcd
--- /dev/null
+++ b/recipes/binutils/binutils-2.14.90.0.7/binutils-2.14.90.0.7-fix-broken-configure.patch
@@ -0,0 +1,78 @@
+--- binutils-2.14.90.0.7/configure.in-orig	2009-03-30 13:12:57.000000000 +0200
++++ binutils-2.14.90.0.7/configure.in	2009-03-30 13:13:36.000000000 +0200
+@@ -1795,21 +1795,21 @@
+ # at the end of the argument list.
+ # These will be expanded by make, so quote '$'.
+ cat <<\EOF_SED > conftestsed
+-s/ --no[[^ ]]* / /
+-s/ --c[[a-z-]]*[[= ]][[^ ]]* / /
+-s/ --sr[[a-z-]]*[[= ]][[^ ]]* / /
+-s/ --ho[[a-z-]]*[[= ]][[^ ]]* / /
+-s/ --bu[[a-z-]]*[[= ]][[^ ]]* / /
+-s/ --t[[a-z-]]*[[= ]][[^ ]]* / /
+-s/ --program-[[pst]][[a-z-]]*[[= ]][[^ ]]* / /
+-s/ -cache-file[[= ]][[^ ]]* / /
+-s/ -srcdir[[= ]][[^ ]]* / /
+-s/ -host[[= ]][[^ ]]* / /
+-s/ -build[[= ]][[^ ]]* / /
+-s/ -target[[= ]][[^ ]]* / /
+-s/ -program-prefix[[= ]][[^ ]]* / /
+-s/ -program-suffix[[= ]][[^ ]]* / /
+-s/ -program-transform-name[[= ]][[^ ]]* / /
++s/ --no[[^ ]]* / /g
++s/ --c[[a-z-]]*[[= ]][[^ ]]* / /g
++s/ --sr[[a-z-]]*[[= ]][[^ ]]* / /g
++s/ --ho[[a-z-]]*[[= ]][[^ ]]* / /g
++s/ --bu[[a-z-]]*[[= ]][[^ ]]* / /g
++s/ --t[[a-z-]]*[[= ]][[^ ]]* / /g
++s/ --program-[[pst]][[a-z-]]*[[= ]][[^ ]]* / /g
++s/ -cache-file[[= ]][[^ ]]* / /g
++s/ -srcdir[[= ]][[^ ]]* / /g
++s/ -host[[= ]][[^ ]]* / /g
++s/ -build[[= ]][[^ ]]* / /g
++s/ -target[[= ]][[^ ]]* / /g
++s/ -program-prefix[[= ]][[^ ]]* / /g
++s/ -program-suffix[[= ]][[^ ]]* / /g
++s/ -program-transform-name[[= ]][[^ ]]* / /g
+ s/ [[^' -][^ ]*] / /
+ s/^ *//;s/ *$//
+ s,\$,$$,g
+--- binutils-2.14.90.0.7/configure-orig	2009-03-30 13:12:51.000000000 +0200
++++ binutils-2.14.90.0.7/configure	2009-03-30 13:13:25.000000000 +0200
+@@ -2556,21 +2556,21 @@
+ # at the end of the argument list.
+ # These will be expanded by make, so quote '$'.
+ cat <<\EOF_SED > conftestsed
+-s/ --no[^ ]* / /
+-s/ --c[a-z-]*[= ][^ ]* / /
+-s/ --sr[a-z-]*[= ][^ ]* / /
+-s/ --ho[a-z-]*[= ][^ ]* / /
+-s/ --bu[a-z-]*[= ][^ ]* / /
+-s/ --t[a-z-]*[= ][^ ]* / /
+-s/ --program-[pst][a-z-]*[= ][^ ]* / /
+-s/ -cache-file[= ][^ ]* / /
+-s/ -srcdir[= ][^ ]* / /
+-s/ -host[= ][^ ]* / /
+-s/ -build[= ][^ ]* / /
+-s/ -target[= ][^ ]* / /
+-s/ -program-prefix[= ][^ ]* / /
+-s/ -program-suffix[= ][^ ]* / /
+-s/ -program-transform-name[= ][^ ]* / /
++s/ --no[^ ]* / /g
++s/ --c[a-z-]*[= ][^ ]* / /g
++s/ --sr[a-z-]*[= ][^ ]* / /g
++s/ --ho[a-z-]*[= ][^ ]* / /g
++s/ --bu[a-z-]*[= ][^ ]* / /g
++s/ --t[a-z-]*[= ][^ ]* / /g
++s/ --program-[pst][a-z-]*[= ][^ ]* / /g
++s/ -cache-file[= ][^ ]* / /g
++s/ -srcdir[= ][^ ]* / /g
++s/ -host[= ][^ ]* / /g
++s/ -build[= ][^ ]* / /g
++s/ -target[= ][^ ]* / /g
++s/ -program-prefix[= ][^ ]* / /g
++s/ -program-suffix[= ][^ ]* / /g
++s/ -program-transform-name[= ][^ ]* / /g
+ s/ [^' -][^ ]* / /
+ s/^ *//;s/ *$//
+ s,\$,$$,g
diff --git a/recipes/binutils/binutils_2.14.90.0.7.bb b/recipes/binutils/binutils_2.14.90.0.7.bb
index f940c87..3b2ab46 100644
--- a/recipes/binutils/binutils_2.14.90.0.7.bb
+++ b/recipes/binutils/binutils_2.14.90.0.7.bb
@@ -47,7 +47,8 @@ SRC_URI = \
      file://binutils-uclibc-210-cflags.patch;patch=1 \
      file://binutils-100_cflags_for_build.patch;patch=1 \
      file://plt32trunc.patch;patch=1 \
-     file://600-arm-textrel.patch;patch=1"
+     file://600-arm-textrel.patch;patch=1 \
+     file://binutils-2.14.90.0.7-fix-broken-configure.patch;patch=1"
 
 S = "${WORKDIR}/binutils-${PV}"
 B = "${S}/build.${HOST_SYS}.${TARGET_SYS}"
diff --git a/recipes/busybox/busybox-1.13.2/xargs-double-size.patch b/recipes/busybox/busybox-1.13.2/xargs-double-size.patch
new file mode 100644
index 0000000..df64554
--- /dev/null
+++ b/recipes/busybox/busybox-1.13.2/xargs-double-size.patch
@@ -0,0 +1,13 @@
+--- busybox-1.2.1/findutils/xargs.c.org	2006-09-19 18:18:17.084592997 +0200
++++ busybox-1.2.1/findutils/xargs.c	2006-09-19 18:18:09.820275793 +0200
+@@ -466,8 +466,8 @@
+ 		   have it at 1 meg).  Things will work fine with a large ARG_MAX but it
+ 		   will probably hurt the system more than it needs to; an array of this
+ 		   size is allocated.  */
+-		if (orig_arg_max > 20 * 1024)
+-			orig_arg_max = 20 * 1024;
++		if (orig_arg_max > 40 * 1024)
++			orig_arg_max = 40 * 1024;
+ 		n_max_chars = orig_arg_max;
+ 	}
+ 	max_chars = xmalloc(n_max_chars);
diff --git a/recipes/busybox/busybox-1.3.1/xargs-double-size.patch b/recipes/busybox/busybox-1.3.1/xargs-double-size.patch
index df64554..ef1e5df 100644
--- a/recipes/busybox/busybox-1.3.1/xargs-double-size.patch
+++ b/recipes/busybox/busybox-1.3.1/xargs-double-size.patch
@@ -1,5 +1,5 @@
---- busybox-1.2.1/findutils/xargs.c.org	2006-09-19 18:18:17.084592997 +0200
-+++ busybox-1.2.1/findutils/xargs.c	2006-09-19 18:18:09.820275793 +0200
+--- busybox-1.3.1/findutils/xargs.c.org	2006-09-19 18:18:17.084592997 +0200
++++ busybox-1.3.1/findutils/xargs.c	2006-09-19 18:18:09.820275793 +0200
 @@ -466,8 +466,8 @@
  		   have it at 1 meg).  Things will work fine with a large ARG_MAX but it
  		   will probably hurt the system more than it needs to; an array of this
diff --git a/recipes/busybox/busybox-1.7.2/nylon/defconfig b/recipes/busybox/busybox-1.7.2/nylon/defconfig
new file mode 100644
index 0000000..271732f
--- /dev/null
+++ b/recipes/busybox/busybox-1.7.2/nylon/defconfig
@@ -0,0 +1,568 @@
+#
+# Automatically generated make config: don't edit
+#
+HAVE_DOT_CONFIG=y
+
+#
+# General Configuration
+#
+# CONFIG_NITPICK is not set
+CONFIG_FEATURE_BUFFERS_USE_MALLOC=y
+# CONFIG_FEATURE_BUFFERS_GO_ON_STACK is not set
+# CONFIG_FEATURE_BUFFERS_GO_IN_BSS is not set
+CONFIG_FEATURE_VERBOSE_USAGE=y
+# CONFIG_FEATURE_INSTALLER is not set
+# CONFIG_LOCALE_SUPPORT is not set
+CONFIG_FEATURE_DEVFS=y
+# CONFIG_EJECT is not set
+CONFIG_FEATURE_DEVPTS=y
+# CONFIG_FEATURE_CLEAN_UP is not set
+CONFIG_FEATURE_SUID=y
+CONFIG_FEATURE_SUID_CONFIG=y
+CONFIG_FEATURE_SUID_CONFIG_QUIET=y
+# CONFIG_SELINUX is not set
+CONFIG_BUSYBOX_EXEC_PATH="/proc/self/exe"
+
+#
+# Build Options
+#
+# CONFIG_STATIC is not set
+# CONFIG_BUILD_LIBBUSYBOX is not set
+# CONFIG_LFS is not set
+# USING_CROSS_COMPILER is not set
+EXTRA_CFLAGS_OPTIONS=""
+# CONFIG_BUILD_AT_ONCE is not set
+
+#
+# Installation Options
+#
+# CONFIG_INSTALL_NO_USR is not set
+CONFIG_INSTALL_APPLET_SYMLINKS=y
+# CONFIG_INSTALL_APPLET_HARDLINKS is not set
+# CONFIG_INSTALL_APPLET_DONT is not set
+PREFIX="./_install"
+
+#
+# Busybox Library Tuning
+#
+CONFIG_MD5_SIZE_VS_SPEED=2
+
+#
+# Archival Utilities
+#
+CONFIG_AR=y
+CONFIG_FEATURE_AR_LONG_FILENAMES=y
+CONFIG_BUNZIP2=y
+CONFIG_CPIO=y
+CONFIG_DPKG=y
+CONFIG_DPKG_DEB=y
+# CONFIG_FEATURE_DPKG_DEB_EXTRACT_ONLY is not set
+CONFIG_GUNZIP=y
+CONFIG_FEATURE_GUNZIP_UNCOMPRESS=y
+CONFIG_GZIP=y
+# CONFIG_RPM2CPIO is not set
+# CONFIG_RPM is not set
+CONFIG_TAR=y
+CONFIG_FEATURE_TAR_CREATE=y
+# CONFIG_FEATURE_TAR_BZIP2 is not set
+CONFIG_FEATURE_TAR_FROM=y
+CONFIG_FEATURE_TAR_GZIP=y
+CONFIG_FEATURE_TAR_COMPRESS=y
+# CONFIG_FEATURE_TAR_LZMA is not set
+CONFIG_FEATURE_TAR_OLDGNU_COMPATIBILITY=y
+CONFIG_FEATURE_TAR_GNU_EXTENSIONS=y
+CONFIG_FEATURE_TAR_LONG_OPTIONS=y
+CONFIG_UNCOMPRESS=y
+# CONFIG_UNLZMA is not set
+CONFIG_UNZIP=y
+
+#
+# Common options for cpio and tar
+#
+# CONFIG_FEATURE_UNARCHIVE_TAPE is not set
+# CONFIG_FEATURE_DEB_TAR_LZMA is not set
+
+#
+# Common options for dpkg and dpkg_deb
+#
+CONFIG_FEATURE_DEB_TAR_GZ=y
+CONFIG_FEATURE_DEB_TAR_BZ2=y
+
+#
+# Coreutils
+#
+CONFIG_BASENAME=y
+CONFIG_CAL=y
+CONFIG_CAT=y
+# CONFIG_CATV is not set
+CONFIG_CHGRP=y
+CONFIG_CHMOD=y
+CONFIG_CHOWN=y
+CONFIG_CHROOT=y
+CONFIG_DIFF=y
+# CONFIG_FEATURE_DIFF_BINARY is not set
+CONFIG_FEATURE_DIFF_DIR=y
+# CONFIG_FEATURE_DIFF_MINIMAL is not set
+# CONFIG_COMM is not set
+# CONFIG_CKSUM is not set
+# CONFIG_FEATURE_DD_SIGNAL_HANDLING is not set
+# CONFIG_FEATURE_DD_IBS_OBS is not set
+CONFIG_CMP=y
+CONFIG_CP=y
+CONFIG_CUT=y
+CONFIG_DATE=y
+
+#
+# date (forced enabled for use with watch)
+#
+CONFIG_FEATURE_DATE_ISOFMT=y
+CONFIG_DD=y
+CONFIG_DF=y
+CONFIG_DIRNAME=y
+CONFIG_DOS2UNIX=y
+CONFIG_UNIX2DOS=y
+CONFIG_DU=y
+CONFIG_FEATURE_DU_DEFAULT_BLOCKSIZE_1K=y
+CONFIG_ECHO=y
+CONFIG_FEATURE_FANCY_ECHO=y
+CONFIG_ENV=y
+# CONFIG_FEATURE_ENV_LONG_OPTIONS is not set
+CONFIG_EXPR=y
+# CONFIG_EXPR_MATH_SUPPORT_64 is not set
+CONFIG_FALSE=y
+CONFIG_FOLD=y
+CONFIG_HEAD=y
+CONFIG_FEATURE_FANCY_HEAD=y
+CONFIG_HOSTID=y
+CONFIG_ID=y
+CONFIG_INSTALL=y
+# CONFIG_FEATURE_INSTALL_LONG_OPTIONS is not set
+CONFIG_LENGTH=y
+CONFIG_LN=y
+CONFIG_LOGNAME=y
+CONFIG_LS=y
+CONFIG_FEATURE_LS_FILETYPES=y
+CONFIG_FEATURE_LS_FOLLOWLINKS=y
+CONFIG_FEATURE_LS_RECURSIVE=y
+CONFIG_FEATURE_LS_SORTFILES=y
+CONFIG_FEATURE_LS_TIMESTAMPS=y
+CONFIG_FEATURE_LS_USERNAME=y
+CONFIG_FEATURE_LS_COLOR=y
+CONFIG_FEATURE_LS_COLOR_IS_DEFAULT=y
+CONFIG_MD5SUM=y
+CONFIG_MKDIR=y
+# CONFIG_FEATURE_MKDIR_LONG_OPTIONS is not set
+CONFIG_MKFIFO=y
+CONFIG_MKNOD=y
+CONFIG_MV=y
+# CONFIG_FEATURE_MV_LONG_OPTIONS is not set
+CONFIG_NICE=y
+CONFIG_NOHUP=y
+CONFIG_OD=y
+# CONFIG_PRINTENV is not set
+CONFIG_PRINTF=y
+CONFIG_PWD=y
+CONFIG_REALPATH=y
+CONFIG_RM=y
+CONFIG_RMDIR=y
+CONFIG_SEQ=y
+CONFIG_SHA1SUM=y
+CONFIG_SLEEP=y
+CONFIG_FEATURE_FANCY_SLEEP=y
+CONFIG_SORT=y
+# CONFIG_FEATURE_SORT_BIG is not set
+CONFIG_STAT=y
+# CONFIG_FEATURE_STAT_FORMAT is not set
+CONFIG_STTY=y
+# CONFIG_SUM is not set
+CONFIG_SYNC=y
+CONFIG_TAIL=y
+CONFIG_FEATURE_FANCY_TAIL=y
+CONFIG_TEE=y
+CONFIG_FEATURE_TEE_USE_BLOCK_IO=y
+# CONFIG_TEST is not set
+CONFIG_TOUCH=y
+CONFIG_TR=y
+# CONFIG_FEATURE_TR_CLASSES is not set
+# CONFIG_FEATURE_TR_EQUIV is not set
+CONFIG_TRUE=y
+CONFIG_TTY=y
+CONFIG_UNAME=y
+CONFIG_UNIQ=y
+CONFIG_USLEEP=y
+CONFIG_UUDECODE=y
+CONFIG_UUENCODE=y
+CONFIG_WATCH=y
+CONFIG_WC=y
+CONFIG_WHO=y
+CONFIG_WHOAMI=y
+CONFIG_YES=y
+
+#
+# Common options for cp and mv
+#
+# CONFIG_FEATURE_PRESERVE_HARDLINKS is not set
+
+#
+# Common options for ls and more
+#
+CONFIG_FEATURE_AUTOWIDTH=y
+
+#
+# Common options for df, du, ls
+#
+CONFIG_FEATURE_HUMAN_READABLE=y
+
+#
+# Common options for md5sum, sha1sum
+#
+CONFIG_FEATURE_MD5_SHA1_SUM_CHECK=y
+
+#
+# Console Utilities
+#
+# CONFIG_CHVT is not set
+CONFIG_CLEAR=y
+# CONFIG_DEALLOCVT is not set
+CONFIG_DUMPKMAP=y
+CONFIG_GETKEY=y
+# CONFIG_LOADFONT is not set
+CONFIG_LOADKMAP=y
+# CONFIG_OPENVT is not set
+CONFIG_RESET=y
+CONFIG_SETCONSOLE=y
+# CONFIG_FEATURE_SETCONSOLE_LONG_OPTIONS is not set
+CONFIG_SETKEYCODES=y
+CONFIG_SETLOGCONS=n
+
+#
+# Debian Utilities
+#
+CONFIG_MKTEMP=y
+CONFIG_PIPE_PROGRESS=y
+CONFIG_READLINK=y
+CONFIG_FEATURE_READLINK_FOLLOW=y
+CONFIG_RUN_PARTS=y
+# CONFIG_FEATURE_RUN_PARTS_LONG_OPTIONS is not set
+CONFIG_START_STOP_DAEMON=y
+CONFIG_FEATURE_START_STOP_DAEMON_FANCY=y
+CONFIG_FEATURE_START_STOP_DAEMON_LONG_OPTIONS=y
+CONFIG_WHICH=y
+
+#
+# Editors
+#
+CONFIG_AWK=y
+CONFIG_FEATURE_AWK_MATH=y
+# CONFIG_ED is not set
+CONFIG_PATCH=y
+CONFIG_SED=y
+# CONFIG_VI is not set
+#CONFIG_FEATURE_VI_COLON=y
+#CONFIG_FEATURE_VI_YANKMARK=y
+#CONFIG_FEATURE_VI_SEARCH=y
+#CONFIG_FEATURE_VI_USE_SIGNALS=y
+#CONFIG_FEATURE_VI_DOT_CMD=y
+#CONFIG_FEATURE_VI_READONLY=y
+#CONFIG_FEATURE_VI_SETOPTS=y
+#CONFIG_FEATURE_VI_SET=y
+#CONFIG_FEATURE_VI_WIN_RESIZE=y
+#CONFIG_FEATURE_VI_OPTIMIZE_CURSOR=y
+
+#
+# Finding Utilities
+#
+CONFIG_FIND=y
+CONFIG_FEATURE_FIND_PRINT0=y
+CONFIG_FEATURE_FIND_MTIME=y
+CONFIG_FEATURE_FIND_MMIN=y
+CONFIG_FEATURE_FIND_PERM=y
+CONFIG_FEATURE_FIND_TYPE=y
+CONFIG_FEATURE_FIND_XDEV=y
+CONFIG_FEATURE_FIND_NEWER=y
+CONFIG_FEATURE_FIND_INUM=y
+CONFIG_FEATURE_FIND_EXEC=y
+CONFIG_GREP=y
+CONFIG_FEATURE_GREP_EGREP_ALIAS=y
+CONFIG_FEATURE_GREP_FGREP_ALIAS=y
+CONFIG_FEATURE_GREP_CONTEXT=y
+CONFIG_XARGS=y
+CONFIG_FEATURE_XARGS_SUPPORT_CONFIRMATION=y
+CONFIG_FEATURE_XARGS_SUPPORT_QUOTES=y
+CONFIG_FEATURE_XARGS_SUPPORT_TERMOPT=y
+CONFIG_FEATURE_XARGS_SUPPORT_ZERO_TERM=y
+
+#
+# Init Utilities
+#
+# CONFIG_INIT is not set
+# CONFIG_HALT is not set
+# CONFIG_POWEROFF is not set
+# CONFIG_REBOOT is not set
+# CONFIG_MESG is not set
+
+#
+# Login/Password Management Utilities
+#
+# CONFIG_FEATURE_SHADOWPASSWDS is not set
+# CONFIG_USE_BB_SHADOW is not set
+# CONFIG_USE_BB_PWD_GRP is not set
+# CONFIG_USE_BB_PWD_GRP is not set
+# CONFIG_ADDGROUP is not set
+# CONFIG_DELGROUP is not set
+# CONFIG_ADDUSER is not set
+# CONFIG_DELUSER is not set
+# CONFIG_GETTY is not set
+CONFIG_FEATURE_U_W_TMP=y
+# CONFIG_LOGIN is not set
+# CONFIG_PASSWD is not set
+# CONFIG_SU is not set
+# CONFIG_SULOGIN is not set
+# CONFIG_VLOCK is not set
+
+#
+# Linux Ext2 FS Progs
+#
+# CONFIG_CHATTR is not set
+# CONFIG_E2FSCK is not set
+# CONFIG_FSCK is not set
+# CONFIG_LSATTR is not set
+# CONFIG_MKE2FS is not set
+# CONFIG_TUNE2FS is not set
+# CONFIG_E2LABEL is not set
+# CONFIG_FINDFS is not set
+
+#
+# Miscellaneous Utilities
+#
+# CONFIG_ADJTIMEX is not set
+# CONFIG_BBCONFIG is not set
+CONFIG_CROND=y
+# CONFIG_DEBUG_CROND_OPTION is not set
+# CONFIG_FEATURE_CROND_CALL_SENDMAIL is not set
+CONFIG_CRONTAB=y
+CONFIG_DC=y
+# CONFIG_DEVFSD is not set
+# CONFIG_LAST is not set
+CONFIG_LESS=y
+# CONFIG_FEATURE_LESS_BRACKETS is not set
+# CONFIG_FEATURE_LESS_FLAGS is not set
+# CONFIG_FEATURE_LESS_FLAGCS is not set
+# CONFIG_FEATURE_LESS_MARKS is not set
+# CONFIG_FEATURE_LESS_REGEXP is not set
+# CONFIG_HDPARM is not set
+# CONFIG_MAKEDEVS is not set
+# CONFIG_FEATURE_MAKEDEVS_LEAF is not set
+# CONFIG_FEATURE_MAKEDEVS_TABLE is not set
+# CONFIG_MOUNTPOINT is not set
+# CONFIG_MT is not set
+# CONFIG_RUNLEVEL is not set
+# CONFIG_RX is not set
+CONFIG_STRINGS=y
+# CONFIG_SETSID is not set
+# CONFIG_TASKSET is not set
+CONFIG_TIME=y
+CONFIG_WATCHDOG=y
+
+#
+# Linux Module Utilities
+#
+# CONFIG_INSMOD is not set
+# CONFIG_LSMOD is not set
+# CONFIG_MODPROBE is not set
+# CONFIG_RMMOD is not set
+
+#
+# Networking Utilities
+#
+CONFIG_FEATURE_IPV6=y
+CONFIG_ARPING=y
+# CONFIG_DNSD is not set
+# CONFIG_ETHER_WAKE is not set
+# CONFIG_FAKEIDENTD is not set
+# CONFIG_FTPGET is not set
+# CONFIG_FTPPUT is not set
+CONFIG_HOSTNAME=y
+CONFIG_HTTPD=y
+CONFIG_FEATURE_HTTPD_WITHOUT_INETD=y
+CONFIG_FEATURE_HTTPD_RELOAD_CONFIG_SIGHUP=y
+# CONFIG_FEATURE_HTTPD_USAGE_FROM_INETD_ONLY is not set
+CONFIG_FEATURE_HTTPD_BASIC_AUTH=y
+CONFIG_FEATURE_HTTPD_AUTH_MD5=y
+CONFIG_FEATURE_HTTPD_RELOAD_CONFIG_SIGHUP=y
+CONFIG_FEATURE_HTTPD_SETUID=y
+CONFIG_FEATURE_HTTPD_CONFIG_WITH_MIME_TYPES=y
+CONFIG_FEATURE_HTTPD_CGI=y
+CONFIG_FEATURE_HTTPD_SET_REMOTE_PORT_TO_ENV=y
+CONFIG_FEATURE_HTTPD_ENCODE_URL_STR=y
+CONFIG_FEATURE_HTTPD_CONFIG_WITH_SCRIPT_INTERPR=y
+CONFIG_FEATURE_HTTPD_SET_REMOTE_PORT_TO_ENV=y
+CONFIG_IFCONFIG=y
+CONFIG_FEATURE_IFCONFIG_STATUS=y
+# CONFIG_FEATURE_IFCONFIG_SLIP is not set
+CONFIG_FEATURE_IFCONFIG_MEMSTART_IOADDR_IRQ=y
+CONFIG_FEATURE_IFCONFIG_HW=y
+CONFIG_FEATURE_IFCONFIG_BROADCAST_PLUS=y
+CONFIG_IFUPDOWN=y
+# CONFIG_FEATURE_IFUPDOWN_IP is not set
+CONFIG_FEATURE_IFUPDOWN_IP_BUILTIN=y
+CONFIG_FEATURE_IFUPDOWN_IPV4=y
+CONFIG_FEATURE_IFUPDOWN_IPV6=y
+# CONFIG_FEATURE_IFUPDOWN_IPX is not set
+CONFIG_FEATURE_IFUPDOWN_MAPPING=y
+CONFIG_INETD=y
+CONFIG_FEATURE_INETD_SUPPORT_BUILTIN_ECHO=y
+CONFIG_FEATURE_INETD_SUPPORT_BUILTIN_DISCARD=y
+CONFIG_FEATURE_INETD_SUPPORT_BUILTIN_TIME=y
+CONFIG_FEATURE_INETD_SUPPORT_BUILTIN_DAYTIME=y
+CONFIG_FEATURE_INETD_SUPPORT_BUILTIN_CHARGEN=y
+# CONFIG_FEATURE_INETD_RPC is not set
+# CONFIG_IP is not set
+CONFIG_IPCALC=y
+CONFIG_FEATURE_IPCALC_FANCY=y
+# CONFIG_FEATURE_IPCALC_LONG_OPTIONS is not set
+# CONFIG_IPADDR is not set
+# CONFIG_IPLINK is not set
+# CONFIG_IPROUTE is not set
+# CONFIG_IPTUNNEL is not set
+CONFIG_NAMEIF=y
+CONFIG_NC=y
+# CONFIG_NC_GAPING_SECURITY_HOLE is not set
+CONFIG_NETSTAT=y
+CONFIG_NSLOOKUP=y
+CONFIG_PING=y
+CONFIG_FEATURE_FANCY_PING=y
+CONFIG_PING6=y
+CONFIG_FEATURE_FANCY_PING6=y
+CONFIG_ROUTE=y
+CONFIG_TELNET=y
+CONFIG_FEATURE_TELNET_TTYPE=y
+CONFIG_FEATURE_TELNET_AUTOLOGIN=y
+# CONFIG_TELNETD is not set
+CONFIG_TFTP=y
+CONFIG_FEATURE_TFTP_GET=y
+CONFIG_FEATURE_TFTP_PUT=y
+CONFIG_FEATURE_TFTP_BLOCKSIZE=y
+# CONFIG_DEBUG_TFTP is not set
+CONFIG_TRACEROUTE=y
+CONFIG_FEATURE_TRACEROUTE_VERBOSE=y
+CONFIG_FEATURE_TRACEROUTE_SOURCE_ROUTE=y
+# CONFIG_FEATURE_TRACEROUTE_USE_ICMP is not set
+CONFIG_VCONFIG=y
+CONFIG_WGET=y
+CONFIG_FEATURE_WGET_STATUSBAR=y
+CONFIG_FEATURE_WGET_AUTHENTICATION=y
+CONFIG_FEATURE_WGET_IP6_LITERAL=y
+# CONFIG_FEATURE_WGET_LONG_OPTIONS is not set
+CONFIG_ZCIP=y
+
+#
+# udhcp Server/Client
+#
+CONFIG_APP_UDHCPD=y
+CONFIG_APP_UDHCPC=y
+CONFIG_APP_DUMPLEASES=y
+CONFIG_FEATURE_UDHCP_SYSLOG=y
+# CONFIG_FEATURE_UDHCP_DEBUG is not set
+
+#
+# Process Utilities
+#
+CONFIG_FREE=y
+# CONFIG_FUSER is not set
+CONFIG_KILL=y
+CONFIG_KILLALL=y
+CONFIG_PIDOF=y
+# CONFIG_FEATURE_PIDOF_SINGLE is not set
+# CONFIG_FEATURE_PIDOF_OMIT is not set
+CONFIG_PS=y
+# CONFIG_FEATURE_PS_WIDE is not set
+CONFIG_RENICE=y
+CONFIG_BB_SYSCTL=y
+CONFIG_TOP=y
+CONFIG_FEATURE_TOP_CPU_USAGE_PERCENTAGE=y
+FEATURE_CPU_USAGE_PERCENTAGE=y
+CONFIG_UPTIME=y
+CONFIG_SYSCTL=y
+
+#
+# Another Bourne-like Shell
+#
+# CONFIG_FEATURE_SH_IS_ASH is not set
+# CONFIG_FEATURE_SH_IS_HUSH is not set
+# CONFIG_FEATURE_SH_IS_LASH is not set
+# CONFIG_FEATURE_SH_IS_MSH is not set
+CONFIG_FEATURE_SH_IS_NONE=y
+# CONFIG_ASH is not set
+# CONFIG_HUSH is not set
+# CONFIG_LASH is not set
+# CONFIG_MSH is not set
+
+#
+# System Logging Utilities
+#
+CONFIG_SYSLOGD=y
+CONFIG_FEATURE_ROTATE_LOGFILE=y
+CONFIG_FEATURE_REMOTE_LOG=y
+CONFIG_FEATURE_IPC_SYSLOG=y
+CONFIG_FEATURE_IPC_SYSLOG_BUFFER_SIZE=16
+CONFIG_LOGREAD=y
+# CONFIG_FEATURE_LOGREAD_REDUCED_LOCKING is not set
+CONFIG_KLOGD=y
+CONFIG_LOGGER=y
+
+#
+# Linux System Utilities
+#
+CONFIG_DMESG=y
+CONFIG_FBSET=y
+CONFIG_FEATURE_FBSET_FANCY=y
+CONFIG_FEATURE_FBSET_READMODE=y
+# CONFIG_FDFLUSH is not set
+# CONFIG_FDFORMAT is not set
+CONFIG_FDISK=y
+FDISK_SUPPORT_LARGE_DISKS=y
+CONFIG_FEATURE_FDISK_WRITABLE=y
+# CONFIG_FEATURE_AIX_LABEL is not set
+# CONFIG_FEATURE_SGI_LABEL is not set
+# CONFIG_FEATURE_SUN_LABEL is not set
+# CONFIG_FEATURE_OSF_LABEL is not set
+# CONFIG_FEATURE_FDISK_ADVANCED is not set
+CONFIG_FREERAMDISK=y
+# CONFIG_FSCK_MINIX is not set
+# CONFIG_MKFS_MINIX is not set
+# CONFIG_GETOPT is not set
+CONFIG_HEXDUMP=y
+# CONFIG_HWCLOCK is not set
+# CONFIG_IPCRM is not set
+CONFIG_IPCS=y
+CONFIG_LOSETUP=y
+CONFIG_MDEV=y
+CONFIG_FEATURE_MDEV_CONF=y
+# CONFIG_FEATURE_MDEV_EXEC is not set
+CONFIG_MKSWAP=y
+# CONFIG_FEATURE_MKSWAP_V0 is not set
+# CONFIG_MORE is not set
+CONFIG_PIVOT_ROOT=y
+CONFIG_FEATURE_MOUNT_NFS=y
+# CONFIG_RDATE is not set
+# CONFIG_READPROFILE is not set
+# CONFIG_SETARCH is not set
+CONFIG_SWAPONOFF=y
+# CONFIG_SWITCH_ROOT is not set
+CONFIG_MOUNT=y
+CONFIG_UMOUNT=y
+CONFIG_FEATURE_MOUNT_FORCE=y
+# CONFIG_FEATURE_UMOUNT_ALL is not set
+
+#
+# Common options for mount/umount
+#
+CONFIG_FEATURE_MOUNT_LOOP=y
+# CONFIG_FEATURE_MTAB_SUPPORT is not set
+
+#
+# Debugging Options
+#
+# CONFIG_DEBUG is not set
+CONFIG_DEBUG_YANK_SUSv2=y
diff --git a/recipes/busybox/busybox-1.7.2/nylon/xargs-double-size.patch b/recipes/busybox/busybox-1.7.2/nylon/xargs-double-size.patch
new file mode 100644
index 0000000..df64554
--- /dev/null
+++ b/recipes/busybox/busybox-1.7.2/nylon/xargs-double-size.patch
@@ -0,0 +1,13 @@
+--- busybox-1.2.1/findutils/xargs.c.org	2006-09-19 18:18:17.084592997 +0200
++++ busybox-1.2.1/findutils/xargs.c	2006-09-19 18:18:09.820275793 +0200
+@@ -466,8 +466,8 @@
+ 		   have it at 1 meg).  Things will work fine with a large ARG_MAX but it
+ 		   will probably hurt the system more than it needs to; an array of this
+ 		   size is allocated.  */
+-		if (orig_arg_max > 20 * 1024)
+-			orig_arg_max = 20 * 1024;
++		if (orig_arg_max > 40 * 1024)
++			orig_arg_max = 40 * 1024;
+ 		n_max_chars = orig_arg_max;
+ 	}
+ 	max_chars = xmalloc(n_max_chars);
diff --git a/recipes/elvis/elvis_2.2.0.bb b/recipes/elvis/elvis_2.2.0.bb
index c0f9262..f038c6b 100644
--- a/recipes/elvis/elvis_2.2.0.bb
+++ b/recipes/elvis/elvis_2.2.0.bb
@@ -4,8 +4,7 @@ PRIORITY = "optional"
 LICENSE = "Perl Clarified Artistic License"
 DEPENDS = "ncurses"
 
-#SRC_URI = "ftp://ftp.cs.pdx.edu/pub/elvis/elvis-2.2_0.tar.gz"
-SRC_URI = "http://www.fh-wedel.de/pub/elvis/elvis-2.2_0.tar.gz"
+SRC_URI = "ftp://ftp.cs.pdx.edu/pub/elvis/elvis-2.2_0.tar.gz"
 S = "${WORKDIR}/elvis-2.2_0"
 
 CFLAGS_prepend = " -I. -Iosunix -L${STAGING_LIBDIR} "
diff --git a/recipes/glibc/glibc-2.3.3/allow-gcc.patch b/recipes/glibc/glibc-2.3.3/allow-gcc.patch
new file mode 100644
index 0000000..1e38f0e
--- /dev/null
+++ b/recipes/glibc/glibc-2.3.3/allow-gcc.patch
@@ -0,0 +1,73 @@
+--- glibc-2.3.2/configure-orig	2009-03-26 15:46:33.000000000 +0100
++++ glibc-2.3.2/configure	2009-03-26 15:49:15.000000000 +0100
+@@ -3850,67 +3850,6 @@
+ 
+ # These programs are version sensitive.
+ 
+-for ac_prog in ${ac_tool_prefix}gcc ${ac_tool_prefix}cc
+-do
+-  # Extract the first word of "$ac_prog", so it can be a program name with args.
+-set dummy $ac_prog; ac_word=$2
+-echo "$as_me:$LINENO: checking for $ac_word" >&5
+-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+-if test "${ac_cv_prog_CC+set}" = set; then
+-  echo $ECHO_N "(cached) $ECHO_C" >&6
+-else
+-  if test -n "$CC"; then
+-  ac_cv_prog_CC="$CC" # Let the user override the test.
+-else
+-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+-for as_dir in $PATH
+-do
+-  IFS=$as_save_IFS
+-  test -z "$as_dir" && as_dir=.
+-  for ac_exec_ext in '' $ac_executable_extensions; do
+-  if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+-    ac_cv_prog_CC="$ac_prog"
+-    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+-    break 2
+-  fi
+-done
+-done
+-
+-fi
+-fi
+-CC=$ac_cv_prog_CC
+-if test -n "$CC"; then
+-  echo "$as_me:$LINENO: result: $CC" >&5
+-echo "${ECHO_T}$CC" >&6
+-else
+-  echo "$as_me:$LINENO: result: no" >&5
+-echo "${ECHO_T}no" >&6
+-fi
+-
+-  test -n "$CC" && break
+-done
+-
+-if test -z "$CC"; then
+-  ac_verc_fail=yes
+-else
+-  # Found it, now check the version.
+-  echo "$as_me:$LINENO: checking version of $CC" >&5
+-echo $ECHO_N "checking version of $CC... $ECHO_C" >&6
+-  ac_prog_version=`$CC -v 2>&1 | sed -n 's/^.*version \([egcygnustpi-]*[0-9.]*\).*$/\1/p'`
+-  case $ac_prog_version in
+-    '') ac_prog_version="v. ?.??, bad"; ac_verc_fail=yes;;
+-    3.[2-9]*)
+-       ac_prog_version="$ac_prog_version, ok"; ac_verc_fail=no;;
+-    *) ac_prog_version="$ac_prog_version, bad"; ac_verc_fail=yes;;
+-
+-  esac
+-  echo "$as_me:$LINENO: result: $ac_prog_version" >&5
+-echo "${ECHO_T}$ac_prog_version" >&6
+-fi
+-if test $ac_verc_fail = yes; then
+-  critic_missing="$critic_missing gcc"
+-fi
+-
+ for ac_prog in gnumake gmake make
+ do
+   # Extract the first word of "$ac_prog", so it can be a program name with args.
+do_configure_prepend () {
+	unset CFLAGS
+}
diff --git a/recipes/glibc/glibc-package.bbclass b/recipes/glibc/glibc-package.bbclass
index 89fbd1c..20aa3bd 100644
--- a/recipes/glibc/glibc-package.bbclass
+++ b/recipes/glibc/glibc-package.bbclass
@@ -29,7 +29,8 @@ BINARY_LOCALE_ARCHES ?= "arm.*"
 # Set this to zero if you don't want ldconfig in the output package
 USE_LDCONFIG ?= "1"
 
-PACKAGES = "glibc-dbg glibc catchsegv sln nscd ldd localedef glibc-utils glibc-dev glibc-doc glibc-locale libsegfault glibc-extra-nss glibc-thread-db glibc-pcprofile"
+#PACKAGES = "glibc-dbg glibc catchsegv sln nscd ldd localedef glibc-utils glibc-dev glibc-doc glibc-locale libsegfault glibc-extra-nss glibc-thread-db glibc-pcprofile"
+PACKAGES = "glibc catchsegv sln nscd ldd localedef glibc-utils glibc-dev glibc-doc glibc-locale libsegfault glibc-extra-nss glibc-thread-db glibc-pcprofile"
 PACKAGES_DYNAMIC = "glibc-gconv-* glibc-charmap-* glibc-localedata-* locale-base-* glibc-binary-localedata-*"
 
 libc_baselibs = "/lib/libc* /lib/libm* /lib/ld* /lib/libpthread* /lib/libresolv* /lib/librt* /lib/libutil* /lib/libnsl* /lib/libnss_files* /lib/libnss_compat* /lib/libnss_dns* /lib/libdl* /lib/libanl* /lib/libBrokenLocale*"
diff --git a/recipes/glibc/glibc_2.3.2.bb b/recipes/glibc/glibc_2.3.2.bb
index 891d9da..a66b7fe 100644
--- a/recipes/glibc/glibc_2.3.2.bb
+++ b/recipes/glibc/glibc_2.3.2.bb
@@ -103,6 +103,11 @@ SRC_URI = "ftp://ftp.gnu.org/gnu/glibc/glibc-${PV}.tar.gz \
 	   file://etc/ld.so.conf \
  	   file://generate-supported.mk"
 
+SRC_URI_append_mtx-1 = " file://mips-abio32.patch;patch=1 \
+                         file://allow-gcc.patch;patch=1 "
+SRC_URI_append_mtx-2 = " file://mips-abio32.patch;patch=1 \
+                         file://allow-gcc.patch;patch=1 "
+
 S = "${WORKDIR}/glibc-${PV}"
 B = "${WORKDIR}/build-${TARGET_SYS}"
 
diff --git a/recipes/glibc/glibc_2.3.3.bb b/recipes/glibc/glibc_2.3.3.bb
index 03711f7..2b034ba 100644
--- a/recipes/glibc/glibc_2.3.3.bb
+++ b/recipes/glibc/glibc_2.3.3.bb
@@ -48,6 +48,11 @@ SRC_URI = "ftp://ftp.gnu.org/gnu/glibc/glibc-${PV}.tar.gz \
 	   file://etc/ld.so.conf \
  	   file://generate-supported.mk"
 
+SRC_URI_append_mtx-1 = " file://mips-abio32.patch;patch=1 \
+                         file://allow-gcc.patch;patch=1 "
+SRC_URI_append_mtx-2 = " file://mips-abio32.patch;patch=1 \
+                         file://allow-gcc.patch;patch=1 "
+
 S = "${WORKDIR}/glibc-${PV}"
 B = "${WORKDIR}/build-${TARGET_SYS}"
 
diff --git a/recipes/gnutls/gnutls.inc b/recipes/gnutls/gnutls.inc
index e438423..004161a 100644
--- a/recipes/gnutls/gnutls.inc
+++ b/recipes/gnutls/gnutls.inc
@@ -1,6 +1,6 @@
 DESCRIPTION = "GNU Transport Layer Security Library"
 HOMEPAGE = "http://www.gnu.org/software/gnutls/"
-DEPENDS = "zlib libgcrypt lzo"
+DEPENDS = "zlib libgcrypt lzo guile-native"
 LICENSE = "LGPL"
 
 SRC_URI = "ftp://ftp.gnutls.org/pub/gnutls/gnutls-${PV}.tar.bz2"
diff --git a/recipes/hostap/files/hostap-no-bsd.patch b/recipes/hostap/files/hostap-no-bsd.patch
new file mode 100644
index 0000000..c40d98c
--- /dev/null
+++ b/recipes/hostap/files/hostap-no-bsd.patch
@@ -0,0 +1,19 @@
+--- hostapd-0.4.4/driver_madwifi.c-orig	2008-04-16 15:11:49.000000000 +0200
++++ hostapd-0.4.4/driver_madwifi.c	2008-04-16 15:10:38.000000000 +0200
+@@ -26,14 +26,14 @@
+ #include <net80211/ieee80211.h>
+ #ifdef WME_NUM_AC
+ /* Assume this is built against BSD branch of madwifi driver. */
+-#define MADWIFI_BSD
++/*#define MADWIFI_BSD*/
++#include <linux/wireless.h>
+ #include <net80211/_ieee80211.h>
+ #endif /* WME_NUM_AC */
+ #include <net80211/ieee80211_crypto.h>
+ #include <net80211/ieee80211_ioctl.h>
+ 
+ #include <net/if_arp.h>
+-#include <linux/wireless.h>
+ 
+ #include <netinet/in.h>
+ #include <netpacket/packet.h>
diff --git a/recipes/hostap/hostap-conf_1.0.bb b/recipes/hostap/hostap-conf_1.0.bb
index e0909dd..b13eb1d 100644
--- a/recipes/hostap/hostap-conf_1.0.bb
+++ b/recipes/hostap/hostap-conf_1.0.bb
@@ -7,20 +7,23 @@ PACKAGE_ARCH = "all"
 PR = "r9"
 
 SRC_URI = "file://hostap_cs.conf \
-           file://hostap_cs.modalias \
            file://hostap_cs.conf-upstream"
 
+SRC_URI_append = '${@base_conditional("KERNEL_MAJOR_VERSION", "2.6", " file://hostap_cs.modalias  ", "",d)}'
+
 do_compile() {
 }
 
 do_install() {
         install -d ${D}${sysconfdir}/pcmcia
-        install -d ${D}${sysconfdir}/modutils
 
         install -m 0644 ${WORKDIR}/hostap_cs.conf-upstream ${D}${sysconfdir}/pcmcia/hostap_cs.conf
 	cat ${WORKDIR}/hostap_cs.conf >>${D}${sysconfdir}/pcmcia/hostap_cs.conf
 
-	install -m 0644 ${WORKDIR}/hostap_cs.modalias ${D}${sysconfdir}/modutils/hostap_cs.conf
+        if [ -r ${WORKDIR}/hostap_cs.modalias ]; then
+        	install -d ${D}${sysconfdir}/modutils
+		install -m 0644 ${WORKDIR}/hostap_cs.modalias ${D}${sysconfdir}/modutils/hostap_cs.conf
+	fi
 }
 
 pkg_postinst () {
diff --git a/recipes/hostap/hostap-daemon_0.4.4.bb b/recipes/hostap/hostap-daemon_0.4.4.bb
index bece7d1..83a5386 100644
--- a/recipes/hostap/hostap-daemon_0.4.4.bb
+++ b/recipes/hostap/hostap-daemon_0.4.4.bb
@@ -1,3 +1,7 @@
 require hostap-daemon.inc
 
+SRC_URI_append_nylon = "\
+	file://hostap-no-bsd.patch;patch=1"
+
+
 PR = "r2"
diff --git a/recipes/hostap/hostap-daemon_0.5.10.bb b/recipes/hostap/hostap-daemon_0.5.10.bb
index 3fc1d8d..ea49301 100644
--- a/recipes/hostap/hostap-daemon_0.5.10.bb
+++ b/recipes/hostap/hostap-daemon_0.5.10.bb
@@ -5,6 +5,10 @@ PRIORITY = "optional"
 LICENSE = "GPL"
 DEPENDS = "openssl ${@base_contains("COMBINED_FEATURES", "pci", "madwifi-ng", "",d)}"
 PR = "r1"
+DEPENDS_append_mtx-1 = " madwifi-modules"
+DEPENDS_append_mtx-2 = " madwifi-modules"
+CPPFLAGS_append_mtx-1 = " -I${STAGING_INCDIR}/madwifi/"
+CPPFLAGS_append_mtx-2 = " -I${STAGING_INCDIR}/madwifi/"
 
 #we introduce MY_ARCH to get 'armv5te' as arch instead of the misleading 'arm' on armv5te builds
 MY_ARCH := "${PACKAGE_ARCH}"
diff --git a/recipes/images/nylon-image-base.bb b/recipes/images/nylon-image-base.bb
index 27dc165..ac9d81a 100644
--- a/recipes/images/nylon-image-base.bb
+++ b/recipes/images/nylon-image-base.bb
@@ -1,25 +1,37 @@
 inherit image
 inherit nylon-image
 
+IMAGE_FSTYPES = "jffs2 tar.gz"
+
 export IMAGE_BASENAME = "nylon-base"
  
 NYLON_BASE = "base-files base-passwd bash busybox \
 	ipkg initscripts less \
+	madwifi-modules \
 	mtd-utils \
+	nylon-scripts \
 	nano ncurses netbase \
-	openssh sysvinit \
-	tzdata tinylogin udev"
+	openssh \
+	pciutils \
+	sysvinit \
+	tinylogin \
+	tzdata \
+	usbutils \
+	wireless-tools wlan-ng-utils"
 
 DEPENDS += "virtual/kernel less nano"
-IMAGE_INSTALL = "kernel less nano elvis-tiny \
-	${NYLON_BASE} ${BOOTSTRAP_EXTRA_RDEPENDS}"
 
 ## kernel 2.4 ##
-RDEPENDS_append_mtx-1 = " modutils modutils-initscripts modutils-depmod modutils-modinfo"
-RDEPENDS_append_mtx-2 = " modutils modutils-initscripts modutils-depmod modutils-modinfo"
+NYLON_IMAGE_RDEPENDS_mtx-1 = " modutils modutils-initscripts modutils-depmod modutils-modinfo"
+NYLON_IMAGE_RDEPENDS_mtx-2 = " modutils modutils-initscripts modutils-depmod modutils-modinfo"
 ## kernel 2.6 ##
-RDEPENDS_append_mtx-3 = " module-init-tools udev"
-RDEPENDS_append_mtx-3a = " module-init-tools"
+NYLON_IMAGE_RDEPENDS_mtx-3 = " module-init-tools udev"
+NYLON_IMAGE_RDEPENDS_mtx-3a = " module-init-tools"
+
+RDEPENDS_append = ${NYLON_IMAGE_RDEPENDS}
+
+IMAGE_INSTALL = "kernel less nano elvis-tiny \
+	${NYLON_BASE} ${BOOTSTRAP_EXTRA_RDEPENDS} ${NYLON_IMAGE_RDEPENDS}"
 
 IMAGE_LINGUAS = ""
 
diff --git a/recipes/images/nylon-image-extended.bb b/recipes/images/nylon-image-extended.bb
index 7a4e5b6..4fb324d 100644
--- a/recipes/images/nylon-image-extended.bb
+++ b/recipes/images/nylon-image-extended.bb
@@ -61,7 +61,6 @@ KERNEL_MODULES = " \
     kernel-module-ds \
     kernel-module-fat \
     kernel-module-mii \
-    kernel-module-pcmcia-core \
     kernel-module-scsi-mod \
     kernel-module-sd-mod \
     kernel-module-usb-storage \
diff --git a/recipes/images/nylon-image-standard.bb b/recipes/images/nylon-image-standard.bb
index 5f79402..480353c 100644
--- a/recipes/images/nylon-image-standard.bb
+++ b/recipes/images/nylon-image-standard.bb
@@ -3,15 +3,22 @@ require nylon-image-base.bb
 export IMAGE_BASENAME = "nylon-standard"
 
 NYLON_STANDARD = "\
-	hostap-utils \
+	dash \
+	dnsmasq \
+	hostap-daemon hostap-utils \
 	linux-hotplug \
 	ifplugd \
+	iproute2 \
+	madwifi-modules \
+	nylon-config \
 	olsrd \
 	ppp \
 	rp-pppoe \
-	shorewall \
+	simple-firewall \
 	tcpdump \
-	wpa-supplicant"
+	usbutils \
+	wpa-supplicant \
+	yamonenv"
 
 DEPENDS += "hostap-modules ntp \
 	${NYLON_STANDARD}"
diff --git a/recipes/initscripts/initscripts-1.0/bootmisc.sh b/recipes/initscripts/initscripts-1.0/bootmisc.sh
index dde1209..d19477b 100755
--- a/recipes/initscripts/initscripts-1.0/bootmisc.sh
+++ b/recipes/initscripts/initscripts-1.0/bootmisc.sh
@@ -66,7 +66,7 @@ fi
 # Set the system clock from hardware clock
 # If the timestamp is 1 day or more recent than the current time,
 # use the timestamp instead.
-/etc/init.d/hwclock.sh start
+test -x /etc/init.d/hwclock.sh && /etc/init.d/hwclock.sh start
 if test -e /etc/timestamp
 then
 	SYSTEMDATE=`date "+%Y%m%d"`
diff --git a/recipes/libusb/libusb-compat-0.1.0/gcc-3-compatibility.patch b/recipes/libusb/libusb-compat-0.1.0/gcc-3-compatibility.patch
new file mode 100644
index 0000000..f07b538
--- /dev/null
+++ b/recipes/libusb/libusb-compat-0.1.0/gcc-3-compatibility.patch
@@ -0,0 +1,22 @@
+--- libusb-compat-0.1.0/configure.ac-orig	2009-02-26 15:30:51.000000000 +0100
++++ libusb-compat-0.1.0/configure.ac	2009-02-26 15:31:04.000000000 +0100
+@@ -55,7 +55,7 @@
+ CFLAGS="$saved_cflags"
+ 
+ AC_DEFINE([API_EXPORTED], [__attribute__((visibility("default")))], [Default visibility])
+-AM_CFLAGS="-std=gnu99 $inline_cflags -Wall -Wundef -Wunused -Wstrict-prototypes -Werror-implicit-function-declaration -Wno-pointer-sign -Wshadow"
++AM_CFLAGS="-std=gnu99 $inline_cflags -Wall -Wundef -Wunused -Wstrict-prototypes -Werror-implicit-function-declaration -Wshadow"
+ AC_SUBST(AM_CFLAGS)
+ 
+ AC_CONFIG_FILES([libusb.pc] [libusb-config] [Makefile] [libusb/Makefile] [examples/Makefile])
+--- libusb-compat-0.1.0/libusb/Makefile.am-orig	2009-02-26 15:33:30.000000000 +0100
++++ libusb-compat-0.1.0/libusb/Makefile.am	2009-02-26 15:33:40.000000000 +0100
+@@ -2,7 +2,7 @@
+ lib_LTLIBRARIES = libusb.la
+ 
+ libusb_la_SOURCES = core.c usbi.h
+-libusb_la_CFLAGS = -fvisibility=hidden $(AM_CFLAGS) $(LIBUSB_1_0_CFLAGS)
++libusb_la_CFLAGS = $(AM_CFLAGS) $(LIBUSB_1_0_CFLAGS)
+ libusb_la_LIBADD = $(LIBUSB_1_0_LIBS)
+ libusb_la_LDFLAGS = -version-info $(LT_MAJOR):$(LT_REVISION):$(LT_AGE) \
+ 	-release 0.1
diff --git a/recipes/libusb/libusb-compat_0.1.0.bb b/recipes/libusb/libusb-compat_0.1.0.bb
index 8877651..4869440 100644
--- a/recipes/libusb/libusb-compat_0.1.0.bb
+++ b/recipes/libusb/libusb-compat_0.1.0.bb
@@ -11,7 +11,8 @@ DEPENDS = "libusb1"
 
 SRC_URI = "${SOURCEFORGE_MIRROR}/libusb/libusb-compat-${PV}.tar.bz2 \
           "
-
+SRC_URI_append_nylon = " file://gcc-3-compatibility.patch;patch=1 \
+"
 inherit autotools pkgconfig binconfig lib_package
 
 PARALLEL_MAKE = ""
diff --git a/recipes/libusb/libusb1-1.0.0/gcc-3-compatibility.patch b/recipes/libusb/libusb1-1.0.0/gcc-3-compatibility.patch
new file mode 100644
index 0000000..d1bc680
--- /dev/null
+++ b/recipes/libusb/libusb1-1.0.0/gcc-3-compatibility.patch
@@ -0,0 +1,22 @@
+--- libusb-1.0.0/configure.ac-orig	2009-02-26 13:18:31.000000000 +0100
++++ libusb-1.0.0/configure.ac	2009-02-26 13:18:43.000000000 +0100
+@@ -62,7 +62,7 @@
+ CFLAGS="$saved_cflags"
+ 
+ AC_DEFINE([API_EXPORTED], [__attribute__((visibility("default")))], [Default visibility])
+-AM_CFLAGS="-std=gnu99 $inline_cflags -Wall -Wundef -Wunused -Wstrict-prototypes -Werror-implicit-function-declaration -Wno-pointer-sign -Wshadow"
++AM_CFLAGS="-std=gnu99 $inline_cflags -Wall -Wundef -Wunused -Wstrict-prototypes -Werror-implicit-function-declaration -Wshadow"
+ AC_SUBST(AM_CFLAGS)
+ 
+ AC_CONFIG_FILES([libusb-1.0.pc] [Makefile] [libusb/Makefile] [examples/Makefile] [doc/Makefile] [doc/doxygen.cfg])
+--- libusb-1.0.0/libusb/Makefile.am-orig	2009-02-26 13:18:11.000000000 +0100
++++ libusb-1.0.0/libusb/Makefile.am	2009-02-26 13:18:23.000000000 +0100
+@@ -8,7 +8,7 @@
+ OS_SRC = $(LINUX_USBFS_SRC)
+ endif
+ 
+-libusb_1_0_la_CFLAGS = -fvisibility=hidden $(AM_CFLAGS) -pthread
++libusb_1_0_la_CFLAGS = $(AM_CFLAGS) -pthread
+ libusb_1_0_la_SOURCES = libusbi.h core.c descriptor.c io.c sync.c $(OS_SRC)
+ libusb_1_0_la_LIBADD = -lrt
+ 
diff --git a/recipes/libusb/libusb1_1.0.0.bb b/recipes/libusb/libusb1_1.0.0.bb
index 8450a7c..978d819 100644
--- a/recipes/libusb/libusb1_1.0.0.bb
+++ b/recipes/libusb/libusb1_1.0.0.bb
@@ -9,6 +9,8 @@ PR = "r0"
 SRC_URI = "\
   ${SOURCEFORGE_MIRROR}/libusb/libusb-${PV}.tar.bz2 \
 "
+SRC_URI_append_nylon = " file://gcc-3-compatibility.patch;patch=1 \
+"
 S = "${WORKDIR}/libusb-${PV}"
 
 inherit autotools pkgconfig binconfig lib_package
diff --git a/recipes/linux-libc-headers/linux-libc-headers_2.6.18+2.6.19-rc1.bb b/recipes/linux-libc-headers/linux-libc-headers_2.6.18+2.6.19-rc1.bb
index 73e9b07..3a6de1c 100644
--- a/recipes/linux-libc-headers/linux-libc-headers_2.6.18+2.6.19-rc1.bb
+++ b/recipes/linux-libc-headers/linux-libc-headers_2.6.18+2.6.19-rc1.bb
@@ -49,9 +49,12 @@ do_stage () {
 }
 
 do_stage_append_nylon () {
-	cp -pPR include/asm-${ARCH}/* ${STAGING_INCDIR}/asm/
-	cp -pPR include/asm-${ARCH}/* ${CROSS_DIR}/${TARGET_SYS}/include/asm/
-	cp -pPR include/linux/* ${STAGING_INCDIR}/linux/
-	cp -pPR include/linux/* ${CROSS_DIR}/${TARGET_SYS}/include/linux/
+	install -d ${STAGING_INCDIR}/asm/
+	cp -vpPR include/asm-${ARCH}/* ${STAGING_INCDIR}/asm/
+	install -d ${CROSS_DIR}/${TARGET_SYS}/include/asm/
+	cp -vpPR include/asm-${ARCH}/* ${CROSS_DIR}/${TARGET_SYS}/include/asm/
+	cp -vpPR include/linux/* ${STAGING_INCDIR}/linux/
+	install -d ${CROSS_DIR}/${TARGET_SYS}/include/linux/
+	cp -vpPR include/linux/* ${CROSS_DIR}/${TARGET_SYS}/include/linux/
 }
 
diff --git a/recipes/linux-libc-headers/linux-libc-headers_2.6.18.bb b/recipes/linux-libc-headers/linux-libc-headers_2.6.18.bb
index d71b68a..60d621b 100644
--- a/recipes/linux-libc-headers/linux-libc-headers_2.6.18.bb
+++ b/recipes/linux-libc-headers/linux-libc-headers_2.6.18.bb
@@ -69,9 +69,12 @@ do_stage () {
 }
 
 do_stage_append_nylon () {
-	cp -pPR include/asm-${ARCH}/* ${STAGING_INCDIR}/asm/
-	cp -pPR include/asm-${ARCH}/* ${CROSS_DIR}/${TARGET_SYS}/include/asm/
-	cp -pPR include/linux/* ${STAGING_INCDIR}/linux/
-	cp -pPR include/linux/* ${CROSS_DIR}/${TARGET_SYS}/include/linux/
+	install -d ${STAGING_INCDIR}/asm/
+	cp -vpPR include/asm-${ARCH}/* ${STAGING_INCDIR}/asm/
+	install -d ${CROSS_DIR}/${TARGET_SYS}/include/asm/
+	cp -vpPR include/asm-${ARCH}/* ${CROSS_DIR}/${TARGET_SYS}/include/asm/
+	cp -vpPR include/linux/* ${STAGING_INCDIR}/linux/
+	install -d ${CROSS_DIR}/${TARGET_SYS}/include/linux/
+	cp -vpPR include/linux/* ${CROSS_DIR}/${TARGET_SYS}/include/linux/
 }
 
diff --git a/recipes/linux/linux-mtx-1-2.4.27/06-zboot-2.4.26.patch b/recipes/linux/linux-mtx-1-2.4.27/06-zboot-2.4.26.patch
index 4e8a757..f4a8754 100644
--- a/recipes/linux/linux-mtx-1-2.4.27/06-zboot-2.4.26.patch
+++ b/recipes/linux/linux-mtx-1-2.4.27/06-zboot-2.4.26.patch
@@ -1,6 +1,15 @@
 diff -Naru linux/arch/mips/Makefile linux.spi/arch/mips/Makefile
 --- linux/arch/mips/Makefile	2004-05-06 15:23:41.000000000 -0400
 +++ linux.spi/arch/mips/Makefile	2004-05-11 23:19:24.000000000 -0400
+@@ -17,7 +17,7 @@
+ # Select the object file format to substitute into the linker script.
+ #
+ ifdef CONFIG_CPU_LITTLE_ENDIAN
+-tool-prefix	= mipsel-linux-
++tool-prefix	= mipsel-nylon-linux-
+ ld-emul		= elf32ltsmip
+ else
+ tool-prefix	= mips-linux-
 @@ -29,6 +29,8 @@
  endif
  
diff --git a/recipes/linux/linux-mtx-1-2.4.27/32-usbserial-stalled-hack.diff b/recipes/linux/linux-mtx-1-2.4.27/32-usbserial-stalled-hack.diff
index bfc1af9..1651bd5 100644
--- a/recipes/linux/linux-mtx-1-2.4.27/32-usbserial-stalled-hack.diff
+++ b/recipes/linux/linux-mtx-1-2.4.27/32-usbserial-stalled-hack.diff
@@ -1,5 +1,5 @@
---- linux-2.4.27-mtx1/drivers/usb/serial/usbserial.c	2005-08-28 20:23:40.000000000 +0200
-+++ linux-2.4.27-mtx1/drivers/usb/serial/usbserial.c	2005-08-28 20:23:12.000000000 +0200
+--- linux-old/drivers/usb/serial/usbserial.c	2005-08-28 20:23:40.000000000 +0200
++++ linux/drivers/usb/serial/usbserial.c	2005-08-28 20:23:12.000000000 +0200
 @@ -499,6 +499,19 @@
  		/* get_usb_serial checks port->tty, so cannot be used */
  		serial = port->serial;
diff --git a/recipes/linux/linux-mtx-1-2.4.27/33-usbserial-bulk_in_size-4096.diff b/recipes/linux/linux-mtx-1-2.4.27/33-usbserial-bulk_in_size-4096.diff
index e615a92..9169005 100644
--- a/recipes/linux/linux-mtx-1-2.4.27/33-usbserial-bulk_in_size-4096.diff
+++ b/recipes/linux/linux-mtx-1-2.4.27/33-usbserial-bulk_in_size-4096.diff
@@ -1,5 +1,53 @@
---- linux/drivers/usb/serial/usbserial.c~33-usbserial-bulk_in_size-4096.diff	2006-03-31 15:05:46.674445000 +0200
-+++ linux/drivers/usb/serial/usbserial.c	2006-04-07 12:23:56.970400500 +0200
+--- linux/drivers/usb/acm.c.orig	2006-04-07 13:56:33.837683000 +0200
++++ linux/drivers/usb/acm.c	2006-04-07 12:14:37.995466750 +0200
+@@ -155,6 +155,11 @@
+ 	unsigned char clocal;				/* termios CLOCAL */
+ };
+ 
++/* global params controlling max sizes for read, write, control */
++static int maxszr = 0;
++static int maxszw = 0;
++static int maxszc = 0;
++
+ static struct usb_driver acm_driver;
+ static struct tty_driver acm_tty_driver;
+ static struct acm *acm_table[ACM_TTY_MINORS];
+@@ -573,9 +578,13 @@
+ 			}
+ 			memset(acm, 0, sizeof(struct acm));
+ 
+-			ctrlsize = epctrl->wMaxPacketSize;
+-			readsize = epread->wMaxPacketSize;
+-			acm->writesize = epwrite->wMaxPacketSize;
++			ctrlsize = (epctrl->wMaxPacketSize > maxszc)?
++				epctrl->wMaxPacketSize: maxszc;
++			readsize = (epread->wMaxPacketSize > maxszr)?
++				epread->wMaxPacketSize: maxszr;
++			acm->writesize = (epwrite->wMaxPacketSize > maxszw)?
++				epwrite->wMaxPacketSize: maxszw;
++
+ 			acm->iface = cfacm->interface + j;
+ 			acm->minor = minor;
+ 			acm->dev = dev;
+@@ -740,6 +749,16 @@
+ module_init(acm_init);
+ module_exit(acm_exit);
+ 
++
++MODULE_PARM(maxszr, "i");
++MODULE_PARM_DESC(maxszr, "User specified USB endpoint read size");
++
++MODULE_PARM(maxszw, "i");
++MODULE_PARM_DESC(maxszw, "User specified USB endpoint write size");
++
++MODULE_PARM(maxszc, "i");
++MODULE_PARM_DESC(maxszc, "User specified USB endpoint control size");
++
+ MODULE_AUTHOR( DRIVER_AUTHOR );
+ MODULE_DESCRIPTION( DRIVER_DESC );
+ MODULE_LICENSE("GPL");
+--- linux/drivers/usb/serial/usbserial.c-orig	2009-02-27 23:34:48.000000000 +0100
++++ linux/drivers/usb/serial/usbserial.c	2009-02-27 23:34:54.000000000 +0100
 @@ -332,6 +332,9 @@
  static __u16	vendor	= 0x05f9;
  static __u16	product	= 0xffff;
@@ -7,7 +55,7 @@
 +static int count_smaller64 = 0;
 +static int count_bigger64 = 0;
 +
- static struct usb_device_id generic_device_ids[5]; /* Initially all zeroes. */
+ static struct usb_device_id generic_device_ids[2]; /* Initially all zeroes. */
  
  /* All of the device info needed for the Generic Serial Converter */
 @@ -396,6 +399,10 @@
@@ -66,7 +114,7 @@
  		port->interrupt_in_endpointAddress = endpoint->bEndpointAddress;
  		port->interrupt_in_buffer = kmalloc (buffer_size, GFP_KERNEL);
  		if (!port->interrupt_in_buffer) {
-@@ -1807,6 +1825,7 @@
+@@ -1798,6 +1816,7 @@
  
  static void __exit usb_serial_exit(void)
  {
@@ -74,7 +122,7 @@
  
  #ifdef CONFIG_USB_SERIAL_GENERIC
  	/* remove our generic driver */
-@@ -1874,6 +1893,15 @@
+@@ -1865,6 +1884,15 @@
  MODULE_PARM(debug, "i");
  MODULE_PARM_DESC(debug, "Debug enabled or not");
  
@@ -90,51 +138,3 @@
  #ifdef CONFIG_USB_SERIAL_GENERIC
  MODULE_PARM(vendor, "h");
  MODULE_PARM_DESC(vendor, "User specified USB idVendor");
---- linux/drivers/usb/acm.c.orig	2006-04-07 13:56:33.837683000 +0200
-+++ linux/drivers/usb/acm.c	2006-04-07 12:14:37.995466750 +0200
-@@ -155,6 +155,11 @@
- 	unsigned char clocal;				/* termios CLOCAL */
- };
- 
-+/* global params controlling max sizes for read, write, control */
-+static int maxszr = 0;
-+static int maxszw = 0;
-+static int maxszc = 0;
-+
- static struct usb_driver acm_driver;
- static struct tty_driver acm_tty_driver;
- static struct acm *acm_table[ACM_TTY_MINORS];
-@@ -573,9 +578,13 @@
- 			}
- 			memset(acm, 0, sizeof(struct acm));
- 
--			ctrlsize = epctrl->wMaxPacketSize;
--			readsize = epread->wMaxPacketSize;
--			acm->writesize = epwrite->wMaxPacketSize;
-+			ctrlsize = (epctrl->wMaxPacketSize > maxszc)?
-+				epctrl->wMaxPacketSize: maxszc;
-+			readsize = (epread->wMaxPacketSize > maxszr)?
-+				epread->wMaxPacketSize: maxszr;
-+			acm->writesize = (epwrite->wMaxPacketSize > maxszw)?
-+				epwrite->wMaxPacketSize: maxszw;
-+
- 			acm->iface = cfacm->interface + j;
- 			acm->minor = minor;
- 			acm->dev = dev;
-@@ -740,6 +749,16 @@
- module_init(acm_init);
- module_exit(acm_exit);
- 
-+
-+MODULE_PARM(maxszr, "i");
-+MODULE_PARM_DESC(maxszr, "User specified USB endpoint read size");
-+
-+MODULE_PARM(maxszw, "i");
-+MODULE_PARM_DESC(maxszw, "User specified USB endpoint write size");
-+
-+MODULE_PARM(maxszc, "i");
-+MODULE_PARM_DESC(maxszc, "User specified USB endpoint control size");
-+
- MODULE_AUTHOR( DRIVER_AUTHOR );
- MODULE_DESCRIPTION( DRIVER_DESC );
- MODULE_LICENSE("GPL");
diff --git a/recipes/linux/linux-mtx-1-2.4.27/43-usbserial-27-32-backport.diff b/recipes/linux/linux-mtx-1-2.4.27/43-usbserial-27-32-backport.diff
new file mode 100644
index 0000000..6a98f76
--- /dev/null
+++ b/recipes/linux/linux-mtx-1-2.4.27/43-usbserial-27-32-backport.diff
@@ -0,0 +1,33 @@
+--- linux/drivers/usb/serial/usbserial.c-27	2006-06-27 10:26:06.294476250 +0200
++++ linux/drivers/usb/serial/usbserial.c	2006-06-27 10:30:31.011020000 +0200
+@@ -528,8 +528,18 @@
+ 		down(&port->sem);
+ 		dbg("%s - port %d len %d backlog %d", __FUNCTION__,
+ 		    port->number, job->len, port->write_backlog);
+-		if (port->tty != NULL)
+-			__serial_write(port, 0, job->buff, job->len);
++		if (port->tty != NULL) {
++			int rc;
++			int sent = 0;
++			while (sent < job->len) {
++				rc = __serial_write(port, 0, job->buff + sent, job->len - sent);
++				if ((rc < 0) || signal_pending(current))
++					break;
++				sent += rc;
++				if ((sent < job->len) && current->need_resched)
++					schedule();
++			}
++		}
+ 		up(&port->sem);
+ 
+ 		spin_lock_irqsave(&post_lock, flags);
+@@ -725,6 +735,9 @@
+ 	struct usb_serial_port *port = (struct usb_serial_port *) tty->driver_data;
+ 	int rc;
+ 
++	if (!port)
++		return -ENODEV;
++
+ 	if (!in_interrupt()) {
+ 		/*
+ 		 * Run post_list to reduce a possiblity of reordered writes.
diff --git a/recipes/linux/linux-mtx-1-2.4.27/45-acm-tty-and-sb2.patch b/recipes/linux/linux-mtx-1-2.4.27/45-acm-tty-and-sb2.patch
new file mode 100644
index 0000000..4561fac
--- /dev/null
+++ b/recipes/linux/linux-mtx-1-2.4.27/45-acm-tty-and-sb2.patch
@@ -0,0 +1,721 @@
+--- linux/drivers/usb/acm.c-orig	2007-04-13 18:32:16.352672105 +0200
++++ linux/drivers/usb/acm.c	2007-04-13 18:33:21.063526545 +0200
+@@ -124,6 +124,9 @@
+ #define ACM_CTRL_PARITY		0x20
+ #define ACM_CTRL_OVERRUN	0x40
+ 
++// some devices don't have one comm and one data interface, but only one interface with endpoints for comm and data
++#define SINGLE_IF_ACM   0x01
++
+ /*
+  * Line speed and caracter encoding.
+  */
+@@ -139,6 +142,8 @@
+  * Internal driver structures.
+  */
+ 
++#define TD_SIZE 16384
++
+ struct acm {
+ 	struct usb_device *dev;				/* the coresponding usb device */
+ 	struct usb_interface *iface;			/* the interfaces - +0 control +1 data */
+@@ -153,12 +158,23 @@
+ 	unsigned int minor;				/* acm minor number */
+ 	unsigned char throttle;				/* throttled by tty layer */
+ 	unsigned char clocal;				/* termios CLOCAL */
++	unsigned long throttle_start;
++	unsigned char resubmit_to_unthrottle;		/* Leftover data from last operation */
++	unsigned char *throttle_data;
++	int td_len;
++	int td_busy;
++	unsigned char used_interfaces;
++	struct semaphore mutex;
+ };
+ 
++#define	mutex_lock(x)	down(x)
++#define	mutex_unlock(x)	up(x)
++
+ /* global params controlling max sizes for read, write, control */
+ static int maxszr = 0;
+ static int maxszw = 0;
+ static int maxszc = 0;
++static int nonlegacy = 0;
+ 
+ static struct usb_driver acm_driver;
+ static struct tty_driver acm_tty_driver;
+@@ -167,6 +183,95 @@
+ #define ACM_READY(acm)	(acm && acm->dev && acm->used)
+ 
+ /*
++ * Helper functions to optimize throttleing
++ */
++static int
++acm_fill_tty(struct urb *urb, struct tty_struct *tty, unsigned char *data, int length)
++{
++	struct acm *acm = urb->context;
++	int n = 0;
++	/*printk("acm_fill_tty: %d bytes\n", length);*/
++	if (!urb->status && !acm->throttle)  {
++		for (n = 0; n < length && !acm->throttle; n++) {
++			/* if we insert more than TTY_FLIPBUF_SIZE characters,
++			 * we drop them. */
++			if (tty->flip.count >= TTY_FLIPBUF_SIZE) {
++				tty_flip_buffer_push(tty);
++			}
++			tty_insert_flip_char(tty, data[n], 0);
++		}
++		tty_flip_buffer_push(tty);
++	}
++	/*printk("copied %d bytes.\n", n);*/
++	return n;
++}
++
++static int
++acm_shift_if_throttle(unsigned char *data, int *length, int shift_by)
++{
++	if (shift_by < *length) {
++		dbg("need to shift uncopied %d bytes to front.", *length - shift_by);
++		memmove(data, data + shift_by, *length - shift_by);
++		*length -= shift_by;
++		return 1;
++	}
++	return 0;
++}
++
++static int
++acm_buffer_if_thottle(struct acm *acm, unsigned char *data, int start, int *length)
++{
++	int copied = *length;
++	if (start < *length) {
++		int space = TD_SIZE - acm->td_len;
++		int needed = *length - start;
++		copied = (space < needed)? space: needed;
++		dbg("need to push %d to throttle buffer, can copy %d.",
++				needed, copied);
++		memcpy(acm->throttle_data + acm->td_len, data, copied);
++		acm->td_len += copied;
++		*length -= copied;
++	}
++	return copied;
++}
++
++static int
++acm_empty_throttle(struct urb *urb, struct tty_struct *tty)
++{
++	unsigned long flags;
++	struct acm *acm = urb->context;
++
++	save_flags(flags);
++	cli();
++
++	if (acm->td_busy) {
++		restore_flags(flags);
++		return 0;
++	}
++	acm->td_busy = 1;
++	restore_flags(flags);
++
++	if (acm->td_len > 0) {
++
++		dbg("acm_empty_throttle: trying to empty throttle buffer: %d bytes.",
++		  acm->td_len);
++
++		/* if there has been something left from previous operations
++		 * we try to complete this before looking at the urb */
++		int copied = acm_fill_tty(urb, tty, acm->throttle_data, acm->td_len);
++		if (acm_shift_if_throttle(acm->throttle_data, &acm->td_len, copied)) {
++			/* we were unable to empty the throttle data, so we can't
++			 * copy anything more now */
++			acm->td_busy = 0;
++			return 0;
++		}
++		acm->td_len = 0;
++	}
++	acm->td_busy = 0;
++	return 1;
++}
++
++/*
+  * Functions for ACM control messages.
+  */
+ 
+@@ -174,7 +279,10 @@
+ {
+ 	int retval = usb_control_msg(acm->dev, usb_sndctrlpipe(acm->dev, 0),
+ 		request, USB_RT_ACM, value, acm->iface[0].altsetting[0].bInterfaceNumber, buf, len, HZ * 5);
+-	dbg("acm_control_msg: rq: 0x%02x val: %#x len: %#x result: %d", request, value, len, retval);
++	if (retval < 0)
++		err("acm_control_msg: rq: 0x%02x val: %#x len: %#x result: %d", request, value, len, retval);
++	else
++		dbg("acm_control_msg: rq: 0x%02x val: %#x len: %#x result: %d", request, value, len, retval);
+ 	return retval < 0 ? retval : 0;
+ }
+ 
+@@ -191,10 +299,12 @@
+ 	struct acm *acm = urb->context;
+ 	struct usb_ctrlrequest *dr = urb->transfer_buffer;
+ 	unsigned char *data = (unsigned char *)(dr + 1);
+-	int newctrl;
++	int newctrl, s1, s2;
+ 
+ 	if (!ACM_READY(acm)) return;
+ 
++	//err("acm_ctrl_irq %p %i", urb, dr->bRequestType);
++
+ 	if (urb->status < 0) {
+ 		dbg("nonzero ctrl irq status received: %d", urb->status);
+ 		return;
+@@ -226,8 +336,15 @@
+ 
+ 			return;
+ 
++		case 0x2a:
++			s1 = le32_to_cpup((__u32 *) data);
++			s2 = le32_to_cpup((__u32 *) (data+4));
++
++			dbg("acm.c: ctrl 0x2a: idx %i len %i speed %i %i", dr->wIndex, dr->wLength, s1, s2);
++			return;
++
+ 		default:
+-			dbg("unknown control event received: request %d index %d len %d data0 %d data1 %d",
++			err("unknown control event received: request %d index %d len %d data0 %d data1 %d",
+ 				dr->bRequest, dr->wIndex, dr->wLength, data[0], data[1]);
+ 			return;
+ 	}
+@@ -238,36 +355,39 @@
+ 	struct acm *acm = urb->context;
+ 	struct tty_struct *tty = acm->tty;
+ 	unsigned char *data = urb->transfer_buffer;
+-	int i = 0;
++	int copied = 0;
++	int buffered = 0;
+ 
+ 	if (!ACM_READY(acm)) return;
+ 
+-	if (urb->status)
+-		dbg("nonzero read bulk status received: %d", urb->status);
++	if (urb->status) {
++		err("nonzero read bulk status received: %d", urb->status);
++	}
+ 
+-	if (!urb->status && !acm->throttle)  {
+-		for (i = 0; i < urb->actual_length && !acm->throttle; i++) {
+-			/* if we insert more than TTY_FLIPBUF_SIZE characters,
+-			 * we drop them. */
+-			if (tty->flip.count >= TTY_FLIPBUF_SIZE) {
+-				tty_flip_buffer_push(tty);
+-			}
+-			tty_insert_flip_char(tty, data[i], 0);
+-		}
+-		tty_flip_buffer_push(tty);
++	if (!acm_empty_throttle(urb, tty)) {
++		dbg("could not empty throttle buffer, entering throttle state, acm->td_busy: %d.", acm->td_busy);
+ 	}
+ 
++	/* got here, either there was nothing in the throttle data or it could
++	 * all be copied without throttleing again */
++	copied = acm_fill_tty(urb, tty, data, urb->actual_length);
+ 	if (acm->throttle) {
+-		memmove(data, data + i, urb->actual_length - i);
+-		urb->actual_length -= i;
+-		return;
++		int length = urb->actual_length;
++		buffered = acm_buffer_if_thottle(acm, data, copied, &urb->actual_length);
++		if (buffered < length - copied
++				&& acm_shift_if_throttle(data, &urb->actual_length, copied + buffered)) {
++			dbg("need to resubmit to unthrottle\n");
++			acm->resubmit_to_unthrottle = 1;
++			return;
++		}
+ 	}
+ 
+ 	urb->actual_length = 0;
+ 	urb->dev = acm->dev;
+ 
+-	if (usb_submit_urb(urb))
++	if (usb_submit_urb(urb)) {
+ 		dbg("failed resubmitting read urb");
++	}
+ }
+ 
+ static void acm_write_bulk(struct urb *urb)
+@@ -283,6 +403,9 @@
+ 	mark_bh(IMMEDIATE_BH);
+ }
+ 
++static int unlinking_in_progress=0;
++static int closing=0;
++
+ static void acm_softint(void *private)
+ {
+ 	struct acm *acm = private;
+@@ -306,34 +429,57 @@
+ 
+ 	if (!acm || !acm->dev) return -EINVAL;
+ 
++	mutex_lock (&acm->mutex);
++
+ 	tty->driver_data = acm;
+ 	acm->tty = tty;
+ 
+ 	MOD_INC_USE_COUNT;
+ 
+-        lock_kernel();
++	if ( closing )
++		err("acm_tty_open: potential possibility of race condition detected");
++
++	if ( unlinking_in_progress ) {
++		err("acm_tty_open: cannot open because unlinking_in_progress %i", acm->used);
++		mutex_unlock (&acm->mutex);
++		return -1;
++	}
+ 
+-	if (acm->used++) {
+-                unlock_kernel();
+-                return 0;
+-        }
++	if (acm->used) {
++		acm->used++;
++		mutex_unlock (&acm->mutex);
++		return 0;
++	}
+ 
+-        unlock_kernel();
++	unlinking_in_progress=1;
++	err("acm_tty_open: %i %p !!", acm->used, tty);
++
++	acm->resubmit_to_unthrottle = 0;
++	acm->td_len = 0;
++	acm->td_busy = 0;
+ 
+ 	acm->ctrlurb.dev = acm->dev;
+ 	if (usb_submit_urb(&acm->ctrlurb))
+-		dbg("usb_submit_urb(ctrl irq) failed");
++		dbg("acm open: usb_submit_urb(ctrl irq) failed");
++	else
++		dbg("acm open: ctrlurb %p submitted", &acm->ctrlurb);
++
++	acm->used++;
++	acm_set_control(acm, acm->ctrlout = ACM_CTRL_DTR | ACM_CTRL_RTS);
+ 
+ 	acm->readurb.dev = acm->dev;
+ 	if (usb_submit_urb(&acm->readurb))
+-		dbg("usb_submit_urb(read bulk) failed");
+-
+-	acm_set_control(acm, acm->ctrlout = ACM_CTRL_DTR | ACM_CTRL_RTS);
++		dbg("acm open: usb_submit_urb(read bulk) failed");
++	else
++		dbg("acm open: readurb %p submitted", &acm->readurb);
+ 
+-	/* force low_latency on so that our tty_push actually forces the data through, 
++	/* force low_latency on so that our tty_push actually forces the data through,
+ 	   otherwise it is scheduled, and with high data rates data can get lost. */
+ 	tty->low_latency = 1;
+ 
++	unlinking_in_progress=0;
++	mutex_unlock (&acm->mutex);
++
+ 	return 0;
+ }
+ 
+@@ -343,19 +489,35 @@
+ 
+ 	if (!acm || !acm->used) return;
+ 
+-	if (!--acm->used) {
+-		if (acm->dev) {
+-			acm_set_control(acm, acm->ctrlout = 0);
+-			usb_unlink_urb(&acm->ctrlurb);
+-			usb_unlink_urb(&acm->writeurb);
+-			usb_unlink_urb(&acm->readurb);
+-		} else {
+-			tty_unregister_devfs(&acm_tty_driver, acm->minor);
+-			acm_table[acm->minor] = NULL;
+-			kfree(acm);
+-		}
++	mutex_lock (&acm->mutex);
++
++	closing = 1;
++	if (--acm->used) {
++		closing=0;
++		MOD_DEC_USE_COUNT;
++		mutex_unlock (&acm->mutex);
++		return;
++	}
++	unlinking_in_progress = 1;
++
++	err("acm_tty_close: %i %p", acm->used, tty);
++
++	if (acm->dev) {
++		acm_set_control(acm, acm->ctrlout = 0);
++		usb_unlink_urb(&acm->ctrlurb);
++		usb_unlink_urb(&acm->writeurb);
++		usb_unlink_urb(&acm->readurb);
++	} else {
++		tty_unregister_devfs(&acm_tty_driver, acm->minor);
++		acm_table[acm->minor] = NULL;
++		kfree(acm->throttle_data);
++		kfree(acm);
+ 	}
++
++	closing=0;
++	unlinking_in_progress = 0;
+ 	MOD_DEC_USE_COUNT;
++	mutex_unlock (&acm->mutex);
+ }
+ 
+ static int acm_tty_write(struct tty_struct *tty, int from_user, const unsigned char *buf, int count)
+@@ -363,8 +525,16 @@
+ 	struct acm *acm = tty->driver_data;
+ 
+ 	if (!ACM_READY(acm)) return -EINVAL;
+-	if (acm->writeurb.status == -EINPROGRESS) return 0;
+-	if (!count) return 0;
++
++	if (acm->writeurb.status == -EINPROGRESS) {
++		dbg("tty_write in progress");
++		return 0;
++	}
++
++	if (!count) {
++		dbg("tty_write: nothing to write");
++		return 0;
++	}
+ 
+ 	count = (count > acm->writesize) ? acm->writesize : count;
+ 
+@@ -401,22 +571,44 @@
+ {
+ 	struct acm *acm = tty->driver_data;
+ 	if (!ACM_READY(acm)) return;
++	dbg("acm_tty_throttle ON %ld ---> %ld", jiffies-acm->throttle_start, jiffies);
+ 	acm->throttle = 1;
++	acm->throttle_start = jiffies;
+ }
+ 
+ static void acm_tty_unthrottle(struct tty_struct *tty)
+ {
+ 	struct acm *acm = tty->driver_data;
+ 	if (!ACM_READY(acm)) return;
++	dbg("acm_tty_throttle OFF %ld ---> %ld", jiffies, jiffies-acm->throttle_start);
+ 	acm->throttle = 0;
+-	if (acm->readurb.status != -EINPROGRESS)
++
++	if (!acm_empty_throttle(&acm->readurb, tty)) {
++		if (acm->td_busy) {
++			printk("***** pending acm_empty_throttle!\n");
++		} else {
++			dbg("throttle not emptied.\n");
++		}
++	}
++
++	if (acm->resubmit_to_unthrottle != 0) {
++		dbg("resubmit_to_unthrottle: acm_read_bulk");
++		acm->resubmit_to_unthrottle = 0;
+ 		acm_read_bulk(&acm->readurb);
++	}
+ }
+ 
+ static void acm_tty_break_ctl(struct tty_struct *tty, int state)
+ {
+ 	struct acm *acm = tty->driver_data;
++
+ 	if (!ACM_READY(acm)) return;
++
++	if (nonlegacy) {
++		err("non-legacy port, skipping acm_tty_break_ctl");
++		return;
++	}
++
+ 	if (acm_send_break(acm, state ? 0xffff : 0))
+ 		dbg("send break failed");
+ }
+@@ -455,7 +647,19 @@
+ 				case TIOCMBIC: newctrl &= ~mask; break;
+ 			}
+ 
+-			if (acm->ctrlout == newctrl) return 0;
++			if (acm->ctrlout == newctrl) {
++				dbg("acm_tty_ioctl: set old state %x", newctrl);
++				return 0;
++			}
++
++			err("acm_tty_ioctl: %s%s%s -> dtr%s rts%s (%lx)",
++					cmd==TIOCMBIC?"Clear":(cmd==TIOCMBIS?"Set":"SET"),
++					mask & ACM_CTRL_DTR ? " DTR":"",
++					mask & ACM_CTRL_RTS ? " RTS":"",
++					newctrl & ACM_CTRL_DTR ? "+":"-",
++					newctrl & ACM_CTRL_RTS ? "+":"-",
++					arg);
++
+ 			return acm_set_control(acm, acm->ctrlout = newctrl);
+ 	}
+ 
+@@ -483,6 +687,12 @@
+ 
+ 	if (!ACM_READY(acm)) return;
+ 
++	if (nonlegacy) {
++		acm->clocal = ((termios->c_cflag & CLOCAL) != 0);
++		dbg("non-legacy port, skipping acm_tty_set_termios");
++		return;
++	}
++
+ 	newline.speed = cpu_to_le32p(acm_tty_speed +
+ 		(termios->c_cflag & CBAUD & ~CBAUDEX) + (termios->c_cflag & CBAUDEX ? 15 : 0));
+ 	newline.stopbits = termios->c_cflag & CSTOPB ? 2 : 0;
+@@ -518,34 +727,64 @@
+ 	struct usb_config_descriptor *cfacm;
+ 	struct usb_interface_descriptor *ifcom, *ifdata;
+ 	struct usb_endpoint_descriptor *epctrl, *epread, *epwrite;
+-	int readsize, ctrlsize, minor, i, j;
++	int readsize, ctrlsize, minor, i;
+ 	unsigned char *buf;
++	unsigned char used_interfaces=2;
+ 
+ 	for (i = 0; i < dev->descriptor.bNumConfigurations; i++) {
+ 
+ 		cfacm = dev->config + i;
+ 
+-		dbg("probing config %d", cfacm->bConfigurationValue);
++		ifcom = cfacm->interface[ifnum].altsetting + 0;
++
++		if (id->driver_info == SINGLE_IF_ACM) {
++			printk("using single_if_acm\n");
++			struct usb_endpoint_descriptor *ep=ifcom->endpoint;
++			int k;
++
++			if (ifcom->bNumEndpoints != 3) {
++				continue;
++			}
++
++			epctrl = epread = epwrite = NULL;
++			for (k=0; k<3; ++k, ++ep) {
++				if ((ep->bmAttributes & USB_ENDPOINT_XFERTYPE_MASK) == USB_ENDPOINT_XFER_INT &&
++						(ep->bEndpointAddress & USB_ENDPOINT_DIR_MASK) == USB_DIR_IN) {
++					epctrl = ep;
++				} else if ((ep->bmAttributes & USB_ENDPOINT_XFERTYPE_MASK) == USB_ENDPOINT_XFER_BULK &&
++						(ep->bEndpointAddress & USB_ENDPOINT_DIR_MASK) == USB_DIR_IN) {
++					epread = ep;
++				} else if ( (ep->bmAttributes & USB_ENDPOINT_XFERTYPE_MASK) == USB_ENDPOINT_XFER_BULK) {
++					epwrite = ep;
++				}
++			}
+ 
+-		for (j = 0; j < cfacm->bNumInterfaces - 1; j++) {
++			if ( !epctrl || !epread || !epwrite ) {
++				dbg("SINGLE_IF_ACM acm_probe inv eps epctrl %s epread %s epwrite %s", epctrl?"ok":"missing",
++						epread?"ok":"missing", epwrite?"ok":"missing");
++				dbg("SINGLE_IF_ACM Invalid enpoint configuration");
++				continue;
++			}
+ 
+-			if (usb_interface_claimed(cfacm->interface + j) ||
+-			    usb_interface_claimed(cfacm->interface + j + 1))
++			used_interfaces = 1;
++		} else {
++			if ((ifnum+1)>=cfacm->bNumInterfaces || usb_interface_claimed(cfacm->interface + ifnum + 1)) {
++				// no data interface available
+ 				continue;
++			}
+ 
+-			ifcom = cfacm->interface[j].altsetting + 0;
+-			ifdata = cfacm->interface[j + 1].altsetting + 0;
++			ifdata = cfacm->interface[ifnum + 1].altsetting + 0;
+ 
+ 			if (ifdata->bInterfaceClass != 10 || ifdata->bNumEndpoints < 2) {
+-				ifcom = cfacm->interface[j + 1].altsetting + 0;
+-				ifdata = cfacm->interface[j].altsetting + 0;
++				ifcom = cfacm->interface[ifnum + 1].altsetting + 0;
++				ifdata = cfacm->interface[ifnum].altsetting + 0;
+ 				if (ifdata->bInterfaceClass != 10 || ifdata->bNumEndpoints < 2)
+ 					continue;
+ 			}
+ 
+ 			if (ifcom->bInterfaceClass != 2 || ifcom->bInterfaceSubClass != 2 ||
+-			    ifcom->bInterfaceProtocol < 1 || ifcom->bInterfaceProtocol > 6 ||
+-			    ifcom->bNumEndpoints < 1)
++					ifcom->bInterfaceProtocol < 1 || ifcom->bInterfaceProtocol > 6 ||
++					ifcom->bNumEndpoints < 1)
+ 				continue;
+ 
+ 			epctrl = ifcom->endpoint + 0;
+@@ -553,76 +792,86 @@
+ 			epwrite = ifdata->endpoint + 1;
+ 
+ 			if ((epctrl->bEndpointAddress & 0x80) != 0x80 || (epctrl->bmAttributes & 3) != 3 ||
+-			    (epread->bmAttributes & 3) != 2 || (epwrite->bmAttributes & 3) != 2 ||
+-			    ((epread->bEndpointAddress & 0x80) ^ (epwrite->bEndpointAddress & 0x80)) != 0x80)
++					(epread->bmAttributes & 3) != 2 || (epwrite->bmAttributes & 3) != 2 ||
++					((epread->bEndpointAddress & 0x80) ^ (epwrite->bEndpointAddress & 0x80)) != 0x80)
+ 				continue;
+ 
+-			dbg("using interface %d\n", j);
+-
+ 			if ((epread->bEndpointAddress & 0x80) != 0x80) {
+ 				epread = ifdata->endpoint + 1;
+ 				epwrite = ifdata->endpoint + 0;
+ 			}
++		}
+ 
+-			usb_set_configuration(dev, cfacm->bConfigurationValue);
++		usb_set_configuration(dev, cfacm->bConfigurationValue);
+ 
+-			for (minor = 0; minor < ACM_TTY_MINORS && acm_table[minor]; minor++);
+-			if (acm_table[minor]) {
+-				err("no more free acm devices");
+-				return NULL;
+-			}
++		for (minor = 0; minor < ACM_TTY_MINORS && acm_table[minor]; minor++);
++		if (acm_table[minor]) {
++			err("no more free acm devices");
++			return NULL;
++		}
+ 
+-			if (!(acm = kmalloc(sizeof(struct acm), GFP_KERNEL))) {
+-				err("out of memory");
+-				return NULL;
+-			}
+-			memset(acm, 0, sizeof(struct acm));
++		if (!(acm = kmalloc(sizeof(struct acm), GFP_KERNEL))) {
++			err("out of memory");
++			return NULL;
++		}
++		memset(acm, 0, sizeof(struct acm));
+ 
+-			ctrlsize = (epctrl->wMaxPacketSize > maxszc)?
+-				epctrl->wMaxPacketSize: maxszc;
+-			readsize = (epread->wMaxPacketSize > maxszr)?
+-				epread->wMaxPacketSize: maxszr;
+-			acm->writesize = (epwrite->wMaxPacketSize > maxszw)?
+-				epwrite->wMaxPacketSize: maxszw;
+-
+-			acm->iface = cfacm->interface + j;
+-			acm->minor = minor;
+-			acm->dev = dev;
+-
+-			acm->tqueue.routine = acm_softint;
+-			acm->tqueue.data = acm;
+-
+-			if (!(buf = kmalloc(ctrlsize + readsize + acm->writesize, GFP_KERNEL))) {
+-				err("out of memory");
+-				kfree(acm);
+-				return NULL;
+-			}
++		ctrlsize = (epctrl->wMaxPacketSize > maxszc)?
++			epctrl->wMaxPacketSize: maxszc;
++		readsize = (epread->wMaxPacketSize > maxszr)?
++			epread->wMaxPacketSize: maxszr;
++		acm->writesize = (epwrite->wMaxPacketSize > maxszw)?
++			epwrite->wMaxPacketSize: maxszw;
++
++		init_MUTEX (&acm->mutex);
++		if (!(acm->throttle_data = kmalloc(TD_SIZE * sizeof (*acm->throttle_data), GFP_KERNEL))) {
++			err("out of memory (throttle_data)");
++			kfree(acm);
++			return NULL;
++		}
++		acm->iface = cfacm->interface + ifnum;
++		acm->minor = minor;
++		acm->dev = dev;
+ 
+-			FILL_INT_URB(&acm->ctrlurb, dev, usb_rcvintpipe(dev, epctrl->bEndpointAddress),
+-				     buf, ctrlsize, acm_ctrl_irq, acm, epctrl->bInterval);
++		acm->used_interfaces = used_interfaces;
+ 
+-			FILL_BULK_URB(&acm->readurb, dev, usb_rcvbulkpipe(dev, epread->bEndpointAddress),
+-				      buf += ctrlsize, readsize, acm_read_bulk, acm);
+-			acm->readurb.transfer_flags |= USB_NO_FSBR;
++		acm->tqueue.routine = acm_softint;
++		acm->tqueue.data = acm;
+ 
+-			FILL_BULK_URB(&acm->writeurb, dev, usb_sndbulkpipe(dev, epwrite->bEndpointAddress),
+-				      buf += readsize, acm->writesize, acm_write_bulk, acm);
+-			acm->writeurb.transfer_flags |= USB_NO_FSBR;
++		if (!(buf = kmalloc(ctrlsize + readsize + acm->writesize, GFP_KERNEL))) {
++			err("out of memory (urb buf)");
++			kfree(acm);
++			return NULL;
++		}
+ 
+-			printk(KERN_INFO "ttyACM%d: USB ACM device\n", minor);
++		FILL_INT_URB(&acm->ctrlurb, dev, usb_rcvintpipe(dev, epctrl->bEndpointAddress),
++				buf, ctrlsize, acm_ctrl_irq, acm, epctrl->bInterval);
+ 
+-			acm_set_control(acm, acm->ctrlout);
++		FILL_BULK_URB(&acm->readurb, dev, usb_rcvbulkpipe(dev, epread->bEndpointAddress),
++				buf += ctrlsize, readsize, acm_read_bulk, acm);
++		acm->readurb.transfer_flags |= USB_NO_FSBR;
+ 
+-			acm->line.speed = cpu_to_le32(9600);
+-			acm->line.databits = 8;
+-			acm_set_line(acm, &acm->line);
++		FILL_BULK_URB(&acm->writeurb, dev, usb_sndbulkpipe(dev, epwrite->bEndpointAddress),
++				buf += readsize, acm->writesize, acm_write_bulk, acm);
++		acm->writeurb.transfer_flags |= USB_NO_FSBR;
+ 
+-			usb_driver_claim_interface(&acm_driver, acm->iface + 0, acm);
+-			usb_driver_claim_interface(&acm_driver, acm->iface + 1, acm);
++		printk(KERN_INFO "ttyACM%d: USB ACM device C %p W %p R %p %x\n", minor, &acm->ctrlurb,
++				&acm->writeurb, &acm->readurb, acm->ctrlout);
++
++		acm_set_control(acm, acm->ctrlout);
+ 
+-			tty_register_devfs(&acm_tty_driver, 0, minor);
+-			return acm_table[minor] = acm;
++		acm->line.speed = cpu_to_le32(9600);
++		acm->line.databits = 8;
++		acm_set_line(acm, &acm->line);
++
++		if ( acm->used_interfaces == 2 ) {
++			// only just checked interface is claimed automatically, so claim data interface too
++			usb_driver_claim_interface(&acm_driver, acm->iface + 1, acm);
+ 		}
++
++		tty_register_devfs(&acm_tty_driver, 0, minor);
++
++		return acm_table[minor] = acm;
+ 	}
+ 
+ 	return NULL;
+@@ -646,7 +895,9 @@
+ 	kfree(acm->ctrlurb.transfer_buffer);
+ 
+ 	usb_driver_release_interface(&acm_driver, acm->iface + 0);
+-	usb_driver_release_interface(&acm_driver, acm->iface + 1);
++	if ( acm->used_interfaces == 2 ) {
++		usb_driver_release_interface(&acm_driver, acm->iface + 1);
++	}
+ 
+ 	if (!acm->used) {
+ 		tty_unregister_devfs(&acm_tty_driver, acm->minor);
+@@ -665,6 +916,9 @@
+ 
+ static struct usb_device_id acm_ids[] = {
+ 	{ USB_DEVICE(0x22B8, 0x1005) },		/* Motorola TimePort 280 */
++	{ USB_DEVICE(0x05C6, 0x7001), driver_info: SINGLE_IF_ACM },		/* Siemens HC15/HC25 */
++	{ USB_DEVICE(0x0681, 0x003e), driver_info: SINGLE_IF_ACM },		/* Siemens HC15/HC25 */
++	{ USB_DEVICE(0x22B8, 0x1006) },
+ 	{ USB_DEVICE_INFO(USB_CLASS_COMM, 0, 0) },
+ 	{ USB_DEVICE_INFO(USB_CLASS_COMM, 2, 0) },
+ 	{ }
+@@ -735,7 +989,7 @@
+ 		return -1;
+ 	}
+ 
+-	info(DRIVER_VERSION ":" DRIVER_DESC);
++	info(DRIVER_VERSION ":" DRIVER_DESC "(non-legacy %d)", nonlegacy);
+ 
+ 	return 0;
+ }
+@@ -759,7 +1013,9 @@
+ MODULE_PARM(maxszc, "i");
+ MODULE_PARM_DESC(maxszc, "User specified USB endpoint control size");
+ 
++MODULE_PARM(nonlegacy, "i");
++MODULE_PARM_DESC(nonlegacy, "Set this to 1 to for use with non-legacy device");
++
+ MODULE_AUTHOR( DRIVER_AUTHOR );
+ MODULE_DESCRIPTION( DRIVER_DESC );
+ MODULE_LICENSE("GPL");
+-
diff --git a/recipes/linux/linux-mtx-1_2.4.27.bb b/recipes/linux/linux-mtx-1_2.4.27.bb
index 5815a57..6dd7121 100644
--- a/recipes/linux/linux-mtx-1_2.4.27.bb
+++ b/recipes/linux/linux-mtx-1_2.4.27.bb
@@ -35,7 +35,11 @@ SRC_URI = "cvs://cvs:cvs@ftp.linux-mips.org/home/cvs;module=linux;tag=linux_2_4_
 	file://26-usbd-amd-pb1x00-kit-23may2003-update.diff;patch=1 \
 	file://27-usbd-amd-pb1x00-kit-23may2003-usbd.diff;patch=1 \
 	file://29-au1000-pci-config-clear-errors.diff;patch=1 \
+	file://32-usbserial-stalled-hack.diff;patch=1 \
+	file://33-usbserial-bulk_in_size-4096.diff;patch=1 \
 	file://42-usb-ohci-fixes.patch;patch=1 \
+	file://43-usbserial-27-32-backport.diff;patch=1 \
+	file://45-acm-tty-and-sb2.patch;patch=1 \
 	file://48-pptp.patch;patch=1 \
 	file://defconfig-mtx-1"
 
@@ -74,8 +78,8 @@ fi
 FILES_kernel += " /tmp"
 
 do_deploy() {
-        install -d ${DEPLOY_DIR}/images
-	install -m 0644 arch/mips/zboot/images/mtx-1.flash.bin ${DEPLOY_DIR}/images/${KERNEL_IMAGE_NAME}.flash.bin
-        install -m 0644 arch/mips/zboot/images/mtx-1.flash.srec ${DEPLOY_DIR}/images/${KERNEL_IMAGE_NAME}.flash.srec
-	install -m 0644 arch/mips/zboot/images/mtx-1.srec ${DEPLOY_DIR}/images/${KERNEL_IMAGE_NAME}.ram.srec
+	install -d 0755 ${DEPLOY_DIR_IMAGE}
+	install -m 0644 arch/mips/zboot/images/mtx-1.flash.bin ${DEPLOY_DIR_IMAGE}/${KERNEL_IMAGE_NAME}.flash.bin
+        install -m 0644 arch/mips/zboot/images/mtx-1.flash.srec ${DEPLOY_DIR_IMAGE}/${KERNEL_IMAGE_NAME}.flash.srec
+	install -m 0644 arch/mips/zboot/images/mtx-1.srec ${DEPLOY_DIR_IMAGE}/${KERNEL_IMAGE_NAME}.ram.srec
 }
diff --git a/recipes/linux/linux-mtx-2-2.4.27/06-zboot-2.4.26.patch b/recipes/linux/linux-mtx-2-2.4.27/06-zboot-2.4.26.patch
index 48495b5..b4cb9fe 100644
--- a/recipes/linux/linux-mtx-2-2.4.27/06-zboot-2.4.26.patch
+++ b/recipes/linux/linux-mtx-2-2.4.27/06-zboot-2.4.26.patch
@@ -1,6 +1,15 @@
 diff -Naru linux/arch/mips/Makefile linux.spi/arch/mips/Makefile
 --- linux/arch/mips/Makefile	2004-05-06 15:23:41.000000000 -0400
 +++ linux.spi/arch/mips/Makefile	2004-05-11 23:19:24.000000000 -0400
+@@ -17,7 +17,7 @@
+ # Select the object file format to substitute into the linker script.
+ #
+ ifdef CONFIG_CPU_LITTLE_ENDIAN
+-tool-prefix	= mipsel-linux-
++tool-prefix	= mipsel-nylon-linux-
+ ld-emul		= elf32ltsmip
+ else
+ tool-prefix	= mips-linux-
 @@ -29,6 +29,8 @@
  endif
  
diff --git a/recipes/linux/linux-mtx-2_2.4.27.bb b/recipes/linux/linux-mtx-2_2.4.27.bb
index 66ce06c..5b26903 100644
--- a/recipes/linux/linux-mtx-2_2.4.27.bb
+++ b/recipes/linux/linux-mtx-2_2.4.27.bb
@@ -86,8 +86,8 @@ fi
 FILES_kernel += " /tmp"
 
 do_deploy() {
-        install -d ${DEPLOY_DIR}/images
-	install -m 0644 arch/mips/zboot/images/mtx-2.flash.bin ${DEPLOY_DIR}/images/${KERNEL_IMAGE_NAME}.flash.bin
-        install -m 0644 arch/mips/zboot/images/mtx-2.flash.srec ${DEPLOY_DIR}/images/${KERNEL_IMAGE_NAME}.flash.srec
-	install -m 0644 arch/mips/zboot/images/mtx-2.srec ${DEPLOY_DIR}/images/${KERNEL_IMAGE_NAME}.ram.srec
+	install -d 0755 ${DEPLOY_DIR_IMAGE}
+	install -m 0644 arch/mips/zboot/images/mtx-2.flash.bin ${DEPLOY_DIR_IMAGE}/${KERNEL_IMAGE_NAME}.flash.bin
+        install -m 0644 arch/mips/zboot/images/mtx-2.flash.srec ${DEPLOY_DIR_IMAGE}/${KERNEL_IMAGE_NAME}.flash.srec
+	install -m 0644 arch/mips/zboot/images/mtx-2.srec ${DEPLOY_DIR_IMAGE}/${KERNEL_IMAGE_NAME}.ram.srec
 }
diff --git a/recipes/logrotate-script/logrotate-script_cvs.bb b/recipes/logrotate-script/logrotate-script_cvs.bb
index a46b265..2c6fd90 100644
--- a/recipes/logrotate-script/logrotate-script_cvs.bb
+++ b/recipes/logrotate-script/logrotate-script_cvs.bb
@@ -4,7 +4,7 @@ SECTION = "admin"
 PRIORITY = "optional"
 LICENSE = "GPL"
 
-SRC_URI = "http://meshcube.org/download/logrotate_${SRCDATE}.tgz"
+SRC_URI = "http://download.berlin.freifunk.net/meshcube.org/nylon/stable/sources/logrotate_${SRCDATE}.tgz"
 S = "${WORKDIR}/${PN}"
 
 do_install() {
diff --git a/recipes/meta/nylon-feed.inc b/recipes/meta/nylon-feed.inc
index d7b83e8..f20bcec 100644
--- a/recipes/meta/nylon-feed.inc
+++ b/recipes/meta/nylon-feed.inc
@@ -36,6 +36,7 @@ ncurses \
 netbase \
 netperf \
 ntp \
+nylon-config \
 nylon-scripts \
 nylon-statistics \
 olsrd \
@@ -48,7 +49,7 @@ ppp \
 pptp-linux \
 rrdtool \
 ser \
-shorewall \
+simple-firewall \
 stunnel \
 sysvinit \
 tcl \
diff --git a/recipes/mobilemesh/mobilemesh_1.2.bb b/recipes/mobilemesh/mobilemesh_1.2.bb
index df8f2f9..4fdf2ab 100644
--- a/recipes/mobilemesh/mobilemesh_1.2.bb
+++ b/recipes/mobilemesh/mobilemesh_1.2.bb
@@ -3,7 +3,7 @@ DESCRIPTION = "MobileMesh mobile ad-hoc routing protocol"
 HOMEPAGE = "http://www.mitre.org/work/tech_transfer/mobilemesh/"
 LICENSE = "GPL"
 DEPENDS = "openssl"
-SRC_URI = "http://meshcube.org/download/mobilemesh_1.2.tgz"
+SRC_URI = "http://download.berlin.freifunk.net/meshcube.org/nylon/stable/sources/mobilemesh_1.2.tgz"
 PR = "r1"
 
 S = "${WORKDIR}/mobilemesh"
@@ -34,4 +34,7 @@ do_install() {
 	install ${S}/mobilemesh.init ${D}${sysconfdir}/init.d/mobilemesh
 }
 
+FILES_${PN}-dbg += "${sysconfdir}/mobilemesh/mmtodot.debug ${sysconfdir}/mobilemesh/mmborder.debug \
+	${sysconfdir}/mobilemesh/mmrp.debug ${sysconfdir}/mobilemesh/mmdiscover.debug"
 CONFFILES_${PN}_nylon = "${sysconfdir}/mobilemesh/mmrp.conf ${sysconfdir}/mobilemesh/mmdiscover.conf"
+
diff --git a/recipes/netbase/netbase/mtx-1/interfaces b/recipes/netbase/netbase/mtx-1/interfaces
index a7c6da5..ae50a5c 100644
--- a/recipes/netbase/netbase/mtx-1/interfaces
+++ b/recipes/netbase/netbase/mtx-1/interfaces
@@ -1,24 +1,34 @@
 # /etc/network/interfaces -- configuration file for ifup(8), ifdown(8)
  
-# The loopback interface
+# the loopback interface
 auto lo
 iface lo inet loopback
 
-# Ethernet
+# ethernet
 auto eth0
 iface eth0 inet dhcp
+	alias conf 192.168.0.250
 
-# wlan interface 1 for clients
-auto wlan0
+# auto is not needed for the wlan interfaces
+# - hotplug will ifup the interfaces automatically
+
+# first wlan interface for clients
 iface wlan0 inet static
 	address 10.0.0.1
 	netmask 255.0.0.0
 	wireless_mode master
 	wireless_essid cube-ap
 	wireless_channel 1
-	
-# wlan interface 2 for mesh
-auto wlan1
+
+iface ath0 inet static
+	address 10.0.0.1
+	netmask 255.0.0.0
+	wireless_standard g
+	wireless_mode master
+	wireless_essid cube-ap
+	wireless_channel 1
+
+# second wlan interface for mesh
 iface wlan1 inet static
 	address 172.16.0.1
 	netmask 255.240.0.0
@@ -27,3 +37,12 @@ iface wlan1 inet static
 	wireless_essid cube-mesh
 	wireless_channel 11
 	wireless_rts 250
+
+iface ath1 inet static
+	address 172.16.0.1
+	netmask 255.240.0.0
+	broadcast 172.31.255.255
+	wireless_mode ad-hoc
+	wireless_essid cube-mesh
+	wireless_channel 11
+	wireless_rts 250
diff --git a/recipes/netbase/netbase/mtx-2/interfaces b/recipes/netbase/netbase/mtx-2/interfaces
index a7c6da5..ae50a5c 100644
--- a/recipes/netbase/netbase/mtx-2/interfaces
+++ b/recipes/netbase/netbase/mtx-2/interfaces
@@ -1,24 +1,34 @@
 # /etc/network/interfaces -- configuration file for ifup(8), ifdown(8)
  
-# The loopback interface
+# the loopback interface
 auto lo
 iface lo inet loopback
 
-# Ethernet
+# ethernet
 auto eth0
 iface eth0 inet dhcp
+	alias conf 192.168.0.250
 
-# wlan interface 1 for clients
-auto wlan0
+# auto is not needed for the wlan interfaces
+# - hotplug will ifup the interfaces automatically
+
+# first wlan interface for clients
 iface wlan0 inet static
 	address 10.0.0.1
 	netmask 255.0.0.0
 	wireless_mode master
 	wireless_essid cube-ap
 	wireless_channel 1
-	
-# wlan interface 2 for mesh
-auto wlan1
+
+iface ath0 inet static
+	address 10.0.0.1
+	netmask 255.0.0.0
+	wireless_standard g
+	wireless_mode master
+	wireless_essid cube-ap
+	wireless_channel 1
+
+# second wlan interface for mesh
 iface wlan1 inet static
 	address 172.16.0.1
 	netmask 255.240.0.0
@@ -27,3 +37,12 @@ iface wlan1 inet static
 	wireless_essid cube-mesh
 	wireless_channel 11
 	wireless_rts 250
+
+iface ath1 inet static
+	address 172.16.0.1
+	netmask 255.240.0.0
+	broadcast 172.31.255.255
+	wireless_mode ad-hoc
+	wireless_essid cube-mesh
+	wireless_channel 11
+	wireless_rts 250
diff --git a/recipes/nylon/files/firewall-bash.diff b/recipes/nylon/files/firewall-bash.diff
new file mode 100644
index 0000000..044f8d8
--- /dev/null
+++ b/recipes/nylon/files/firewall-bash.diff
@@ -0,0 +1,8 @@
+--- nylon-scripts/etc/init.d/firewall-orig	2009-04-25 13:46:25.000000000 +0200
++++ nylon-scripts/etc/init.d/firewall	2009-04-25 13:46:28.000000000 +0200
+@@ -1,4 +1,4 @@
+-#!/bin/sh
++#!/bin/bash
+ 
+ # this is a meta firewall start script:
+ # it either starts a local firewall script or shorewall
diff --git a/recipes/nylon/files/simple-firewall-bash.diff b/recipes/nylon/files/simple-firewall-bash.diff
new file mode 100644
index 0000000..dc6cf0d
--- /dev/null
+++ b/recipes/nylon/files/simple-firewall-bash.diff
@@ -0,0 +1,8 @@
+--- simple-firewall/etc/init.d/simple-firewall-orig	2009-04-25 13:42:10.000000000 +0200
++++ simple-firewall/etc/init.d/simple-firewall	2009-04-25 13:42:16.000000000 +0200
+@@ -1,4 +1,4 @@
+-#!/bin/sh
++#!/bin/bash
+ #$HeadURL: http://gruen.4g/svn/branches/stable-1.0/application/simple-firewall/etc/init.d/simple-firewall $ $Rev: 2593 $
+ 
+ if [ -f /etc/firewall/firewall.conf ]; then
diff --git a/recipes/nylon/nylon-config.bb b/recipes/nylon/nylon-config.bb
new file mode 100644
index 0000000..76f78a9
--- /dev/null
+++ b/recipes/nylon/nylon-config.bb
@@ -0,0 +1,41 @@
+DESCRIPTION = "nylon preliminary web configuration interface"
+SECTION = "base"
+PRIORITY = "optional"
+MAINTAINER = "Bruno Randolf <bruno.randolf@4g-systems.biz>"
+LICENSE = "closed"
+DEPENDS = "perl virtual/kernel hostap-daemon busybox"
+RDEPENDS = "perl perl-module-exporter perl-module-posix perl-module-autoloader perl-module-strict perl-module-xsloader perl-module-data-dumper perl-module-carp perl-module-bytes perl-module-overload perl-module-warnings-register perl-module-warnings  kernel-module-aes madwifi-modules hostap-daemon simple-firewall wlan-ng-utils busybox-httpd"
+CVSDATE = "20051026"
+PV = "cvs${CVSDATE}"
+
+SRC_URI = "http://br1.einfach.org/nylon/stable/sources/nylon-config_gruen.4g__20051026.tar.gz"
+S = "${WORKDIR}/${PN}"
+
+do_install() {
+	(cd ${S}; tar -c --exclude .svn -f - . ) | tar -C ${D} -xpf -
+	# chmod 600 ${D}/etc/certs/stunnel.key
+	chmod a+x ${D}/srv/www/cgi-bin/*
+}
+
+pkg_postinst() {
+#!/bin/sh
+if test "x$D" != "x"; then
+	exit 1
+fi
+
+# Create resolv.conf-link to ppp-file
+rm /etc/resolv.conf
+ln -s /etc/ppp/resolv.conf /etc/resolv.conf
+
+# enable factorydefaults
+update-rc.d factorydefaults start 90 2 .
+
+# "fix" /etc/network/interfaces
+perl -I /srv/www/cgi-bin -MConfig::IFace -e '$w=new Config::IFace(); $v = $w->read(); $v->{auto} = {0=>"lo",1=>eth0,2=>"wlan0",3=>"wlan1",4=>"ath0",5=>"ath1"}; $w->write($v)'
+
+update-rc.d busybox-httpd start 40 2 3 4 5 .
+/etc/init.d/busybox-httpd restart
+}
+
+FILES_${PN} += "/srv"
+
diff --git a/recipes/nylon/nylon-scripts_cvs.bb b/recipes/nylon/nylon-scripts_cvs.bb
index 650bd1a..d87e2c1 100644
--- a/recipes/nylon/nylon-scripts_cvs.bb
+++ b/recipes/nylon/nylon-scripts_cvs.bb
@@ -4,12 +4,14 @@ DEPENDS = "hostap-utils"
 SECTION = "base"
 PRIORITY = "optional"
 LICENSE = "GPLv2"
-SRCDATE = "20060923"
+#SRCDATE = "20060923"
+SRCDATE = "20051022"
 PV = "1.0.0+cvs${SRCDATE}"
 PR = "r2"
 RDEPENDS = "bash"
 
-SRC_URI = "http://meshcube.org/download/${PN}_${SRCDATE}.tgz"
+SRC_URI = "http://download.berlin.freifunk.net/meshcube.org/nylon/stable/sources/${PN}_gruen.4g__${SRCDATE}.tar.gz \
+	file://firewall-bash.diff;patch=1"
 S = "${WORKDIR}/${PN}"
 INHIBIT_PACKAGE_STRIP = "1"
 
diff --git a/recipes/nylon/nylon-statistics.bb b/recipes/nylon/nylon-statistics.bb
index ef79bc6..c9b790c 100644
--- a/recipes/nylon/nylon-statistics.bb
+++ b/recipes/nylon/nylon-statistics.bb
@@ -3,11 +3,12 @@ RDEPENDS = "rrdtool"
 SECTION = "base"
 PRIORITY = "optional"
 LICENSE = "GPLv2"
-SRCDATE = "20050909"
+#SRCDATE = "20050909"
+SRCDATE = "20051022"
 PV = "1.0.0+cvs${SRCDATE}"
 PR = "r1"
 
-SRC_URI = "http://meshcube.org/download/${PN}_${SRCDATE}.tgz"
+SRC_URI = "http://download.berlin.freifunk.net/meshcube.org/nylon/stable/sources/${PN}_gruen.4g__${SRCDATE}.tar.gz"
 S = "${WORKDIR}/${PN}"
 INHIBIT_PACKAGE_STRIP = "1"
 
diff --git a/recipes/nylon/simple-firewall.bb b/recipes/nylon/simple-firewall.bb
new file mode 100644
index 0000000..d9e6974
--- /dev/null
+++ b/recipes/nylon/simple-firewall.bb
@@ -0,0 +1,18 @@
+DESCRIPTION = "simple firewall configuratiopn script"
+SECTION = "base"
+PRIORITY = "optional"
+MAINTAINER = "Bruno Randolf <br1@einfach.org>"
+LICENSE = "GPL"
+DEPENDS = "virtual/kernel"
+# these kernel modules are needed if the functionality is not hard-built into the kernel:
+# kernel-module-ip-tables kernel-module-iptable-filter kernel-module-iptable-nat kernel-module-ipt-state kernel-module-ipt-reject kernel-module-ipt-masquerade 
+RDEPENDS = "kernel-module-ipt-limit kernel-module-ipt-tcpmss"
+PV = "cvs20051022"
+
+SRC_URI = "http://br1.einfach.org/nylon/stable/sources/simple-firewall_gruen.4g__20051022.tar.gz \
+	file://simple-firewall-bash.diff;patch=1"
+S = "${WORKDIR}/${PN}"
+
+do_install() {
+	(cd ${S}; tar -c --exclude .svn -f - . ) | tar -C ${D} -xpf -
+}
diff --git a/recipes/nylon/yamonenv.bb b/recipes/nylon/yamonenv.bb
index e963d91..1db737f 100644
--- a/recipes/nylon/yamonenv.bb
+++ b/recipes/nylon/yamonenv.bb
@@ -2,10 +2,11 @@ DESCRIPTION = "Reads YAMON environment-variables"
 SECTION = "base"
 PRIORITY = "optional"
 LICENSE = "GPL"
-SRCDATE = "20050909"
+#SRCDATE = "20050909"
+SRCDATE = "20051022"
 PV = "1.0.0+cvs${SRCDATE}"
 
-SRC_URI = "http://meshcube.org/download/${PN}_${SRCDATE}.tgz"
+SRC_URI = "http://download.berlin.freifunk.net/meshcube.org/nylon/stable/sources/${PN}_gruen.4g__${SRCDATE}.tar.gz"
 S = "${WORKDIR}/${PN}"
 
 do_install() {
diff --git a/recipes/openswan/openswan_2.2.0.bb b/recipes/openswan/openswan_2.2.0.bb
index b1c5271..bcf5a28 100644
--- a/recipes/openswan/openswan_2.2.0.bb
+++ b/recipes/openswan/openswan_2.2.0.bb
@@ -5,7 +5,7 @@ HOMEPAGE = "http://www.openswan.org"
 LICENSE = "GPLv2"
 DEPENDS = "gmp flex-native"
 RRECOMMENDS = "kernel-module-ipsec"
-RDEPENDS_nylon = "perl"
+RDEPENDS_append_nylon = "perl"
 PR = "r5"
 
 SRC_URI = "http://www.openswan.org/download/old/openswan-${PV}.tar.gz \
diff --git a/recipes/openswan/openswan_2.4.7.bb b/recipes/openswan/openswan_2.4.7.bb
index 353e0ea..28e599b 100644
--- a/recipes/openswan/openswan_2.4.7.bb
+++ b/recipes/openswan/openswan_2.4.7.bb
@@ -5,7 +5,7 @@ HOMEPAGE = "http://www.openswan.org"
 LICENSE = "GPLv2"
 DEPENDS = "gmp flex-native"
 RRECOMMENDS = "kernel-module-ipsec"
-RDEPENDS_nylon = "perl"
+RDEPENDS_append_nylon = "perl"
 PR = "r0"
 
 SRC_URI = "http://www.openswan.org/download/openswan-${PV}.tar.gz \
diff --git a/recipes/opkg/opkg-native_svn.bb b/recipes/opkg/opkg-native_svn.bb
index 82c74e0..37a35a6 100644
--- a/recipes/opkg/opkg-native_svn.bb
+++ b/recipes/opkg/opkg-native_svn.bb
@@ -1,5 +1,7 @@
 require opkg.inc
 
+SRCREV = "HEAD"
+
 DEPENDS = "curl-native"
 PR = "r3"
 
diff --git a/recipes/opkg/opkg_svn.bb b/recipes/opkg/opkg_svn.bb
index 749fa1e..fee039f 100644
--- a/recipes/opkg/opkg_svn.bb
+++ b/recipes/opkg/opkg_svn.bb
@@ -1,6 +1,6 @@
 require opkg.inc
 
-PR = "r12"
+SRCREV = "HEAD"
 
 PACKAGES =+ "libopkg-dev libopkg"
 
diff --git a/recipes/pciutils/pciutils-3.1.2/gcc-3-compatibility.patch b/recipes/pciutils/pciutils-3.1.2/gcc-3-compatibility.patch
new file mode 100644
index 0000000..3a10209
--- /dev/null
+++ b/recipes/pciutils/pciutils-3.1.2/gcc-3-compatibility.patch
@@ -0,0 +1,11 @@
+--- pciutils-3.1.2/lib/Makefile-orig	2009-02-27 11:31:24.000000000 +0100
++++ pciutils-3.1.2/lib/Makefile	2009-02-27 11:31:32.000000000 +0100
+@@ -50,7 +50,7 @@
+ 	$(AR) rcs $@ $^
+ 	$(RANLIB) $@
+ else
+-CFLAGS += -fPIC -fvisibility=hidden
++CFLAGS += -fPIC 
+ $(PCILIB): $(addsuffix .o,$(OBJS))
+ 	$(CC) -shared $(LDFLAGS) $(SONAME) -Wl,--version-script=libpci.ver -o $@ $^ $(LIB_LDLIBS)
+ endif
diff --git a/recipes/pciutils/pciutils_3.1.2.bb b/recipes/pciutils/pciutils_3.1.2.bb
index 25782a5..d7458a1 100644
--- a/recipes/pciutils/pciutils_3.1.2.bb
+++ b/recipes/pciutils/pciutils_3.1.2.bb
@@ -8,6 +8,7 @@ DEPENDS = "zlib"
 
 SRC_URI = "ftp://ftp.kernel.org/pub/software/utils/pciutils/pciutils-${PV}.tar.bz2 \
 	   file://pciutils.patch;patch=1 "
+SRC_URI_append_nylon = "file://gcc-3-compatibility.patch;patch=1 "
 
 PARALLEL_MAKE = ""
 
diff --git a/recipes/perl/perl-native_5.8.8.bb b/recipes/perl/perl-native_5.8.8.bb
index e3d7384..57e9e1c 100644
--- a/recipes/perl/perl-native_5.8.8.bb
+++ b/recipes/perl/perl-native_5.8.8.bb
@@ -85,5 +85,11 @@ do_stage_append() {
             install $i ${STAGING_LIBDIR_NATIVE}/perl/${PV}/CORE
         done
 }
+do_stage_append_nylon() {
+        # get rid of definitions not supported by the gcc version we use for nylon...
+        for i in ${STAGING_LIBDIR_NATIVE}/perl/${PV}/Config_heavy.pl ${STAGING_DIR_HOST}/perl/config.sh; do
+                perl -pi -e 's/-Wdeclaration-after-statement //g' ${i}
+        done
+}
 
 PARALLEL_MAKE = ""
diff --git a/recipes/rrdtool/rrdtool_1.0.49.bb b/recipes/rrdtool/rrdtool_1.0.49.bb
index 11968ea..f421648 100644
--- a/recipes/rrdtool/rrdtool_1.0.49.bb
+++ b/recipes/rrdtool/rrdtool_1.0.49.bb
@@ -5,13 +5,17 @@ LICENSE = "GPLv2"
 DEPENDS = "libpng zlib"
 DEPENDS_rddtool-perl = "perl-module-lib perl-module-dynaloader"
 PR = "r2"
-SRC_URI = "http://oss.oetiker.ch/rrdtool/pub/rrdtool-1.0.x/rdtool-${PV}.tar.gz \
+SRC_URI = "http://oss.oetiker.ch/rrdtool/pub/rrdtool-1.0.x/rrdtool-${PV}.tar.gz \
 	file://perl-make-options.diff;patch=1;pnum=0"
 
 inherit autotools
 
 EXTRA_OECONF = "--enable-shared --enable-local-libpng --enable-local-zlib --program-prefix=''"
 
+do_configure_append_nylon() {
+  perl -pi -e 's/-Wdeclaration-after-statement //g' ${S}/perl-shared/Makefile
+}
+
 do_install_append() {
 	install -d ${D}${docdir}/rrdtool/
 	mv ${D}/usr/html ${D}${docdir}/rrdtool/
@@ -24,4 +28,5 @@ do_stage () {
 	autotools_stage_all
 }
 
-FILES_${PN} += "${libdir}/perl"
+FILES_${PN} += "${libdir}/perl/auto/RRDs/RRDs.bs ${libdir}/perl/auto/RRDs/RRDs.so ${libdir}/perl/RRDs.pm ${libdir}/perl/RRDp.pm"
+
diff --git a/recipes/wlan-ng/wlan-ng-utils.inc b/recipes/wlan-ng/wlan-ng-utils.inc
index 3dd25d9..736e12b 100644
--- a/recipes/wlan-ng/wlan-ng-utils.inc
+++ b/recipes/wlan-ng/wlan-ng-utils.inc
@@ -10,11 +10,11 @@ DEPENDS = "virtual/kernel"
 SRC_URI = "file://only-the-utils.patch;patch=1 \
 	file://wlan-ng.modutils \
 	file://wlan.agent \
-	file://usbctl \
 	file://resume \
 	file://pre-up \
 	file://post-down \
 	file://config.in"
+SRC_URI_append_arm = " file://usbctl"
 
 # yeah, it's kind of backwards, but otherwise the config step will fail
 inherit module
@@ -59,11 +59,14 @@ do_install() {
 	install -m 0755 ${WORKDIR}/post-down ${D}${sysconfdir}/network/if-post-down.d/wlan-ng
 	install -d ${D}${sysconfdir}/apm/resume.d
 	install -m 0755 ${WORKDIR}/resume ${D}${sysconfdir}/apm/resume.d/wlan-ng
-	install -m 0755 ${WORKDIR}/usbctl ${D}${base_sbindir}/usbctl
 	install -d ${D}${mandir}/man1
 	install -m 0644 ${S}/man/*.1 ${D}${mandir}/man1/
 	rm -rf ${D}/usr/local/man
 }
 
+do_install_append_arm() {
+	install -m 0755 ${WORKDIR}/usbctl ${D}${base_sbindir}/usbctl
+}
+
 FILES_${PN}-dbg += "/sbin/.debug"
 FILES_${PN} = "/etc /sbin"
diff --git a/recipes/linux-hotplug/linux-hotplug_20040920.bb b/recipes/linux-hotplug/linux-hotplug_20040920.bb
index 6209504..5cab3b8 100644
--- a/recipes/linux-hotplug/linux-hotplug_20040920.bb
+++ b/recipes/linux-hotplug/linux-hotplug_20040920.bb
@@ -27,7 +27,8 @@ SRC_URI = "${KERNELORG_MIRROR}/pub/linux/utils/kernel/hotplug/hotplug-2004_09_20
 	file://sysconfig-usb \
 	file://isapnp-exit.diff;patch=1 \
 	file://usb-storage \
-	file://soc.agent"
+	file://soc.agent \
+	file://hotplug-binary-path.patch;patch=1"
 
 SRC_URI_append_openzaurus = " file://quiet-pci.patch;patch=1"
 
--- /dev/null	2009-04-25 11:37:44.504526972 +0200
+++ b/recipes/glibc/glibc-2.3.2/allow-gcc.patch	2009-04-22 12:13:09.000000000 +0200
@@ -0,0 +1,70 @@
+--- glibc-2.3.2/configure-orig	2009-03-26 15:46:33.000000000 +0100
++++ glibc-2.3.2/configure	2009-03-26 15:49:15.000000000 +0100
+@@ -3850,67 +3850,6 @@
+ 
+ # These programs are version sensitive.
+ 
+-for ac_prog in ${ac_tool_prefix}gcc ${ac_tool_prefix}cc
+-do
+-  # Extract the first word of "$ac_prog", so it can be a program name with args.
+-set dummy $ac_prog; ac_word=$2
+-echo "$as_me:$LINENO: checking for $ac_word" >&5
+-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+-if test "${ac_cv_prog_CC+set}" = set; then
+-  echo $ECHO_N "(cached) $ECHO_C" >&6
+-else
+-  if test -n "$CC"; then
+-  ac_cv_prog_CC="$CC" # Let the user override the test.
+-else
+-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+-for as_dir in $PATH
+-do
+-  IFS=$as_save_IFS
+-  test -z "$as_dir" && as_dir=.
+-  for ac_exec_ext in '' $ac_executable_extensions; do
+-  if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+-    ac_cv_prog_CC="$ac_prog"
+-    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+-    break 2
+-  fi
+-done
+-done
+-
+-fi
+-fi
+-CC=$ac_cv_prog_CC
+-if test -n "$CC"; then
+-  echo "$as_me:$LINENO: result: $CC" >&5
+-echo "${ECHO_T}$CC" >&6
+-else
+-  echo "$as_me:$LINENO: result: no" >&5
+-echo "${ECHO_T}no" >&6
+-fi
+-
+-  test -n "$CC" && break
+-done
+-
+-if test -z "$CC"; then
+-  ac_verc_fail=yes
+-else
+-  # Found it, now check the version.
+-  echo "$as_me:$LINENO: checking version of $CC" >&5
+-echo $ECHO_N "checking version of $CC... $ECHO_C" >&6
+-  ac_prog_version=`$CC -v 2>&1 | sed -n 's/^.*version \([egcygnustpi-]*[0-9.]*\).*$/\1/p'`
+-  case $ac_prog_version in
+-    '') ac_prog_version="v. ?.??, bad"; ac_verc_fail=yes;;
+-    3.[2-9]*)
+-       ac_prog_version="$ac_prog_version, ok"; ac_verc_fail=no;;
+-    *) ac_prog_version="$ac_prog_version, bad"; ac_verc_fail=yes;;
+-
+-  esac
+-  echo "$as_me:$LINENO: result: $ac_prog_version" >&5
+-echo "${ECHO_T}$ac_prog_version" >&6
+-fi
+-if test $ac_verc_fail = yes; then
+-  critic_missing="$critic_missing gcc"
+-fi
+-
+ for ac_prog in gnumake gmake make
+ do
+   # Extract the first word of "$ac_prog", so it can be a program name with args.
--- /dev/null	2009-04-25 11:37:44.504526972 +0200
+++ recipes/glibc/glibc-2.3.2/mips-abio32.patch	2009-04-25 15:02:13.000000000 +0200
@@ -0,0 +1,12 @@
+--- glibc-2.3.3-r16/sysdeps/mips/sgidefs.h-orig	2009-02-27 16:05:55.000000000 +0100
++++ glibc-2.3.3-r16/sysdeps/mips/sgidefs.h	2009-02-27 16:06:26.000000000 +0100
+@@ -43,4 +43,9 @@
+ #define _MIPS_SIM_NABI32	2
+ #define _MIPS_SIM_ABI64		3
+ 
++/* compatibility stuff needed e.g. by gdb */
++#ifndef _ABIO32
++# define _ABIO32	_MIPS_SIM_ABI32
++#endif
++
+ #endif /* sgidefs.h */
--- /dev/null	2009-04-25 11:37:44.504526972 +0200
+++ b/recipes/linux-hotplug/linux-hotplug-20040920/hotplug-binary-path.patch	2009-04-22 12:13:09.000000000 +0200
@@ -0,0 +1,20 @@
+--- hotplug-2004_09_20/etc/hotplug/pci.rc-orig	2009-04-07 21:00:18.000000000 +0200
++++ hotplug-2004_09_20/etc/hotplug/pci.rc	2009-04-07 21:00:43.000000000 +0200
+@@ -38,7 +38,7 @@
+ 		sub_vendor_id=`cat $PCI_DEVICE/subsystem_vendor`
+ 		sub_device_id=`cat $PCI_DEVICE/subsystem_device`
+ 		PCI_SUBSYS_ID="${sub_vendor_id#0x}:${sub_device_id#0x}"
+-		/sbin/hotplug pci
++		/usr/sbin/hotplug pci
+ 	    done
+ 	fi
+     else
+@@ -53,7 +53,7 @@
+ 	for BUS in `cd /proc/bus/pci;find * -type d -print`; do
+ 	    for SLOT_FUNC in `cd /proc/bus/pci/$BUS; echo *`; do
+ 		PCI_SLOT=$BUS:$SLOT_FUNC
+-		/sbin/hotplug pci
++		/usr/sbin/hotplug pci
+ 	    done
+ 	done
+     fi
--- /dev/null	2009-04-25 17:28:27.529181222 +0200
+++ b/recipes/glibc/glibc-2.3.3/etc/ld.so.conf	2009-02-25 11:55:15.000000000 +0100
@@ -0,0 +1,2 @@
+/usr/local/lib
+/usr/X11R6/lib
--- /dev/null	2009-04-25 17:28:27.529181222 +0200
+++ b/recipes/glibc/glibc-2.3.3/allow-gcc.patch	2009-03-26 16:02:05.000000000 +0100
@@ -0,0 +1,70 @@
+--- glibc-2.3.2/configure-orig	2009-03-26 15:46:33.000000000 +0100
++++ glibc-2.3.2/configure	2009-03-26 15:49:15.000000000 +0100
+@@ -3850,67 +3850,6 @@
+ 
+ # These programs are version sensitive.
+ 
+-for ac_prog in ${ac_tool_prefix}gcc ${ac_tool_prefix}cc
+-do
+-  # Extract the first word of "$ac_prog", so it can be a program name with args.
+-set dummy $ac_prog; ac_word=$2
+-echo "$as_me:$LINENO: checking for $ac_word" >&5
+-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+-if test "${ac_cv_prog_CC+set}" = set; then
+-  echo $ECHO_N "(cached) $ECHO_C" >&6
+-else
+-  if test -n "$CC"; then
+-  ac_cv_prog_CC="$CC" # Let the user override the test.
+-else
+-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+-for as_dir in $PATH
+-do
+-  IFS=$as_save_IFS
+-  test -z "$as_dir" && as_dir=.
+-  for ac_exec_ext in '' $ac_executable_extensions; do
+-  if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+-    ac_cv_prog_CC="$ac_prog"
+-    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+-    break 2
+-  fi
+-done
+-done
+-
+-fi
+-fi
+-CC=$ac_cv_prog_CC
+-if test -n "$CC"; then
+-  echo "$as_me:$LINENO: result: $CC" >&5
+-echo "${ECHO_T}$CC" >&6
+-else
+-  echo "$as_me:$LINENO: result: no" >&5
+-echo "${ECHO_T}no" >&6
+-fi
+-
+-  test -n "$CC" && break
+-done
+-
+-if test -z "$CC"; then
+-  ac_verc_fail=yes
+-else
+-  # Found it, now check the version.
+-  echo "$as_me:$LINENO: checking version of $CC" >&5
+-echo $ECHO_N "checking version of $CC... $ECHO_C" >&6
+-  ac_prog_version=`$CC -v 2>&1 | sed -n 's/^.*version \([egcygnustpi-]*[0-9.]*\).*$/\1/p'`
+-  case $ac_prog_version in
+-    '') ac_prog_version="v. ?.??, bad"; ac_verc_fail=yes;;
+-    3.[2-9]*)
+-       ac_prog_version="$ac_prog_version, ok"; ac_verc_fail=no;;
+-    *) ac_prog_version="$ac_prog_version, bad"; ac_verc_fail=yes;;
+-
+-  esac
+-  echo "$as_me:$LINENO: result: $ac_prog_version" >&5
+-echo "${ECHO_T}$ac_prog_version" >&6
+-fi
+-if test $ac_verc_fail = yes; then
+-  critic_missing="$critic_missing gcc"
+-fi
+-
+ for ac_prog in gnumake gmake make
+ do
+   # Extract the first word of "$ac_prog", so it can be a program name with args.
--- /dev/null	2009-04-25 17:28:27.529181222 +0200
+++ b/recipes/glibc/glibc-2.3.3/mips-abio32.patch	2009-03-26 16:02:05.000000000 +0100
@@ -0,0 +1,12 @@
+--- glibc-2.3.3-r16/sysdeps/mips/sgidefs.h-orig	2009-02-27 16:05:55.000000000 +0100
++++ glibc-2.3.3-r16/sysdeps/mips/sgidefs.h	2009-02-27 16:06:26.000000000 +0100
+@@ -43,4 +43,9 @@
+ #define _MIPS_SIM_NABI32	2
+ #define _MIPS_SIM_ABI64		3
+ 
++/* compatibility stuff needed e.g. by gdb */
++#ifndef _ABIO32
++# define _ABIO32	_MIPS_SIM_ABI32
++#endif
++
+ #endif /* sgidefs.h */
diff --git a/recipes/ser/ser_0.9.0.bb b/recipes/ser/ser_0.9.0.bb
index 25e5936..010b152 100644
--- a/recipes/ser/ser_0.9.0.bb
+++ b/recipes/ser/ser_0.9.0.bb
@@ -21,3 +21,5 @@ do_install() {
 	install -m 0755 ${WORKDIR}/init ${D}/${sysconfdir}/init.d/ser
 	oe_runmake bin-target=${sbindir} doc-target=${docdir}/ser modules-target=${libdir}/ser/modules/ cfg-target=${sysconfdir}/ser/ prefix=${D}/usr cfg-prefix=${D} LD='${CC}' install
 }
+
+FILES_${PN}-dbg += "${libdir}/ser/modules/.debug ${sbindir}/.debug"
