diff --git a/feed/app/atenl/files/ated.sh b/feed/app/atenl/files/ated.sh
index e989e44..9037054 100755
--- a/feed/app/atenl/files/ated.sh
+++ b/feed/app/atenl/files/ated.sh
@@ -9,8 +9,10 @@
 interface=""
 phy_idx=0
 ated_file="/tmp/interface"
+iwpriv_file="/tmp/iwpriv_wrapper"
 SOC_start_idx="0"
-is_eagle="0"
+SOC_end_idx="0"
+is_connac3="0"
 
 function do_cmd() {
     case ${work_mode} in
@@ -31,8 +33,8 @@
     local config=$1
     local tmp_file=$3
 
-    # check it is SOC(mt7986)/Eagle or PCIE card (mt7915/7916), and write its config
-    if [ ${config} != "STARTIDX" ] && [ ${config} != "IS_EAGLE" ]; then
+    # check it is SOC(mt7986)/Eagle/Kite or PCIE card (mt7915/7916), and write its config
+    if [ ${config} != "STARTIDX" ] && [ ${config} != "ENDIDX" ] && [ ${config} != "IS_CONNAC3" ]; then
         if [ $phy_idx -lt $SOC_start_idx ]; then
             config="${config}_PCIE"
         elif [ $phy_idx -ge $SOC_start_idx ]; then
@@ -60,8 +62,8 @@
         return
     fi
 
-    # check it is SOC(mt7986)/Eagle or PCIE card (mt7915/7916), and write its config
-    if [ ${config} != "STARTIDX" ] && [ ${config} != "IS_EAGLE" ]; then
+    # check it is SOC(mt7986)/Eagle/Kite or PCIE card (mt7915/7916), and write its config
+    if [ ${config} != "STARTIDX" ] && [ ${config} != "ENDIDX" ] && [ ${config} != "IS_CONNAC3" ]; then
         if [ $phy_idx -lt $SOC_start_idx ]; then
             config="${config}_PCIE"
         elif [ $phy_idx -ge $SOC_start_idx ]; then
@@ -76,37 +78,69 @@
     fi
 }
 
-function convert_interface {
+function parse_sku {
     SOC_start_idx=$(get_config "STARTIDX" ${ated_file})
-    is_eagle=$(get_config "IS_EAGLE" ${ated_file})
+    SOC_end_idx=$(get_config "ENDIDX" ${ated_file})
+    is_connac3=$(get_config "IS_CONNAC3" ${ated_file})
     local eeprom_file=/sys/kernel/debug/ieee80211/phy0/mt76/eeprom
-    if [ -z "${SOC_start_idx}" ] || [ -z "${is_eagle}" ]; then
+    if [ -z "${SOC_start_idx}" ] || [ -z "${SOC_end_idx}" ] || [ -z "${is_connac3}" ]; then
         if [ ! -z "$(head -c 2 ${eeprom_file} | hexdump | grep "7916")" ]; then
             SOC_start_idx="2"
-            is_eagle="0"
+            SOC_end_idx="3"
+            is_connac3="0"
         elif [ ! -z "$(head -c 2 ${eeprom_file} | hexdump | grep "7915")" ]; then
             SOC_start_idx="1"
-            is_eagle="0"
+            SOC_end_idx="2"
+            is_connac3="0"
+        elif [ ! -z "$(head -c 2 ${eeprom_file} | hexdump | grep "7981")" ]; then
+            SOC_start_idx="0"
+            SOC_end_idx="1"
+            is_connac3="0"
         elif [ ! -z "$(head -c 2 ${eeprom_file} | hexdump | grep "7986")" ]; then
             SOC_start_idx="0"
-            is_eagle="0"
+            SOC_end_idx="1"
+            is_connac3="0"
         elif [ ! -z "$(head -c 2 ${eeprom_file} | hexdump | grep "7990")" ]; then
             SOC_start_idx="0"
+            SOC_end_idx="2"
+            is_connac3="1"
+        elif [ ! -z "$(head -c 2 ${eeprom_file} | hexdump | grep "7992")" ]; then
+            SOC_start_idx="0"
-            is_eagle="1"
+            SOC_end_idx="1"
+            is_connac3="1"
         else
             echo "Interface Conversion Failed!"
             echo "Please use iwpriv <phy0/phy1/..> set <...> or configure the sku of your board manually by the following commands"
-            echo "For AX6000/Eagle: echo STARTIDX=0 >> ${ated_file}"
-            echo "For AX7800: echo STARTIDX=2 >> ${ated_file}"
-            echo "For AX8400: echo STARTIDX=1 >> ${ated_file}"
+            echo "For AX3000/AX6000:"
+            echo "      echo STARTIDX=0 >> ${ated_file}"
+            echo "      echo ENDIDX=1 >> ${ated_file}"
+            echo "      echo IS_CONNAC3=0 >> ${ated_file}"
+            echo "For AX7800:"
+            echo "      echo STARTIDX=2 >> ${ated_file}"
+            echo "      echo ENDIDX=3 >> ${ated_file}"
+            echo "      echo IS_CONNAC3=0 >> ${ated_file}"
+            echo "For AX8400:"
+            echo "      echo STARTIDX=1 >> ${ated_file}"
+            echo "      echo ENDIDX=2 >> ${ated_file}"
+            echo "      echo IS_CONNAC3=0 >> ${ated_file}"
+            echo "For Eagle:"
+            echo "      echo STARTIDX=0 >> ${ated_file}"
+            echo "      echo ENDIDX=2 >> ${ated_file}"
+            echo "      echo IS_CONNAC3=1 >> ${ated_file}"
+            echo "For Kite:"
+            echo "      echo STARTIDX=0 >> ${ated_file}"
+            echo "      echo ENDIDX=1 >> ${ated_file}"
+            echo "      echo IS_CONNAC3=1 >> ${ated_file}"
             exit 0
         fi
         record_config "STARTIDX" ${SOC_start_idx} ${ated_file}
-        record_config "IS_EAGLE" ${is_eagle} ${ated_file}
+        record_config "ENDIDX" ${SOC_end_idx} ${ated_file}
+        record_config "IS_CONNAC3" ${is_connac3} ${ated_file}
     fi
-
+}
 
-    if [ ${is_eagle} == "0" ]; then
+function convert_interface {
+    if [ ${is_connac3} == "0" ]; then
         if [[ $1 == "raix"* ]]; then
             phy_idx=1
         elif [[ $1 == "rai"* ]]; then
@@ -118,7 +152,7 @@
         fi
 
         # convert phy index according to band idx
-        local band_idx=$(get_config "ATECTRLBANDIDX" ${ated_file})
+        local band_idx=$(get_config "ATECTRLBANDIDX" ${iwpriv_file})
         if [ "${band_idx}" = "0" ]; then
             if [[ $1 == "raix"* ]]; then
                 phy_idx=0
@@ -135,7 +169,7 @@
             fi
         fi
     else
-        # Eagle has different mapping method
+        # Connac 3 chips has different mapping method
         # phy0: ra0
         # phy1: rai0
         # phy2: rax0
@@ -162,6 +196,7 @@
         add_quote="0"
     else
         if [[ ${i} == "ra"* ]]; then
+            parse_sku
             convert_interface $i
             cmd="${cmd} ${interface}"
         else
diff --git a/feed/app/atenl/files/iwpriv.sh b/feed/app/atenl/files/iwpriv.sh
index c2b2b88..0dde191 100755
--- a/feed/app/atenl/files/iwpriv.sh
+++ b/feed/app/atenl/files/iwpriv.sh
@@ -12,6 +12,7 @@
 iwpriv_file="/tmp/iwpriv_wrapper"
 interface_file="/tmp/interface"
 phy_idx=$(echo ${interface} | tr -dc '0-9')
+main_phy_idx=0
 
 function do_cmd() {
     case ${work_mode} in
@@ -42,7 +43,7 @@
     local config=$1
     local tmp_file=$3
 
-    # check it is SOC(mt7986)/Eagle or PCIE card (mt7915/7916), and write its config
+    # check it is SOC(mt7986)/Eagle/Kite or PCIE card (mt7915/7916), and write its config
     if [ ${tmp_file} != ${interface_file} ]; then
         if [ $phy_idx -lt $SOC_start_idx ]; then
             config="${config}_PCIE"
@@ -71,7 +72,7 @@
         return
     fi
 
-    # check it is SOC(mt7986)/Eagle or PCIE card (mt7915/7916), and write its config
+    # check it is SOC(mt7986)/Eagle/Kite or PCIE card (mt7915/7916), and write its config
     if [ ${tmp_file} != ${interface_file} ]; then
         if [ $phy_idx -lt $SOC_start_idx ]; then
             config="${config}_PCIE"
@@ -178,7 +179,7 @@
             fi
         fi
     else
-        # Eagle has different mapping method
+        # Connac 3 chips has different mapping method
         # phy0: ra0
         # phy1: rai0
         # phy2: rax0
@@ -1167,14 +1168,13 @@
 
 function register_handler {
 
-	local phy_idx=$1
-	local offset=$2
-	local val=$3
-	local cmd=$4
+	local offset=$1
+	local val=$2
+	local cmd=$3
 	local w_cmd="write"
 
-	regidx=/sys/kernel/debug/ieee80211/phy${phy_idx}/mt76/regidx
-	regval=/sys/kernel/debug/ieee80211/phy${phy_idx}/mt76/regval
+	regidx=/sys/kernel/debug/ieee80211/phy${main_phy_idx}/mt76/regidx
+	regval=/sys/kernel/debug/ieee80211/phy${main_phy_idx}/mt76/regval
 
 	echo ${offset} > ${regidx}
 	if [[ "${cmd}" == "${w_cmd}" ]]; then
@@ -1199,6 +1199,11 @@
     full_cmd=$4
 fi
 
+# get main phy idx
+if [ "${phy_idx}" -ge "${SOC_start_idx}" ]; then
+    main_phy_idx=${SOC_start_idx}
+fi
+
 tmp_work_mode=$(get_config "WORKMODE" ${iwpriv_file})
 
 if [ ! -z ${tmp_work_mode} ]; then
@@ -1344,8 +1349,8 @@
 
 elif [ "${cmd_type}" = "show" ]; then
     if [ "${cmd}" = "wtbl" ]; then
-        wlan_idx=/sys/kernel/debug/ieee80211/phy${phy_idx}/mt76/wlan_idx
-        wtbl_info=/sys/kernel/debug/ieee80211/phy${phy_idx}/mt76/wtbl_info
+        wlan_idx=/sys/kernel/debug/ieee80211/phy${main_phy_idx}/mt76/wlan_idx
+        wtbl_info=/sys/kernel/debug/ieee80211/phy${main_phy_idx}/mt76/wtbl_info
 
         do_cmd "echo ${param} > ${wlan_idx}"
         do_cmd "cat ${wtbl_info}"
@@ -1410,20 +1415,20 @@
 
     # reg write
     if [[ ${full_cmd} == *"="* ]]; then
-        register_handler ${phy_idx} ${offset} ${val} "write"
+        register_handler ${offset} ${val} "write"
     else
 	start_addr=$(echo ${full_cmd} | sed s/-/' '/g | cut -d " " -f 1)
 	end_addr=$(echo ${full_cmd} | sed s/-/' '/g | cut -d " " -f 2)
 	loop=$((0x${end_addr}-0x${start_addr}))
 
 	if [[ ${loop} == "0" ]]; then
-		register_handler ${phy_idx} ${offset} ${val}
+		register_handler ${offset} ${val}
         else
 		i=0
 		while [ $i -le $loop ]; do
 			addr=$((0x${start_addr}+$i))
 			offset=$(printf "0x%x" ${addr})
-			register_handler ${phy_idx} ${offset} ${val}
+			register_handler ${offset} ${val}
 			i=$(($i + 4))
 		done
        fi
diff --git a/feed/app/atenl/src/atenl.h b/feed/app/atenl/src/atenl.h
index a5f9fbb..a6695c9 100644
--- a/feed/app/atenl/src/atenl.h
+++ b/feed/app/atenl/src/atenl.h
@@ -85,6 +85,7 @@
 	u16 adie_id;
 	u8 sub_chip_id;
 	u8 cur_band;
+	u8 main_phy_idx;
 
 	u8 mac_addr[ETH_ALEN];
 	char *bridge_name;
diff --git a/feed/app/atenl/src/eeprom.c b/feed/app/atenl/src/eeprom.c
index d112dc7..b3a652a 100644
--- a/feed/app/atenl/src/eeprom.c
+++ b/feed/app/atenl/src/eeprom.c
@@ -27,7 +27,7 @@
 
 	snprintf(fname, sizeof(fname),
 		 "/sys/kernel/debug/ieee80211/phy%d/mt76/eeprom",
-		 get_band_val(an, 0, phy_idx));
+		 an->main_phy_idx);
 	fd_ori = open(fname, O_RDONLY);
 	if (fd_ori < 0)
 		return -1;
@@ -344,17 +344,14 @@
 	bool flash_mode;
 	int eeprom_fd;
 	char buf[30];
-	u8 main_phy_idx = phy_idx;
 
 	set_band_val(an, 0, phy_idx, phy_idx);
 	atenl_nl_check_mtd(an);
 	flash_mode = an->mtd_part != NULL;
 
 	// Get the first main phy index for this chip
-	if (flash_mode)
-		main_phy_idx -= an->band_idx;
-
-	snprintf(buf, sizeof(buf), "/tmp/atenl-eeprom-phy%u", main_phy_idx);
+	an->main_phy_idx = phy_idx - an->band_idx;
+	snprintf(buf, sizeof(buf), "/tmp/atenl-eeprom-phy%u", an->main_phy_idx);
 	eeprom_file = strdup(buf);
 
 	eeprom_fd = atenl_eeprom_init_file(an, flash_mode);
@@ -461,7 +458,7 @@
 
 	snprintf(fname, sizeof(fname),
 		"/sys/kernel/debug/ieee80211/phy%d/mt76/eeprom",
-		get_band_val(an, 0, phy_idx));
+		an->main_phy_idx);
 	fd_ori = open(fname, O_RDONLY);
 	if (fd_ori < 0)
 		return -1;
diff --git a/feed/app/atenl/src/nl.c b/feed/app/atenl/src/nl.c
index 6850fc8..baf2944 100644
--- a/feed/app/atenl/src/nl.c
+++ b/feed/app/atenl/src/nl.c
@@ -1199,12 +1199,13 @@
 		return NL_SKIP;
 
 	nla_parse_nested(tb, MT76_TM_ATTR_MAX, attr, testdata_policy);
+	an->band_idx = nla_get_u32(tb[MT76_TM_ATTR_BAND_IDX]);
+
 	if (!tb[MT76_TM_ATTR_MTD_PART] || !tb[MT76_TM_ATTR_MTD_OFFSET])
 		return NL_SKIP;
 
 	an->mtd_part = strdup(nla_get_string(tb[MT76_TM_ATTR_MTD_PART]));
 	an->mtd_offset = nla_get_u32(tb[MT76_TM_ATTR_MTD_OFFSET]);
-	an->band_idx = nla_get_u32(tb[MT76_TM_ATTR_BAND_IDX]);
 
 	return NL_SKIP;
 }
diff --git a/feed/app/atenl/src/util.c b/feed/app/atenl/src/util.c
index b224040..109e7db 100644
--- a/feed/app/atenl/src/util.c
+++ b/feed/app/atenl/src/util.c
@@ -11,7 +11,7 @@
 	/* write offset into regidx */
 	ret = snprintf(dir, sizeof(dir),
 		       "/sys/kernel/debug/ieee80211/phy%d/mt76/regidx",
-		       get_band_val(an, 0, phy_idx));
+		       an->main_phy_idx);
 	if (snprintf_error(sizeof(dir), ret))
 		return ret;
 
@@ -30,7 +30,7 @@
 	/* read value from regval */
 	ret = snprintf(dir, sizeof(dir),
 		       "/sys/kernel/debug/ieee80211/phy%d/mt76/regval",
-		       get_band_val(an, 0, phy_idx));
+		       an->main_phy_idx);
 	if (snprintf_error(sizeof(dir), ret))
 		return ret;
 
@@ -63,7 +63,7 @@
 	/* write offset into regidx */
 	ret = snprintf(dir, sizeof(dir),
 		       "/sys/kernel/debug/ieee80211/phy%d/mt76/regidx",
-		       get_band_val(an, 0, phy_idx));
+		       an->main_phy_idx);
 	if (snprintf_error(sizeof(dir), ret))
 		return ret;
 
@@ -82,7 +82,7 @@
 	/* write value into regval */
 	ret = snprintf(dir, sizeof(dir),
 		       "/sys/kernel/debug/ieee80211/phy%d/mt76/regval",
-		       get_band_val(an, 0, phy_idx));
+		       an->main_phy_idx);
 	if (snprintf_error(sizeof(dir), ret))
 		return ret;
 
@@ -118,7 +118,7 @@
 	/* write regidx */
 	ret = snprintf(dir, sizeof(dir),
 		       "/sys/kernel/debug/ieee80211/phy%d/mt76/regidx",
-		       get_band_val(an, 0, phy_idx));
+		       an->main_phy_idx);
 	if (snprintf_error(sizeof(dir), ret))
 		return ret;
 
@@ -137,7 +137,7 @@
 	/* read from rf_regval */
 	ret = snprintf(dir, sizeof(dir),
 		       "/sys/kernel/debug/ieee80211/phy%d/mt76/rf_regval",
-		       get_band_val(an, 0, phy_idx));
+		       an->main_phy_idx);
 	if (snprintf_error(sizeof(dir), ret))
 		return ret;
 
@@ -175,7 +175,7 @@
 	/* write regidx */
 	ret = snprintf(dir, sizeof(dir),
 		       "/sys/kernel/debug/ieee80211/phy%d/mt76/regidx",
-		       get_band_val(an, 0, phy_idx));
+		       an->main_phy_idx);
 	if (snprintf_error(sizeof(dir), ret))
 		return ret;
 
@@ -194,7 +194,7 @@
 	/* write value into rf_val */
 	ret = snprintf(dir, sizeof(dir),
 		       "/sys/kernel/debug/ieee80211/phy%d/mt76/rf_regval",
-		       get_band_val(an, 0, phy_idx));
+		       an->main_phy_idx);
 	if (snprintf_error(sizeof(dir), ret))
 		return ret;
 
