lsusb一些知识

Android usb 设备管理器lsusb 分析 在android 平台,我们再调试所有usb 设备时,硬件焊接好后,在内核usb 核心驱动正常情况下(当然只要USB外设遵循标准协议基本没有问题),我们都会通过lsusb 指令在确认usb 设置是否正常接入且被识别到,并且得到usb 设备的vid,pid,及bus id,device id。 lsub 命令 通过命令,我们可以查询到当前系统中,在usb 的三条总线分别插入的6个USB设备。 ls... 阅读详情
int libusb_get_device_descriptor(libusb_device *dev, struct libusb_device_descriptor *desc);

获取设备的设备描述符。

设备描述符、配置描述符、接口描述符、端点描述符:

// 设备描述符
struct libusb_device_descriptor {
    uint8_t   bLength;             // 本描述符的字节数,恒等于18。
    uint8_t   bDescriptorType;     // 本描述符类型,恒等于0x01。
    uint16_t  bcdUSB;              // USB规范版本号。
    uint8_t   bDeviceClass;        // USB标准化组织的类代码。
    uint8_t   bDeviceSubClass;     // USB标准化组织指定的子类代码,由 bDeviceClass 值限定。
    uint8_t   bDeviceProtocol;     // USB标准化组织指定的协议代码,由 bDeviceClass 和 bDeviceSubClass 值限定。
    uint8_t   bMaxPacketSize0;     // 端点0的最大数据包大小。
    uint16_t  idVendor;            // USB标准化组织指定的供应商ID。
    uint16_t  idProduct;           // USB标准化组织指定的产品ID。
    uint16_t  bcdDevice;           // 设备版本号。
    uint8_t   iManufacturer;       // 描述制造商的字符串描述符的索引。
    uint8_t   iProduct;            // 描述产品的字符串描述符的索引。
    uint8_t   iSerialNumber;       // 包含设备序列号的字符串描述符的索引。
    uint8_t   bNumConfigurations;  // 可能的配置数量。
};

// 配置描述符:
struct libusb_config_descriptor {
    uint8_t   bLength;             // 本描述符的字节数,恒等于9。
    uint8_t   bDescriptorType;     // 本描述符类型,恒等于0x02。
    uint16_t  wTotalLength;        // 本配置总大小。
    uint8_t   bNumInterfaces;      // 支持的接口数。
    uint8_t   bConfigurationValue; // 标识符值。
    uint8_t   iConfiguration;      // 描述此配置的字符串描述符的索引。
    uint8_t   bmAttributes;        // 配置特征。
    uint8_t   MaxPower;            // 最大电流。高速模式单位是2毫安,超高速模式单位是8毫安。
    
    const struct libusb_interface *interface;    // 支持的接口数组,数组的长度由 bNumInterfaces 字段确定。
    const unsigned char           *extra;        // 其他描述符。libusb将不认识的描述符储存在这里。
    int                            extra_length; // 其他描述符总长度。
};

// 接口:
struct libusb_interface {
    const struct libusb_interface_descriptor *altsetting;
    int num_altsetting;
};

// 接口描述符:
struct libusb_interface_descriptor {
    uint8_t  bLength;            // 本描述符的字节数,恒等于9。
    uint8_t  bDescriptorType;    // 本描述符类型,恒等于0x04。
    uint8_t  bInterfaceNumber;   // 此接口的编号。
    uint8_t  bAlternateSetting;  // 此接口备用设置值。
    uint8_t  bNumEndpoints;      // 此接口使用的端点数(不包括控制端点)。
    uint8_t  bInterfaceClass;    // 此接口的类代码
    uint8_t  bInterfaceSubClass; // 此接口的子类代码,由 bInterfaceClass 值限定。
    uint8_t  bInterfaceProtocol; // 此接口的协议代码,由 bInterfaceClass 和 bInterfaceSubClass 值限定。
    uint8_t  iInterface;         // 描述此接口的字符串描述符的索引。
    
    const struct libusb_endpoint_descriptor *endpoint;     // 端点描述符数组,长度由 bNumEndpoints 字段确定。
    const unsigned char                     *extra;        // 其他描述符。libusb将不认识的描述符储存在这里。
    int                                      extra_length; // 其他描述符总长度。
};

// 端点描述符:
struct libusb_endpoint_descriptor {
    uint8_t   bLength;           // 本描述符的字节数,恒等于7。
    uint8_t   bDescriptorType;   // 本描述符类型,恒等于0x05。
    uint8_t   bEndpointAddress;  // 端点地址。
    uint8_t   bmAttributes;      // 使用 bConfigurationValue 配置端点时应用于该端点的属性。
    uint16_t  wMaxPacketSize;    // 此端点能够发送/接收的最大数据包大小。
    uint8_t   bInterval;         // 数据传输的间隔。
    
    uint8_t              bRefresh;      // 仅适用于音频设备:提供同步反馈的速率。
    uint8_t              bSynchAddress; // 仅适用于音频设备:同步端点的地址。
    const unsigned char *extra;         // 其他描述符。libusb将不认识的描述符储存在这里。
    int                  extra_length;  // 其他描述符总长度。
};
int libusb_init(libusb_context **ctx);

该函数进行libusb的初始化,必须最先调用。
ctx通常设置NULL
0成功,非0 失败

ssize_t libusb_get_device_list(libusb_context *ctx, libusb_device ***list);

获取所有usb设备的列表,通过 ***list 返回这个列表。
使用完毕需要使用 libusb_free_device_list() 来释放列表。
返回值表示列表中的设备个数。该列表实际上要大一个元素,因为它以NULL结尾。
如果返回值小于0,那么返回值代表错误码列表中的某个错误。

int libusb_get_bus_number(libusb_device *dev)

获取关联的 USB 设备的总线号。

int libusb_get_device_address(libusb_device *dev);

获取关联的 USB 设备的地址。USB 设备地址是一个整数值,它是与 USB 设备关联的唯一标识符。它与总线号一起用于在 USB 系统中标识特定的 USB 设备。地址号从 1 到 127 的范围内。
函数的返回值是一个整数,表示与指定的 libusb_device 结构体关联的 USB 设备的地址。如果发生错误,则返回一个负数的错误代码。

int LIBUSB_CALL libusb_open(libusb_device *dev, libusb_device_handle **handle);

通过libusb_device的指针打开一个USB设备,并返回设备句柄libusb_device_handle的指针.
handle 用来返回设备句柄libusb_device_handle的指针.
0成功,非0 失败

int libusb_get_string_descriptor_ascii(
    libusb_device_handle *dev_handle,
    uint8_t desc_index,
    unsigned char *data,
    int length
);

用于从 USB 设备中检索一个 ASCII 字符串描述符。该函数获取一个表示 USB 设备的 libusb_device_handle 句柄,一个描述符索引以及用于存储描述符数据的缓冲区作为参数,并返回描述符的长度(以字节为单位)。
函数将指定索引处的字符串描述符从设备中读取,并将其转换为 ASCII 编码格式,然后将其存储在传递给函数的缓冲区中。如果字符串描述符的索引为零,函数将返回设备的默认语言标识符字符串描述符。
函数的返回值是一个整数,表示检索到的描述符数据的长度(以字节为单位),或者如果出现错误,则返回一个负数的错误代码。

void libusb_close(libusb_device_handle *dev_handle);

用于关闭一个打开的 USB 设备句柄。当使用 libusb_open 函数打开一个 USB 设备句柄后,使用 libusb_close 函数可以将该设备句柄关闭,并释放与该设备关联的资源。
该函数没有返回值,它执行成功时会关闭设备句柄,并释放与该设备关联的资源。需要注意的是,在调用该函数之前,必须确保没有任何活动的异步传输或请求与该设备句柄关联,否则该函数将无法成功关闭设备句柄。如果该设备句柄在调用该函数时处于活动状态,则可能会导致未定义的行为或崩溃。

void LIBUSB_CALL libusb_free_device_list(libusb_device **list,        int unref_devices);

释放以前使用的设备列表
unref_devices 如果该参数置1 列表中的每个设备的引用计数减1
无返回值

void  libusb_exit(libusb_context *ctx);

和libusb_init成对使用,释放相应的资源。
ctx通常设置NULL

libusb接口输出usb设备信息 //gcc test-libusb2.c `pkg-config --cflags --libs libusb-1.0` #include <stdio.h> #include <stdlib.h> #include <sys/types.h> #include <string.h> #include <lib... 阅读详情

相关推荐

USB系列-LibUSB使用指南(1)-Windows下的报错与踩坑

Windows下的LibUSB开发的大怨种踩坑日记

The Road of Engineer 2万+

libusb枚举设备的过程

1 调用libusb_get_device_descriptor获取USB设备的设备描述符,然后调用libusb_get_config_descriptor获取配置描述符、接口描述符、端点描述符信息。 2 根据上面获取的设备信息匹配设备,通常可以通过设备的PID\VID匹配,设备的class 、subclass 、protocol 来进行匹配,如果是复合设备,则根据interface的class

wince_lover的专栏 8664

linux下使用libusb获取系统usb设备具体信息

libusb简介

VizXu的博客 2万+

使用libusb检测USB设备插拔状态

libusb是一个提供USB设备访问的跨平台用户模式程序库。该项目最新网址:http://www.libusb.info, 支持主流的操作系统:Linux、Mac OS X、 Windows、OpenBSD/NetBSD、Solaris、Haiku,支持USB 1.0到3.1的所有版本。 使用场景 从事软件开发这么多年来好像还一直未遇到与usb设备相关的开发工作,直到这次开发刷机工具的过程...

zouli415的博客 9362

lsusb arm 移植

lsusb ARM 移植<br />  <br />1.下载源码:<br />  1)wget http://dist.momonga-linux.org/pub/momonga/2/SOURCES/libusb-0.1.10.tar.gz; <br />  2)wget http://www.sfr-fresh.com/linux/misc/usbutils-0.86.tar.gz. <br />2.解压:  <br />  1)tar xvf usbutils-0.86.tar.gz   <br /> 

y296144646q的专栏 3696

Ubuntu 系统下使用 lsusb 命令识别 USB 设备及端口类型详解

在使用 Ubuntu 系统进行深度学习、计算机视觉或机器人开发时,识别 USB 设备连接情况尤为关键。尤其在使用 ZED 双目深度相机、外接摄像头、鼠标键盘等外设时,我们常需要确认这些设备是否正确连接、运行在哪个 USB 版本端口上,是否处于高速传输状态。本文以实际使用 lsusb 命令的输出为例,带你一步步解读每一个字段,明确设备对应的总线(Bus)、端口类型(USB 2.0 / 3.0 / 更高),并指出几个容易忽视的判断细节。

Junseer的博客 7751

Linux- 硬件查询——lspci/lsusb/lsblk/blkid/lscpu/hdparm/sdparm/smart/dmidecode

1 概念 1.1 计算机硬件:计算机硬件(Computer hardware)是指计算机系统中由电子,机械和光电元件等组成的各种物理装置的总称。 这些物理装置按系统结构的要求构成一个有机整体为计算机软件运行提供物质基础。简言之,计算机硬件的功能是输入并存储程序和数据,以及执行程序把数据加工成可以利用的形式。 从外观上来看,微机由主机箱和外部设备组成。主机箱内主要包括CPU、内存、主板、硬盘驱...

鬼刺 2764

Linux下lsusb命令详解

Linux下lsusb命令详解 参考链接:https://zhuanlan.zhihu.com/p/142403866 ​ USB,是英文Universal Serial Bus(通用串行总线)的缩写,是一个外部总线标准,早期用于规范电脑与外部设备的连接和通讯。 ​ USB连接自从首次推出到现在已经有23年,这种技术在全球电子行业中的扩展速度前所未有。USB现在已经拥有超过30亿端口的年出货量,是迄今为止最常用的接口技术,笔记本电脑、平板电脑、智能手机和其他各种设备都依赖于这种技术来进行功率和数据传输

a1809032425的博客 1万+

【linux命令讲解大全】182.常用的Linux命令详解:renice、cksum和lsusb

本文详细介绍了 Linux 系统中的三个常用命令:renice、cksum和lsusb。首先,renice命令允许用户调整正在运行的进程的调度优先级,可以通过进程号、进程组id或用户名进行设置。然后,cksum命令用于计算文件的CRC校验和,确保文件在传输过程中不被损坏,通过对比发送端和接收端的校验和来验证文件的完整性。最后,lsusb命令用于显示本机的USB设备列表以及USB设备的详细信息,可以通过选项来指定显示特定的USB设备。这三个命令在Linux系统中的应用广泛,了解它们的用法和功能对于Linux系

全栈若城,专注知识分享 6709

麒麟V10服务器多硬盘安装与分区实战:告别自动分区,手动分配/boot、swap和/根目录

本文详细介绍了麒麟V10服务器在多硬盘环境下的手动分区策略,包括/boot、swap和/根目录的优化分配方案。通过SSD与HDD混合存储架构的合理规划,提升系统性能和运维效率,适用于企业级定制化系统部署需求。

weixin_26976635的博客 408

CA(载波聚合)

文章目录CA基本概念1. CA分类2. Pcell、Scell以及Serving CellPcell(Primary Cell)Scell(Secondary Cell)3. Pcell、Scell部署场景场景1场景2场景3场景44. CA的协议控制4.1 Camping/Connetion Establishment:4.2 CC Management/SCell Addition/Release:4.3 Handover/Measurements:4.4 SCell激活 CA基本概念 CA也就是我们中文

你又来看我了,一起学习吧 4万+

lsusb命令

以下是在Ubuntu系统下使用lsusb命令的。

C/C++ 1426

机器学习-深嵌交叉验证(Nested Cross-Validation)

Section I: Code and Analyses 第一部分:代码 from sklearn import datasets from sklearn.model_selection import train_test_split from sklearn.preprocessing import StandardScaler from sklearn.svm import SVC from...

Santorinisu Blogs 2716

lsusb命令详解

USB现在已经拥有超过30亿端口的年出货量,是迄今为止最常用的接口技术,笔记本电脑、平板电脑、智能手机和其他各种设备都依赖于这种技术来进行功率和数据传输。相较于现有USB 2.0的480Mbps最高理论速度,USB 3.0可支持到5.0Gbps,是USB 2.0的10倍。在USB 2.0之前是曾经是最高速率,后起的更高速率的高速接口应该兼容全速速率。​ USB,是英文Universal Serial Bus(通用串行总线)的缩写,是一个外部总线标准,早期用于规范电脑与外部设备的连接和通讯。

hahaha133456的博客 3293

Excel也能玩转K-means聚类?手把手教你用表格搞定用户分群(附完整公式)

本文详细介绍了如何在Excel中实现K-means聚类算法,无需编程即可完成用户分群。通过SUMIF、SQRT等基础函数,从数据预处理到最终分群全流程手把手教学,特别强调数据标准化和迭代优化的关键步骤,帮助运营团队低成本高效分析用户行为数据。

weixin_30555125的博客 181

Educoder:爬虫实战——求是网周刊文章爬取

第1关:获取新闻url importrequests importre defgeturls(): #**********Begin**********# url='http://www.qstheory.cn/dukan/qs/2014/2019-01/01/c_1123924172.htm' headers={ 'User-Agent':'Mozilla/5.0(Linux;Android6.0;Nexus5Buil...

weixin_46026136的博客 5254

lsusb linux,Linux查看usb设备信息之lsusb命令

了解lsusb命令Linux使用lsusb查看USB设备信息。安装工具:[root@zcwyou ~]# yum -y install usbutils1. 查看USB设备汇总信息命令:[root@zcwyou ~]# lsusb输出:Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hubBus 002 Device 001: ...

weixin_42521628的博客 1307

【WLAN】【测试】WPS测试方法小结

手机 一般稍微老的手机会支持,新手机反而不支持。 比如小米6(系统版本新的话不支持)在设置——高级设置——WPS连接。 笔记本 有些笔记本(如Surface Laptop 3)天生支持WPS,比如在连接某SSID的时候,会有“也可以通过按路由器上的按钮连接”这样的字样,出来后按AP的WPS按键即可以进行连接。 Qss软件 AP mesh组网中,Controller和Agent之间通过WIFI组网,可使用WPS的方式进行连接。可利用这点用Agent来测试AP的WPS功能。 ...

一介草民,只为生活。 1万+

Linux lsusb 命令

Linux系统下使用lsusb命令查看USB设备 lsusb是Linux系统中用于列出所有连接USB设备的命令,可显示设备总线号、ID及描述信息。基本用法为lsusb,常用选项包括: -v 显示详细设备描述符 -t 以树状结构展示设备层次 -d 按厂商/产品ID筛选设备 该命令常用于: 检查设备识别状态 获取设备ID用于驱动安装 诊断USB连接问题 查看设备技术规格 典型问题可通过lsusb -v查看bcdUSB字段判断设备速度,或重定向输出到文件保存记录。当设备未显示时,可能由连接异常或驱动问题导致。

nmxiaocui的博客 798

OBC_开环扫频波特图拟合操作流程(结合 Simulink)

摘要: 本文详细介绍了基于Simulink的开环扫频波特图测试与拟合流程,适用于电源/控制系统(如LLC/PFC)的小信号分析。主要内容包括:1)前期准备(测试点选择、信号范围设定);2)Simulink建模方法(信号注入、数据记录);3)两种扫频方式(逐频正弦/Chirp扫频)的实现;4)MATLAB数据处理(FFT分析、传递函数拟合);5)线性分析工具使用技巧。重点强调了激励信号幅值控制、稳态数据采集及模型验证方法,并提供完整MATLAB脚本示例。该流程可有效获取系统频域特性,为控制器设计提供可靠依据。

Sumerking的博客 234

MobaXterm简介和使用(服务器连接工具)

MobaXterm 是一个功能强大的远程计算工具,集成了许多常用的远程计算功能,包括 SSH、X11、RDP、VNC、FTP、SFTP 等。

清平乐的技术专栏 1963

【开发工具】【lsusb】查询USB设备信息(lsusb)的使用

获取更多相关的嵌入式开发工具,可收藏系列博文,持续更新中:【开发工具】嵌入式常用开发工具汇总帖 本文主要介绍查询USB设备信息(lsusb)的使用。 写这些文章的主要目的是给自己看的,想法是把目前网上能收集到的相关信息都汇总起来,方面有需要的时候能迅速上手。 后续会把命令输出的打印,每一行都介绍一些(需要些时间,用到的时候再弄) lsusb命令的作用 显示本机的USB设备列表信息。 在手册上lsusb定义成:显示系统中以及连接到系统的USB总线信息的工具。 lsusb命令 用于显示本.

诸葛一帆丶的博客 4780

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

Linux下的lsusb命令详解

lsusb命令详解 参考: 1、https://zhuanlan.zhihu.com/p/142403866 2、https://blog.youkuaiyun.com/phmatthaus/article/details/124198879 简介 ​USB,是英文Universal Serial Bus(通用串行总线)的缩写,是一个外部总线标准,早期用于规范电脑与外部设备的连接和通讯。 ​ USB连接自从首次推出到现在已经有23年,这种技术在全球电子行业中的扩展速度前所未有。USB现在已经拥有超过30亿端口的年出货量

qq_40700822的博客 3454

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

Linux 串口 dmesg lsusb

dmesg是Linux系统中一个非常实用的命令,主要作用是查看内核环形缓冲区()中的信息,这些信息记录了内核启动过程以及系统运行中硬件设备的初始化、事件和错误信息。在你调试串口设备的场景中,dmesg的核心价值是:当USB串口设备(如你的Corecloud设备)插入时,内核会自动记录设备识别过程、分配的设备节点(如ttyACM0)等信息,通过dmesg可以快速找到这些关键日志,从而确定设备对应的串口路径。

这是博客描述 652

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

上一篇: 关于lsusb命令一些问题的解决
下一篇: 【Orangepi3 LTS】自动登录设置一些方法
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

打赏作者

迷糊的鱼(。・ω・。)ノ

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

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

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

打赏作者

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

抵扣说明:

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

余额充值