USB网络控制通讯NCM
+ -

NCM 描述符概述

2025-07-08 0 0

NCM 设备在通信接口中必须实现的类特定描述符,这些描述符包括:

1. 必须实现的描述符列表

NCM 通信接口需按 严格顺序 提供以下功能描述符:

描述符类型 规范依据 是否必需 顺序要求 作用
HEADER [USBCDC12] 5.2.3.1 必需 必须第一个 声明CDC规范兼容版本(如CDC 1.2)。
UNION [USBCDC12] 5.2.3.2 必需 任意(通常在HEADER后) 绑定通信接口与数据接口(包含两者的接口编号)。
ETHERNET [USBECM12] 5.4 必需 任意 定义以太网特性(如MAC地址、最大帧长)。
NCM 本规范 5.2.1 必需 任意 声明NCM特定参数(如NTB大小、对齐要求)。
COMMAND SET 本规范 5.2.2 条件必需(见下文) 任意 定义OEM自定义命令格式(仅当bInterfaceProtocol=FEh时必需)。
COMMAND SET DETAIL - 可选 必须在COMMAND SET后 提供厂商命令的扩展详情(如命令版本、兼容性)。
Interrupt IN端点描述符 [USB30] 必需 所有功能描述符之后 用于事件通知(如连接状态变化)。

2. 关键描述符详解

(1) HEADER 功能描述符
  • 字段示例
  bLength = 0x05, 
  bDescriptorType = 0x24, 
  bDescriptorSubtype = 0x00, 
  bcdCDC = 0x0120  // CDC 1.2
  • 作用:标识设备遵循的CDC规范版本,是功能描述符链的起始标志。
(2) UNION 功能描述符
  • 字段示例
  bLength = 0x05, 
  bDescriptorType = 0x24, 
  bDescriptorSubtype = 0x06, 
  bControlInterface = 0x00,  // 通信接口编号
  bSubordinateInterface = 0x01  // 数据接口编号
  • 作用:关联通信接口(控制)与数据接口(传输),主机通过此描述符识别NCM的双接口结构。
(3) ETHERNET 功能描述符
  • 关键字段(来自[USBECM12]):
    • iMACAddress:MAC地址的字符串描述符索引。
    • wMaxSegmentSize:设备支持的最大以太网帧尺寸(如1514/9014字节)。
    • bmNetworkCapabilities:能力标志(如是否支持组播)。
(4) NCM 功能描述符
  • 关键字段(本规范5.2.1):
    • bcdNcmVersion:NCM规范版本(如0x0100表示1.0)。
    • bmNetworkCapabilities:
      • D2位:是否支持封装命令(SendEncapsulatedCommand)。
      • 其他位:保留。
    • wNtbInMaxSize/wNtbOutMaxSize:输入/输出NTB的最大尺寸。
    • wNdpInDivisor/wNdpInPayloadRemainder:数据报对齐参数(见3.3节)。
(5) COMMAND SET 描述符(仅FEh协议需要)
  • 触发条件:通信接口的 bInterfaceProtocol = 0xFE(OEM自定义协议)。
  • 作用:定义厂商私有命令的格式(如诊断指令、固件升级)。

3. 条件性描述符规则

  • COMMAND SET 描述符
    • 必需:当且仅当 bInterfaceProtocol = FEh。
    • 禁止:若协议为 00h 或其他值,不得提供此描述符。
  • COMMAND SET DETAIL 描述符
    • 可选:仅在已提供COMMAND SET描述符时可附加,否则禁止出现。

4. 描述符顺序与端点要求

  1. 严格顺序
    • HEADER 必须为首个功能描述符,其余描述符顺序任意(但建议按上表顺序排列)。
  2. 中断端点

5. 开发者检查清单

  1. 验证协议代码
    • 若使用 FEh,确保实现完整的命令集描述符链。
  2. 对齐NCM功能描述符
    • 正确设置 bmNetworkCapabilities 的 D2 位,以匹配 bInterfaceProtocol。
  3. 端点配置
    • 中断端点必须为 IN 方向,且带宽满足实时性要求。

总结

NCM设备通过 功能描述符链 声明其能力与配置,核心要求包括:

  • HEADER + UNION + ETHERNET + NCM 为绝对必需项。
  • OEM扩展(FEh协议)需额外提供命令集描述符。
  • 中断端点 不可遗漏,用于事件通知。

此设计确保主机能动态适配不同厂商的NCM设备,同时保持基础功能的标准化。

0 篇笔记 写笔记

UVC 扩展单元描述符
扩展单元描述符允许硬件设计者定义任意一组控制接口,使类驱动程序可以在设备与供应商提供的主机软件之间进行通讯控制。扩展单元描述符ID由bUnitID字段中的值唯一标识描述符。同一视频功能内的任何其他单元或终端不得具有相同的功能ID。guidExtensionCode字段包含特定于供应商的代码,该代......
USB 设置描述符SetDescriptor
ID请求码说明7SET_DESCRIPTOR修改设备中有关的描述符,或者增加新的描述符SetDescriptoret用于设置USB的描述符,在SetDescriptor请求的数据阶段,主机将向USB设备发送指定的描述符类型 。bmRequestType(1)bRequest(1)wValue(2)w......
USB超高速 超高速端点伴随描述符
在接口中描述的每个超高速端点都紧跟着一个超高速端点伴侣描述符( EndpointCompanion descriptor)。这个描述符包含只给超高速端点定义的附加端点特性。这个描述符总是 作 为 配 置 描 述 符 信 息 的 一 部 分 在GetDescriptor(Configuration) ......
UVC 描述符描述符布局
USB设备的描述符用于向主机报告其设备的属性信息,UVC设备属于USB设备的一种,故和通用的USB设备一样,也包含设备描述符、配置描述符、接口描述符、端点描述符和字符串描述符。UVC设备在也定义了一些特有的描述符,用于对USB视频设备的扩展。这些特有的UVC描述符和通用的USB描述符,共同组成了UV......
USB音箱 UAC设备描述符分析
这里看到,USB规范采用的是USB1.1版本,不过字符串中又显示的是”USB2.0 Device”,所以这里就有点迷~关于设备描述符各字段的详细解释,详见USB规范中设备描述符一节。从bDeviceClass,bDeviceSubClass和bDeviceSubClass都被置为0来看,这是一个典......
USB超高速 精密时间测量描述符
精密时间测量描述符(Precision Time Measurement)应由支持PTM能力的所有集线器和设备实现。OffsetFieldSizeValueDescription0bLength1数字描述符长度1bDescriptorType1常量描述符的类型,这里为DEVICE CAPABILIT......
UVC 相机终端描述符
相机端点描述符使用bTerminalID来标识其惟一的ID,所有的请求必须使用此ID。wTerminalType用来描述相关的物理实体的信息。typedef struct _CAMERA_TERMINAL_DESCRIPTOR UINT8 bLength; UINT8 bDescr......
UVC Windows下UVC摄像头数据分析
这里我们分析一款UVC摄像头来进行数据分析。环境:win10 x64工具:bushound,usbviewer将摄像头插入PC后,打开usbviewer工具,可以看到关于此摄像头的相关信息。可以看到,这个摄像头其实是一个USB复合设备,所以其对应的系统驱动为USBCCGP,然后再由USB复合设......
UAC 类特定音频控制接口头描述符
UAC类特定音频控制头接口描述符这个名字有点绕,其实这个描述符是前接标准的音频控制接口描述符,后续关于音频控制的所有相关描述符,起着承上起下的作用。当然也可以认为是音频控制相关描述符的前导。这是因为UAC类特定音频控制接口描述符含有一个关键的字段wTotalLength,用于包含音频控制所有接口描述......
UVC的版本区别之处理单元描述符
UVC规范自发布到现在,已经有UVC1.0,UVC1.1和UVC1.5三个版本了。在Windows环境下,支持的最广泛的是UVC1.0,从Win7开始支持UVC1.1,从Win8开始支持UVC1.5.我们常用的UVC摄像头一般为了支持更加广泛的操作系统,一般情况下UVC的固件是UVC1.0,但随着固......
UVC 颜色匹配描述符
颜色匹配描述符是一个可选描述符,这是一个与图像成像时色域相关的参数。对于未压缩的视频格式,必须使用颜色匹配描述符bt709是srgb色域。色域是对一种颜色进行编码的方法,也指一个技术系统能够产生的颜色的总和。在计算机图形处理中,色域是颜色的某个完全的子集。颜色子集最常见的应用是用来精确地代表一......
HID 触摸屏的报表描述符
讲道理,这个触摸屏的报告描述符是我从网上搜索的一段代码,这个触摸屏的报告内容本人也进行了测试。测试是通过本站编写的虚拟触摸屏驱动实现的。0x05, 0x0d, // USAGE_PAGE (Digitizers) 0 0x......
USB音箱 UAC配置描述符分析
该USB音箱的配置描述符和普通USB设备描述符结构体一致,并无特别区别。该配置描述符的总长度(包括后续的所有其它描述符)为110字节,这里相对华为耳机的要少了很多,这是因为少了像麦克风和HID。从配置描述符的字段bmAttributes来看,并不支持远程唤醒功能。 ------------......
UVC 选择器单元描述符
UVC Selector Unit Descriptor 是指 USB Video Class (UVC) 设备的一种描述符类型,用于描述 UVC 设备的功能和特性。Selector Unit Descriptor 提供了选择单元的信息,选择单元通常用于控制 UVC 设备上的不同输入源或输出源。具体......
华为UAC耳机 配置描述符
配置描述符的大小其实不光包括配置描述符自身,也包括后续的所有描述符。这里我们只先介绍一下配置描述符,后续的接口描述符和其它UAC相关描述符在后续一节介绍。配置描述符的内容如下: ------------------ Configuration Descriptor --------------......
关注公众号
  • HID人机交互
  • Linux&USB
  • UAC音频
  • TYPE-C
  • USB规范
  • USB大容量存储
  • USB百科
  • USB网络控制通讯NCM
  • USB周边
  • UVC摄像头
  • Windows系统USB
  • 音视频博客
  • 取消
    感谢您的支持,我会继续努力的!
    扫码支持
    扫码打赏,你说多少就多少

    打开支付宝扫一扫,即可进行扫码打赏哦

    您的支持,是我们前进的动力!