Skip to content

Instantly share code, notes, and snippets.

@robimarko
Created March 6, 2018 11:52
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save robimarko/a412109b7a6ea1e319b43f697d70ead2 to your computer and use it in GitHub Desktop.
Save robimarko/a412109b7a6ea1e319b43f697d70ead2 to your computer and use it in GitHub Desktop.
#!/bin/sh
#
# All wlan related stuff loading drivers and setting mac or other parameters etc.
#
# Greping these things here because other scripts might change this if it is initilize in generic script.
COUNTRY_CODE=`grep sysCountryRegion /var/config | awk '{print $2}'`
if [ ${PRODUCT_ID} = "WAC510" ]; then
if [ ${COUNTRY_CODE} = "5000" ]; then
# Copy BDF files for AUSTRALIA
${CP} -f /lib/firmware/IPQ4019/BDF/WAC510/AU/* /etc/firmware/
elif [ ${COUNTRY_CODE} = "5001" ]; then
# Copy BDF files for CANADA
${CP} -f /lib/firmware/IPQ4019/BDF/WAC510/CA/* /etc/firmware/
elif [ ${COUNTRY_CODE} = "156" ]; then
# Copy BDF files for CHINA
${CP} -f /lib/firmware/IPQ4019/BDF/WAC510/SRRC/* /etc/firmware/
else
# Copy Default BDF file
${CP} -f /lib/firmware/IPQ4019/BDF/WAC510/DEFAULT/* /etc/firmware/
fi
elif [ ${PRODUCT_ID} = "WAC505" ]; then
if [ ${COUNTRY_CODE} = "5000" ]; then
# Copy BDF files for AUSTRALIA
${CP} -f /lib/firmware/IPQ4019/BDF/WAC505/AU/* /etc/firmware/
elif [ ${COUNTRY_CODE} = "5001" ]; then
# Copy BDF files for CANADA
${CP} -f /lib/firmware/IPQ4019/BDF/WAC505/CA/* /etc/firmware/
elif [ ${COUNTRY_CODE} = "4015" ]; then
# Copy BDF files for JAPAN
${CP} -f /lib/firmware/IPQ4019/BDF/WAC505/JP/* /etc/firmware/
else
# Copy Default BDF file
${CP} -f /lib/firmware/IPQ4019/BDF/WAC505/DEFAULT/* /etc/firmware/
fi
fi
if [ ${WLAN_WITH_BASEMAC_N_COUNTRY} = "yes" ]; then
MAC=`${BDDATARD} ${MANUFAC_MTD_CHAR} ${MAC_OFFSET_4_WLAN0}`
fi
if [ ${WLAN_MAX_CLIENT_SUPPORT} = "yes" ]; then
for i in `seq 0 $(expr $NO_OF_RADIOS - 1)`;do
eval MAX_CLIENTS_${i}=`grep wlan${i}:maxWirelessClients /var/config | awk '{print $2}'`
done
fi
wlan_drv_err()
{
if [ $1 != 0 ]; then
cecho red '[FAILED]'
exit
fi
}
validate_caldata()
{
CAL_STS_24G=1
CAL_STS_5G=1
dd if=${ART_MTD_BLK} of=/tmp/24G_cal_test bs=1 skip=4096 count=6
CAL_DATA_24G=`hexdump /tmp/24G_cal_test | head -n 1 | cut -d ' ' -f 2,3,4 | sed 's/ //g'`
if [ $CAL_DATA_24G = "ffffffffffff" ]; then
CAL_STS_24G=0
fi
dd if=${ART_MTD_BLK} of=/tmp/5G_cal_test bs=1 skip=20480 count=6
CAL_DATA_5G=`hexdump /tmp/5G_cal_test | head -n 1 | cut -d ' ' -f 2,3,4 | sed 's/ //g'`
if [ $CAL_DATA_24G = "ffffffffffff" ]; then
CAL_STS_5G=0
fi
}
find_mtd_part()
{
local PART="$(grep "\"$1\"" /proc/mtd | awk -F: '{print $1}')"
local PREFIX=/dev/mtdblock
PART="${PART##mtd}"
[ -d /dev/mtdblock ] && PREFIX=/dev/mtdblock/
echo "${PART:+$PREFIX$PART}"
}
read_caldata_to_fs()
{
TMP_DIR="/tmp"
VAR_DIR="/var"
ETC_DIR="/etc"
ART_MTD_BLK=$(find_mtd_part 0:ART)
[ -n "${ART_MTD_BLK}" ] || return
ART_MTD=`echo "${ART_MTD_BLK}" | cut -c 1-8,14,15`
validate_caldata
if [ ${CAL_STS_24G} = 1 ] && [ ${CAL_STS_5G} = 1 ]; then
if [ ! -e ${VAR_DIR}/wifi0.caldata ] || [ ! -e ${VAR_DIR}/wifi1.caldata ]; then
# Backup caldata in /var
dd if=${ART_MTD_BLK} of=${VAR_DIR}/wifi0.caldata bs=32 count=377 skip=128
dd if=${ART_MTD_BLK} of=${VAR_DIR}/wifi1.caldata bs=32 count=377 skip=640
fi
else
if [ ${PRODUCT_ID} = "WAC510" ]; then
echo "Calibration data missing!!"
cat ${ART_MTD_BLK} > /tmp/art.bin
if [ -e ${VAR_DIR}/wifi0.caldata ] && [ -e ${VAR_DIR}/wifi1.caldata ]; then
# Copy backup caldata to RAM
echo "Flashing backup Calibration data"
dd if=${VAR_DIR}/wifi0.caldata of=/tmp/art.bin bs=32 count=377 seek=128 conv=notrunc
dd if=${VAR_DIR}/wifi1.caldata of=/tmp/art.bin bs=32 count=377 seek=640 conv=notrunc
else
# Copy default caldata to RAM
echo "Flashing default Calibration data"
dd if=${ETC_DIR}/wifi0.default_caldata of=/tmp/art.bin bs=32 count=377 seek=128 conv=notrunc
dd if=${ETC_DIR}/wifi1.default_caldata of=/tmp/art.bin bs=32 count=377 seek=640 conv=notrunc
fi
# Erase and Write caldata to flash
flash_eraseall ${ART_MTD}
flashcp -v /tmp/art.bin ${ART_MTD}
fi
fi
# Read caldata from flash
dd if=${ART_MTD_BLK} of=${TMP_DIR}/wifi0.caldata bs=32 count=377 skip=128
dd if=${ART_MTD_BLK} of=${TMP_DIR}/wifi1.caldata bs=32 count=377 skip=640
}
AP_MODE=`grep wlan0:apMode /var/config | cut -d ':' -f 5 | cut -d ' ' -f 2`
if [ -d ${WLAN_MODULE_PATH} ]; then
ncecho 'Loading wlan modules. '
if [ ${GEMINI_CODE_BASE} = "y" ] ; then
if [ ${CONFIG_BAND_STEERING=} = "yes" ]; then
${INSMOD} ${WLAN_MODULE_PATH}/band_steering.ko
wlan_drv_err $?
fi
${INSMOD} ${WLAN_MODULE_PATH}/asf.ko
wlan_drv_err $?
${INSMOD} ${WLAN_MODULE_PATH}/adf.ko
wlan_drv_err $?
${INSMOD} ${WLAN_MODULE_PATH}/ath_hal.ko
wlan_drv_err $?
if [ ${WLAN_DFS_SUPPORT} = "yes" ]; then
${INSMOD} ${WLAN_MODULE_PATH}/ath_dfs.ko
wlan_drv_err $?
fi
${INSMOD} ${WLAN_MODULE_PATH}/ath_rate_atheros.ko
wlan_drv_err $?
if [ ${WLAN_WITH_BASEMAC_N_COUNTRY} = "yes" ]; then
${INSMOD} ${WLAN_MODULE_PATH}/ath_dev.ko param_macaddr=${MAC}
else
${INSMOD} ${WLAN_MODULE_PATH}/ath_dev.ko
fi
wlan_drv_err $?
${INSMOD} ${WLAN_MODULE_PATH}/umac.ko
wlan_drv_err $?
sleep 2
# Need to Change Country Code as Module Param SKandekar
if [ ${NO_OF_RADIOS} = 2 ]; then
iwpriv wifi0 setCountryID ${COUNTRY_CODE}
wlan_drv_err $?
iwpriv wifi1 setCountryID ${COUNTRY_CODE}
wlan_drv_err $?
else
iwpriv wifi0 setCountryID ${COUNTRY_CODE}
wlan_drv_err $?
fi
else
if [ ${FUSION_CODE_BASE} = "yes" ];then
if [ ${WLAN_WITH_BASEMAC_N_COUNTRY} = "yes" ]; then
${INSMOD} ${WLAN_MODULE_PATH}/ath_hal.ko macaddr=${MAC}
wlan_drv_err $?
else
${INSMOD} ${WLAN_MODULE_PATH}/ath_hal.ko
wlan_drv_err $?
fi
if [ ${SYS_USES_WLAN_GPIO} = "yes" ]; then
${INSMOD} ${WLAN_MODULE_PATH}/aws_gpio.ko
wlan_drv_err $?
fi
if [ ${WLAN_DFS_SUPPORT} = "yes" ]; then
${INSMOD} ${WLAN_MODULE_PATH}/ath_dfs.ko
wlan_drv_err $?
fi
${INSMOD} ${WLAN_MODULE_PATH}/ath_rate_atheros.ko
wlan_drv_err $?
if [ ${WLAN_MAX_CLIENT_SUPPORT} = "yes" ]; then
if [ ${NO_OF_RADIOS} = 2 ]; then
${INSMOD} ${WLAN_MODULE_PATH}/wlan.ko Max_client_if0=${MAX_CLIENTS_0} Max_client_if1=${MAX_CLIENTS_1}
wlan_drv_err $?
else
${INSMOD} ${WLAN_MODULE_PATH}/wlan.ko Max_client_if0=${MAX_CLIENTS_0}
wlan_drv_err $?
fi
else
${INSMOD} ${WLAN_MODULE_PATH}/wlan.ko
wlan_drv_err $?
fi
${INSMOD} ${WLAN_MODULE_PATH}/wlan_scan_ap.ko
wlan_drv_err $?
if [ ${CLIENT_MODE} = "yes" ]; then
if [ ${AP_MODE} = "5" ]; then
${INSMOD} ${WLAN_MODULE_PATH}/wlan_scan_sta.ko
wlan_drv_err $?
fi
fi
${INSMOD} ${WLAN_MODULE_PATH}/wlan_acl.ko
wlan_drv_err $?
${INSMOD} ${WLAN_MODULE_PATH}/wlan_wep.ko
wlan_drv_err $?
${INSMOD} ${WLAN_MODULE_PATH}/wlan_tkip.ko
wlan_drv_err $?
${INSMOD} ${WLAN_MODULE_PATH}/wlan_ccmp.ko
wlan_drv_err $?
${INSMOD} ${WLAN_MODULE_PATH}/wlan_xauth.ko
wlan_drv_err $?
${INSMOD} ${WLAN_MODULE_PATH}/ath_dev.ko
wlan_drv_err $?
if [ ${WLAN_WITH_BASEMAC_N_COUNTRY} = "yes" ]; then
${INSMOD} ${WLAN_MODULE_PATH}/ath.ko countrycode=${COUNTRY_CODE}
wlan_drv_err $?
else
${INSMOD} ${WLAN_MODULE_PATH}/ath.ko
wlan_drv_err $?
fi
else
if [ ${QCA_WIFI_10_4_CODEBASE} = "yes" ]; then
# Insert QCA WiFi 10.4 Dependencies first
${INSMOD} ${WLAN_MODULE_PATH}/qca-nss-gmac.ko
wlan_drv_err $?
${INSMOD} ${WLAN_MODULE_PATH}/qca-nss-drv.ko
wlan_drv_err $?
# Insert QCA WiFi 10.4 Drivers now
${INSMOD} ${WLAN_MODULE_PATH}/mem_manager.ko
wlan_drv_err $?
${INSMOD} ${WLAN_MODULE_PATH}/asf.ko
wlan_drv_err $?
${INSMOD} ${WLAN_MODULE_PATH}/adf.ko
wlan_drv_err $?
${INSMOD} ${WLAN_MODULE_PATH}/ath_dfs.ko
wlan_drv_err $?
${INSMOD} ${WLAN_MODULE_PATH}/ath_spectral.ko
wlan_drv_err $?
# Read the caldata to fs before loading umac
read_caldata_to_fs
${INSMOD} ${WLAN_MODULE_PATH}/umac.ko ${MFGMODE_MODPARAM}
wlan_drv_err $?
${INSMOD} ${WLAN_MODULE_PATH}/ath_hal.ko
wlan_drv_err $?
${INSMOD} ${WLAN_MODULE_PATH}/ath_rate_atheros.ko
wlan_drv_err $?
${INSMOD} ${WLAN_MODULE_PATH}/hst_tx99.ko
wlan_drv_err $?
${INSMOD} ${WLAN_MODULE_PATH}/ath_dev.ko
wlan_drv_err $?
${INSMOD} ${WLAN_MODULE_PATH}/qca_da.ko
wlan_drv_err $?
${INSMOD} ${WLAN_MODULE_PATH}/ath_pktlog.ko
wlan_drv_err $?
${INSMOD} ${WLAN_MODULE_PATH}/smart_antenna.ko
wlan_drv_err $?
if [ ${NO_OF_RADIOS} = 2 ]; then
ifconfig wifi0 down && ifconfig wifi1 down
wlan_drv_err $?
if [ ${PRODUCT_ID} = "WAC505" ]; then #enable DFS for JP and ETSI countries
if [ ${COUNTRY_CODE} = "5000" ] || [ ${COUNTRY_CODE} = "5001" ] || [ ${COUNTRY_CODE} = "156" ]; then
iwpriv wifi0 blockdfslist 1
wlan_drv_err $?
fi
fi
iwpriv wifi0 setCountryID ${COUNTRY_CODE} && iwpriv wifi0 obss_rssi_th 35
wlan_drv_err $?
if [ ${PRODUCT_ID} = "WAC505" ] ; then #enable DFS for JP and ETSI countries
if [ ${COUNTRY_CODE} = "5000" ] || [ ${COUNTRY_CODE} = "5001" ] || [ ${COUNTRY_CODE} = "156" ]; then
iwpriv wifi1 blockdfslist 1
wlan_drv_err $?
fi
fi
iwpriv wifi1 setCountryID ${COUNTRY_CODE} && iwpriv wifi1 obss_rssi_th 35
wlan_drv_err $?
ifconfig wifi0 up && ifconfig wifi1 up
wlan_drv_err $?
else
ifconfig wifi0 down
wlan_drv_err $?
if [ ${PRODUCT_ID} = "WAC505" ] ; then #enable DFS for JP and ETSI countries
if [ ${COUNTRY_CODE} = "5000" ] || [ ${COUNTRY_CODE} = "5001" ] || [ ${COUNTRY_CODE} = "156" ]; then
iwpriv wifi0 blockdfslist 1
wlan_drv_err $?
fi
fi
iwpriv wifi0 setCountryID ${COUNTRY_CODE} && iwpriv wifi0 obss_rssi_th 35
wlan_drv_err $?
ifconfig wifi0 up
fi
else
if [ ${WLAN_WITH_BASEMAC_N_COUNTRY} = "yes" ]; then
${INSMOD} ${WLAN_MODULE_PATH}/ath_hal.ko macaddr=${MAC}
wlan_drv_err $?
else
${INSMOD} ${WLAN_MODULE_PATH}/ath_hal.ko
wlan_drv_err $?
fi
${INSMOD} ${WLAN_MODULE_PATH}/asc.ko
wlan_drv_err $?
if [ ${SYS_USES_WLAN_GPIO} = "yes" ]; then
${INSMOD} ${WLAN_MODULE_PATH}/aws_gpio.ko
wlan_drv_err $?
fi
if [ ${WLAN_DFS_SUPPORT} = "yes" ]; then
${INSMOD} ${WLAN_MODULE_PATH}/ath_dfs.ko
wlan_drv_err $?
fi
${INSMOD} ${WLAN_MODULE_PATH}/ath_rate_atheros.ko
wlan_drv_err $?
if [ ${WLAN_MAX_CLIENT_SUPPORT} = "yes" ]; then
if [ ${NO_OF_RADIOS} = 2 ]; then
${INSMOD} ${WLAN_MODULE_PATH}/wlan.ko Max_client_if0=${MAX_CLIENTS_0} Max_client_if1=${MAX_CLIENTS_1}
wlan_drv_err $?
else
${INSMOD} ${WLAN_MODULE_PATH}/wlan.ko Max_client_if0=${MAX_CLIENTS_0}
wlan_drv_err $?
fi
else
${INSMOD} ${WLAN_MODULE_PATH}/wlan.ko
wlan_drv_err $?
fi
${INSMOD} ${WLAN_MODULE_PATH}/wlan_scan_ap.ko
wlan_drv_err $?
if [ ${CLIENT_MODE} = "yes" ]; then
if [ ${AP_MODE} = "5" ]; then
${INSMOD} ${WLAN_MODULE_PATH}/wlan_scan_sta.ko
wlan_drv_err $?
fi
fi
${INSMOD} ${WLAN_MODULE_PATH}/wlan_acl.ko
wlan_drv_err $?
${INSMOD} ${WLAN_MODULE_PATH}/wlan_wep.ko
wlan_drv_err $?
${INSMOD} ${WLAN_MODULE_PATH}/wlan_tkip.ko
wlan_drv_err $?
${INSMOD} ${WLAN_MODULE_PATH}/wlan_ccmp.ko
wlan_drv_err $?
${INSMOD} ${WLAN_MODULE_PATH}/wlan_xauth.ko
wlan_drv_err $?
if [ ${WLAN_WITH_BASEMAC_N_COUNTRY} = "yes" ]; then
${INSMOD} ${WLAN_MODULE_PATH}/ath.ko countrycode=${COUNTRY_CODE}
wlan_drv_err $?
else
${INSMOD} ${WLAN_MODULE_PATH}/ath.ko
wlan_drv_err $?
fi
fi
fi
if [ ${QCA_WIFI_10_4_CODEBASE} != "yes" ]; then
${INSMOD} ${WLAN_MODULE_PATH}/ath_${WLAN_BUS}.ko
wlan_drv_err $?
fi
fi
cecho green '[DONE]'
fi
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment