Index: /src/router/libutils/utils.c
===================================================================
--- /src/router/libutils/utils.c	(revision 13539)
+++ /src/router/libutils/utils.c	(revision 13540)
@@ -2970,5 +2970,5 @@
 		break;
 	case ROUTER_WRT310N:
-		connected_gpio = 0x103;  //sesorange
+		connected_gpio = 0x103;  //ses orange
 		power_gpio = 0x001;
 		diag_gpio = 0x101;	// power led blink / off to indicate fac.def.
Index: /src/router/libutils/wl.c
===================================================================
--- /src/router/libutils/wl.c	(revision 13539)
+++ /src/router/libutils/wl.c	(revision 13540)
@@ -60,4 +60,20 @@
 }
 
+int has_5ghz(char *prefix)
+{
+	if (strstr(nvram_nget("%s_bandlist", prefix), "a"))
+		return 1;
+
+	return 0;
+}
+
+int has_2ghz(char *prefix)
+{
+	if (strstr(nvram_nget("%s_bandlist", prefix), "b"))
+		return 1;
+
+	return 0;
+}
+
 int getchannels(unsigned int *list, char *ifname)
 {
@@ -494,4 +510,20 @@
 	return count;
 #endif
+}
+
+int has_5ghz(char *prefix)
+{
+	if (strstr(nvram_nget("%s_bandlist", prefix), "a"))
+		return 1;
+
+	return 0;
+}
+
+int has_2ghz(char *prefix)
+{
+	if (strstr(nvram_nget("%s_bandlist", prefix), "b"))
+		return 1;
+
+	return 0;
 }
 
@@ -1255,32 +1287,19 @@
 
 
-int is_wifar5008(char *dev)
+int is_ar5008(char *prefix)
 {
 	char sys[64];
-
-	sprintf(sys, "/proc/sys/dev/%s/mimo", dev);
-	FILE *tmp = fopen(sys, "rb");
-
-	if (tmp == NULL)
-		return 0;
-	fclose(tmp);
-	return 1;
-}
-
-
-int is_ar5008(int devnum)
-{
-	char sys[64];
+	int devnum;
+	sscanf(prefix, "ath%d", &devnum)
 
 	sprintf(sys, "/proc/sys/dev/wifi%d/mimo", devnum);
-	FILE *tmp = fopen(sys, "rb");
-
-	if (tmp == NULL)
-		return 0;
-	fclose(tmp);
-	return 1;
-}
-
-int has_athmask(int devnum,int mask)
+	
+	if (f_exists(sys))
+		return 1;
+		
+	return 0;
+}
+
+int has_athmask(int devnum, int mask)
 {
 	char sys[64];
@@ -1301,11 +1320,17 @@
 
 
-int has_5ghz(int devnum)
-{
+int has_5ghz(char *prefix)
+{
+	int devnum;
+	sscanf(prefix, "ath%d", &devnum)
+
 	return has_athmask(devnum,0x1);
 }
 
-int has_2ghz(int devnum)
-{
+int has_2ghz(char *prefix)
+{
+	int devnum;
+	sscanf(prefix, "ath%d", &devnum)
+
 	return has_athmask(devnum,0x8);
 }
