好吃懒做小不溜 2026-07-28 14:13:03 问题如题目,WiFi其它功能都正常,但是进入p2p组网模式下使用p2p_group_add时一直fail

您好,问下您其他的问题,怎么修改白名单 build/compile_standard_whitelist.json,源码中能编译通过RK3588
"bundle_subsystem_error": [
"device/board/hihope/rk3568/ohos.build",
"device/board/hisilicon/hispark_taurus/linux/ohos.build",
"device/board/hisilicon/hispark_taurus/ohos.build",
"device/qemu/arm_virt/linux/ohos.build",
"third_party/flutter/glfw/bundle.json",
"vendor/hihope/rk3568/ohos.build",
"vendor/hihope/ipcamera/ohos.build"
],
三个接口同时通过 SDIO 总线收发命令,驱动内部的互斥锁或 rtw_cmd 队列在 OH 环境下出现优先级反转或死锁(Android 的 wificond 有严格的接口操作序列化,OH 没有)。
推荐方案:两接口 + 无独立 Group Interface
不要开 3 接口,也不要让驱动创建独立的 p2p-wlan0-0。改为 2 接口 + p2p_no_group_iface=1:
1. 驱动 Makefile 修改
# 保留这些
EXTRA_CFLAGS += -DCONFIG_CONCURRENT_MODE
EXTRA_CFLAGS += -DCONFIG_IOCTL_CFG80211
EXTRA_CFLAGS += -DCONFIG_P2P
EXTRA_CFLAGS += -DRTW_USE_CFG80211_STA_EVENT
# 改这里:2 个接口足够(wlan0 + p2p0),不要开 3 个
EXTRA_CFLAGS += -DCONFIG_IFACE_NUMBER=2
# 不要这个!让 P2P GO 复用现有接口
# EXTRA_CFLAGS += -DRTW_P2P_GROUP_INTERFACE=1
2. 驱动加载参数
insmod /vendor/lib/modules/rtl8822cs.ko ifname=wlan0 if2name=p2p0
加载后确认系统出现 wlan0 和 p2p0 两个网卡。
3. wpa_supplicant 配置
STA 模式(wpa_supplicant.conf):
ctrl_interface=/var/run/wpa_supplicant
ap_scan=1
update_config=1
P2P 模式(p2p_supplicant.conf):
ctrl_interface=/var/run/wpa_supplicant
device_name=RK3588
device_type=1-0050F204-1
p2p_go_intent=7
# 核心:禁用独立 Group Interface,P2P GO 直接复用 p2p0
p2p_no_group_iface=1
4. 启动方式
STA 和 P2P 分别用不同配置文件、不同接口启动:
# STA
wpa_supplicant -B -i wlan0 -Dnl80211 -c /etc/wpa_supplicant/wpa_supplicant.conf
# P2P(需要时再启动,或常驻)
wpa_supplicant -B -i p2p0 -Dnl80211 -c /etc/wpa_supplicant/p2p_supplicant.conf
或者如果只起一个 wpa_supplicant 进程管理两个接口:
wpa_supplicant -B -i wlan0 -c /etc/wpa_supplicant/wpa_supplicant.conf \
-N -i p2p0 -c /etc/wpa_supplicant/p2p_supplicant.conf
显示接口不足我加了下面两个编译参数可以开启p2p功能但是会导致STA模式连接WiFi设备直接卡死
|
EXTRA_CFLAGS += -DRTW_P2P_GROUP_INTERFACE=1 |
||
|
EXTRA_CFLAGS += -DCONFIG_IFACE_NUMBER=3 |