hc
2024-12-19 9370bb92b2d16684ee45cf24e879c93c509162da
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
#!/bin/bash
 
echo "=================================================="
echo "1.Copy firmware"
echo "=================================================="
cp ../image/ssv6200-sw.bin /lib/firmware/
 
echo "=================================================="
echo "1.Unload Module"
echo "=================================================="
./unload_ap.sh
./unload.sh
./clean_log.sh
 
echo "=================================================="
echo "2.Set Hardware Capability"
echo "=================================================="
ifconfig eth0 down
ifconfig eth0 > /dev/null
if [ $? ]; then
    eth0_local_mac=`ifconfig eth0  | grep HWaddr | sed -e 's/.*HWaddr //g' | sed -e 's/ //g' | cut -d ':' -f 4,5,6`
    echo Use eth0 MAC address. 
else
    eth0_local_mac="45:67:89"
    echo No eth0 found use defaul MAC address.
fi
 
ap_prefix=`echo $eth0_local_mac | cut -d ':' -f 1,2`
ap_prefix=`echo $ap_prefix | sed -e 's/://g'`
 
local_mac=00:a8:b8:$eth0_local_mac
local_mac_2=`echo $local_mac | cut -d ':' -f 6`
local_mac_2=`printf '%x' $[ ( 16#$local_mac_2 + 1 ) % 4 + ( 16#$local_mac_2 & 16#FC ) ] `
ap_prefix="AP_$ap_prefix$local_mac_2"
local_mac_2="`echo $local_mac | cut -d ':' -f 1,2,3,4,5`:$local_mac_2"
 
echo Primary WLAN MAC is $local_mac
echo Secondary WLAN MAC is $local_mac_2
    
cat sta.cfg.template | sed -e "s/MAC_ADDR/$local_mac/g" | sed -e "s/MAC2ADDR/$local_mac_2/g" > sta_local_mac.cfg
./ssvcfg.sh sta_local_mac.cfg
 
echo "=================================================="
echo "3.Load MMC Module"
echo "=================================================="
modprobe mmc_core
modprobe sdhci
modprobe sdhci-pci
modprobe mmc_block
 
echo "=================================================="
echo "4.Load SSV6200 Driver"
echo "=================================================="
echo 6 > /proc/sys/kernel/printk
 
modprobe ssv6200_sdio
 
sleep 1
 
ssv_phy=`./find_ssv_phy`
if [ -z "$ssv_phy" ]; then
    echo SSV PHY device not found.;
    exit 1;
fi
 
ssv_wlan_1=`./find_ssv_wlan`
if [ -z "$ssv_wlan_1" ]; then
    echo SSV primary WLAN device not found.;
    exit 1;
fi
 
echo "Primary SSV WLAN interface is $ssv_wlan_1"
 
ssv_wlan_2=`echo $ssv_wlan_1 | sed -e s/wlan//g`
ssv_wlan_2=`expr $ssv_wlan_2 + 1`
ssv_wlan_2="wlan$ssv_wlan_2"
echo Second WLAN interface is $ssv_wlan_2
 
echo "Add second interface $ssv_wlan_2 to SSV PHY device $ssv_phy"
iw $ssv_phy interface add $ssv_wlan_2 type station
 
sleep 1
 
trap handle_stop INT
 
function handle_stop() {
    nmcli nm wifi on
 
    ./unload_ap.sh
    ./unload.sh
    
    ifconfig eth0 up
    
    echo AP mode stopped
}
        
ssv_wlans="`./find_ssv_wlan`"
for ssv_wlan in $ssv_wlans; do
    if [ $ssv_wlan != $ssv_wlan_1 ]; then
        echo Second SSV WLAN device is actually $ssv_wlan
        ./ap_sta.sh $ssv_wlan $ssv_wlan_1 $ap_prefix
        break;
    fi
done