diff --git a/common/cmd_nvedit.c b/common/cmd_nvedit.c
index c404157acc621ab61419001d9249bdc72c021aaf..3c2a553ba7da427cd49964de0445b79a0b7d101a 100644
--- a/common/cmd_nvedit.c
+++ b/common/cmd_nvedit.c
@@ -180,9 +180,13 @@ int _do_setenv (int flag, int argc, char *argv[])
 #ifndef CONFIG_ENV_OVERWRITE
 
 		/*
-		 * Ethernet Address and serial# can be set only once
+		 * Ethernet Address and serial# can be set only once,
+		 * ver is readonly.
 		 */
 		if ( (strcmp (name, "serial#") == 0) ||
+#if defined(CONFIG_VERSION_VARIABLE)
+		     (strcmp (name, "ver") == 0) ||
+#endif /* CONFIG_VERSION_VARIABLE */
 		    ((strcmp (name, "ethaddr") == 0)
 #if defined(CONFIG_OVERWRITE_ETHADDR_ONCE) && defined(CONFIG_ETHADDR)
 		     && (strcmp (env_get_addr(oldval),MK_STR(CONFIG_ETHADDR)) != 0)
@@ -358,7 +362,7 @@ int _do_setenv (int flag, int argc, char *argv[])
 	}
 #endif	/* CFG_CMD_NET */
 
-#ifdef CONFIG_AMIGAONEG3SE 
+#ifdef CONFIG_AMIGAONEG3SE
 	if (strcmp(argv[1], "vga_fg_color") == 0 ||
 	    strcmp(argv[1], "vga_bg_color") == 0 ) {
 		extern void video_set_color(unsigned char attr);
diff --git a/common/main.c b/common/main.c
index 9ee32a58046e1fa43669607fa2be36b2845810b7..e32845e471d8db329759d8995af13a992aee77fb 100644
--- a/common/main.c
+++ b/common/main.c
@@ -279,6 +279,16 @@ void main_loop (void)
 	}
 #endif  /* CONFIG_MODEM_SUPPORT */
 
+#ifdef CONFIG_VERSION_VARIABLE
+	{
+		extern char version_string[];
+		char *str = getenv("ver");
+
+		if (!str)
+			setenv ("ver", version_string);  /* set version variable */
+	}
+#endif /* CONFIG_VERSION_VARIABLE */
+
 #ifdef CFG_HUSH_PARSER
 	u_boot_hush_start ();
 #endif