我在 Raspberry Pi 4 上使用 Ubuntu 20.04 桌面,我正在尝试配置netplan
。我见过如何在 Ubuntu 服务器 20.04 中配置 wpa_supplicant。我配置netplan
为连接到wlan0
并且它工作正常。我也/etc/default/crda
通过输入进行了配置REGDOMAIN=IT
,
但在wpa_supplicant
日志中我看到:
wpa_supplicant[910]: wlan0: CTRL-EVENT-REGDOM-CHANGE init=COUNTRY_IE type=COUNTRY alpha2=DE
所以Wi-Fi连接不稳定。
我使用NetworkManager
,如果我在设置正确的值后重新启动它:
sudo iw reg set IT
wpa_supplicant
将其设置回错误的DE
值。
如何避免netplan
设置错误的国家?
更新
我已经编写了一个服务:
sudo apt install iw
我选择root用户/etc/init.d/下的一个文件夹并写入一个名为wireless的文件:
/etc/init.d/无线
#!/bin/sh
# by Leonardo: workaround
iw wlan0 set power_save off
iw reg set IT
exit 0
然后:
sudo chmod ugo+x /etc/init.d/wireless
写入另一个文件
/etc/systemd/system/wireless-on.service
[Unit]
Description=workaround for set wireless country and to no power management
After=network-online.target
[Service]
Type=oneshot
ExecStart=/etc/init.d/wireless
[Install]
WantedBy=multi-user.target
然后:
sudo systemctl enable wireless-on.service
重新开始
这使得连接对我来说很稳定。
抱歉我的英语不好
答案1
唱片:#1951586有更多信息,特别是在评论 15 到 19(及以后)中,但我会尝试将其浓缩为这个答案。不过,我还是建议阅读该评论以获取更多背景信息...
WiFi AP 可以(可选)通告客户端可以应用的监管域(我不知道客户端是否被强制应用通告的监管域)。由于这是可选的,并非所有 AP(实际上,根据我的经验,只有少数 AP)都会这样做,但看起来,您通过身份验证的 AP 会通告客户端应使用“DE”监管域,并且您的客户端会遵守这一点。
我相当确定,在撰写本文时,netplan 的配置中没有办法覆盖 AP 的规范。我不太确定 wpa-supplicant(netplan 正在暗中使用)中是否有任何工具可以覆盖 AP 指定的监管域(换句话说,netplan 在这方面可能别无选择)。
补充一点slangasek 的回答-- netplan 0.105 添加了regulatory-domain
密钥,因为/etc/default/crda
在 Ubuntu 22.04 中已将其删除(更准确地说,用户空间 crda 数据库已在上游删除),因此,在 netplan 得到增强之前,唯一能够持久保存 wifi 监管域的方法就是修改 Linux 内核命令行(事实上,这是我之前链接的错误报告的主题)。如果您决定迁移到 22.04,请注意这一点。
答案2
https://netplan.readthedocs.io/en/latest/netplan-yaml.html文档中提到,可以使用regulatory-domain
netplan 中的密钥配置您的 wifi 监管域。但是,这仅在 Ubuntu 22.04 中可用,因为该功能是在 netplan 0.105 中引入的,而 20.04 包含 netplan 0.104。
如果这是一个新系统,那么没有什么理由去部署三年历史的 Ubuntu 20.04 而不是 Ubuntu 22.04。
答案3
我以前是这样使用 Netplan 的:
sudo nano /etc/netplan/$YOUR_NETPLAN_PROFILE_NAME.yaml
粘贴并更正XXXX
此配置中的有效值:
network:
wifis:
wXXXXXXXX:
addresses:
- $YOUR_IP/24
gateway4: 192.168.1.1
nameservers:
addresses: [1.1.1.1, 1.0.0.1]
dhcp4: no
dhcp6: no
access-points:
"$YOUR_NETWOK_WIFI_ID":
password: "XXXXXXXXXXX"
version: 2
renderer: NetworkManager
然后运行:
sudo netplan apply /etc/netplan/$YOUR_NETPLAN_PROFILE_NAME.yaml