让Sipeed MaixCAM连接隐藏SSID的无线网

本文讲述了作者如何在MaixCAM的Linux系统中解决无法手动输入隐藏SSID的问题,涉及SSH登录、网络配置文件修改、wpa_cli工具使用和S30wifi服务的深入研究。
摘要由CSDN通过智能技术生成

〇、遇到的问题

MaixCAM是sipeed最新款的视觉边缘计算设备。它搭载1GHz的C906 RISC-V处理器和一个1GHz的ARM A53处理器。机身自带无线网和触摸屏,可以直接在触摸屏上操作连接无线网络。联网之后,编程开发、模型部署、远程登陆都可以通过网络进行,不需要连接数据线,非常方便。

但是在MaixCAM的的2024-4-22版本系统中,是无法在图形界面中手动输入SSID,导致了无法连接隐藏SSID的无线网络。虽然连接隐藏SSID是一个不太常见的需求,但在一些特殊的网络环境中,这个功能还是有必要的。

我大致的思路是通过SSH登录到开发板,然后和配置其他Linux系统的无线网一样,通过命令行或者配置文件写入隐藏网络的SSID和密码信息,实现联网。思路虽然简单,但过程却一波三折,在这其中也学习了不少Linux网络配置的相关知识。

一、登录开发板

MaixCAM运行的是Linux系统。由于其天生支持通过网络的程序开发和部署,所以我猜测它一定打开了SSH端口并且装有sshd服务。于是尝试使用SSH登录开发板操作系统,以配置文件的形式连接无线网。

在没连接无线网的情况下,开发板可以通过USB连接电脑,然后虚拟出一个有线网卡,这样就可以进行调试了。具体的连接方法可以参考这里的方案二。root登陆密码也是root。

二、找到网络相关配置文件

通过修改配置文件连接无线网的文章有很多。但经尝试,直接修改/etc/network/interfaces和/etc/wpa_supplicant.conf是无效的。配置完重启网卡时报错为“dhcp无续租”

如果在开发板的图形界面中选择连接一个非隐藏的网络是可以连接的,这证明开发板本身是好的,并且连接成功后看到了wpa_supplicant.conf的内容被改了。可见影响连接无线网所需的直接信息来源就是/etc/wpa_supplicant.conf。

三、连接网络

为了防止手写的配置文件有问题,转而采用wpa_cli连接。

$ wpa_cli
> add_network
x 
> set_network x ssid "hidden_ssid" 
> set_network x psk "secret" 
> set_network x scan_ssid 1  //允许连接隐藏的网络
> enable_network x 
> save_config 
> select_network x

以上的命令都可以不进入交互模式,直接通过wpa_cli -i wlan0+命令的形式执行。这次执行完了之后已经可以连接到无线网。

但是有一个问题,就是save_config一步的时候会提示FAIL错误信息。重启的话之前之前输入的网络信息就消失了。相反,通过图形界面设置的网络信息会保留。即使通过wpa_cli删除了那些信息,也删除了wpa_supplicant.conf文件,重启后还是会恢复。可见通过图形界面输入的网络信息另有保存之处。

四、探索网络服务

一番查找之后,发现/etc/init.d里面有两个和网络有关的服务,一个是 S40network,另一个是 S30wifi。在重启S30wifi的时候会看到之前输入的网络信息。

通过打印出来的信息可见网络信息的保存和这个服务有关。

经过搜索文件系统,发现这么几个和WiFi有关的东西。

打开/boot下的wifi.pass和wifi.ssid之后果然发现里面保存着无线网的连接信息。修改它们,然后重启开发板。ssh上去之后可以看到/etc/wpa_supplicant.conf中的ssid和psk信息已经符合我们的要求了。注意这里会看到psk似乎被加密了,这段加密的密码很重要,要保存下来

↑自动生成出来的wpa_supplicant.conf

不过先在还是没自动联网。使用wpa-cli设置scan_ssid 1之后可以连接了。但还是无法使用save_config保存。

现在想要解决问题有两个思路:一是想办法让某个程序在启动时写/etc/wpa_supplicant.conf时带上scan_ssid=1信息,二是阻止每次开机重写/etc/wpa_supplicant.conf。

负责生成/etc/wpa_supplicant.conf的脚本是/etc/init.d/S30wifi,研究它的脚本之后发现,它会判断/boot文件夹下有没有wpa_supplicant.conf,如果有就直接复制到/etc。如果没有,就根据/boot/wifi.ssid和/boot/wifi.pass的内容生成。

↑S30wifi文件内容

这里我们就不费力去研究生成配置文件的代码了,直接在/boot下手写一个符合自己要求的,让他复制过去就好了。编写如下图所示的文件。注意psk要用之前自动生成的加密的密码替换

重启之后应该可以看到开发板可以自动连接隐藏SSID的网络了。

简而言之就两步

  1. 使用wpa_cli先连接一次网络,这样就可以获取到加密的密码,即配置文件中的psk
  2. 编写/boot/wpa_supplicant.conf

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值