diff --git a/target/linux/ar71xx/base-files/etc/defconfig/all0258n/ubootenv b/target/linux/ar71xx/base-files/etc/defconfig/all0258n/ubootenv
deleted file mode 100644
index 31af7266e4b25991d4d302dfdd1cd90d22179d92..0000000000000000000000000000000000000000
--- a/target/linux/ar71xx/base-files/etc/defconfig/all0258n/ubootenv
+++ /dev/null
@@ -1,5 +0,0 @@
-config ubootenv
-	option dev	/dev/mtd1
-	option offset	0x0
-	option envsize	0x10000
-	option secsize	0x10000
diff --git a/target/linux/ar71xx/base-files/etc/uci-defaults/ubootenv b/target/linux/ar71xx/base-files/etc/uci-defaults/ubootenv
new file mode 100755
index 0000000000000000000000000000000000000000..687f3408d8efcd6548c328092b28ed663f11336a
--- /dev/null
+++ b/target/linux/ar71xx/base-files/etc/uci-defaults/ubootenv
@@ -0,0 +1,37 @@
+#!/bin/sh
+#
+# Copyright (C) 2011 OpenWrt.org
+#
+
+add_ubootenv() {
+	local dev=$1
+	local offset=$2
+	local envsize=$3
+	local secsize=$4
+	local numsec=$5
+	uci batch <<EOF
+add ubootenv ubootenv
+set ubootenv.@ubootenv[-1].dev='$dev'
+set ubootenv.@ubootenv[-1].offset='$offset'
+set ubootenv.@ubootenv[-1].envsize='$envsize'
+set ubootenv.@ubootenv[-1].secsize='$secsize'
+set ubootenv.@ubootenv[-1].numsec='$numsec'
+EOF
+}
+
+[ -e /etc/config/ubootenv ] && exit 0
+
+touch /etc/config/ubootenv
+
+. /lib/ar71xx.sh
+
+board=$(ar71xx_board_name)
+
+case "$board" in
+all0258n)
+	add_ubootenv /dev/mtd1 0x0 0x10000 0x10000
+	;;
+
+esac
+
+uci commit ubootenv