我尝试使用USB小工具驱动程序使嵌入式设备作为MTP设备工作。
我知道Android已经从大容量存储小工具切换到MTP小工具已经有一段时间了,并且在一些Android存储库中找到了source code for MTP gadget driver。
然而在mainline kernel code中,我没有找到该特定文件,也没有找到相应文件。
但我确实在2010年为RFC提交了patches for MTP gadget driver。
问题:
为什么主线内核不接受这个补丁,也没有提供MTP小工具的任何其他实现,但Android内核提供它?
这是因为技术难度或其他原因,比如有更好的方法吗?
如果我想在我的设备上启用USB MTP小工具(TI OMAP3730 SoC运行2.6.37内核,另一个运行NXP / Freescale IMX6 SoC,运行3.14内核),我将使用哪个版本的MTP小工具用于后端?
答案 0 :(得分:2)
为什么主线内核不接受这个补丁,也没有提供MTP小工具的任何其他实现,但Android内核提供它?
在this线程中提到MTP响应器应该实现为用户空间守护进程,而不是内核USB小工具。并且提到了一些实现。
在PC上,MTP启动器已经通过用户空间实现工作。至于今天我在我的Debian上有内核4.3,它仍然没有MTP小工具。但无论如何,我设法在我的电脑和手机之间运行MTP,使用一些用户空间工具(可能基于libmtp,但它不是重点)。
已知Android内核有一些有争议的技术决策(从主线内核开发人员的角度来看),因为Android是快速发展的项目,而且事情应该快速实施。当然,尽可能多的尝试上游。但MTP小工具似乎是那些甚至无法实现drivers/staging
的东西之一。可能每个人都同意MTP必须在用户空间中实现。
如果我想在我的设备上启用USB MTP小工具(TI OMAP3730 SoC运行2.6.37内核,另一个运行NXP / Freescale IMX6 SoC,运行3.14内核),我将使用哪个版本的MTP小工具用于后端?
如果你真的需要在内核中使用它(可能只需要Android),你应该尽可能地找到你自己的Android内核版本。使用哪个SoC并不重要,MTP实现对所有平台都很常见,所以只需查看内核版本。
例如,看看这些回购: