diff --git a/ffs-lowmem-patches/Makefile b/ffs-lowmem-patches/Makefile
new file mode 100644
index 0000000000000000000000000000000000000000..f9a8750aff54801605bb8207d6c17ef7bde70859
--- /dev/null
+++ b/ffs-lowmem-patches/Makefile
@@ -0,0 +1,36 @@
+include $(TOPDIR)/rules.mk
+
+PKG_NAME:=ffs-lowmem-patches
+PKG_VERSION:=1
+
+PKG_BUILD_DIR := $(BUILD_DIR)/$(PKG_NAME)
+
+include $(GLUONDIR)/include/package.mk
+
+PKG_CONFIG_DEPENDS += $(GLUON_I18N_CONFIG)
+
+
+define Package/ffs-lowmem-patches
+  SECTION:=gluon
+  CATEGORY:=Gluon
+  TITLE:=Patch files for FFS routers with only 32mb ram
+endef
+
+define Build/Prepare
+	mkdir -p $(PKG_BUILD_DIR)
+endef
+
+define Build/Configure
+endef
+
+define Build/Compile
+endef
+
+define Package/ffs-lowmem-patches/install
+	$(INSTALL_DIR) $(1)/etc/init.d
+	$(INSTALL_BIN) ./files/etc/init.d/ffs-lowmem $(1)/etc/init.d/ffs-lowmem
+	$(INSTALL_DIR) $(1)/usr/sbin
+	$(INSTALL_BIN) ./files/usr/sbin/ffs-lowmem $(1)/usr/sbin/ffs-lowmem
+endef
+
+$(eval $(call BuildPackage,ffs-lowmem-patches))
diff --git a/ffs-lowmem-patches/files/etc/init.d/ffs-lowmem b/ffs-lowmem-patches/files/etc/init.d/ffs-lowmem
new file mode 100755
index 0000000000000000000000000000000000000000..090b915678e37314b9548dfd0b2e9847d04df832
--- /dev/null
+++ b/ffs-lowmem-patches/files/etc/init.d/ffs-lowmem
@@ -0,0 +1,12 @@
+#!/bin/sh /etc/rc.common
+
+START=11
+
+start () {
+    /usr/sbin/ffs-lowmem
+}
+
+stop() {
+    true
+}
+
diff --git a/ffs-lowmem-patches/files/usr/sbin/ffs-lowmem b/ffs-lowmem-patches/files/usr/sbin/ffs-lowmem
new file mode 100755
index 0000000000000000000000000000000000000000..76eb6604c0504bd04549a677ba0f7b41bc94810f
--- /dev/null
+++ b/ffs-lowmem-patches/files/usr/sbin/ffs-lowmem
@@ -0,0 +1,23 @@
+#!/bin/sh
+
+# Content based on patches from FFRN
+# only do something if less than 40megs of RAM
+RAMSIZE=`grep MemTotal /proc/meminfo | awk '{print $2}'`
+if [ $RAMSIZE -le 40000 ] ; then
+
+    # start haveged in config mode
+    MODE=`uci get gluon-setup-mode.@setup_mode[0].enabled`
+    if [ $MODE == "1" ] ; then
+        /etc/init.d/haveged start
+
+    # disable and stop haveged if enabled
+    elif [ -f /etc/rc.d/S13haveged ] ; then
+        /etc/init.d/haveged disable
+        /etc/init.d/haveged stop
+    fi
+
+    # tweak some sysctls
+    /sbin/sysctl -w net.ipv6.neigh.default.gc_interval=60
+    /sbin/sysctl -w net.ipv6.neigh.default.gc_stale_time=120
+    /sbin/sysctl -w vm.min_free_kbytes=1024
+fi
diff --git a/ffs-lowmem-patches/ipkg/postinst b/ffs-lowmem-patches/ipkg/postinst
new file mode 100755
index 0000000000000000000000000000000000000000..63bd51e4c889edd7b14ff0c15df07a70fd7b75ff
--- /dev/null
+++ b/ffs-lowmem-patches/ipkg/postinst
@@ -0,0 +1,3 @@
+#!/bin/sh
+
+/etc/init.d/ffs-lowmem enable