• 正文
    • 程序编写
    • 开发板测试
  • 相关推荐
申请入驻 产业图谱

飞凌嵌入式ElfBoard ELF 1板卡-shell编程入门之使用wifi拨号上网

2024/12/12
524
加入交流群
扫码加入
获取工程师必备礼包
参与热点资讯讨论

板卡自带了一个wifi拨号上网的脚本程序。

程序编写

#!/bin/sh
function usage()
{
    echo "Usage: -i <wifi> -s <ssid> -p <password>"
    echo "eg: ./wifi.sh -i 8723 -s elf -p NONE "
    echo " -i : 8723"
    echo " -s : wifi ssid"
    echo " -p : wifi password or NONE"
}

function parse_args()
{
    while true; do
        case "$1" in
            -i ) wifi=$2;echo wifi $wifi;shift 2 ;;
            -s ) ssid=$2;echo ssid $ssid;shift 2 ;;
            -p ) pasw=$2;echo pasw $pasw;shift 2 ;;
            -h ) usage; exit 1 ;;
            * ) break ;;
        esac
    done
}

if [ $# != 6 ]
then
    usage;
    exit 1;
fi

parse_args $@

if [ -e /etc/wpa_supplicant.conf ]
then
    rm /etc/wpa_supplicant.conf
fi
    echo #PSK/TKIP >> /etc/wpa_supplicant.conf
        echo ctrl_interface=/var/run/wpa_supplicant >>/etc/wpa_supplicant.conf
        echo network={ >>/etc/wpa_supplicant.conf
    echo ssid="$ssid" >>/etc/wpa_supplicant.conf
        echo scan_ssid=1 >>/etc/wpa_supplicant.conf
    if [ $pasw == NONE ]
        then
                echo key_mgmt=NONE >>/etc/wpa_supplicant.conf
        else
                echo psk="$pasw" >>/etc/wpa_supplicant.conf
               echo key_mgmt=WPA-EAP WPA-PSK IEEE8021X NONE >>/etc/wpa_supplicant.conf
                echo group=CCMP TKIP WEP104 WEP40 >>/etc/wpa_supplicant.conf
        fi
    echo } >>/etc/wpa_supplicant.conf

ifconfig -a|grep wlan0 |grep -v grep > /dev/null
if [ $? -eq 0 ]
then
        ifconfig wlan0 down > /dev/null
fi

ifconfig -a|grep eth0 |grep -v grep > /dev/null
if [ $? -eq 0 ]
then
        ifconfig eth0 down > /dev/null
fi
ifconfig -a|grep eth1 |grep -v grep > /dev/null
if [ $? -eq 0 ]
then
        ifconfig eth1 down > /dev/null
fi


lsmod|grep 8723du |grep -v grep > /dev/null
if [ $? -eq 0 ]
then
        rmmod 8723du
fi


if [ $wifi == 8723 ]
then
insmod /lib/modules/$(uname -r)/kernel/drivers/net/wireless/realtek/rtl8723DU/8723du.ko > /dev/null
fi

sleep 3
ifconfig wlan0 up
sleep 1

ps -fe|grep wpa_supplicant |grep -v grep > /dev/null
if [ $? -eq 0 ]
then
        kill -9 $(pidof wpa_supplicant) > /dev/null
        rm /var/run/wpa_supplicant -r
fi

if [ $wifi == 8723 ] 
then
        wpa_supplicant -Dnl80211 -iwlan0 -c/etc/wpa_supplicant.conf &
fi

sleep 3
udhcpc -i wlan0
echo "Finshed!"

该脚本主要用于配置WiFi网络连接。脚本通过命令行参数 `-i`, `-s`, `-p` 来获取WiFi的相关信息,然后根据这些信息配置 `/etc/wpa_supplicant.conf` 文件,并启动 `wpa_supplicant` 来连接WiFi。接下来的步骤包括使WiFi网络接口起来,检查以前加载的内核模块是否已经加载,如果已经加载则卸载。最后使用 `udhcpc` 命令为分配一个IP地址,并输出“Finished!”来提示脚本执行完毕。

具体步骤如下:

一、定义了两个函数 `usage` 和 `parse_args`,前者用于打印命令的用法,后者用于解析命令行参数。

二、如果输入的参数个数不等于6,则调用 `usage` 打印用法并退出。

三、解析命令行参数。

四、如果 wpa_supplicant.conf 文件存在,则删除该文件。

五、在 wpa_supplicant.conf 文件中添加 WiFi 配置信息。

六、尝试关闭、卸载以前的网络使用的的内核模块。

七、如果是 rtl8723 的WiFi模块,加载新的模块。

八、启动WiFi接口,并启动wpa_supplicant进行WiFi连接。

九、等待一段时间,再使用 `udhcpc` 命令为WiFi网络接口分配IP地址。

十、输出“Finished!”来标识脚本执行完毕。

开发板测试

root@ELF1:~# chmod 777 wifi.sh

root@ELF1:~# ./wifi.sh -i 8723 -s p50 -p xx000628

可以看到wifi脚本连接过程没有问题,下面我们ping一个域名试试。

联网正常。

飞凌嵌入式

飞凌嵌入式

保定飞凌嵌入式技术有限公司,创建于2006年,是一家专注嵌入式核心控制系统研发、设计和生产的高新技术企业,是国内较早专业从事嵌入式技术的企业之一。 经过十几年的发展与积累,公司拥有业内优秀的软硬件研发团队,在北京及保定建立两大研发基地,在苏州、深圳设有华东、华南技术服务中心,并在北美、欧洲以及亚太等其他国家和地区拥有国际业务网络。公司研发的智能设备核心平台广泛应用于物联网、工控、轨道交通、医疗、电力、商业电子、智能家居、安防、机器人、环境监测等诸多领域。

保定飞凌嵌入式技术有限公司,创建于2006年,是一家专注嵌入式核心控制系统研发、设计和生产的高新技术企业,是国内较早专业从事嵌入式技术的企业之一。 经过十几年的发展与积累,公司拥有业内优秀的软硬件研发团队,在北京及保定建立两大研发基地,在苏州、深圳设有华东、华南技术服务中心,并在北美、欧洲以及亚太等其他国家和地区拥有国际业务网络。公司研发的智能设备核心平台广泛应用于物联网、工控、轨道交通、医疗、电力、商业电子、智能家居、安防、机器人、环境监测等诸多领域。收起

查看更多

相关推荐