3、无线网络配置:配置Wi-Fi客户端模式(STA)、AP热点模式,使用wpa_supplicant连接企业级WPA2-Enterprise网络
无线网络配置,说实话,是Jetson边缘计算节点里最容易出幺蛾子的环节。你想想看,一个设备要跑到各种现场去,有的地方只有Wi-Fi,有的地方要自己当热点,还有的企业网络用的是那种带证书的WPA2-Enterprise。嗯,今天我们就把这三种场景一次性讲透。
3.1 先搞清楚你的无线网卡
在动手之前,我建议你先确认一下Jetson上装的是什么无线网卡。Nano和TX2系列通常自带一个Broadcom或Realtek的Wi-Fi模块,而Xavier NX和Orin系列有些是带Intel AX200/210的。不同的芯片,驱动和工具链略有差异。
我个人习惯先用这个命令看看无线接口叫什么:
iw dev
一般会看到 wlan0 或者 mlan0。如果啥都没有,先检查驱动:
lsmod | grep wifi
lspci | grep -i network
我在项目中遇到过一块Jetson Nano,买回来Wi-Fi死活不工作,后来发现是天线没接好。嗯,硬件问题有时候比软件更坑。
3.2 客户端模式(STA):让Jetson连上家里的Wi-Fi
STA模式,说白了就是让Jetson像手机一样去连一个已有的Wi-Fi热点。这是最常用的场景——设备部署在客户现场,需要连上他们的局域网。
3.2.1 用nmcli快速配置(推荐新手)
如果你用的是Ubuntu桌面版或者安装了NetworkManager,最简单的方式是:
nmcli dev wifi connect "你的SSID" password "你的密码"
连上之后,用 ip a 看看有没有拿到IP。如果没拿到,手动DHCP一下:
sudo dhclient wlan0
3.2.2 用wpa_supplicant手动配置(更可控)
我个人更倾向于用wpa_supplicant,尤其是在嵌入式环境里。为什么呢?因为NetworkManager有时候会自作主张,而wpa_supplicant让你完全掌控连接过程。
先创建一个配置文件,比如 /etc/wpa_supplicant/wpa_supplicant.conf:
ctrl_interface=/var/run/wpa_supplicant
update_config=1
country=CN
network={
ssid="MyHomeWiFi"
psk="mypassword"
key_mgmt=WPA-PSK
}
然后启动:
sudo wpa_supplicant -B -i wlan0 -c /etc/wpa_supplicant/wpa_supplicant.conf
sudo dhclient wlan0
wpa_passphrase "SSID" "密码" 生成加密后的配置,直接粘贴进去。这样密码不会明文存储。
3.3 企业级WPA2-Enterprise:最头疼的部分
企业网络,说白了就是那种需要用户名+密码,甚至还要证书的Wi-Fi。我在某大型工厂部署时遇到过,他们的网络用的是PEAP+MSCHAPv2认证,折腾了我一下午。
配置文件和普通Wi-Fi不一样,关键在 key_mgmt 和 eap 字段。下面是一个典型的企业网络配置:
network={
ssid="EnterpriseWiFi"
key_mgmt=WPA-EAP
eap=PEAP
identity="your_username"
password="your_password"
phase2="auth=MSCHAPV2"
ca_cert="/etc/certs/ca.pem"
}
ca_cert 路径。否则会报证书验证失败。我曾经因为忘了这步,排查了半小时。
如果不需要证书验证(比如测试环境),可以加一行:
phase1="peapver=0"
ca_cert="/etc/ssl/certs/ca-certificates.crt"
启动方式和前面一样:
sudo wpa_supplicant -B -i wlan0 -c /etc/wpa_supplicant/wpa_supplicant.conf
sudo dhclient wlan0
连上之后,用 wpa_cli status 查看连接状态。如果看到 wpa_state=COMPLETED,说明认证成功了。
3.4 AP热点模式:让Jetson自己当路由器
有时候现场没有现成的Wi-Fi,或者你需要让手机直接连到Jetson上调试。这时候就要开AP模式。Jetson当热点,说白了就是把它变成一个迷你路由器。
3.4.1 安装必要的软件
sudo apt update
sudo apt install hostapd dnsmasq
3.4.2 配置hostapd
编辑 /etc/hostapd/hostapd.conf:
interface=wlan0
driver=nl80211
ssid=Jetson-AP
hw_mode=g
channel=6
wmm_enabled=0
macaddr_acl=0
auth_algs=1
ignore_broadcast_ssid=0
wpa=2
wpa_passphrase=12345678
wpa_key_mgmt=WPA-PSK
wpa_pairwise=TKIP
rsn_pairwise=CCMP
3.4.3 配置dnsmasq(DHCP服务器)
编辑 /etc/dnsmasq.conf:
interface=wlan0
dhcp-range=192.168.4.2,192.168.4.100,255.255.255.0,24h
3.4.4 给wlan0配个静态IP
sudo ifconfig wlan0 192.168.4.1 netmask 255.255.255.0 up
3.4.5 启动服务
sudo systemctl start hostapd
sudo systemctl start dnsmasq
这时候用手机搜一下,应该能看到 Jetson-AP 这个热点。连上去,IP会自动分配为192.168.4.x段。
nmcli dev set wlan0 managed=no。或者干脆 systemctl stop NetworkManager。
3.5 双模式切换:STA和AP共存?
有些场景下,你希望Jetson既连外网(STA),又开热点让其他设备连进来(AP)。这需要网卡支持虚拟接口。不是所有网卡都行,Intel AX200可以,但很多Realtek不行。
如果支持,可以这样:
iw dev wlan0 interface add wlan1 type __ap
然后wlan0做STA连外网,wlan1做AP开热点。配置方法和上面一样,只是接口名不同。
3.6 开机自启与持久化配置
配置好之后,肯定不希望每次重启都手动敲命令。我建议用systemd服务来管理。
创建一个服务文件 /etc/systemd/system/wifi-sta.service:
[Unit]
Description=Wi-Fi STA Connection
After=network.target
[Service]
Type=oneshot
ExecStart=/usr/bin/wpa_supplicant -B -i wlan0 -c /etc/wpa_supplicant/wpa_supplicant.conf
ExecStartPost=/usr/bin/dhclient wlan0
RemainAfterExit=yes
[Install]
WantedBy=multi-user.target
然后启用:
sudo systemctl enable wifi-sta.service
sudo systemctl start wifi-sta.service
AP模式同理,把hostapd和dnsmasq设为开机自启就行:
sudo systemctl enable hostapd
sudo systemctl enable dnsmasq
嗯,到这里,Jetson的无线网络配置基本就齐了。STA模式让你连外网,AP模式让你当热点,企业级认证让你进那些严格的企业网络。这三种场景覆盖了90%以上的边缘计算部署需求。下次遇到Wi-Fi问题,先看看网卡驱动,再看看配置文件,基本都能搞定。