Linux 内核源码:include\linux\usb.h Linux 内核源码:drivers\hid\usbhid\usbmouse.c 1....BUS/DEV/DRV 模型 "USB 接口"是逻辑上的 USB 设备,编写的 usb_driver 驱动程序,支持的是"USB 接口": USB 控制器或 Hub 识别出 USB 设备后,会创建、...左边的 usb_driver 和右边的 usb_interface 如果匹配,则调用 usb_driver.probe 2....接口函数 在 USB 设备驱动程序中,能使用的 USB 函数都在这个头文件里:include\linux\usb.h。...2.1 pipe 使用这些接口函数的主要目的是传输数据,传输数据的对象是 USB 设备里的某个 endpoint,这被称为 pipe: /* Create various pipes... */ #define
显示的USB设备的名称 步骤3:通过以下命令为USB设备创建挂载点: 句法: $ sudo mkdir /media/[mountPointName]...例: $ sudo mkdir /media/USB 为USB设备创建挂载点 现在将创建挂载点。...Step4:现在我们将USB存储设备安装到我们创建的安装点。...,如果它不是我使用的'USB'挂载点,请指定挂载点。...您的USB将从您的系统中卸载: USB驱动器成功取消 步骤2:如果您以后不打算重复使用,则需要手动删除USB挂载点目录: 删除挂载点目录
通过扫描以下目录获取物理节点所有 USB 设备: /sys/bus/usb/devices/usb* /sys/bus/usb/devices/usb*/$busnum-* 从该文件系统收集某一个设备的主要信息如下...(该总线的第几台设备) speed: 速率 bDeviceClass: 设备类型 idVendor: 设备的生产商ID,由USB设备生产商向USB-IF官方来统一管理和申请 idProduct: 该生产商生产的产品编号...# 定位某一个 USB 设备的方法有两种: busnum + devnum idVendor + idProduct 设备类型bDeviceClass# 类代码 用法 描述 00h 设备描述符 Use...参考文献# USB设备类bDeviceClass、bDeviceSubClass、bDeviceProtocol By USB 中文网 USB设备描述符中的idVendor、idProduct和bcdDevice...By USB 中文网 USB 硬件设备的序列号 By IBM 注:本作品采用 知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议 进行许可。
---- 参考来源:慕课网《Linux 达人养成记 I》
file space path = /media read only = no public = yes 重启samba服务 /etc/init.d/samba restart USB...自动挂载 挂载好麻烦,自动脚本来帮忙,使用的技术叫做udev。...%E{dir_name}", RUN+="/bin/rmdir /media/%E{dir_name}" LABEL="media_by_label_auto_mount_end" 参考 树莓派自动挂载...usb移动存储设备
Linux3.11版本引入了基于configfs的usb gadget configfs。.../bin/bash function start_uac2() { # usb_gadget依赖于libcomposite模块 modprobe libcomposite # 挂载config文件系统...初始化复合设备数据结构usb_composite_dev,设置USB设备描述符。...(gadget_strings, gadget_info); [include/linux/usb/gadget_configfs.h] #define USB_CONFIG_STRINGS_LANG(...USB设备复合设备的工作过程。
比如我们要将/dev/sdb1挂载到/mnt/data目录。...在命令行中我们首先创建该目录,然后执行挂载: mkdir -p /mnt/data mount /dev/sdb1 /mnt/data 如果要卸载,执行: unmount /dev/sdb1 /mnt/...data 那如何实现开机自动挂载呢?...我们编辑/etc/fstab文件 vim + /etc/fstab 然后添加如下内容 /dev/sdb1 /mnt/immoc ext3 defaults 0 0 第一个是外部设备...,第二个是挂载点,第三个是分区类型,第四个是defaults,然后是两个0。
为了消除这种可能性,机构会限制和监测访问互联网,同时禁用 USB 存储设备。 在本教程中,我们将讨论三种不同的方法来禁用 Linux 机器上的 USB 存储设备。...方法 2:删除 USB 驱动 这种方法要求我们将 USB 存储的驱动程序(usb_storage.ko)删掉或者移走,从而达到无法再访问 USB 存储设备的目的。...方法 3:将 USB 存储器纳入黑名单 我们也可以通过 /etc/modprobe.d/blacklist.conf 文件将 usb-storage 纳入黑名单。...usb-storage 保存文件并退出。...usb-storage 就在就会被系统阻止加载,但这种方法有一个很大的缺点,即任何特权用户都可以通过执行以下命令来加载 usb-storage 模块, $ sudo modprobe usb-storage
检查当前 USB 设备状态首先,我们需要检查当前系统的 USB 设备状态。...常见的 USB 设备问题及解决方案2.1 USB 设备未被识别问题:USB 设备插入后未被系统识别。解决方案:检查 USB 端口和设备连接,确保驱动已安装。...示例:检查驱动是否已安装:lsmod | grep usb 如果未安装相关驱动,可以尝试安装:sudo apt-get update sudo apt-get install linux-firmware2.2...install linux-generic2.3 USB 设备权限问题问题:USB 设备权限设置不正确,导致用户无法访问。...3.1 使用 lsblk安装 lsblk:sudo apt-get install util-linux使用 lsblk 查看 USB 设备:lsblk3.2 使用 fdisk安装 fdisk:sudo
当USB设备插上主机时,主机就通过一系列的动作来对设备进行枚举配置(配置是属于枚举的一个态,态表示暂时的状态),这些态如下: 1、接入态(Attached):设备接入主机后,主机通过检测信号线上的电平变化来发现设备的接入...; 2、供电态(Powered):就是给设备供电,分为设备接入时的默认供电值,配置阶段后的供电值(按数据中要求的最大值,可通过编程设置); 3、缺省态(Default):USB在被配置之前,通过缺省地址...0与主机进行通信; 4、地址态(Address):经过了配置,USB设备被复位后,就可以按主机分配给它的唯一地址来与主机通信,这种状态就是地址态; 5、配置态(Configured):通过各种标准的USB...请求命令来获取设备的各种信息,并对设备的某此信息进行改变或设置; 6、挂起态(Suspended):USB总线处于空闲状态的话,该设备就要自动进入挂起状态,在进入挂起状态后,总的电流功耗不超过280UA...是 是 __ __ __ __ __ __ 是 设备在至少3毫秒以内探测不到总线活动,自动进如挂起.设备功能不可用. 下图为设备状态转化图:
2.音频复合设备驱动 从前面的分析中可以看出,复合设备驱动围绕usb_composite_driver和usb_composite_dev两个数据结构展开,legacy方式的复合设备驱动也不例外。...(audio_driver); // 注册audio_driver [include/linux/usb/composite.h] #define module_usb_composite_driver...[include/linux/device.h] #define module_driver(__driver, __register, __unregister, ...) \ static int...USB gadget configfs根据名称查找USB设备控制器,而legacy方式只匹配第一个USB设备控制器,无法匹配指定的USB设备控制器。...若要使用音频设备,则只能通过g_audio驱动构造复合设备,若使用USB虚拟网卡,则只能通过g_ether驱动构造复合设备,若需要多个功能的USB设备,则需要重新构造复合设备,编码定义usb_composite_driver
【Esxi】添加USB硬盘盒 开启SSH 首先Esxi开启SSH 挂载USB硬盘 在没有插入USB硬盘前的操作 /etc/init.d/usbarbitrator stop chkconfig usbarbitrator...off 接入硬盘后查看是否识别 esxcli storage core device list | grep -i usb 查看USB硬盘信息,如下图,第一行就是,每个人的信息都不会一样的 格式化USB...\:T0\:L0 gpt "1 2048 7814032064 AA31E02A400F11DB9590000C2911D1B8 0" 切换成vmfs5 vmkfstools -C vmfs5 -S USB_Datastore.../dev/disks/mpx.vmhba33\:C0\:T0\:L0:1 完成 回到esxi存储看,成功添加了一块USB硬盘 注:如果之后usb硬盘有换到别的usb口,esxi可能会一下无法识别到硬盘
最近 VMware 莫名其妙的卡,开机一会就开始卡死了,找了好多办法也不行,暂时先换 VirtualBox,已安装但在使用网银 U 盾等 USB 设备时,无法识别 USB 设备。
一般情况下直接mount 设备路径 目录路径,就可以了。...umount 设备名,就可以卸载这个设备了 使用lsblk -f可以查看挂载的设备,以及这些设备的文件系统。...,如果所被挂载的目录有文件数据,那么挂载完以后原来的数据就不见了,进入这个目录会进入我的移动硬盘,当卸载掉以后原来的文件又出现了。...挂载的时候那个目录必须存在,不存在会报错。...,如果没有它系统肯定启动不起来,它把我安装linux系统的分区挂载到根目录/ ├─sda5 ext4 e297ae56-7c17-48ea-aac5-f26c1e5cad84 /
2.Gadget Function驱动 Linux内核的USB Gadget Function驱动都在drivers/usb/gadget/function/目录下,有通讯设备类(Communication...[include/linux/usb/composite.h] struct usb_function_driver { const char *name; struct module...[include/linux/usb/composite.h] #define DECLARE_USB_FUNCTION_INIT(_name, _inst_alloc, _func_alloc) \...(__usb_composite_driver, usb_composite_probe, \ usb_composite_unregister) [include/linux/device.h...Linux 3.11版本引入了USB Gadget Configfs。在用户层可以通过暴漏出来的API定义USB Gadget设备的任意功能和配置,极大的方便了USB复合设备的配置和使用。
一、USB设备状态 在USB 2.0协议中第 9.1 USB Device States 章节规定了USB设备的6种状态,包括: Attached/Powered/Default/Address/Configured...在 Linux Kernel ch9.h 文件中用 enum usb_device_state 来标记这几种状态。...// /include/uapi/linux/usb/ch9.h enum usb_device_state { /* NOTATTACHED isn't in the...其中struct usb_gadget是用来标记一个USB设备的信息。此时USB设备的状态就可以确定了。...比如说在USB设备的枚举阶段,在composite_setup()函数中USB设备接收到了USB Host发过来的USB_REQ_SET_CONFIGURATION命令后调用set_config()设置相应的配置
挂载 指的就是将设备文件中的顶级目录连接到 Linux 根目录下的某一目录(最好是空目录),访问此目录就等同于访问设备文件。...因此产生的问题是,当在 Linux 系统中使用这些硬件设备时,只有将Linux本身的文件目录与硬件设备的文件目录合二为一,硬件设备才能为我们所用。合二为一的过程称为“挂载”。...总之,Linux 系统使用任何硬件设备,都必须将设备文件与已有目录文件进行挂载。...挂接移动硬盘 对linux系统而言,USB接口的移动硬盘是当作SCSI设备对待的。插入移动硬盘之前,应先用fdisk –l或more /proc/partitions查看系统的硬盘和硬盘分区情况。...#mount /dev/sdc1 /mnt/usbhd1 挂接U盘 和USB接口的移动硬盘一样对linux系统而言U盘也是当作SCSI设备对待的。使用方法和移动硬盘完全一样。
[include/linux/usb/gadget.h] int usb_add_gadget_udc(struct device *parent, struct usb_gadget *gadget)...void usb_gadget_udc_stop(struct usb_udc *udc); [include/linux/usb/gadget.h] int usb_udc_attach_driver...[include/linux/usb/gadget.h] int usb_gadget_map_request(struct usb_gadget *gadget, struct usb_request...[include/linux/usb/gadget.h] void usb_gadget_giveback_request(struct usb_ep *ep, struct usb_request *...[include/linux/usb/gadget.h] int usb_ep_set_halt(struct usb_ep *ep); int usb_ep_clear_halt(struct usb_ep
软件框架 APP 可以通过 USB 设备驱动程序访问 USB 设备,也可以绕过 USB 设备驱动,直接通过 USB 控制器驱动访问 USB 设备。...: Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub Device Descriptor: bLength...bDeviceSubClass 0 Unused bDeviceProtocol 0 Full speed (or root) hub bMaxPacketSize0 64 idVendor 0x1d6b Linux...Foundation idProduct 0x0002 2.0 root hub bcdDevice 5.04 iManufacturer 3 Linux 5.4.0-124-generic ehci_hcd...Foundation idProduct 0x0001 1.1 root hub bcdDevice 5.04 iManufacturer 3 Linux 5.4.0-124-generic uhci_hcd
一系列相互独立的端点在一起构成了USB逻辑设备,在系统结构中,位于下方红色方框内: 二、端点的分类 每个USB设备都有一个唯一的设备地址,设备地址是设备连接上主机时由主机分配的,主机主要依靠这个设备地址对...USB设备进行访问。...但是需要注意其中的一个特殊端点--端点0,每个USB设备必须要有一个端点0,其作用为对设备枚举和对设备进行一些基本的控制功能,端点0也被称为控制端点。...五、端点与管道 1、管道的概念 管道是主机软件(数据缓存区),和USB设备各各端点之间的数据传输连接,他是两者之间通信流的抽象(实际上数据传输是USB总线接口完成)。...首先,主机向USB设备发出一个请求;接着,就是数据的传送;最后,是一个状态阶段(这部分即一次命令请求的过程)。
领取专属 10元无门槛券
手把手带您无忧上云