diff --git a/package/br2684ctl/Makefile b/package/br2684ctl/Makefile
index 4af040b4e13cafd7528c606ba970a9e760855b27..f8bf4aea293986c50505a304330f81b4ff180a47 100644
--- a/package/br2684ctl/Makefile
+++ b/package/br2684ctl/Makefile
@@ -10,7 +10,7 @@ include $(INCLUDE_DIR)/kernel.mk
 
 PKG_NAME:=br2684ctl
 PKG_VERSION:=20040226
-PKG_RELEASE:=1
+PKG_RELEASE:=2
 
 PKG_SOURCE:=$(PKG_NAME)_$(PKG_VERSION).orig.tar.gz
 PKG_SOURCE_URL:=http://ftp.debian.org/debian/pool/main/b/br2684ctl
diff --git a/package/br2684ctl/files/br2684ctl b/package/br2684ctl/files/br2684ctl
index cff667014aab58d25fddfe55bcd1a8b9597cbe88..929e2b887eac2b2f9ff922fd025e1cd4ab56e6eb 100755
--- a/package/br2684ctl/files/br2684ctl
+++ b/package/br2684ctl/files/br2684ctl
@@ -1,31 +1,46 @@
 #!/bin/sh /etc/rc.common
 START=50
 
-stop() {
-	killall br2684ctl 2>/dev/null >/dev/null
-	sleep 1
-	rmmod br2684
-}
-
 start_daemon() {
 	local cfg="$1"
-	config_get atmdev "$cfg" atmdev
-	config_get unit "$cfg" unit
-	config_get vpi "$cfg" vpi
-	config_get vci "$cfg" vci
+
+	local atmdev
+	config_get atmdev "$cfg" atmdev 0
+
+	local unit
+	config_get unit "$cfg" unit 0
+
+	local vpi
+	config_get vpi "$cfg" vpi 8
+
+	local vci
+	config_get vci "$cfg" vci 35
+
+	local encaps
 	config_get encaps "$cfg" encaps
-	config_get payload "$cfg" payload
-	config_get qos "$cfg" qos
+
 	case "$encaps" in
 		1|vc) encaps=1;;
 		*) encaps=0;;
 	esac
-        case "$payload" in
-                0|routed) payload=0;;
-                *) payload=1;;
-        esac
-	[ "$qos" ] && qos="-q $qos"
-	br2684ctl -b -c "$unit" -e "$encaps" -p "$payload" $qos -a "${atmdev:+$atmdev.}${vpi:-8}.${vci:-35}"	
+
+	local payload
+	config_get payload "$cfg" payload
+
+	case "$payload" in
+		0|routed) payload=0;;
+		*) payload=1;;
+	esac
+
+	local qos
+	config_get qos "$cfg" qos
+
+	local circuit="$atmdev.$vpi.$vci"
+	local pid="/var/run/br2684ctl-$circuit.pid"
+
+	start-stop-daemon -S -b -x /usr/sbin/br2684ctl -m -p "$pid" -- \
+		-c "$unit" -e "$encaps" -p "$payload" \
+		-a "$circuit" ${qos:+-q "$qos"}
 }
 
 start() {
@@ -33,3 +48,13 @@ start() {
 	config_load network
 	config_foreach start_daemon atm-bridge
 }
+
+stop() {
+	local pid
+	for pid in /var/run/br2684ctl-*.pid; do
+		if [ -f "$pid" ]; then
+			service_kill br2684ctl "$pid"
+			rm -f "$pid"
+		fi
+	done
+}