xref: /openwifi/user_space/wgd.sh (revision 2349a78387b7736b14bd0166346f157167603958)
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