diff --git a/feed/atenl/files/iwpriv.sh b/feed/atenl/files/iwpriv.sh
index 075be04..c6b3c11 100755
--- a/feed/atenl/files/iwpriv.sh
+++ b/feed/atenl/files/iwpriv.sh
@@ -1,16 +1,13 @@
 #!/bin/ash
 
-interface=$1
-cmd_type=$2
+interface=$1	# phy0/phy1/ra0
+cmd_type=$2	    # set/show/e2p/mac
 full_cmd=$3
 
 work_mode="RUN" # RUN/PRINT/DEBUG
-tmp_file="$HOME/.tmp_ate_config"
+tmp_file="/tmp/iwpriv_wrapper"
 phy_idx=$(echo ${interface} | tr -dc '0-9')
 
-cmd=$(echo ${full_cmd} | sed s/=/' '/g | cut -d " " -f 1)
-param=$(echo ${full_cmd} | sed s/=/' '/g | cut -d " " -f 2)
-
 function do_cmd() {
     case ${work_mode} in
         "RUN")
@@ -26,6 +23,10 @@
     esac
 }
 
+function write_dmesg() {
+    echo "$1" > /dev/kmsg
+}
+
 function record_config() {
     if [ -f ${tmp_file} ]; then
         if grep -q $1 ${tmp_file}; then
@@ -39,7 +40,16 @@
 }
 
 function get_config() {
-    echo "$(cat ${tmp_file} | grep $1 | sed s/=/' '/g | cut -d " " -f 2)"
+    if [ ! -f ${tmp_file} ]; then
+        echo ""
+        return
+    fi
+
+    if grep -q $1 ${tmp_file}; then
+        echo "$(cat ${tmp_file} | grep $1 | sed s/=/' '/g | cut -d " " -f 2)"
+    else
+        echo ""
+    fi
 }
 
 function simple_convert() {
@@ -170,8 +180,9 @@
     local band=$(echo $1 | sed s/:/' '/g | cut -d " " -f 2)
     local ch=$(echo $1 | sed s/:/' '/g | cut -d " " -f 1)
     local bw=$(get_config "ATETXBW" | cut -d ":" -f 1)
+    local bw_str="HT20"
 
-    if [ "${band}" = "0" ]; then
+    if [ -z "${band}" ] || [ "${band}" = "0" ]; then
         case ${bw} in
             "1")
                 if [ "${ch}" -ge "1" ] && [ "${ch}" -le "7" ]; then
@@ -180,27 +191,98 @@
                     local bw_str="HT40-"
                 fi
                 ;;
-            "0")
-                local bw_str="HT20"
-                ;;
         esac
     elif [ "${band}" = "1" ]; then
         case ${bw} in
             "5")
-                local bw_str="160MHz"
+                bw_str="160MHz"
+                if [ ${ch} -lt "68" ]; then
+                    ch="36"
+                elif [ ${ch} -lt "100" ]; then
+                    ch="68"
+                elif [ ${ch} -lt "132" ]; then
+                    ch="100"
+                elif [ ${ch} -lt "181" ]; then
+                    ch="149"
+                fi
                 ;;
             "2")
-                local bw_str="80MHz"
+                bw_str="80MHz"
+                if [ ${ch} -lt "52" ]; then
+                    ch="36"
+                elif [ ${ch} -lt "68" ]; then
+                    ch="52"
+                elif [ ${ch} -lt "84" ]; then
+                    ch="68"
+                elif [ ${ch} -lt "100" ]; then
+                    ch="84"
+                elif [ ${ch} -lt "116" ]; then
+                    ch="100"
+                elif [ ${ch} -lt "132" ]; then
+                    ch="116"
+                elif [ ${ch} -lt "149" ]; then
+                    ch="132"
+                elif [ ${ch} -lt "165" ]; then
+                    ch="149"
+                elif [ ${ch} -lt "181" ]; then
+                    ch="165"
+                fi
                 ;;
             "1")
-                if [ "${ch}" == "36" ] || [ "${ch}" == "44" ] || [ "${ch}" == "52" ] || [ "${ch}" == "60" ] || \
-                   [ "${ch}" == "100" ] || [ "${ch}" == "108" ] || [ "${ch}" == "116" ] || [ "${ch}" == "124" ] || \
-                   [ "${ch}" == "132" ] || [ "${ch}" == "132" ] || [ "${ch}" == "140" ] || [ "${ch}" == "149" ] || \
-                   [ "${ch}" == "157" ]
-                then
-                    local bw_str="HT40+"
-                else
-                    local bw_str="HT40-"
+                if [ ${ch} -lt "44" ]; then
+                    ch=$([ "${ch}" -lt "40" ] && echo "36" || echo "40")
+                    bw_str=$([ "${ch}" -le "38" ] && echo "HT40+" || echo "HT40-")
+                elif [ ${ch} -lt "52" ]; then
+                    ch=$([ "${ch}" -lt "48" ] && echo "44" || echo "48")
+                    bw_str=$([ "${ch}" -le "46" ] && echo "HT40+" || echo "HT40-")
+                elif [ ${ch} -lt "60" ]; then
+                    ch=$([ "${ch}" -lt "56" ] && echo "52" || echo "56")
+                    bw_str=$([ "${ch}" -le "54" ] && echo "HT40+" || echo "HT40-")
+                elif [ ${ch} -lt "68" ]; then
+                    ch=$([ "${ch}" -lt "64" ] && echo "60" || echo "64")
+                    bw_str=$([ "${ch}" -le "62" ] && echo "HT40+" || echo "HT40-")
+                elif [ ${ch} -lt "76" ]; then
+                    ch=$([ "${ch}" -lt "72" ] && echo "68" || echo "72")
+                    bw_str=$([ "${ch}" -le "70" ] && echo "HT40+" || echo "HT40-")
+                elif [ ${ch} -lt "84" ]; then
+                    ch=$([ "${ch}" -lt "80" ] && echo "76" || echo "80")
+                    bw_str=$([ "${ch}" -le "78" ] && echo "HT40+" || echo "HT40-")
+                elif [ ${ch} -lt "92" ]; then
+                    ch=$([ "${ch}" -lt "88" ] && echo "84" || echo "88")
+                    bw_str=$([ "${ch}" -le "86" ] && echo "HT40+" || echo "HT40-")
+                elif [ ${ch} -lt "100" ]; then
+                    ch=$([ "${ch}" -lt "96" ] && echo "92" || echo "96")
+                    bw_str=$([ "${ch}" -le "94" ] && echo "HT40+" || echo "HT40-")
+                elif [ ${ch} -lt "108" ]; then
+                    ch=$([ "${ch}" -lt "104" ] && echo "100" || echo "104")
+                    bw_str=$([ "${ch}" -le "102" ] && echo "HT40+" || echo "HT40-")
+                elif [ ${ch} -lt "116" ]; then
+                    ch=$([ "${ch}" -lt "112" ] && echo "108" || echo "112")
+                    bw_str=$([ "${ch}" -le "110" ] && echo "HT40+" || echo "HT40-")
+                elif [ ${ch} -lt "124" ]; then
+                    ch=$([ "${ch}" -lt "120" ] && echo "116" || echo "120")
+                    bw_str=$([ "${ch}" -le "118" ] && echo "HT40+" || echo "HT40-")
+                elif [ ${ch} -lt "132" ]; then
+                    ch=$([ "${ch}" -lt "128" ] && echo "124" || echo "128")
+                    bw_str=$([ "${ch}" -le "126" ] && echo "HT40+" || echo "HT40-")
+                elif [ ${ch} -lt "140" ]; then
+                    ch=$([ "${ch}" -lt "136" ] && echo "132" || echo "136")
+                    bw_str=$([ "${ch}" -le "134" ] && echo "HT40+" || echo "HT40-")
+                elif [ ${ch} -lt "149" ]; then
+                    ch=$([ "${ch}" -lt "144" ] && echo "140" || echo "144")
+                    bw_str=$([ "${ch}" -le "142" ] && echo "HT40+" || echo "HT40-")
+                elif [ ${ch} -lt "157" ]; then
+                    ch=$([ "${ch}" -lt "153" ] && echo "149" || echo "153")
+                    bw_str=$([ "${ch}" -le "151" ] && echo "HT40+" || echo "HT40-")
+                elif [ ${ch} -lt "165" ]; then
+                    ch=$([ "${ch}" -lt "161" ] && echo "157" || echo "161")
+                    bw_str=$([ "${ch}" -le "159" ] && echo "HT40+" || echo "HT40-")
+                elif [ ${ch} -lt "173" ]; then
+                    ch=$([ "${ch}" -lt "169" ] && echo "165" || echo "169")
+                    bw_str=$([ "${ch}" -le "167" ] && echo "HT40+" || echo "HT40-")
+                elif [ ${ch} -lt "181" ]; then
+                    ch=$([ "${ch}" -lt "177" ] && echo "173" || echo "177")
+                    bw_str=$([ "${ch}" -le "175" ] && echo "HT40+" || echo "HT40-")
                 fi
                 ;;
             "0")
@@ -214,6 +296,68 @@
     do_cmd "iw dev mon${phy_idx} set channel ${ch} ${bw_str}"
 }
 
+function convert_rxstat {
+    local res=$(do_cmd "mt76-test ${interface} dump stats")
+    local mdrdy=$(echo "${res}" | grep "rx_packets" | cut -d "=" -f 2)
+    local fcs_error=$(echo "${res}" | grep "rx_fcs_error" | cut -d "=" -f 2)
+    local rcpi=$(echo "${res}" | grep "last_rcpi" | cut -d "=" -f 2 | sed 's/,/ /g')
+    local ib_rssi=$(echo "${res}" | grep "last_ib_rssi" | cut -d "=" -f 2 | sed 's/,/ /g')
+    local wb_rssi=$(echo "${res}" | grep "last_wb_rssi" | cut -d "=" -f 2 | sed 's/,/ /g')
+    local rx_ok=$(expr ${mdrdy} - ${fcs_error})
+
+    write_dmesg "rcpi: ${rcpi}"
+    write_dmesg "fagc rssi ib: ${ib_rssi}"
+    write_dmesg "fagc rssi wb: ${wb_rssi}"
+    write_dmesg "all_mac_rx_mdrdy_cnt: ${mdrdy}"
+    write_dmesg "all_mac_rx_fcs_err_cnt: ${fcs_error}"
+    write_dmesg "all_mac_rx_ok_cnt: ${rx_ok}"
+}
+
+function change_band_idx {
+    local old_idx=$(get_config "ATECTRLBANDIDX")
+    local new_idx=$1
+
+    if [ -z "${old_idx}" ] && [ "${new_idx}" == "0" ]; then
+        return
+    fi
+
+    if [ "${old_idx}" != "${new_idx}" ]; then
+            if [ -z "${old_idx}" ]; then
+                old_idx=0
+            fi
+
+            interface="phy${old_idx}"
+            phy_idx=${old_idx}
+            do_ate_work "ATESTOP"
+
+            interface="phy${new_idx}"
+            phy_idx=${new_idx}
+            do_ate_work "ATESTART"
+
+            record_config "ATECTRLBANDIDX" ${new_idx}
+    fi
+}
+
+function set_mac_addr {
+    record_config ${cmd} ${param}
+
+    local addr1=$(get_config "ATEDA")
+    local addr2=$(get_config "ATESA")
+    local addr3=$(get_config "ATEBSSID")
+
+    if [ -z "${addr1}" ]; then
+        addr1="00:11:22:33:44:55"
+    fi
+    if [ -z "${addr2}" ]; then
+        addr2="00:11:22:33:44:55"
+    fi
+    if [ -z "${addr3}" ]; then
+        addr3="00:11:22:33:44:55"
+    fi
+
+    do_cmd "mt76-test phy${phy_idx} set mac_addrs=${addr1},${addr2},${addr3}"
+}
+
 function do_ate_work() {
     local ate_cmd=$1
 
@@ -238,8 +382,9 @@
                 do_cmd "mt76-test ${interface} set state=off"
                 do_cmd "iw dev mon${phy_idx} del"
                 do_cmd "iw phy ${interface} interface add wlan${phy_idx} type managed"
-                do_cmd "ifconfig wlan${phy_idx} up"
             fi
+
+            rm ${tmp_file} > /dev/null 2>&1
             ;;
         "TXFRAME")
             do_cmd "mt76-test ${interface} set state=tx_frames"
@@ -267,6 +412,22 @@
     esac
 }
 
+# main start here
+
+if [[ ${interface} == "ra"* ]]; then
+    tmp=$(get_config "ATECTRLBANDIDX")
+    if [ ! -z "${tmp}" ]; then
+        interface="phy${tmp}"
+        phy_idx=${tmp}
+    else
+        interface="phy0"
+        phy_idx=0
+    fi
+fi
+
+cmd=$(echo ${full_cmd} | sed s/=/' '/g | cut -d " " -f 1)
+param=$(echo ${full_cmd} | sed s/=/' '/g | cut -d " " -f 2)
+
 if [ "${cmd_type}" = "set" ]; then
     skip=0
     use_ated=0
@@ -307,10 +468,18 @@
             convert_channel ${param}
             skip=1
             ;;
+        "ATERXSTAT")
+            convert_rxstat
+            skip=1
+            ;;
         "ATECTRLBANDIDX")
-            echo "Unused command, please use phy0/phy1 to switch"
+            change_band_idx ${param}
             skip=1
             ;;
+        "ATEDA"|"ATESA"|"ATEBSSID")
+            set_mac_addr ${cmd} ${param}
+            skip=1
+            ;;
         "bufferMode")
             if [ "${param}" = "2" ]; then
                 do_cmd "ated -i ${interface} -c \"eeprom update\""
@@ -328,9 +497,11 @@
     if [ "${skip}" != "1" ]; then
         do_cmd "mt76-test ${interface} set ${cmd_new}=${param_new}"
     fi
+
 elif [ "${cmd_type}" = "show" ]; then
     do_cmd "mt76-test ${interface} dump"
     do_cmd "mt76-test ${interface} dump stats"
+
 elif [ "${cmd_type}" = "e2p" ]; then
     offset=$(printf "0x%s" ${cmd})
     val=$(printf "0x%s" ${param})
@@ -361,6 +532,7 @@
         param=$(printf "0x%s" ${param})
         printf "[0x%04x]:0x%02x%02x\n" ${param} ${v2} ${v1}
     fi
+
 elif [ "${cmd_type}" = "mac" ]; then
     regidx=/sys/kernel/debug/ieee80211/phy${phy_idx}/mt76/regidx
     regval=/sys/kernel/debug/ieee80211/phy${phy_idx}/mt76/regval
@@ -375,6 +547,7 @@
         res=$(cat ${regval} | cut -d 'x' -f 2)
         printf "%s mac:[%s]:%s\n" ${interface} ${offset} ${res}
     fi
+
 else
     echo "Unknown command"
 fi
