#! /bin/sh #brctl addbr br0 #brctl addif br0 wlan0 #sleep 2 #brctl addif br0 wlan1 #ifconfig br0 192.168.1.1 #udhcpd /etc/udhcpd.conf DESC="quec wlan" KERNEL_RELEASE=$(uname -r) WIFI_MODE="$2" WIFI2_CONF=/tmp/etc/hostapd-wlan0.conf WIFI5_CONF=/tmp/etc/hostapd-wlan1.conf WIFI2_PID=/var/run/hostapd_ssid0.pid WIFI5_PID=/var/run/hostapd_ssid1.pid DENY_F=/config/hostapd.deny ACCEPT_F=/config/hostapd.accept NNN=$(cat ${ACCEPT_F}) JBC_CFG_INI=/config/jbc_setting.ini COUNTRY_CODE=$(rw_ini ${JBC_CFG_INI} wifi2 country_code) SUPPORT_WIFI=$(rw_ini ${JBC_CFG_INI} sys support_wifi) ENABLE2=$(rw_ini ${JBC_CFG_INI} wifi2 enable) ENABLE5=$(rw_ini ${JBC_CFG_INI} wifi5 enable) HSSID2=$(rw_ini ${JBC_CFG_INI} wifi2 hssid) HSSID5=$(rw_ini ${JBC_CFG_INI} wifi5 hssid) BW2=$(rw_ini ${JBC_CFG_INI} wifi2 bw) CHANNEL2=$(rw_ini ${JBC_CFG_INI} wifi2 channel) CHANNEL5=$(rw_ini ${JBC_CFG_INI} wifi5 channel) #authmode: psk, open, wpa3 AUTHMODE2=$(rw_ini ${JBC_CFG_INI} wifi2 authmode) AUTHMODE5=$(rw_ini ${JBC_CFG_INI} wifi5 authmode) #wpamode: 0 WPAPSKWPA2PSK, 1 WPAPSK, 2 WPA2PSK, 3 WPA2PSKWPA3PSK WPAMODE2=$(rw_ini ${JBC_CFG_INI} wifi2 wpamode) WPAMODE5=$(rw_ini ${JBC_CFG_INI} wifi5 wpamode) #cryptotype: aes, tkip+aes CRYPTOTYPE2=$(rw_ini ${JBC_CFG_INI} wifi2 cryptotype) CRYPTOTYPE5=$(rw_ini ${JBC_CFG_INI} wifi5 cryptotype) SSID2=$(rw_ini ${JBC_CFG_INI} wifi2 ssid) SSID5=$(rw_ini ${JBC_CFG_INI} wifi5 ssid) PASSPHRASE2=$(rw_ini ${JBC_CFG_INI} wifi2 passphrase) PASSPHRASE5=$(rw_ini ${JBC_CFG_INI} wifi5 passphrase) DEBUG=$(rw_ini ${JBC_CFG_INI} wifi2 debug) ACL=$(rw_ini ${JBC_CFG_INI} wifi2 acl) MAC=$(rw_ini ${JBC_CFG_INI} wifi2 mac) WMAC=$(rw_ini ${JBC_CFG_INI} lan mac) [ "-$ACL" == "-1" -a "-$NNN" == "-" ] && ACL=0 #auth_algs=1 #wpa=3 //1 wpa,2 wpa2, 3 两者 #wpa_key_mgmt=WPA-PSK #wpa_pairwise=TKIP CCMP #rsn_pairwise=TKIP CCMP #wpa_passphrase=826dc272df1c85e0162494c90bc66575 #WPA3 #wpa=3 #ieee80211w=2 #wpa_key_mgmt=SAE WPA-PSK WPA-PSK-SHA256 #wpa_pairwise=TKIP CCMP #rsn_pairwise=CCMP config_psk () { _CONF=$1 [ "-$2" == "-aes" ] && _CRYPTOTYPE="CCMP" [ "-$2" == "-tkip+aes" ] && _CRYPTOTYPE="TKIP CCMP" _PASSPHRASE=$3 sed -i "s/^#auth_algs=.*$/auth_algs=1/" ${_CONF} sed -i "s/^#wpa=.*$/wpa=3/" ${_CONF} sed -i "s/^#wpa_key_mgmt=.*$/wpa_key_mgmt=WPA-PSK/" ${_CONF} sed -i "s/^#wpa_pairwise=.*$/wpa_pairwise=${_CRYPTOTYPE}/" ${_CONF} sed -i "s/^#rsn_pairwise=.*$/rsn_pairwise=${_CRYPTOTYPE}/" ${_CONF} sed -i "s/^#wpa_passphrase=.*$/wpa_passphrase=${_PASSPHRASE}/" ${_CONF} } config_wpa3 () { _CONF=$1 [ "-$2" == "-aes" ] && _CRYPTOTYPE="CCMP" [ "-$2" == "-tkip+aes" ] && _CRYPTOTYPE="TKIP CCMP" _PASSPHRASE=$3 sed -i "s/^#auth_algs=.*$/auth_algs=1/" ${_CONF} sed -i "s/^#ieee80211w=.*$/ieee80211w=2/" ${_CONF} sed -i "s/^#wpa=.*$/wpa=3/" ${_CONF} sed -i "s/^#wpa_key_mgmt=.*$/wpa_key_mgmt=SAE WPA-PSK WPA-PSK-SHA256/" ${_CONF} sed -i "s/^#wpa_pairwise=.*$/wpa_pairwise=${_CRYPTOTYPE}/" ${_CONF} sed -i "s/^#rsn_pairwise=.*$/rsn_pairwise=${_CRYPTOTYPE}/" ${_CONF} sed -i "s/^#wpa_passphrase=.*$/wpa_passphrase=${_PASSPHRASE}/" ${_CONF} } init_led() { echo netdev >/sys/class/leds/led-wifi/trigger echo wlan0 >/sys/class/leds/led-wifi/device_name echo 1 >/sys/class/leds/led-wifi/link } init_config() { init_led cp /mnt/data/hostapd-wlan0.conf ${WIFI2_CONF} cp /mnt/data/hostapd-wlan1.conf ${WIFI5_CONF} [ ! -f ${DENY_F} ] && touch ${DENY_F} [ ! -f ${ACCEPT_F} ] && touch ${ACCEPT_F} [ "-${SSID2}" == "-" ] && SSID2="NR-WiFi_826dc272df1c85e0162494c90bc66575" [ "-${SSID5}" == "-" ] && SSID5="NR-WiFi_5G_826dc272df1c85e0162494c90bc66575" [ "-${ENABLE2}" == "-" ] && ENABLE2=0 [ "-${ENABLE5}" == "-" ] && ENABLE5=0 [ "-${HSSID2}" == "-" ] && HSSID2=0 [ "-${HSSID5}" == "-" ] && HSSID5=0 if [ "-${BW2}" == "-2" ]; then BW2=1 else BW2=0 fi sed -i 's/^ssid=.*$/ssid='"${SSID2}"'/' ${WIFI2_CONF} sed -i 's/^ssid=.*$/ssid='"${SSID5}"'/' ${WIFI5_CONF} sed -i "s/^force_40mhz=.*$/force_40mhz=${BW2}/" ${WIFI2_CONF} sed -i "s/^channel=.*$/channel=${CHANNEL2}/" ${WIFI2_CONF} sed -i "s/^channel=.*$/channel=${CHANNEL5}/" ${WIFI5_CONF} sed -i "s/^ignore_broadcast_ssid=.*$/ignore_broadcast_ssid=${HSSID2}/" ${WIFI2_CONF} sed -i "s/^ignore_broadcast_ssid=.*$/ignore_broadcast_ssid=${HSSID5}/" ${WIFI5_CONF} sed -i "s/^macaddr_acl=.*$/macaddr_acl=${ACL}/" ${WIFI2_CONF} sed -i "s/^macaddr_acl=.*$/macaddr_acl=${ACL}/" ${WIFI5_CONF} #[ "-$ACL" = "-1" ] && sed -i "s/^#accept_mac_file=/accept_mac_file=/" ${WIFI2_CONF} #[ "-$ACL" = "-1" ] || sed -i "s/^accept_mac_file=/#accept_mac_file=/" ${WIFI2_CONF} #[ "-$ACL" = "-1" ] && sed -i "s/^deny_mac_file=/#deny_mac_file=/" ${WIFI2_CONF} #[ "-$ACL" = "-1" ] || sed -i "s/^#deny_mac_file=/deny_mac_file=/" ${WIFI2_CONF} #[ "-$ACL" = "-1" ] && sed -i "s/^#accept_mac_file=/accept_mac_file=/" ${WIFI5_CONF} #[ "-$ACL" = "-1" ] || sed -i "s/^accept_mac_file=/#accept_mac_file=/" ${WIFI5_CONF} #[ "-$ACL" = "-1" ] && sed -i "s/^deny_mac_file=/#deny_mac_file=/" ${WIFI5_CONF} #[ "-$ACL" = "-1" ] || sed -i "s/^#deny_mac_file=/deny_mac_file=/" ${WIFI5_CONF} [ "-${AUTHMODE2}" == "-psk" ] && { config_psk ${WIFI2_CONF} ${CRYPTOTYPE2} ${PASSPHRASE2} } [ "-${AUTHMODE5}" == "-psk" ] && { if [ "-$WPAMODE5" == "-3" ]; then config_wpa3 ${WIFI5_CONF} ${CRYPTOTYPE5} ${PASSPHRASE5} else config_psk ${WIFI5_CONF} ${CRYPTOTYPE5} ${PASSPHRASE5} fi } } do_ftm_start() { echo " enter wifi FTM driver mode" echo 3 > /proc/sys/vm/drop_caches echo -n "/etc/productinfo" > /sys/module/firmware_class/parameters/path insmod /lib/modules/${KERNEL_RELEASE}/wlan/wlan_cnss_core_pcie.ko [ "-$COUNTRY_CODE" == "-" ] && COUNTRY_CODE=US insmod /lib/modules/${KERNEL_RELEASE}/wlan/wlan.ko country_code=${COUNTRY_CODE} con_mode_ftm=5 for ((i=0;i<10;i++)) do if [ -d "/sys/class/net/wlan0" ]; then break fi sleep 1 done ifconfig wlan0 up sleep 1 Qcmbr -v & } do_ftm_stop() { echo " exit wifi FTM driver mode" rmmod wlan rmmod wlan_cnss_core_pcie killall -9 Qcmbr } do_start() { init_config local LED_WIFI_NAME=wlan0 [ "-${SUPPORT_WIFI}" == "-0" ] && exit 0 [ "-${ENABLE2}" == "-0" -a "-${ENABLE5}" == "-0" ] && exit 0 [ "-${ENABLE2}" == "-0" -a "-${ENABLE5}" == "-1" ] && LED_WIFI_NAME=wlan1 echo ${LED_WIFI_NAME} >/sys/class/leds/led-wifi/device_name if [ "$WIFI_MODE" == "ftm" ]; then do_ftm_start exit 0 fi bridge_mode=$(/usr/bin/rw_ini /mnt/data/quec_nic.ini nic nat_type) if [ "$bridge_mode" != "tether" ]; then echo "Quectel wlan: please enable wlan in bridge mode" exit 0 fi echo 3 > /proc/sys/vm/drop_caches echo -n "/etc/productinfo" > /sys/module/firmware_class/parameters/path rmmod wlan wlan_cnss_core_pcie #insmod /lib/modules/${KERNEL_RELEASE}/wlan/wlan_cnss_core_pcie.ko #[ "-$COUNTRY_CODE" == "-" ] && COUNTRY_CODE=US #insmod /lib/modules/${KERNEL_RELEASE}/wlan/wlan.ko country_code=${COUNTRY_CODE} modprobe wlan country_code=US for ((i=0;i<10;i++)) do if [ -d "/sys/class/net/wlan0" ]; then break fi sleep 1 done iw dev wlan0 set type __ap iw dev wlan0 interface add wlan1 type __ap for ((i=0;i<10;i++)) do if [ -d "/sys/class/net/wlan1" ]; then break fi sleep 1 done ifconfig wlan0 up ifconfig wlan1 up sleep 1 DEBUG_OPT= [ "-${DEBUG}" == "-1" ] && DEBUG_OPT="-f /var/log/syslog.log -bb" [ "-${ENABLE2}" == "-1" ] && hostapd ${DEBUG_OPT} -B ${WIFI2_CONF} -P ${WIFI2_PID} [ "-${ENABLE5}" == "-1" ] && hostapd ${DEBUG_OPT} -B ${WIFI5_CONF} -P ${WIFI5_PID} brctl addif tether wlan0 brctl addif tether wlan1 } do_stop() { if [ "$WIFI_MODE" == "ftm" ]; then do_ftm_stop exit 0 fi brctl delif tether wlan0 brctl delif tether wlan1 killall hostapd rmmod wlan rmmod wlan_cnss_core_pcie } do_restart() { init_config brctl delif tether wlan0 brctl delif tether wlan1 killall hostapd sleep 1 local LED_WIFI_NAME=wlan0 [ "-${SUPPORT_WIFI}" == "-0" ] && exit 0 [ "-${ENABLE2}" == "-0" -a "-${ENABLE5}" == "-0" ] && exit 0 [ "-${ENABLE2}" == "-0" -a "-${ENABLE5}" == "-1" ] && LED_WIFI_NAME=wlan1 echo ${LED_WIFI_NAME} >/sys/class/leds/led-wifi/device_name [ "-${ENABLE2}" == "-1" ] && hostapd -B ${WIFI2_CONF} -P ${WIFI2_PID} [ "-${ENABLE5}" == "-1" ] && hostapd -B ${WIFI5_CONF} -P ${WIFI5_PID} brctl addif tether wlan0 brctl addif tether wlan1 } NN=$(lsmod | grep wlan | wc -l) case "$1" in start) echo "Starting $DESC" do_start ;; stop) echo "Stopping $DESC" do_stop ;; restart) echo "Restarting $DESC" do_stop sleep 3 do_start ;; reload|force-reload) echo "Reloading $DESC $NN" [ $NN -gt 0 ] && do_restart [ $NN -eq 0 ] && do_start ;; *) echo "Usage: $0 {start|stop|restart|force-reload}" >&2 exit 1 ;; esac exit 0 root@udx710-module:/#