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

use*_*438 5 linux android linux-kernel mtp

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

我知道Android从大容量存储设备切换到MTP设备已经有一段时间了,并且在一些Android存储库中找到了MTP设备驱动程序的源代码。

然而,在主线内核代码中,我没有找到该特定文件,也没有找到等效文件。

但我确实找到了2010 年提交给 RFC 的MTP 小工具驱动程序的补丁。

问题:

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

这是因为技术困难还是其他原因,比如有更好的方法?

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

Sam*_*nko 3

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

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

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

众所周知,Android 内核有一些有争议的技术决策(从主线内核开发人员的角度来看),因为 Android 是一个快速发展的项目,应该快速实现。当然,我们也尝试了尽可能多的上游内容。但 MTP 小工具似乎是那些甚至无法实现的东西之一drivers/staging。可能每个人都同意 MTP 必须在用户空间中实现。

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

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

例如,看看这些存储库: