Linux gadget USB 弹出后再次插入不识别问题

2 篇文章 0 订阅
1 篇文章 0 订阅
本文探讨了在Linux USB gadget驱动中,removable参数对设备识别的影响。当removable设置为1时,设备在Windows系统下无法重复识别为U盘,而在Linux下没有此问题。解决方法是在内核代码do_scsi_command函数中对START_STOP指令的特定处理进行注释,避免在removable=0模式下设备弹出时的问题。
摘要由CSDN通过智能技术生成

问题描述:

  • gadget驱动加载时有一传参removable,当removable=1时作为移动设备,U盘可以被windows、linux系统电脑识别;当removable=0时,windows系统下不能识别为U盘,linux下可以;

  • 当removable=1时,初次连接USB设备是可以识别为U盘的,但弹出后再连接就不能识别了,只能看到一个空盘符;

  • removable=0时在linux系统下不存在这个问题。

解决办法

  • 在内核 drivers/usb/gadget/f_mass_storage.c 文件 do_scsi_command 函数中的 START_STOP 指令附近注释掉以下两行;

  • 在removable=0模式下弹出设备时也会进入该指令,但并不执行注释掉的两行内容。

	case START_STOP:
		common->data_size_from_cmnd = 0;
		reply = check_command(common, 6, DATA_DIR_NONE,
				      (1<<1) | (1<<4), 0,
				      "START-STOP UNIT");
		// if (reply == 0)
		// 	reply = do_start_stop(common);
		break;
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值