Estoy tratando de hacer que un dispositivo integrado funcione como un dispositivo MTP, utilizando un controlador de dispositivo USB.
Sé que Android cambió de un dispositivo de almacenamiento masivo a un dispositivo MTP durante bastante tiempo y encontré el código fuente del controlador del dispositivo MTP en algunos repositorios de Android.
Sin embargo, en el código principal del kernel no encontré ese archivo en particular, ni equivalentes.
Pero sí encontré parches para el controlador del dispositivo MTP presentado para RFC en 2010.
Pregunta:
¿Por qué el kernel principal no acepta este parche y tampoco proporciona ninguna otra implementación del dispositivo MTP, pero el kernel de Android sí lo proporciona?
¿Se debe a una dificultad técnica u otras razones, como si hubiera una mejor manera de hacerlo?
Si quiero habilitar el dispositivo USB MTP en mis dispositivos (uno con TI OMAP3730 SoC con kernel 2.6.37 y otro con NXP/Freescale IMX6 SoC, con kernel 3.14), ¿qué versión del dispositivo MTP debo usar para backport?
¿Por qué el kernel principal no acepta este parche y tampoco proporciona ninguna otra implementación del dispositivo MTP, pero el kernel de Android sí lo proporciona?
En este hilo se mencionó que el respondedor MTP debe implementarse como un demonio de espacio de usuario, no como un dispositivo USB del kernel. Y se mencionaron algunas implementaciones.
En la PC, el iniciador MTP ya funciona a través de la implementación del espacio de usuario. En cuanto a hoy, tengo el kernel 4.3 en mi Debian y todavía carece del dispositivo MTP. Pero logré ejecutar MTP entre mi PC y mi teléfono de todos modos, usando algunas herramientas de espacio de usuario (probablemente basadas en libmtp, pero ese no es el punto).
Se sabe que el kernel de Android tiene algunas decisiones técnicas discutibles (desde el punto de vista de los principales desarrolladores del kernel), ya que Android fue un proyecto de rápido crecimiento y las cosas deberían implementarse rápidamente. Por supuesto, hubo intentos de subir la mayor cantidad de cosas que pudieron. Pero el dispositivo MTP parece ser una de esas cosas que ni siquiera pudieron llegar a drivers/staging . Probablemente todos estén de acuerdo en que MTP debe implementarse en el espacio del usuario.
Si quiero habilitar el dispositivo USB MTP en mis dispositivos (uno con TI OMAP3730 SoC con kernel 2.6.37 y otro con NXP/Freescale IMX6 SoC, con kernel 3.14), ¿qué versión del dispositivo MTP debo usar para backport?
Si realmente necesita esto en el kernel (probablemente solo sea necesario para Android), debe buscar versiones del kernel de Android lo más cercanas posible a la suya. No importa qué SoC esté utilizando, la implementación de MTP es común para todas las plataformas, así que solo busque la versión del kernel.
Por ejemplo, eche un vistazo a estos repositorios: