wpa_supplicant 没有接口 (pydbus)
wpa_supplicant has no interfaces (pydbus)
这是我使用 wpa_supplicant 的 D-Bus API.
文档编写的简单代码
from pydbus import SystemBus
bus = SystemBus()
proxy = bus.get('fi.w1.wpa_supplicant1','/fi/w1/wpa_supplicant1')
print(proxy.Interfaces)
根据文档,它应该 return 以下内容:
An array with paths to D-Bus objects representing controlled interfaces each.
但是,它 return 是一个空数组,而我希望看到我的 wlan0 接口的路径。
我觉得我错过了上一步,但我完全不知道它是什么。
还有一些可能有用的东西:
- 运行
wpa_cli interface_list
return没什么。
- 运行
ls /var/run/wpa_supplicant/
returns p2p-dev-wlan0 wlan0
- 我不确定这有多相关,但我 运行 这是 Raspberry Pi 零 W。
编辑:
似乎 wpa_supplicant 不知道 wlan0 是什么。
我切换到 dbus-python
包以查看它是否有任何不同,并在尝试获取 wlan0
接口时收到以下错误。
import dbus
bus = dbus.SystemBus()
wpas_obj = bus.get_object('fi.w1.wpa_supplicant1','/fi/w1/wpa_supplicant1')
wpas = dbus.Interface(wpas_obj, 'fi.w1.wpa_supplicant1')
path = wpas.GetInterface('wlan0')
错误:wpa_supplicant knows nothing about this interface
经过数周的痛苦,我为了完成而回答自己,希望有一天这对其他人有用。
错误在于 wpa_supplicant
服务创建接口的方式。它所缺少的只是 -u
标志。
摘自 wpa_supplicant 手册:
-u Enable DBus control interface. If enabled, interface definitions may be omitted. (This is only available if wpa_supplicant was built with the CONFIG_DBUS option.)
一旦我找出错误,修复起来就相当容易了。然而,这里有关于如何解决这个问题的进一步解释,以防你仍然有点迷茫。
只需编辑您的服务文件,它应该类似于 wpa_supplicant@wlan0.service
, 而不是 wpa_supplicant.service
,这部分很重要。然后在 ExecStart
.
行上附加 -u
标志
要编辑服务文件,您可以使用类似于
的东西
sudo systemctl edit nameofyour.service --full
并跟进
sudo systemctl restart nameofyour.service
之后您可能需要重启设备。
这是我使用 wpa_supplicant 的 D-Bus API.
文档编写的简单代码from pydbus import SystemBus
bus = SystemBus()
proxy = bus.get('fi.w1.wpa_supplicant1','/fi/w1/wpa_supplicant1')
print(proxy.Interfaces)
根据文档,它应该 return 以下内容:
An array with paths to D-Bus objects representing controlled interfaces each.
但是,它 return 是一个空数组,而我希望看到我的 wlan0 接口的路径。
我觉得我错过了上一步,但我完全不知道它是什么。
还有一些可能有用的东西:
- 运行
wpa_cli interface_list
return没什么。 - 运行
ls /var/run/wpa_supplicant/
returnsp2p-dev-wlan0 wlan0
- 我不确定这有多相关,但我 运行 这是 Raspberry Pi 零 W。
编辑: 似乎 wpa_supplicant 不知道 wlan0 是什么。
我切换到 dbus-python
包以查看它是否有任何不同,并在尝试获取 wlan0
接口时收到以下错误。
import dbus
bus = dbus.SystemBus()
wpas_obj = bus.get_object('fi.w1.wpa_supplicant1','/fi/w1/wpa_supplicant1')
wpas = dbus.Interface(wpas_obj, 'fi.w1.wpa_supplicant1')
path = wpas.GetInterface('wlan0')
错误:wpa_supplicant knows nothing about this interface
经过数周的痛苦,我为了完成而回答自己,希望有一天这对其他人有用。
错误在于 wpa_supplicant
服务创建接口的方式。它所缺少的只是 -u
标志。
摘自 wpa_supplicant 手册:
-u Enable DBus control interface. If enabled, interface definitions may be omitted. (This is only available if wpa_supplicant was built with the CONFIG_DBUS option.)
一旦我找出错误,修复起来就相当容易了。然而,这里有关于如何解决这个问题的进一步解释,以防你仍然有点迷茫。
只需编辑您的服务文件,它应该类似于 wpa_supplicant@wlan0.service
, 而不是 wpa_supplicant.service
,这部分很重要。然后在 ExecStart
.
-u
标志
要编辑服务文件,您可以使用类似于
的东西sudo systemctl edit nameofyour.service --full
并跟进
sudo systemctl restart nameofyour.service
之后您可能需要重启设备。