配置Becon frame中的Carplay的Interworking和Vendor Specific字段信息

本文档详细介绍了配置Carplay时Beaconframe中的Interworking和VendorSpecific字段信息的步骤。首先,确认wififirmware支持802.11u,并在hostapd.conf中启用interworking。接着,展示了添加InterworkingIE到beacondata的驱动代码。然后,提供了VendorSpecific字段的配置示例,包括Name、Manufacturer、Model等信息。最后,通过snifferlog解析验证配置效果。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

最近在搞Carplay投屏,需要配置Becon frame中的Interworking和Vendor Specific字段信息,特此简单总结下:


1. Interworking

要支持Interworking字段信息,需要如下配置:

  1. 确认wifi firmware 固件是否支持802.11u
    wifi firmware 固件需支持 802.11u的协议,这个就需要 wifi固件厂商提供支持802.11u的wifi固件。

  2. 配置hostapd.conf中添加interworking=1
    如下是我这边配置的hostapd.conf,用于开启5G wifi hostap,固定信道149

interface=wlan0
ctrl_interface=/var/run/hostapd
driver=nl80211
ssid=SoftAp-123

# 5G 149 
channel=149
hw_mode=a
ieee80211ac=1
ignore_broadcast_ssid=0

# Enable Interworking service
interworking=1
  1. 确认wifi 驱动是否支持Interworking
    (1) 开启宏控: WL11U
    (2) 驱动中是否支持写Interworking becon data
    我这边之前之所以一直不支持Interworking的原因就是 wifi驱动就没有写Interworking becon 的代码,后来在FAE 的支持下,添加了如下增加 IE becon data的代码:
static s32
wl_cfg80211_start_ap(
	struct wiphy *wiphy,
	struct net_device *dev,
	struct cfg80211_ap_settings *info)
{
	......
#ifdef WL11U
	bcm_tlv_t *interworking_ie;
#endif /* WL11U */
	......

#ifdef WL11U
printk("Add interworking IE from beacon data\r\n");
	/* Add interworking IE from beacon data */
	if ((interworking_ie = wl_cfg80211_find_interworking_ie(
		(u8 *)info->beacon.beacon_ies, info->beacon.beacon_ies_len)) != NULL) {
			err = wl_cfg80211_add_iw_ie(cfg, dev, bssidx,
					VNDR_IE_CUSTOM_FLAG, interworking_ie->id,
					interworking_ie->data, interworking_ie->len);
			if (unlikely(err)) {
				WL_ERR(("Failed to add interworking IE"));
			}
	} else if (cfg->iw_ie_len != 0) {
		/* we have to clear IW IE and disable gratuitous APR */
		wl_cfg80211_add_iw_ie(cfg, dev, bssidx,
				VNDR_IE_CUSTOM_FLAG,
				DOT11_MNG_INTERWORKING_ID,
				0, 0);

		(void)wldev_iovar_setint_bsscfg(dev, "grat_arp", 0,bssidx);
		cfg->wl11u = FALSE;
		cfg->iw_ie_len = 0;
		memset(cfg->iw_ie, 0, IW_IES_MAX_BUF_LEN);
		/* we don't care about error */
	}
#endif /* WL11U */

	/* Set IEs to FW */
	if ((err = wl_cfg80211_set_ies(dev, &info->beacon, bssidx)) < 0)
		WL_ERR(("Set IEs failed \n"));
	......
}

2. Vendor Specific字段信息

参考Carplay官方文档:《Accessory Interface Specification R29.pdf》

在这里插入图片描述

在这里插入图片描述


2.1 IE 字段信息,配置hostapd.conf

# Enable Interworking service
interworking=1

# Access Network Type
# 0 = Private network
# 1 = Private network with guest access
# 2 = Chargeable public network
# 3 = Free public network
# 4 = Personal device network
# 5 = Emergency services only network
# 14 = Test or experimental
# 15 = Wildcard
access_network_type=3

# Whether the network provides connectivity to the Internet
# 0 = Unspecified
# 1 = Network provides connectivity to the Internet
internet=0

# Additional Step Required for Access
# Note: This is only used with open network, i.e., ASRA shall ne set to 0 if
# RSN is used.
asra=0

# Emergency services reachable
esr=0

# Unauthenticated emergency service accessible
uesa=0

# Venue Info (optional)
# The available values are defined in IEEE Std 802.11u-2011, 7.3.1.34.
# Example values (group,type):
# 0,0 = Unspecified
# 1,7 = Convention Center
# 1,13 = Coffee Shop
# 2,0 = Unspecified Business
# 7,1  Private Residence
venue_group=10
venue_type=3

2.2 Vendor Specific字段信息,配置hostapd.conf

从文档中看到,我们需要配置这些信息:
The following parameters are required, see Payload (page 409):
● Name
● Manufacturer
● Model
● OUI
● Bluetooth MAC Address
● Device ID

这个信息,配置参考:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
参考前面的文档,我们知道 :
规则就是:

dd + len + 00a040 + 01 + len + payload + 02 + len + payload + ......

如下所示:

# BT MAC:  80:c5:f2:a9:32:1c
vendor_elements=dd3B00a04000000200220106646f6e676c6502053132333435030641423132333404040050F204060680c5f2a9321c070680c5f2a9321cdd0400a04000

# dd
# 0x3B				---> total len: 33+12+3+6 + 5=59
# 00a040			---> apple

# reference: BMW:  0000020022   

# 01 06
# 646f6e676c65		---> name: dongle  len: 06
# 02 05			
# 3132333435		---> Manufacturer: 12345 len: 05
# 03 06				
# 414231323334		---> model: AB1234 len: 06
# 04 04				
# 0050F204			---> oui: 0050F204 len: 04
# 06 06
# 80c5f2a9321c		----> mac: 80:c5:f2:a9:32:1c  len:06
# 07 06
# 80c5f2a9321c		----> Device ID: 80:c5:f2:a9:32:1d len:06

# reference: BMW:   dd 04 00 a0 40 00  --> add end, len:

3. 抓sniffer log解析

配置好后抓包解析,结果如下:
在这里插入图片描述

<think>嗯,用户想了解WiFi管理帧的子类型及其用途,特别是subtype的详细解释。首先,我需要回忆一下WiFi管理帧的结构相关标准。根据802.11协议,管理帧属于MAC帧的一种,主要用来管理无线连接,比如建立、维护终止通信。管理帧的subtype字段决定了具体类型,比如Beacon、Probe Request/Response等。 首先,我应该明确管理帧的基本结构,包括TypeSubtype字段的位置。Type字段为00表示管理帧,而Subtype则进一步细分。用户提到的引用[1][2]中提到了Beacon帧的结构,这可以作为例子。比如,Beacon帧的subtype是1000,对应0x08,用来定期发送网络信息。 接下来,需要列出不同的subtype值及其对应的管理帧类型用途。比如,Association RequestResponse用于连接AP,Reassociation Request用于漫游,Probe Request/Response用于扫描网络,Beacon广播SSID等。还有AuthenticationDeauthentication处理认证,ATIM在IBSS中通知缓存数据,Disassociation终止关联,Action帧用于触发动作,Timing Advertisement是时间同步。 要注意每个subtype的十六进制值具体应用场景。比如,subtype 1010是Disassociation,用来断开连接,而Action帧(subtype 1101)用于传输特定动作,如频谱管理。引用中的例子如Beacon帧的SSID速率信息,可以说明这些帧如何携带具体参数。 用户可能需要知道这些子类型在实际通信中的作用,比如Beacon帧如何帮助设备发现网络,Probe Request如何主动搜寻,以及认证过程如何通过Authentication帧完成。此外,是否需要提到每种帧的发送方接收方?比如,Probe Request由客户端发送,AP回复Probe Response。 还要确保回答符合用户的要求,使用正确的LaTeX格式,行内公式用$,独立公式用$$。同时生成相关问题,可能涉及管理帧的结构、Beacon帧内容、管理帧与数据帧的区别等。 最后,检查引用是否正确,引用[2]详细说明了Beacon帧的结构,包括SSID速率,可以作为例子支持解释。确保每个子类型的描述准确,没有遗漏重要的子类型,比如Timing Advertisement可能较少见,但需要提及。同时,注意使用中文,保持回答结构清晰,分点说明。</think>WiFi管理帧的子类型(subtype)通过TypeSubtype字段组合定义,用于实现不同的无线网络管理功能。以下是主要子类型及其用途的详解: ### 一、管理帧基础结构 管理帧的Type字段固定为$00$,Subtype字段占4比特,组合形式为$00xxxx$。其结构遵循802.11协议规范[^1],通用格式如下: $$Frame\ Control(2B) \ | \ Duration(2B) \ | \ Address\ Fields(6B*3) \ | \ Sequence\ Control(2B) \ | \ Frame\ Body \ | \ FCS(4B)$$ ### 二、子类型分类及用途 1. **Association/Reassociation (关联类)** - **0000** (0x00):Association Request 客户端请求接入AP时发送,携带支持速率、能力信息等参数 - **0001** (0x01):Association Response AP回复关联请求,包含关联状态码分配的关联ID[^2] - **0010** (0x02):Reassociation Request 客户端在漫游时请求重新关联,包含当前AP的MAC地址 2. **Probe类 (探测类)** - **0100** (0x04):Probe Request 客户端主动扫描时广播发送,可指定SSID或使用空SSID扫描所有网络 - **0101** (0x05):Probe Response AP/客户端(Ad-hoc模式)响应Probe Request,返回SSID、速率等参数 3. **Beacon/ATIM (信标类)** - **1000** (0x08):Beacon Frame AP定期广播的帧(默认间隔100ms),包含SSID、支持的速率、信道参数等[^2] - **1001** (0x09):ATIM (Announcement Traffic Indication Message) 用于IBSS(Ad-hoc)模式,通知其他节点有缓存数据待传 4. **认证/解除类** - **1011** (0x0B):Authentication 包含认证算法类型挑战文本,用于开放系统或共享密钥认证 - **1100** (0x0C):Deauthentication 单播/广播发送,用于终止安全关联 5. **其他类型** - **1010** (0x0A):Disassociation 软解除关联,保留认证状态 - **1101** (0x0D):Action Frame 用于触发频谱管理、QoS等特殊动作 - **1110** (0x0E):Timing Advertisement 精确时间同步协议(PTP)专用 ### 三、典型应用场景 - **网络发现**:通过Beacon+Probe组合实现(被动扫描+主动扫描) - **连接建立**:Authentication → Association → Data Transfer - **漫游切换**:Reassociation Request/Response - **节能管理**:ATIM帧协调IBSS节点的唤醒周期 : 引用自becon帧 wifi_Wi-Fi协议帧结构详解 : 引用自【Wi-Fi 802.11协议】管理帧 之 Beacon帧详解
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小馋喵星人

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值