我正在尝试使用USB小工具驱动程序将嵌入式设备用作MTP设备。

我知道Android已从大容量存储小工具切换到MTP小工具已经有一段时间了,并且在一些Android存储库中找到了source code for MTP gadget driver

但是,在mainline kernel code中我没有找到该特定文件,也没有找到等效文件。

但是我确实发现2010年为RFC提交了patches for MTP gadget driver

问题:

为什么Mainline内核不接受此补丁,并且也不提供MTP小工具的任何其他实现,而Android内核提供了该补丁?

是因为技术上的困难或其他原因,例如有更好的方法吗?

如果我想在我的设备上启用USB MTP小工具(一个是运行2.6.37内核的TI OMAP3730 SoC,另一个是运行3.14内核的NXP/Freescale IMX6 SoC),那么我应该使用哪个版本的MTP小工具进行反向移植?

最佳答案


this线程中提到,MTP响应器应作为用户空间守护程序而不是内核USB小工具来实现。并提到了一些实现。
在PC上,MTP启动器已经通过用户空间实现工作。就今天而言,我在Debian上安装了内核4.3,但仍然缺少MTP小工具。但是我还是设法使用一些用户空间工具(可能基于libmtp,但不是重点)在PC和手机之间运行MTP。
从主线内核开发人员的 Angular 来看,Android内核具有一些争议性的技术决策,因为Android是一个快速发展的项目,应该快速实现。当然,已经尝试了尽可能多的上游工作。但是MTP小工具似乎是甚至无法成为drivers/staging的那些东西之一。可能每个人都同意必须在用户空间中实现MTP。

如果您确实在内核中需要此功能(可能仅在Android中需要),则应查找与您所能找到的最接近的Android内核版本。不管使用哪个SoC,MTP实现对于所有平台都是通用的,因此只需查找内核版本即可。
例如,看一下这些存储库:

  • k2.6.38 at omapzoom.org
  • k2.6.39 at android.googlesource.com
  • k3.14 at android.googlesource.com
  • 07-27 16:52