El concentrador USB alimentado no carga el teléfono. ¿Opciones de núcleo?

Obtuve un concentrador USB 2.0 con alimentación (ET-UP900). Como fuente de energía estoy usando el cargador de teléfonos. Pero si conecto el concentrador con mi teléfono (SM-C115) no se carga. Si conecto el cargador directamente funciona.

Lo primero que pensé fue que el concentrador no proporciona suficiente energía. Pero si hago lo mismo con una tablet (SM-P905), que requiere más potencia, sí funciona.

También extraño: si el concentrador está alimentado, no funciona. Si el concentrador no está alimentado, funciona bien.

Como estoy usando un kernel de compilación personalizado, busco un dmesg y jugueteo con las opciones del kernel y el controlador para encontrar la configuración correcta.

Tal vez alguien me puede dar una pista de lo que podría funcionar?

Alternativa: ¿Algún cable que pueda enchufar para cargar el teléfono y usar el concentrador USB? Obtuve un cable de carga OTG pero alimentaría el concentrador USB en lugar del teléfono.

ACTUALIZACIÓN Encontré algo sobre un cable especial con una resistencia para entrar en un modo AUDIODOCK especial. Encontré este AUDIODOCK en el código fuente de un controlador relacionado que vi en dmesg drivers/misc/max77803-muic.c. Tal vez pueda cambiar el controlador para forzar este modo todo el tiempo o algo así...

ACTUALIZACIÓN 2 Vi que drivers/misc/max77803-muic.cla opción CONFIG_MUIC_MAX77803_SUPPORT_OTG_AUDIO_DOCK debe configurarse y el controlador que obtuve aquí no admite esto de todos modos. Supongo que trato de usar un controlador actualizado . Con soporte AUDIO_DOCK implementado.

Also strange: If the hub is powered it does not work. If the hub is not powered it works just fine.¿Qué quieres decir con "alimentado" aquí?
@LieRyan El concentrador USB tiene un enchufe de alimentación. Es opcional conectar el poder aquí. Este tipo de dispositivo USB se denomina LANHUB en el controlador y tiene una resistencia de 80,07 K ohmios en el pin de señal. Si puedo hacer que este controlador actualizado funcione, supongo que el problema se resolvería.

Respuestas (1)

Lo tengo funcionando. El chip max77803 en el SM-C115 también se usó en el S4, pero el controlador que tenía mi kernel no era compatible con el dispositivo ET-UP900. Así que busqué un controlador de kernel más nuevo y encontré danielpanzella/P900-kernel-source . En este controlador llaman al dispositivo LANHUB . Si echa un vistazo al código, también hay otros dispositivos. El controlador detecta según la resistencia en el pin de señal qué tipo de dispositivos están conectados.

Busqué en el repositorio LANHUB y fusioné esas líneas de código en mi kernel, construí el kernel, lo instalé con odin y ¡funcionó!

El concentrador USB, su tarjeta de red y los dispositivos USB conectados funcionan mientras obtengo energía del concentrador que carga el teléfono.

Actualizar

Algunos pasos para reproducir esto. Usé Vagrant como entorno para hacer funcionar una caja Linux limpia. Descargue el NDK y el código fuente del kernel y configure un compilador cruzado; vea cualquier tutorial del kernel :

sudo apt-get install -y build-essential kernel-package libncurses5-dev bzip2
export CROSS_COMPILE=/home/vagrant/android/ndk/android-ndk-r10b/toolchains/arm-linux-androideabi-4.8/prebuilt/linux-x86/bin/arm-linux-androideabi-
export ARCH=arm

A continuación, debe elegir el archivo de configuración correcto para su dispositivo:

cp arch/arm/configs/whatever .config

Edite la configuración para agregar un controlador:

make menuconfig

Para el adaptador ET-UP900, vaya a "Controladores de dispositivos" > "Compatibilidad con dispositivos de red" > "Adaptadores de red USB". Seleccione "Marco de trabajo en red USB multipropósito" y "Dispositivos Ethernet SMSC LAN95XX base USB 2.0 10/100"

Si la carga no funciona, mire "Controlador de dispositivo" > "Misc". Habilite la configuración con "SUPPORT_LANHUB" en ella.

Ahora guarde y salga de menuconfig y construya el kernel:

make bzImage

Su nuevo núcleo será arch/arm/boot/zImage. Ahora necesita empaquetar esto junto con un ramdisk (cocina del kernel de Android) en un archivo boot.img y actualizarlo en el dispositivo (Odin).

Con el nuevo kernel y el adaptador adjunto, el comando bash netcfgdebería mostrarle eth0. Ejecutar dhcpcd -k eth0para obtener una IP.

Para ver si algo no funciona, echa un vistazo a dmesg.

Hola, ¿crees que se puede hacer lo mismo para Samsung Galaxy Tab 3 10" P5200? Realmente me encantaría que este adaptador pudiera proporcionarme puertos LAN y USB.
¿Cómo hago para agregarlos a mi kernel?
Lo parece. Descargué el código fuente , descomprimí el kernel y hay un drivers\net\usb\smsc95xx.ccontrolador. Actualizo mi respuesta con algunos detalles...
@JoelDean Ok, publiqué algunos pasos que podrían ayudarte. Básicamente, solo necesita compilar un nuevo kernel y habilitar el controlador. En mi caso funcionó pero no cargó. Para cargar, necesitaba parchear el controlador de carga con una versión más nueva. eso seria dificil...
Bueno. No sé cómo modificar los núcleos. ¿Serías capaz de hacerlo por mí si te pago? Realmente necesito este adaptador para trabajar con mi tableta. Podrías pasarme un correo y hablamos por ahí.
@JoelDean En este momento no tengo tiempo para hacerlo por ti. Intente compilar el núcleo y habilite el controlador en el menú de configuración. Tal vez no necesites cambiar nada más.