12ee67178SXianjun Jiao#!/bin/bash 22ee67178SXianjun Jiao 3e07d2876SJiao Xianjun# Author: Xianjun Jiao 494847d80SXianjun Jiao# SPDX-FileCopyrightText: 2022 UGent 5a6085186SLina Ceballos# SPDX-License-Identifier: AGPL-3.0-or-later 6a6085186SLina Ceballos 794847d80SXianjun Jiaoprint_usage () { 894847d80SXianjun Jiao echo "usage:" 994847d80SXianjun Jiao echo " Script for load (or download+load) different driver and FPGA img without rebooting" 1094847d80SXianjun Jiao echo " no argument: Load .ko driver files and FPGA img (if system_top.bit.bin exist) in current dir with test_mode=0." 1194847d80SXianjun Jiao echo " 1st argument: If it is a NUMBER, it will be assigned to test_mode. Then load everything from current dir." 1294847d80SXianjun Jiao echo " 1st argument: If it is a string called \"remote\", it will download driver/FPGA and load everything." 1394847d80SXianjun Jiao echo " - 2nd argument (if exist) is the target directory name for downloading and reloading" 1494847d80SXianjun Jiao echo " - 3rd argument (if exist) is the value for test_mode" 1594847d80SXianjun Jiao echo " 1st argument: neither NUMBER nor \"remote\" nor a .tar.gz file, it is regarded as a directory and load everything from it." 1694847d80SXianjun Jiao echo " - 2nd argument (if exist) is the value for test_mode" 1794847d80SXianjun Jiao echo " 1st argument: a .tar.gz file, it will be unpacked then load from that unpacked directory" 1894847d80SXianjun Jiao echo " - 2nd argument (if exist) is the value for test_mode" 1994847d80SXianjun Jiao echo " " 2094847d80SXianjun Jiao} 2194847d80SXianjun Jiao 222ee67178SXianjun JiaocheckModule () { 2394847d80SXianjun Jiao MODULE_input="$1" 2494847d80SXianjun Jiao if lsmod | grep "$MODULE_input" &> /dev/null ; then 2594847d80SXianjun Jiao echo "$MODULE_input is loaded!" 262ee67178SXianjun Jiao return 0 272ee67178SXianjun Jiao else 2894847d80SXianjun Jiao echo "$MODULE_input is not loaded!" 292ee67178SXianjun Jiao return 1 302ee67178SXianjun Jiao fi 312ee67178SXianjun Jiao} 322ee67178SXianjun Jiao 3394847d80SXianjun Jiaodownload_module () { 3494847d80SXianjun Jiao MODULE_input="$1" 3594847d80SXianjun Jiao TARGET_DIR_input="$2" 3694847d80SXianjun Jiao mkdir -p $TARGET_DIR_input 3794847d80SXianjun Jiao if [ "$MODULE_input" == "fpga" ]; then 3894847d80SXianjun Jiao wget -O $TARGET_DIR_input/system_top.bit.bin ftp://192.168.10.1/user_space/system_top.bit.bin 392ee67178SXianjun Jiao else 4094847d80SXianjun Jiao if [ "$MODULE_input" == "sdr" ]; then 4194847d80SXianjun Jiao wget -O $TARGET_DIR_input/$MODULE_input.ko ftp://192.168.10.1/driver/$MODULE_input.ko 422ee67178SXianjun Jiao else 4394847d80SXianjun Jiao wget -O $TARGET_DIR_input/$MODULE_input.ko ftp://192.168.10.1/driver/$MODULE_input/$MODULE_input.ko 442ee67178SXianjun Jiao fi 452ee67178SXianjun Jiao fi 4694847d80SXianjun Jiao sync 4794847d80SXianjun Jiao} 4894847d80SXianjun Jiao 4994847d80SXianjun Jiaoinsert_check_module () { 5094847d80SXianjun Jiao TARGET_DIR_input="$1" 5194847d80SXianjun Jiao MODULE_input="$2" 5294847d80SXianjun Jiao rmmod $MODULE_input 5394847d80SXianjun Jiao if [[ -n $3 ]]; then 5494847d80SXianjun Jiao (set -x; insmod $TARGET_DIR_input/$MODULE_input.ko test_mode=$3) 5594847d80SXianjun Jiao else 5694847d80SXianjun Jiao (set -x; insmod $TARGET_DIR_input/$MODULE_input.ko) 5794847d80SXianjun Jiao fi 5894847d80SXianjun Jiao 5994847d80SXianjun Jiao checkModule $MODULE_input 6094847d80SXianjun Jiao if [ $? -eq 1 ]; then 6194847d80SXianjun Jiao exit 1 6294847d80SXianjun Jiao fi 6394847d80SXianjun Jiao} 6494847d80SXianjun Jiao 6594847d80SXianjun Jiaoprint_usage 6694847d80SXianjun Jiao 67b72abc17SXianjun Jiaoinsmod ad9361_drv.ko 68b72abc17SXianjun Jiaoinsmod xilinx_dma.ko 69b72abc17SXianjun Jiao# modprobe ad9361_drv 70b72abc17SXianjun Jiao# modprobe xilinx_dma 71d951e046SXianjun Jiaomodprobe mac80211 72d951e046SXianjun Jiaolsmod 73d951e046SXianjun Jiao 7494847d80SXianjun JiaoTARGET_DIR=./ 7594847d80SXianjun JiaoDOWNLOAD_FLAG=0 7694847d80SXianjun Jiaotest_mode=0 7794847d80SXianjun Jiao 7894847d80SXianjun Jiaoif [[ -n $1 ]]; then 7994847d80SXianjun Jiao re='^[0-9]+$' 8094847d80SXianjun Jiao if ! [[ $1 =~ $re ]] ; then # not a number 8194847d80SXianjun Jiao if [ "$1" == "remote" ]; then 8294847d80SXianjun Jiao DOWNLOAD_FLAG=1 8394847d80SXianjun Jiao if [[ -n $2 ]]; then 8494847d80SXianjun Jiao TARGET_DIR=$2 8594847d80SXianjun Jiao fi 8694847d80SXianjun Jiao if [[ -n $3 ]]; then 8794847d80SXianjun Jiao test_mode=$3 8894847d80SXianjun Jiao fi 8994847d80SXianjun Jiao else 9094847d80SXianjun Jiao if [[ "$1" == *".tar.gz"* ]]; then 9194847d80SXianjun Jiao set -x 9294847d80SXianjun Jiao tar_gz_filename=$1 9394847d80SXianjun Jiao TARGET_DIR=${tar_gz_filename%".tar.gz"} 9494847d80SXianjun Jiao mkdir -p $TARGET_DIR 9594847d80SXianjun Jiao rm -rf $TARGET_DIR/* 9694847d80SXianjun Jiao tar -zxvf $1 -C $TARGET_DIR 9794847d80SXianjun Jiao find $TARGET_DIR/ -name \*.ko -exec cp {} $TARGET_DIR/ \; 9894847d80SXianjun Jiao find $TARGET_DIR/ -name \*.bit.bin -exec cp {} $TARGET_DIR/ \; 9994847d80SXianjun Jiao set +x 10094847d80SXianjun Jiao else 10194847d80SXianjun Jiao TARGET_DIR=$1 10294847d80SXianjun Jiao fi 10394847d80SXianjun Jiao if [[ -n $2 ]]; then 10494847d80SXianjun Jiao test_mode=$2 10594847d80SXianjun Jiao fi 10694847d80SXianjun Jiao fi 10794847d80SXianjun Jiao else # is a number 10894847d80SXianjun Jiao test_mode=$1 10994847d80SXianjun Jiao fi 11094847d80SXianjun Jiaofi 11194847d80SXianjun Jiao 11294847d80SXianjun Jiaoecho TARGET_DIR $TARGET_DIR 11394847d80SXianjun Jiaoecho DOWNLOAD_FLAG $DOWNLOAD_FLAG 11494847d80SXianjun Jiaoecho test_mode $test_mode 11594847d80SXianjun Jiao 1164a12fa04SXianjun Jiao#if ((($test_mode & 0x2) != 0)); then 1174a12fa04SXianjun Jiao tx_offset_tuning_enable=0 1184a12fa04SXianjun Jiao#else 1194a12fa04SXianjun Jiao# tx_offset_tuning_enable=1 1204a12fa04SXianjun Jiao#fi 1214a12fa04SXianjun Jiao 1224a12fa04SXianjun Jiaoecho tx_offset_tuning_enable $tx_offset_tuning_enable 1234a12fa04SXianjun Jiao 12494847d80SXianjun Jiaoif [ -d "$TARGET_DIR" ]; then 12594847d80SXianjun Jiao echo "\$TARGET_DIR is found!" 12694847d80SXianjun Jiaoelse 12794847d80SXianjun Jiao if [ $DOWNLOAD_FLAG -eq 0 ]; then 12894847d80SXianjun Jiao echo "\$TARGET_DIR is not correct. Please check!" 12994847d80SXianjun Jiao exit 1 13094847d80SXianjun Jiao fi 13194847d80SXianjun Jiaofi 13294847d80SXianjun Jiao 13394847d80SXianjun Jiaoecho " " 13494847d80SXianjun Jiao 1355a9ac0d1SXianjun Jiaokillall hostapd 1365a9ac0d1SXianjun Jiaoservice dhcpcd stop #dhcp client. it will get secondary ip for sdr0 which causes trouble 1375a9ac0d1SXianjun Jiaokillall dhcpd 1385a9ac0d1SXianjun Jiaokillall wpa_supplicant 1395a9ac0d1SXianjun Jiao#service network-manager stop 1405a9ac0d1SXianjun Jiaoifconfig sdr0 down 1414a12fa04SXianjun Jiao 14294847d80SXianjun Jiaormmod sdr 14394847d80SXianjun Jiao 14494847d80SXianjun Jiaoif [ $DOWNLOAD_FLAG -eq 1 ]; then 14594847d80SXianjun Jiao download_module fpga $TARGET_DIR 14694847d80SXianjun Jiaofi 14794847d80SXianjun Jiao 14894847d80SXianjun Jiaoif [ -f "$TARGET_DIR/system_top.bit.bin" ]; then 14994847d80SXianjun Jiao ./load_fpga_img.sh $TARGET_DIR/system_top.bit.bin 15094847d80SXianjun Jiaoelse 15194847d80SXianjun Jiao echo $TARGET_DIR/system_top.bit.bin not found. Skip reloading FPGA. 152*2349a783SXianjun Jiao # ./load_fpga_img.sh fjdo349ujtrueugjhj 15394847d80SXianjun Jiaofi 15494847d80SXianjun Jiao 15594847d80SXianjun Jiao./rf_init_11n.sh 1562ee67178SXianjun Jiao 15794847d80SXianjun JiaoMODULE_ALL="tx_intf rx_intf openofdm_tx openofdm_rx xpu sdr" 15894847d80SXianjun Jiaofor MODULE in $MODULE_ALL 15994847d80SXianjun Jiaodo 16094847d80SXianjun Jiao if [ $DOWNLOAD_FLAG -eq 1 ]; then 16194847d80SXianjun Jiao download_module $MODULE $TARGET_DIR 1627e3e6749Sweiliu fi 16394847d80SXianjun Jiao if [ "$MODULE" == "sdr" ]; then 16494847d80SXianjun Jiao insert_check_module $TARGET_DIR $MODULE $test_mode 16594847d80SXianjun Jiao else 16694847d80SXianjun Jiao insert_check_module $TARGET_DIR $MODULE 1677e3e6749Sweiliu fi 16894847d80SXianjun Jiaodone 1692ee67178SXianjun Jiao 1705a9ac0d1SXianjun Jiao# [ -e /tmp/check_calib_inf.pid ] && kill -0 $(</tmp/check_calib_inf.pid) 1715a9ac0d1SXianjun Jiao# ./check_calib_inf.sh 1728a2eaff3Sthavinga 1732ee67178SXianjun Jiaoecho the end 17494847d80SXianjun Jiao# dmesg 17594847d80SXianjun Jiao# lsmod 176