随着无线通信技术的不断进步,Wi‑Fi 不仅仅是实现高速数据传输的手段,还逐渐成为一种高精度环境感知与人体行为监测的工具。下面将梳理 Wi‑Fi 信道状态信息(Channel State Information,CSI)的基本概念、应用场景以及几个具体示例,以供大家参考。
一、Wi‑Fi CSI 简介
CSI 是无线通信系统中用于描述信道特性的参数,其包含了每个子载波上的幅度与相位信息,相较于传统的 RSSI(接收信号强度指示器),CSI 能够捕获更多细粒度的信道信息。利用 CSI,我们可以分析无线信号在多径传输、反射、衰落等环境中的变化,从而实现定位、手势识别、呼吸监测等多种应用场景。
二、Wi‑Fi CSI 的主要应用场景
- 室内定位与导航:利用 CSI 数据中的多径信息,可以实现高精度的室内定位和导航,对商场、博物馆等大面积环境尤其适用。
- 人体行为识别与手势识别:通过 CSI 数据的细微变化,研究人员能够区分人体的行走、坐卧、手势动作等,这为智能家居、无接触交互系统提供了支持。
- 生理信号监测:利用 CSI 数据可以实现呼吸、心跳等生命体征的检测,有望用于健康监测和居家护理系统中。
- 环境异常检测与安全监控:CSI 数据对环境变化极为敏感,因此可以用于监测异常行为,例如入侵检测或环境异常感知。
三、具体的 Wi‑Fi CSI 示例
以下列举了几个目前较为典型的 CSI 示例,展示了从数据采集到应用实现的完整流程:
3.1 Intel 5300 CSI Tool 示例
Intel 5300 CSI Tool 是目前最早被广泛应用的 CSI 采集工具之一,通过在 Intel 5300 网卡上修改驱动程序,使其能够输出每个子载波的 CSI 数据。该工具已经成为室内定位、手势识别和人体活动识别等研究的基础平台。开源社区中有大量使用该工具的示例和教程,为初学者提供了丰富的学习资料。
探秘Wi-Fi CSI:一个开源的无线信号分析工具-CSDN博客 (探秘Wi-Fi CSI:一个开源的无线信号分析工具)
3.2 ESP32 CSI 示例
Espressif 提供的
esp-csi 项目展示了如何利用 ESP32 系列设备采集 Wi‑Fi CSI 数据。该项目不仅提供了 CSI 数据的获取方法,还包含了数据处理算法和一些初步的应用案例,如人体活动检测和环境感知。对于硬件平台资源有限的开发者来说,这是一套非常实用的参考示例。
3.3 Wi‑Fi-alarm 项目
在 GitHub 上,有一个名为 “Wi‑Fi-alarm” 的项目,基于 Wi‑Fi CSI 数据和机器学习算法,实现了环境异常感知。项目通过采集 CSI 数据、进行特征提取,并结合分类算法实现了对环境中异常行为的实时监测,适用于安全监控和入侵检测等场景。
https://github.com/liuminghui233/Wi-Fi-alarm (Wi-Fi-alarm)
3.4 人体活动识别的深度学习示例
近年来,越来越多的研究使用 CSI 数据构建深度神经网络模型,对人体的行走、坐卧、手势等动作进行分类识别。这类示例通常包括 CSI 数据的采集、预处理、特征提取以及模型训练和验证的完整流程,为无线感知在智能家居和健康监控领域的应用提供了有力支持。
Human Activity Recognition based on Wi-Fi CSI Data-A Deep Neural Network Approach | QMMMS's Blog (Human Activity Recognition based on Wi-Fi CSI Data-A Deep Neural Network Approach)
3.5 呼吸监测示例——FarSense
FarSense 项目针对传统 Wi‑Fi 呼吸监测距离有限的问题,提出了一种通过两天线 CSI 读数比值的方式进行数据处理的新方法。该方法利用比值操作抵消噪声影响,并将幅度和相位信息有机结合,实现了远距离甚至穿墙呼吸监测,极大拓宽了实际应用场景。
[1907.03994] FarSense: Pushing the Range Limit of WiFi-based Respiration Sensing with CSI Ratio of Two Antennas (FarSense: Pushing the Range Limit of WiFi-based Respiration Sensing with CSI Ratio of Two Antennas)
四、Wi‑Fi CSI 数据结构与存储格式详解
Wi‑Fi CSI(信道状态信息)不仅为我们提供了环境感知与人体行为监测的可能性,还包含了丰富的数据信息。下面将介绍 CSI 主要包含的数据类型及其存储格式。
4.1 主要数据类型
- 复数形式的信道矩阵数据
- CSI 通过复数形式描述每个子载波上的信道响应,其中复数的模表示信道增益(或衰落),而复数的辐角代表相位偏移。例如,在一个典型的 Intel 5300 网卡中,CSI 工具通常提取 30 个子载波的数据;若系统采用 1 个发射天线和 3 个接收天线,则每个数据包的 CSI 可用一个尺寸为 1×3×30 的复数数组表示。不同平台(如 ESP 系列、MTK 等)在具体格式上可能存在差异,但总体思想一致。
- 幅度与相位信息
- 对于每个发射(TX)与接收(RX)天线对以及每个子载波,CSI 同时包含幅度(反映信道增益)和相位(反映相位偏移)信息。这些数据反映了多径传播、信号衰减、时延等信道特性,是进行信道均衡、MIMO 处理以及自适应调制的重要依据。
- 元数据(Metadata):除了主数据之外,CSI 还包含一些有助于后续时域分析与信道质量评估的元数据,例如:
- 时间戳:记录每个数据包采集的具体时间。
- 天线数量信息:如发射天线数(Ntx)和接收天线数(Nrx)。
- 信号强度、噪声及 AGC(自动增益控制)信息:这些数据有助于进一步评估信道状态及采集数据的质量。
4.2 文件存储格式
在很多开源 CSI 工具中(例如 linux-80211n-csitool),CSI 数据通常以二进制文件(.dat)形式存储,每个数据包(Bfee)的格式大致分为三个部分:
- 头部信息:包括字段长度(field_len)、标识码(code)等。当 code 为特定值(例如 187)时,表示后续数据为 CSI 信息。
- 固定头部:一般长度固定(例如 20 字节),内含采样率、天线、信道、频率等参数。
- 有效载荷(Payload):存储实际的 CSI 矩阵数据。数据通常以多维数组的形式存储,其维度对应于发射天线数、接收天线数和子载波数。
例如,Intel 5300的CSI数据就以结构体的形式保存,其中每个数据包会包含一个字段(如timestamp_low)、天线数量信息和一个复数矩阵(CSI)等。解析这类文件时,通常需要先读取头部以确定后续数据的长度和格式,然后逐个解析出每个子载波的幅度和相位。不同厂商或不同工具(例如ESP的CSI工具、MTK平台的CSI工具或GitHub上开源的解析代码)在具体数据格式上会有一些差异,但基本都遵循以上原则,即:
- 主要数据为复数形式的信道矩阵(每个元素携带幅度和相位信息);
- 附带有描述数据采集状态和参数的元数据字段。
解析这类文件时,通常需要先读取头部信息以确定后续数据的长度和格式,然后逐个解析出每个子载波的幅度和相位信息。
4.3 简单示例
以下给出一个简单的 Python 示例代码,展示如何构造一个复数形式的 CSI 矩阵:
(假设系统使用 1 个发射天线、3 个接收天线和 4 个子载波,实际中常见的是 30 或 56 个子载波。)

在上述示例中:
- 第一维(1)代表发射天线的数量;
- 第二维(3)代表接收天线的数量;
- 第三维(4)代表每个天线对上采集到的子载波数量。
每个元素都是一个复数(例如 1.0+0.0j),例如发射天线1到接收天线1,在第1个子载波上,信道增益(或衰减)为 1.0,且引入的相位偏移为 0(单位通常为弧度)。其中:
- 复数的模(或绝对值) 表示信道增益,也就是该传输路径上信号的衰落或放大程度;
- 复数的辐角(相位) 表示信道对信号引入的相位偏移,这反映了多径效应、延迟及其他信道影响。
例如,假设 2×2 的 Wi‑Fi CSI 矩阵如下所示,矩阵中,每个元素都是一个复数数据,表示从特定发射天线到特定接收天线的信道响应。

其中:
- H11 表示发射天线1到接收天线1的信道响应;
- H12 表示发射天线1到接收天线2的信道响应;
- H21 表示发射天线2到接收天线1的信道响应;
- H22 表示发射天线2到接收天线2的信道响应。
上述的信
道响应描述了无线信道对输入信号的影响,也就是当一个信号经过无线传输介质后,其输出信号与原始信号之间的变化情况。具体来说,它反映了信号在传输过程中因多径传播、衰减、时延和相位变化等因素所产生的变换。在数学上,信道响应可以用一个复数函数来表示:
- 时域中,我们通常称之为“信道脉冲响应(Channel Impulse Response, CIR)”,即当输入一个理想的单位脉冲时,信道输出的响应序列。
- 频域中,通过傅里叶变换,信道响应表现为“信道频率响应(Channel Frequency Response, CFR)”,它描述了信道对不同频率分量的增益和相位偏移。
换句话说,信道响应提供了信道对任意输入信号的作用方式的完整描述,是设计信道均衡、MIMO处理和自适应调制等关键技术的基础。
4.4 小结
总体来说,Wi‑Fi CSI 数据主要包括:
- 复数形式的信道矩阵(反映幅度与相位信息),
- 附带采集时间、天线数量、信号强度、噪声、AGC 等元数据,
- 文件存储上通常采用二进制格式,并按照头部信息、固定头部和有效载荷进行组织。
这些数据构成了我们进行信道分析、室内定位、行为识别及其他无线感知应用的基础,为无线通信和物联网领域的进一步研究与开发提供了丰富的信息源。
- https://github.com/simonwunderlich/FFT_eval (QCA9377 Spetral Scan)
- https://github.com/spanev/linux-80211n-csitool?tab=readme-ov-file (linux-80211n-csitool)
- Atheros CSI tool (Atheros CSI Tool)
- https://en.wikipedia.org/wiki/Channel_state_information (Channel state information)
- https://github.com/espressif/esp-csi/blob/master/README_cn.md (ESP-CSI)
- WiFi信道状态信息 基于Intel 5300的CSI Tool 安装及使用(一)_atheros csi tool-CSDN博客 (WiFi信道状态信息 基于Intel 5300的CSI Tool 安装及使用(一))
- WIFI信号状态信息 CSI 数据处理篇之读取数据与数据解析(二)_csi相位解卷绕-CSDN博客 (WIFI信号状态信息 CSI 数据处理篇之读取数据与数据解析(二))