问题描述:
-
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;