manhuami2007 发表于 2023-12-15 11:19

【STM32MP135F-DK】3-通过wifi连接网络

<div class='showpostmsg'> 本帖最后由 manhuami2007 于 2023-12-15 11:27 编辑

<div>在办公的地方,使用有线连接的方式不太方便,所以还是使用wifi比较方便。开发板上带有wifi功能,也可以很方便的启用wifi。</div>

<div>在没启动wifi的时候还是需要串口进行连接的。首先使用串口连接开发板进行设置,如下图所示,将micro usb线接入到左侧的接口上。然后通过串口连接开发板,开发板的波特率是115200。</div>

<div>
<div style="text-align: center;">
<div style="text-align: center;"></div>

<p>&nbsp;</p>
</div>

<p>&nbsp;</p>
</div>

<div>接下来就可以通过串口控制开发板了。参考网址 <a href="https://wiki.stmicroelectronics.cn/stm32mpu/wiki/How_to_setup_a_WLAN_connection">How to setup a WLAN connection - stm32mpu (stmicroelectronics.cn)</a> 进行设置。</div>

<div>文章中提到了2种方法,一个是修改systemd-networkd服务,一个是不修改systemd-networkd服务的方法。但是不推荐用第二个,第二个方法有问题,后面会说问题在哪里。</div>

<div>&nbsp;</div>

<div><span style="font-size:18px;"><strong>修改systemd-networkd服务,自动连接WIFI</strong></span></div>

<p>&nbsp;</p>

<p>1. 使用 <em>ifconfig -a</em> 命令查看网络接口,wifi对应的网络接口是wlan0,初始的时候是没有ip地址的;</p>

<p>2. 通过命令<em>ifconfig wlan0 192.168.43.135 broadcast 192.168.43.255 netmask 255.255.255.0</em>设置ip地址,然后通过命令<em>ifconfig wlan0 up</em>启动wlan0接口。<strong>注意这里设置的IP地址等信息不重要,当我们连到wifi之后会重新分配动态IP</strong>;</p>

<p>3. 可以使用iw命令扫描周围的wifi,命令是&nbsp;<em>iw dev wlan0 scan |grep SSID</em> ,列出周围wifi的SSID;</p>

<p>4. 接下来是设置wifi在上电的时候自动连接。文章里说,系统有一个针对网络的服务systemd-networkd,这个服务可以通过networkctl命令去控制。</p>

<p>5. systemd-networkd默认使用的是以太网接口的,所以需要设置到wifi 。文章上是通过输入如下命令进行设置的:</p>

<pre>
<code>echo "" &gt; /lib/systemd/network/51-wireless.network
echo "Name=wlan0" &gt;&gt; /lib/systemd/network/51-wireless.network
echo "" &gt;&gt; /lib/systemd/network/51-wireless.network
echo "DHCP=ipv4" &gt;&gt; /lib/systemd/network/51-wireless.network</code></pre>

<p>不过还有一个简单方法,当我们使用cd命令切换到 <em>/</em><em>lib/systemd/network/</em> 文件夹下的时候,可以看到已经提供了很多样板了,直接对样板进行改名操作就行。命令是 <em>cp 51-wireless.network.sample 51-wireless.network</em></p>

<div style="text-align: center;"></div>

<p>&nbsp;</p>

<p>使用cat命令输出51-wireless.network.sample文件可以看到内容是一样的,而且还有一些提示信息。</p>

<div style="text-align: center;"></div>

<p>&nbsp;</p>

<p>6. 然后是写入要连接的wifi的SSID和密码,使用如下命令:</p>

<pre>
<code>mkdir -p /etc/wpa_supplicant/
echo "ctrl_interface=/var/run/wpa_supplicant" &gt; /etc/wpa_supplicant/wpa_supplicant-wlan0.conf
echo "eapol_version=1" &gt;&gt; /etc/wpa_supplicant/wpa_supplicant-wlan0.conf
echo "ap_scan=1" &gt;&gt; /etc/wpa_supplicant/wpa_supplicant-wlan0.conf
echo "fast_reauth=1" &gt;&gt; /etc/wpa_supplicant/wpa_supplicant-wlan0.conf
echo "" &gt;&gt; /etc/wpa_supplicant/wpa_supplicant-wlan0.conf
wpa_passphrase SSID_OF_NETWORK PASSWORD_OF_NETWORK &gt;&gt; /etc/wpa_supplicant/wpa_supplicant-wlan0.conf</code></pre>

<p>最后一行的wpa_passphrase 后面的是wifi的SSID和密码。如果要添加多个wifi的SSID和密码,则需要多次调用&nbsp;<em>wpa_passphrase SSID_OF_NETWORK PASSWORD_OF_NETWORK &gt;&gt; /etc/wpa_supplicant/wpa_supplicant-wlan0.conf&nbsp;</em>这个命令。</p>

<p>7. 启用无线的配置,命令如下:</p>

<pre>
<code>systemctl enable wpa_supplicant@wlan0.service
systemctl restart systemd-networkd.service
systemctl restart wpa_supplicant@wlan0.service</code></pre>

<p>&nbsp;</p>

<div>这样就能连接到wifi了,重启之后也能够自动连接到设置的wifi。</div>

<div>通过ping命令测试网络:</div>

<div>
<div style="text-align: center;"></div>

<p>&nbsp;</p>
</div>

<div>&nbsp;</div>

<div><span style="font-size:16px;"><strong>不修改systemd-networkd服务,手动连接wifi</strong></span></div>

<div>&nbsp;</div>

<div>注意,在文章中还提到了不去更改systemd-networkd服务,手动连接wifi的方法,但是不建议使用这种方法,我一开始就是用的这种方法,出现了各种错误,耽误了好长的时间。比如能ping通局域网里的其它设备,但是不能ping 百度,出现下图的错误,感觉是DNS的问题,然后各种尝试,还是没有解决。</div>

<div>
<div style="text-align: center;"></div>

<p>&nbsp;</p>
</div>

<div>在文章中,ST官方也提到了这种方法有问题,不建议使用,所以大家还是使用上面提到的那种修改systemd-networkd服务的方法吧。</div>

<div>
<div style="text-align: center;"></div>

<p>&nbsp;</p>
</div>

<div><span style="font-size:16px;"><strong>总结</strong></span></div>

<div>通过第一种方式,开发板可以连接到网络中了,这样就能安装软件了。</div>
</div><script>                                        var loginstr = '<div class="locked">查看本帖全部内容,请<a href="javascript:;"   style="color:#e60000" class="loginf">登录</a>或者<a href="https://bbs.eeworld.com.cn/member.php?mod=register_eeworld.php&action=wechat" style="color:#e60000" target="_blank">注册</a></div>';
                                       
                                        if(parseInt(discuz_uid)==0){
                                                                                                (function($){
                                                        var postHeight = getTextHeight(400);
                                                        $(".showpostmsg").html($(".showpostmsg").html());
                                                        $(".showpostmsg").after(loginstr);
                                                        $(".showpostmsg").css({height:postHeight,overflow:"hidden"});
                                                })(jQuery);
                                        }                </script><script type="text/javascript">(function(d,c){var a=d.createElement("script"),m=d.getElementsByTagName("script"),eewurl="//counter.eeworld.com.cn/pv/count/";a.src=eewurl+c;m.parentNode.insertBefore(a,m)})(document,523)</script>
页: [1]
查看完整版本: 【STM32MP135F-DK】3-通过wifi连接网络