前言
在Linux中要通过命令实现USB设备的enable和disable,类似于在Windows设备管理器中禁用再启动设备一样,在某些场景,如调试USB固件时,重新加载了固件时,又不希望物理上插拔设备时,可以采用绑定和解绑这种方式。具体实现如下。
查看USB端口的信息
通过lsusb -t命令来查看当前系统中的USB设备的列表的信息,示例如下:
root@ferris-pc# lsusb -t
/: Bus 02.Port 1: Dev 1, Class=root_hub, Driver=ehci-pci/3p, 480M
|__ Port 1: Dev 2, If 0, Class=hub, Driver=hub/8p, 480M
|__ Port 6: Dev 78, If 0, Class=vend., Driver=, 480M
|__ Port 6: Dev 78, If 1, Class=vend., Driver=usbfs, 480M
|__ Port 6: Dev 78, If 2, Class=comm., Driver=cdc_acm, 480M
|__ Port 6: Dev 78, If 3, Class=data, Driver=cdc_acm, 480M
|__ Port 6: Dev 78, If 4, Class=comm., Driver=cdc_acm, 480M
|__ Port 6: Dev 78, If 5, Class=data, Driver=cdc_acm, 480M
|__ Port 6: Dev 78, If 6, Class=comm., Driver=cdc_acm, 480M
|__ Port 6: Dev 78, If 7, Class=data, Driver=cdc_acm, 480M
/: Bus 01.Port 1: Dev 1, Class=root_hub, Driver=ehci-pci/3p, 480M
|__ Port 1: Dev 2, If 0, Class=hub, Driver=hub/6p, 480M
|__ Port 1: Dev 6, If 0, Class=HID, Driver=usbhid, 1.5M
|__ Port 1: Dev 6, If 1, Class=HID, Driver=usbhid, 1.5M
|__ Port 3: Dev 9, If 0, Class=HID, Driver=usbhid, 1.5M
如果不确定要控制的USB是哪一个,可以通过手动插拔一下该设备,每个USB硬件端口,port号都是固定的。比如,这里,我们要操作USB 02的port1下的port6上的设备。
执行unbind USB设备的命令
unbind相当于disable,通过以下命令来实现:
echo 2-1.6 | sudo tee /sys/bus/usb/drivers/usb/unbind
这里用不用tee命令都可以,也可以直接重定向。 需要注意的是, echo后面的字符串:“busnum−port1_num”.“$port2_num”,以这样的格式。
重新bind USB设备的命令
bind相当于enable,只需要吧上面的命令中的unbind改为bind执行即可。
echo 2-1.6 | sudo tee /sys/bus/usb/drivers/usb/bind
以上就是在Linux中对USB设备进行类似于disable和enable的操作,是不是很简单?
1
为您推荐
很多人经常会问我这样一个问题:“嘿,你是用Linux的,对吧?我应该使用Linux的哪个版本?我有这个朋友推荐我_____,你觉得怎么样?”我通常会以这样的问题回复:这取决于你想做什么?今天我决定写一篇关于如何选择L..
在 Visual Studio(VS) 中,使用 Docker 方式部署 .NET Core 项目 到 Linux 服务器,可以简化环境管理并提高部署效率。以下是完整教程:1. 在 VS 创建 .NET Core 项目并启用 Docker新建 ASP.NET Core 项目打开 Visu..
不论是在外出差,还是在家临时办公,现在很多设备携带起来都不是那么方便,在这种情况下,有一个轻巧而高效的操作系统环境就显得格外关键。今天,要给大家介绍一款超级实用的便携式系统启动盘,凭借其独特功能和卓越..
在网页设计和开发中,CLS(Cumulative Layout Shift)是指页面布局的累计偏移量。当一个用户与页面互动时,如果页面的某些元素突然改变位置或大小,导致整个布局发生偏移,就会产生布局偏移。这种偏移可能会影响用户..
很多朋友编写Windows服务的时候都会觉得调试很麻烦,甚至不知道怎么调试。有些人可能添加个windows窗体用按键触发相关方法或者靠打印日志调试,那么到底windows服务怎么调试呢? 怎么编写代码就不说了。就说调试吧,..
在与一个第三方接口对接时,发现对方无法用GZip解压我发过去的数据,看了对方PHP的示例代码,发现对方使用的是PHP的$file = iconv("IOS-8859-1","UTF-8",gzencode($data_json));大致意思是要先压缩,在把压缩的数组..
在VS2022中可以使用MiniAPI。 使用MiniAPI以创建具有最小依赖项的 HTTP API。 它们非常适合于需要在 ASP.NET Core 中仅包括最少文件、功能和依赖项的微服务和应用。MiniAPI创建方法启动 Visual Studio 2022 并选择“..
很多网站需要通过手机验证码才能注册成功,例如最近大火的ChatGPT的官网OpenAI只能使用国外手机号注册。这里推荐几个可以接收国外手机验证码的平台。sms-activatehttps://sms-activate.org/cn站点推荐:ChatGPT手机..
在自然语言处理领域,有一些可以替代ChatGPT的工具和框架,以下是一些比较流行的:Transformer-XL:Transformer-XL是由CMU和Google共同开发的自然语言处理模型,具有较好的上下文理解能力和处理长文本的能力。该模型..
DataGridView的常见应用DataGridView是.NET框架中用于显示、编辑和操作数据表格的控件。它提供了一个灵活的方式来显示和操作大量的数据。以下是对DataGridView的一些常见应用和实现的总结:数据显示:DataGridView可..
Windows下Unable to find local grunt解决办法Windows下要grunt某个目录,可以进入到这个目录下,在资源管理器地址栏里输入cmd,然后输入grunt命令。如果输入grunt显示下列错误表示该目录还没有安装。输入npm instal..
RabbitMQ是一个由erlang开发的AMQP(Advanved Message Queue)的开源实现,是实现消息队列应用的一个中间件,消息队列中间件是分布式系统中重要的组件,主要解决应用耦合,异步消息,流量削锋等问题。实现高性能,高可..
本文分享五个前端开源项目,这些项目把 Windows 带到了 Web 平台上。让我们一起感受这些项目带来的回忆和创新,重温 Windows 93、98、XP 和 7 的经典界面,甚至探索现代概念中的 Windows 11 和 12!Windows 12使用 J..
.NET Core 可以通过以下方法判断发起请求的设备:使用 HttpRequest.UserAgent 属性HttpRequest.UserAgent 属性可以获取发起请求的用户代理字符串。用户代理字符串包含有关发起请求的设备的信息,例如设备类型、操作..
写shell脚本时,免不了需要截图字符串,这里有几种截取字符串的方法供参考。假设shell中有字符串变量:str=aabbccddeeffaabbccddeeff1. 符号“#“截取,删除指定字符串最左边一次匹配位置左边的字符串,保留右边字符..
我们在写shell脚本时,有时候需要根据某个命令是否存在来决定是否执行某些操作,可以有两种方法来判断命令是否存在,参考代码如下:判断linux命令是否存在,方法1:#!/bin/bashif which mycmd /dev/null 21; thenech..
Docker、Wine、Qemu和KVM都是在Linux上运行Windows程序的工具,但它们的实现方式和使用场景有所不同。Docker是一个容器化技术,它可以在Linux系统中创建和运行容器,这些容器可以包含Windows程序和其所需的依赖项。D..
Windows中如何通过BAT命令写注册表,如何个exe程序增加管理员运行权限?以下脚本演示了通过BAT写注册表键值的方式,给exe增加管理员权限运行的属性。bat命令文件内容如下:@echo offecho start reg...set df=%~dp0te..
Docker可以为多个容器端口绑定不同的主机端口,要为多个站点绑定不同域名访问的话可以使用Nginx反向代理。首先在域名管理器中设置 DNS 记录,将域名指向服务器的 IP 地址。然后通过Nginx反向代理实现Docker容器的多..
编译一个Qt项目报错:Qt error: 找不到 -lGL这是因为 Qt编译器找不到 OpenGL 的动态链接库(libGL.so)。 在大部分 Linux 发行版中都是默认安装OpenGL,包括 Ubuntu、CentOS 等,找不到该链接库一般都是路径不对,如..