diff --git a/package/base-files/Makefile b/package/base-files/Makefile
index b19f694a09fbaa4de94daba2078fa65f652aa6f3..002d51674de27a4e1602f2045102d8acc6261b13 100644
--- a/package/base-files/Makefile
+++ b/package/base-files/Makefile
@@ -10,7 +10,7 @@ include $(TOPDIR)/rules.mk
 include $(INCLUDE_DIR)/kernel.mk
 
 PKG_NAME:=base-files
-PKG_RELEASE:=82
+PKG_RELEASE:=83
 
 PKG_FILE_DEPENDS:=$(PLATFORM_DIR)/ $(GENERIC_PLATFORM_DIR)/base-files/
 PKG_BUILD_DEPENDS:=opkg/host
diff --git a/package/base-files/files/etc/config/system b/package/base-files/files/etc/config/system
index 30055eaf31bd3e1414b241a9ca42fb8a9553df52..ad51db5bd8c74e0465c60b4e54e98f3980760a0a 100644
--- a/package/base-files/files/etc/config/system
+++ b/package/base-files/files/etc/config/system
@@ -2,5 +2,8 @@ config system
 	option hostname	OpenWrt
 	option timezone	UTC
 
-config rdate
-	option interface	wan
+config timeserver
+	list server	0.openwrt.pool.ntp.org
+	list server	1.openwrt.pool.ntp.org
+	list server	2.openwrt.pool.ntp.org
+	list server	3.openwrt.pool.ntp.org
diff --git a/package/base-files/files/etc/config/timeserver b/package/base-files/files/etc/config/timeserver
deleted file mode 100644
index 294631ee0c554d4be037b0ef8418c53b0fc9857b..0000000000000000000000000000000000000000
--- a/package/base-files/files/etc/config/timeserver
+++ /dev/null
@@ -1,15 +0,0 @@
-config timeserver
-	option hostname	ptbtime1.ptb.de
-#	option interface	wan
-
-config timeserver
-	option hostname	time-a.nist.gov
-
-config timeserver
-	option hostname	ntp.xs4all.nl
-
-config timeserver
-	option hostname	ptbtime2.ptb.de
-
-config timeserver
-	option hostname	time-b.nist.gov
diff --git a/package/base-files/files/etc/hotplug.d/iface/40-rdate b/package/base-files/files/etc/hotplug.d/iface/40-rdate
deleted file mode 100644
index c5abaf011e205e86f464f89866f18211640dcd46..0000000000000000000000000000000000000000
--- a/package/base-files/files/etc/hotplug.d/iface/40-rdate
+++ /dev/null
@@ -1,63 +0,0 @@
-IFACE_GLOBAL=$(uci_get "system.@rdate[0].interface")
-SERVERS=
-MAX=0
-SYNCED=
-
-do_rdate()
-{
-	local server="$1"
-
-	rdate -s "$server" >/dev/null 2>/dev/null && {
-		logger -t rdate "Synced with $server"
-		SYNCED="$server"
-	} || {
-		logger -t rdate "Failed to sync with $server"
-	}
-}
-
-add_server()
-{
-	local section="$1"
-
-	local server
-	config_get server "$section" hostname
-	[ -z "$server" ] && return
-
-	local iface
-	config_get iface "$section" interface
-	[ -z "$iface" ] && iface=$IFACE_GLOBAL
-	[ -n "$iface" ] && {
-		[ "$iface" = "$INTERFACE" ] || return
-	}
-
-	SERVERS="${SERVERS} $server"; : $((MAX++))
-}
-
-sync_time()
-{
-	local server
-	server=$(uci_get_state "network.$INTERFACE.lease_timesrv")
-	[ -n "$server" ] && do_rdate "$server"
-	[ -n "$SYNCED" ] && return
-
-	config_load timeserver
-	config_foreach add_server timeserver
-
-	local servers
-	while [ $MAX -gt 0 ] && [ -z "$SYNCED" ]; do
-		unset servers; random=$(awk "BEGIN { srand(); print int(rand() * $MAX + 1); }")
-		for server in $SERVERS; do
-			[ $((--random)) -eq 0 ] && { do_rdate "$server"; continue; }
-			servers="${servers} $server"
-		done
-		SERVERS="${servers}"; : $((MAX--))
-	done
-
-	[ -z "$SYNCED" ] && logger -t rdate "No usable time server for $INTERFACE found"
-}
-
-case "${ACTION:-ifup}" in
-	ifup)
-		sync_time
-	;;
-esac
diff --git a/package/base-files/files/etc/init.d/sysntpd b/package/base-files/files/etc/init.d/sysntpd
new file mode 100755
index 0000000000000000000000000000000000000000..fefb48fb19ee510850e8c912f89249867eb8e0a7
--- /dev/null
+++ b/package/base-files/files/etc/init.d/sysntpd
@@ -0,0 +1,35 @@
+#!/bin/sh /etc/rc.common
+# Copyright (C) 2011 OpenWrt.org
+
+START=98
+
+BIN=/usr/sbin/ntpd
+PID=/var/run/sysntpd.pid
+
+start() {
+	[ -x $BIN ] || exit 0
+
+	local peers
+
+	getpeers() {
+		config_get peers "$1" server
+	}
+
+	config_load system
+	config_foreach getpeers timeserver
+
+	if [ -n "$peers" ]; then
+		local peer
+		local args="-n"
+		for peer in $peers; do
+			append args "-p $peer"
+		done
+
+		start-stop-daemon -x $BIN -m -p $PID -b -S -- $args
+	fi
+}
+
+stop() {
+	service_kill ${BIN##*/} $PID
+	rm -f $PID
+}