主线 Linux 内核中的 USB MTP 小工具驱动程序发生了什么变化?

What happened to USB MTP gadget driver in mainline Linux kernel?

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

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

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

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

问题:

为什么主线内核不接受这个补丁,也不提供任何其他 MTP 小工具的实现,但是 Android 内核提供它?

这是技术难度还是其他原因,有没有更好的方法?

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

Why mainline kernel does not accept this patch, and doesn't provide any other implementation of MTP gadget, either, but Android kernel provides it?

this 线程中提到 MTP 响应程序应作为用户 space 守护程序实现,而不是作为内核 USB 小工具。并提到了一些实现。

在 PC 上,MTP 启动器已经通过用户 space 实现工作。至于今天,我的 Debian 上有内核 4.3,但它仍然缺少 MTP 小工具。但是我设法 运行 我的 PC 和我的 phone 之间的 MTP 无论如何,使用一些用户-space 工具(可能基于 libmtp,但这不是重点)。

众所周知,

Android 内核有一些有争议的技术决策(从主线内核开发人员的角度来看),因为 Android 是一个快速发展的项目,应该快速实施。当然,有人尝试将尽可能多的东西上游。但是 MTP 小工具似乎是那些甚至无法达到 drivers/staging 的东西之一。大概大家都同意MTP必须在user-space.

中实现

If I want to enable USB MTP gadget on my devices(one with TI OMAP3730 SoC running 2.6.37 kernel and another with NXP/Freescale IMX6 SoC, running 3.14 kernel), which version of the MTP gadget shall I use for backport?

如果您确实需要在内核中使用它(可能只有 Android 需要),您应该寻找尽可能接近您的 Android 内核版本。无论您使用的是哪个 SoC,MTP 实现对于所有平台都是通用的,因此只需查找内核版本即可。

例如,看看这些存储库: