FCC
is the default region overwritten by other region if available. From /etc/system/wait
script:
#Create wifi f/w directory and copy all files there to this place
#so that wifi devices can load its firmware and board data file when
#special files are needed for specific region.
REGION=`skuapi -g cert_region | cut -d'=' -f2 | tr -d ' '`
echo "[utopia][init] Setup link to WiFi firmware and board data ($REGION)"
if [ $HW_VERSION = "1" ];then
BDF_ROOT_DIR_IPQ4019=/lib/firmware/IPQ4019/v1
BDF_ROOT_DIR_QCA9888=/lib/firmware/QCA9888/v1
else
BDF_ROOT_DIR_IPQ4019=/lib/firmware/IPQ4019/v2
BDF_ROOT_DIR_QCA9888=/lib/firmware/QCA9888/v2
fi
echo "[utopia][init] BDF root dir is $BDF_ROOT_DIR_IPQ4019"
if [ ! -d /tmp/IPQ4019 ]; then
mkdir /tmp/IPQ4019
cp -r /lib/firmware/IPQ4019/hw_1 /tmp/IPQ4019/hw.1
fi
if [ $HW_VERSION = "1" ] && [ "$REGION" = "AH" ] ; then
syscfg_set wifi::multiregion_enable 1
syscfg_set wifi::multiregion_supportedcountries "CHN,HKG,SGP,THA,XAH,AUS,CAN,EEE,NZL,USA"
if [ "`syscfg get wifi::multiregion_selectedcountry`" = "" ] ; then
syscfg_set wifi::multiregion_region AH
syscfg_set wifi::multiregion_selectedcountry XAH
fi
elif [ $HW_VERSION = "2" ] && [ "$REGION" = "ME" -o "$REGION" = "CN" -o "$REGION" = "AH" -o "$REGION" = "KR" ] ; then
syscfg_set wifi::multiregion_enable 1
syscfg_set wifi::multiregion_supportedcountries "CHN,HKG,IND,PHL,SGP,THA,XAH,AUS,CAN,EEE,XME,NZL,SAU,USA,JPN,KOR,TWN"
SELECTEDCOUNTRY=`syscfg get wifi::multiregion_selectedcountry`
if [ "$SELECTEDCOUNTRY" = "" ] && [ "$REGION" = "ME" ] ; then
syscfg_set wifi::multiregion_region ME
syscfg_set wifi::multiregion_selectedcountry XME
fi
if [ "$SELECTEDCOUNTRY" = "" ] && [ "$REGION" = "CN" ] ; then
syscfg_set wifi::multiregion_region CN
syscfg_set wifi::multiregion_selectedcountry CHN
fi
if [ "$SELECTEDCOUNTRY" = "" ] && [ "$REGION" = "AH" ] ; then
syscfg_set wifi::multiregion_region AH
syscfg_set wifi::multiregion_selectedcountry XAH
fi
if [ "$SELECTEDCOUNTRY" = "" ] && [ "$REGION" = "KR" ] ; then
syscfg_set wifi::multiregion_region KR
syscfg_set wifi::multiregion_selectedcountry KOR
fi
else
syscfg_set wifi::multiregion_enable 0
fi
#REGION=""
COUNTRY=""
if [ "1" = "`syscfg get wifi::multiregion_support`" -a "1" = "`syscfg get wifi::multiregion_enable`" ] ; then
echo "[utopia][init] Multi-region is supported and enabled"
MULTIREGION=`syscfg get wifi::multiregion_region`
COUNTRY=`syscfg get wifi::multiregion_selectedcountry`
echo "[utopia][init] Region: $MULTIREGION, Country: $COUNTRY"
echo "$MULTIREGION" > /tmp/zb_power_region
else
echo "[utopia][init] Multi-region is not supported or not enabled"
echo "[utopia][init] Cert region: $REGION"
echo "$REGION" > /tmp/zb_power_region
fi
if [ ! -d /tmp/QCA9888 ]; then
mkdir /tmp/QCA9888
cp -r /lib/firmware/QCA9888/hw_2 /tmp/QCA9888/hw.2
fi
#Override with default FCC data from CBT
cp $BDF_ROOT_DIR_IPQ4019/FCC/* /tmp/IPQ4019/hw.1
cp $BDF_ROOT_DIR_QCA9888/FCC/* /tmp/QCA9888/hw.2
#Override with regional board data if not FCC.
if [ "$COUNTRY" ] ; then
case "$COUNTRY" in
"CHN") #China
echo "[utopia][init] Using CHN region for WiFi firmware and board data"
syscfg_set wifi::multiregion_region CN
if [ $HW_VERSION = "1" ] ; then
#syscfg_set wifi::multiregion_region AH
cp $BDF_ROOT_DIR_IPQ4019/AH/* /tmp/IPQ4019/hw.1
cp $BDF_ROOT_DIR_QCA9888/AH/* /tmp/QCA9888/hw.2
else
#syscfg_set wifi::multiregion_region CN
cp $BDF_ROOT_DIR_IPQ4019/CN/* /tmp/IPQ4019/hw.1
cp $BDF_ROOT_DIR_QCA9888/CN/* /tmp/QCA9888/hw.2
fi
;;
"HKG") #HKG
echo "[utopia][init] Using HKG region for WiFi firmware and board data"
syscfg_set wifi::multiregion_region HK
if [ $HW_VERSION = "1" ] ; then
#syscfg_set wifi::multiregion_region CA
cp $BDF_ROOT_DIR_IPQ4019/IC/* /tmp/IPQ4019/hw.1
cp $BDF_ROOT_DIR_QCA9888/IC/* /tmp/QCA9888/hw.2
else
#syscfg_set wifi::multiregion_region HK
cp $BDF_ROOT_DIR_IPQ4019/HK/* /tmp/IPQ4019/hw.1
cp $BDF_ROOT_DIR_QCA9888/HK/* /tmp/QCA9888/hw.2
fi
;;
"IND") #India
echo "[utopia][init] Using IND region for WiFi firmware and board data"
syscfg_set wifi::multiregion_region IN
cp $BDF_ROOT_DIR_IPQ4019/IN/* /tmp/IPQ4019/hw.1
cp $BDF_ROOT_DIR_QCA9888/IN/* /tmp/QCA9888/hw.2
;;
"IDN") #Indonesia
echo "[utopia][init] Using IDN region for WiFi firmware and board data"
syscfg_set wifi::multiregion_region ID
cp $BDF_ROOT_DIR_IPQ4019/ID/* /tmp/IPQ4019/hw.1
cp $BDF_ROOT_DIR_QCA9888/ID/* /tmp/QCA9888/hw.2
;;
"PHL") #Philippines
echo "[utopia][init] Using PHL region for WiFi firmware and board data"
syscfg_set wifi::multiregion_region PH
cp $BDF_ROOT_DIR_IPQ4019/PH/* /tmp/IPQ4019/hw.1
cp $BDF_ROOT_DIR_QCA9888/PH/* /tmp/QCA9888/hw.2
;;
"SGP") #Singapore
echo "[utopia][init] Using SGP region for WiFi firmware and board data"
syscfg_set wifi::multiregion_region SG
if [ $HW_VERSION = "1" ] ; then
#syscfg_set wifi::multiregion_region AH
cp $BDF_ROOT_DIR_IPQ4019/AH/* /tmp/IPQ4019/hw.1
cp $BDF_ROOT_DIR_QCA9888/AH/* /tmp/QCA9888/hw.2
else
#syscfg_set wifi::multiregion_region SG
cp $BDF_ROOT_DIR_IPQ4019/SG/* /tmp/IPQ4019/hw.1
cp $BDF_ROOT_DIR_QCA9888/SG/* /tmp/QCA9888/hw.2
fi
;;
"THA") #Thailand
echo "[utopia][init] Using THA region for WiFi firmware and board data"
syscfg_set wifi::multiregion_region TH
cp $BDF_ROOT_DIR_IPQ4019/TH/* /tmp/IPQ4019/hw.1
cp $BDF_ROOT_DIR_QCA9888/TH/* /tmp/QCA9888/hw.2
if [ $HW_VERSION = "1" ] ; then
cp $BDF_ROOT_DIR_IPQ4019/AH/* /tmp/IPQ4019/hw.1
cp $BDF_ROOT_DIR_QCA9888/AH/* /tmp/QCA9888/hw.2
else
cp $BDF_ROOT_DIR_IPQ4019/TH/* /tmp/IPQ4019/hw.1
cp $BDF_ROOT_DIR_QCA9888/TH/* /tmp/QCA9888/hw.2
fi
;;
"XAH")
echo "[utopia][init] Using XAH region for WiFi firmware and board data"
syscfg_set wifi::multiregion_region AH
cp $BDF_ROOT_DIR_IPQ4019/AH/* /tmp/IPQ4019/hw.1
cp $BDF_ROOT_DIR_QCA9888/AH/* /tmp/QCA9888/hw.2
;;
"TWN")
echo "[utopia][init] Using TWN region for WiFi firmware and board data"
syscfg_set wifi::multiregion_region US
cp $BDF_ROOT_DIR_IPQ4019/FCC/* /tmp/IPQ4019/hw.1
cp $BDF_ROOT_DIR_QCA9888/FCC/* /tmp/QCA9888/hw.2
;;
"AUS")
echo "[utopia][init] Using AUS region for WiFi firmware and board data"
syscfg_set wifi::multiregion_region AU
cp $BDF_ROOT_DIR_IPQ4019/AU/* /tmp/IPQ4019/hw.1
cp $BDF_ROOT_DIR_QCA9888/AU/* /tmp/QCA9888/hw.2
;;
"CAN")
echo "[utopia][init] Using CAN region for WiFi firmware and board data"
syscfg_set wifi::multiregion_region CA
cp $BDF_ROOT_DIR_IPQ4019/IC/* /tmp/IPQ4019/hw.1
cp $BDF_ROOT_DIR_QCA9888/IC/* /tmp/QCA9888/hw.2
;;
"EEE")
echo "[utopia][init] Using EEE region for WiFi firmware and board data"
syscfg_set wifi::multiregion_region EU
cp $BDF_ROOT_DIR_IPQ4019/EU/* /tmp/IPQ4019/hw.1
cp $BDF_ROOT_DIR_QCA9888/EU/* /tmp/QCA9888/hw.2
;;
"XME")
echo "[utopia][init] Using XME region for WiFi firmware and board data"
syscfg_set wifi::multiregion_region ME
cp $BDF_ROOT_DIR_IPQ4019/ME/* /tmp/IPQ4019/hw.1
cp $BDF_ROOT_DIR_QCA9888/ME/* /tmp/QCA9888/hw.2
;;
"NZL")
echo "[utopia][init] Using NZL region for WiFi firmware and board data"
syscfg_set wifi::multiregion_region AU
cp $BDF_ROOT_DIR_IPQ4019/AU/* /tmp/IPQ4019/hw.1
cp $BDF_ROOT_DIR_QCA9888/AU/* /tmp/QCA9888/hw.2
;;
"SAU")
echo "[utopia][init] Using SAU region for WiFi firmware and board data"
syscfg_set wifi::multiregion_region ME
cp $BDF_ROOT_DIR_IPQ4019/ME/* /tmp/IPQ4019/hw.1
cp $BDF_ROOT_DIR_QCA9888/ME/* /tmp/QCA9888/hw.2
;;
"USA")
echo "[utopia][init] Using USA region for WiFi firmware and board data"
syscfg_set wifi::multiregion_region US
cp $BDF_ROOT_DIR_IPQ4019/FCC/* /tmp/IPQ4019/hw.1
cp $BDF_ROOT_DIR_QCA9888/FCC/* /tmp/QCA9888/hw.2
;;
"JPN")
echo "[utopia][init] Using JPN region for WiFi firmware and board data"
syscfg_set wifi::multiregion_region JP
cp $BDF_ROOT_DIR_IPQ4019/JP/* /tmp/IPQ4019/hw.1
cp $BDF_ROOT_DIR_QCA9888/JP/* /tmp/QCA9888/hw.2
;;
"KOR")
echo "[utopia][init] Using KOR region for WiFi firmware and board data"
syscfg_set wifi::multiregion_region KR
cp $BDF_ROOT_DIR_IPQ4019/KR/* /tmp/IPQ4019/hw.1
cp $BDF_ROOT_DIR_QCA9888/KR/* /tmp/QCA9888/hw.2
;;
*)
echo "[utopia][init] Critical error, no support Country Code"
;;
esac
# Region updated. Reflect it for ZB.
MULTIREGION=`syscfg get wifi::multiregion_region`
echo "[utopia][init] Region updated: $MULTIREGION, Country: $COUNTRY"
echo "$MULTIREGION" > /tmp/zb_power_region
else
case "$REGION" in
"CA")
echo "[utopia][init] Using CA region for WiFi firmware and board data"
cp $BDF_ROOT_DIR_IPQ4019/IC/* /tmp/IPQ4019/hw.1
cp $BDF_ROOT_DIR_QCA9888/IC/* /tmp/QCA9888/hw.2
;;
"AU")
echo "[utopia][init] Using AU region for WiFi firmware and board data"
cp $BDF_ROOT_DIR_IPQ4019/AU/* /tmp/IPQ4019/hw.1
cp $BDF_ROOT_DIR_QCA9888/AU/* /tmp/QCA9888/hw.2
;;
"AH")
echo "[utopia][init] Using AH region for WiFi firmware and board data"
cp $BDF_ROOT_DIR_IPQ4019/AH/* /tmp/IPQ4019/hw.1
cp $BDF_ROOT_DIR_QCA9888/AH/* /tmp/QCA9888/hw.2
;;
"AP")
echo "[utopia][init] Using AP region for WiFi firmware and board data"
cp $BDF_ROOT_DIR_IPQ4019/AP/* /tmp/IPQ4019/hw.1
cp $BDF_ROOT_DIR_QCA9888/AP/* /tmp/QCA9888/hw.2
;;
"EU")
echo "[utopia][init] Using EU region for WiFi firmware and board data"
cp $BDF_ROOT_DIR_IPQ4019/EU/* /tmp/IPQ4019/hw.1
cp $BDF_ROOT_DIR_QCA9888/EU/* /tmp/QCA9888/hw.2
;;
"PH")
echo "[utopia][init] Using PH region for WiFi firmware and board data"
cp $BDF_ROOT_DIR_IPQ4019/PH/* /tmp/IPQ4019/hw.1
cp $BDF_ROOT_DIR_QCA9888/PH/* /tmp/QCA9888/hw.2
;;
"ME")
echo "[utopia][init] Using ME region for WiFi firmware and board data"
cp $BDF_ROOT_DIR_IPQ4019/ME/* /tmp/IPQ4019/hw.1
cp $BDF_ROOT_DIR_QCA9888/ME/* /tmp/QCA9888/hw.2
;;
"CN")
echo "[utopia][init] Using CN region for WiFi firmware and board data"
cp $BDF_ROOT_DIR_IPQ4019/CN/* /tmp/IPQ4019/hw.1
cp $BDF_ROOT_DIR_QCA9888/CN/* /tmp/QCA9888/hw.2
;;
"JP")
echo "[utopia][init] Using JP region for WiFi firmware and board data"
cp $BDF_ROOT_DIR_IPQ4019/JP/* /tmp/IPQ4019/hw.1
cp $BDF_ROOT_DIR_QCA9888/JP/* /tmp/QCA9888/hw.2
;;
"KR")
echo "[utopia][init] Using KR region for WiFi firmware and board data"
cp $BDF_ROOT_DIR_IPQ4019/KR/* /tmp/IPQ4019/hw.1
cp $BDF_ROOT_DIR_QCA9888/KR/* /tmp/QCA9888/hw.2
;;
"HK")
echo "[utopia][init] Using HK region for WiFi firmware and board data"
cp $BDF_ROOT_DIR_IPQ4019/HK/* /tmp/IPQ4019/hw.1
cp $BDF_ROOT_DIR_QCA9888/HK/* /tmp/QCA9888/hw.2
;;
"ID")
echo "[utopia][init] Using ID region for WiFi firmware and board data"
cp $BDF_ROOT_DIR_IPQ4019/ID/* /tmp/IPQ4019/hw.1
cp $BDF_ROOT_DIR_QCA9888/ID/* /tmp/QCA9888/hw.2
;;
"IN")
echo "[utopia][init] Using IN region for WiFi firmware and board data"
cp $BDF_ROOT_DIR_IPQ4019/IN/* /tmp/IPQ4019/hw.1
cp $BDF_ROOT_DIR_QCA9888/IN/* /tmp/QCA9888/hw.2
;;
"TH")
echo "[utopia][init] Using TH region for WiFi firmware and board data"
if [ $HW_VERSION = "1" ] ; then
cp $BDF_ROOT_DIR_IPQ4019/AH/* /tmp/IPQ4019/hw.1
cp $BDF_ROOT_DIR_QCA9888/AH/* /tmp/QCA9888/hw.2
else
cp $BDF_ROOT_DIR_IPQ4019/TH/* /tmp/IPQ4019/hw.1
cp $BDF_ROOT_DIR_QCA9888/TH/* /tmp/QCA9888/hw.2
fi
;;
"SG")
echo "[utopia][init] Using SG region for WiFi firmware and board data"
cp $BDF_ROOT_DIR_IPQ4019/SG/* /tmp/IPQ4019/hw.1
cp $BDF_ROOT_DIR_QCA9888/SG/* /tmp/QCA9888/hw.2
;;
"PH")
echo "[utopia][init] Using PH region for WiFi firmware and board data"
cp $BDF_ROOT_DIR_IPQ4019/PH/* /tmp/IPQ4019/hw.1
cp $BDF_ROOT_DIR_QCA9888/PH/* /tmp/QCA9888/hw.2
;;
*)
echo "[utopia][init] No REGION definded, use FCC"
;;
esac
fi
OEM bootlog may be helpful in determining which BDF should be used for the QCA9888 radio.
OEM bootlog can be found here: Guidance adding new device Linksys Velop WHW03 - #4 by flipy
But there is no any information about loading specific BDF files...