diff --git a/buildscript b/buildscript
index 0205bd07e19d02add0c27227284ef2cd5f491b12..03c7d23cbb6fc2cc92e43c73099e0b84b7e8220c 100755
--- a/buildscript
+++ b/buildscript
@@ -39,15 +39,10 @@ ROUTING=(routing
          e870c3373eea80df852d42fac3f40aaffd7a0f58)
 ROUTING_PKGS="alfred"
 
-WLANSLOVENIJA=(wlanslovenija
-       https://github.com/wlanslovenija/firmware-packages-opkg
-       fec592e0540ef883bc8b27b77e7ff45d93ed3f24)
-WLANSLOVENIJA_PKGS="tunneldigger"
-
 FFF=(fff)
 FFF_PKGS="-a"
 
-FEEDS=(OPENWRT ROUTING GLUON WLANSLOVENIJA FFF)
+FEEDS=(OPENWRT ROUTING GLUON FFF)
 
 checkout_git(){
     local DIRECTORY=$1
diff --git a/src/packages/fff/tunneldigger/Makefile b/src/packages/fff/tunneldigger/Makefile
new file mode 100644
index 0000000000000000000000000000000000000000..a8838f1c9321ba16af6d877ae51d4bffd8c72e0b
--- /dev/null
+++ b/src/packages/fff/tunneldigger/Makefile
@@ -0,0 +1,47 @@
+include $(TOPDIR)/rules.mk
+
+PKG_NAME:=tunneldigger
+PKG_VERSION:=0.4.5
+PKG_RELEASE:=1
+PKG_REV:=0bae1419da12de64d1c7571c5f6649d39d682052
+
+PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.bz2
+PKG_SOURCE_URL:=git://github.com/wlanslovenija/tunneldigger.git
+PKG_SOURCE_PROTO:=git
+PKG_SOURCE_SUBDIR:=$(PKG_NAME)-$(PKG_VERSION)
+PKG_SOURCE_VERSION:=$(PKG_REV)
+
+include $(INCLUDE_DIR)/package.mk
+
+define Package/tunneldigger
+  SECTION:=net
+  CATEGORY:=Network
+  DEPENDS:=+libnl-tiny +kmod-l2tp +kmod-l2tp-ip +kmod-l2tp-eth +librt +libpthread
+  TITLE:=tunneldigger
+endef
+
+TARGET_CFLAGS += \
+	-I$(STAGING_DIR)/usr/include/libnl-tiny \
+	-I$(STAGING_DIR)/usr/include \
+	-DLIBNL_TINY
+
+define Build/Prepare
+	$(call Build/Prepare/Default)
+	mv $(PKG_BUILD_DIR)/client/* $(PKG_BUILD_DIR)
+	sed -i s/-lnl/-lnl-tiny/g $(PKG_BUILD_DIR)/Makefile
+endef
+
+define Package/tunneldigger/install
+	$(INSTALL_DIR) $(1)/usr/bin
+	$(INSTALL_BIN) $(PKG_BUILD_DIR)/l2tp_client $(1)/usr/bin/tunneldigger
+	$(INSTALL_DIR) $(1)/etc/init.d
+	$(INSTALL_BIN) ./files/tunneldigger.init $(1)/etc/init.d/tunneldigger
+	$(INSTALL_DIR) $(1)/etc/config
+	$(INSTALL_DATA) ./files/config.default $(1)/etc/config/tunneldigger
+endef
+
+define Package/tunneldigger/conffiles
+/etc/config/tunneldigger
+endef
+
+$(eval $(call BuildPackage,tunneldigger))
diff --git a/src/packages/fff/tunneldigger/files/config.default b/src/packages/fff/tunneldigger/files/config.default
new file mode 100644
index 0000000000000000000000000000000000000000..571621a42e4bc05fc4ae657dceb3b4d40c69491c
--- /dev/null
+++ b/src/packages/fff/tunneldigger/files/config.default
@@ -0,0 +1,8 @@
+config broker
+	list address 'x.y.z.w:8942'
+	list address 'x.y.z.w:53'
+	list address 'x.y.z.w:123'
+	option uuid 'abcd'
+	option interface 'l2tp0'
+	option limit_bw_down '1024'
+	option enabled '0'
diff --git a/src/packages/fff/tunneldigger/files/tunneldigger.init b/src/packages/fff/tunneldigger/files/tunneldigger.init
new file mode 100755
index 0000000000000000000000000000000000000000..875ecba651d85da79ed72a90e554bb1afaddff9f
--- /dev/null
+++ b/src/packages/fff/tunneldigger/files/tunneldigger.init
@@ -0,0 +1,80 @@
+#!/bin/sh /etc/rc.common
+
+. $IPKG_INSTROOT/lib/functions/network.sh
+
+START=90
+
+PIDPATH=/var/run
+tunnel_id=1
+
+missing() {
+	echo "Not starting tunneldigger - missing $1" >&2
+}
+
+config_cb() {
+	local cfg="$CONFIG_SECTION"
+	config_get configname "$cfg" TYPE
+	case "$configname" in
+		broker)
+			config_get_bool enabled "$cfg" enabled 1
+			config_get addresses "$cfg" address
+			config_get uuid "$cfg" uuid
+			config_get interface "$cfg" interface
+			config_get limit_bw_down "$cfg" limit_bw_down
+			config_get hook_script "$cfg" hook_script
+			config_get bind_interface "$cfg" bind_interface
+
+			[ $enabled -eq 0 ] && return
+
+			local broker_opts=""
+			for address in $addresses; do
+			  append broker_opts "-b ${address}"
+			done
+
+			[ ! -z "${limit_bw_down}" ] && append broker_opts "-L ${limit_bw_down}"
+			[ ! -z "${hook_script}" ] && append broker_opts "-s ${hook_script}"
+			[ ! -z "${bind_interface}" ] && {
+				# Resolve logical interface name.
+				unset _bind_interface
+				network_get_device _bind_interface "${bind_interface}" || _bind_interface="${bind_interface}"
+				append broker_opts "-I ${_bind_interface}"
+			}
+
+			if [ -z "$uuid" ]; then
+				missing uuid
+				return
+			elif [ -z "$interface" ]; then
+				missing interface
+				return
+			fi
+
+			echo "Starting tunneldigger on ${interface}"
+			/sbin/start-stop-daemon -S -q -b -m -p ${PIDPATH}/tunneldigger.${interface}.pid -x /usr/bin/tunneldigger -- -u ${uuid} -i ${interface} -t ${tunnel_id} ${broker_opts}
+
+			let tunnel_id++
+		;;
+	esac
+}
+
+start() {
+	config_load tunneldigger
+}
+
+stop() {
+	for PIDFILE in `find ${PIDPATH}/ -name "tunneldigger\.*\.pid"`; do
+		PID="$(cat ${PIDFILE})"
+		IFACE="$(echo ${PIDFILE} | awk -F\/tunneldigger '{print $2}' | cut -d'.' -f2)"
+		echo "Stopping tunneldigger for interface ${IFACE}"
+		start-stop-daemon -K -q -p $PIDFILE
+		while test -d "/proc/${PID}"; do
+			echo "  waiting for tunneldigger to stop"
+			sleep 1
+		done
+		echo "  tunneldigger stopped"
+	done
+}
+
+restart() {
+	stop
+	start
+}