Come sapete, il Nexus 4 non supporta l'USB OTG, il che significa che non è possibile utilizzarlo con unità USB, gamepad, ecc. Il primo motivo è che il dispositivo non sembra fornire i 5V necessari, l'altro motivo è che non è supportato dal kernel.
Così, un utente di XDA (CaptainMuon) ci ha smanettato un po', e ora può vantare un successo parziale! E' possibile fornire i 5V, e quindi attivare la modalità USB host manualmente. E' un po' ingombrante, ma siamo solo l'inizio, meglio di niente. Ho provato un mouse e unità USB.
Vi avverto che questo è solo una prova, un test e non è al momento consigliato per un utilizzo giornaliero. Regular USB non funziona correttamente durante l'esecuzione di questo kernel, e non ho controllato il consumo della batteria. E' basato su Android 4.2.1, e se avete 4.2.2 potreste non essere in grado di effettuare chiamate. Non sono responsabile se brickate o fate saltare in aria il telefono.
Di cosa avete bisogno:
- Un cavo USB OTG.
- Un cavo USB Y (Esso ha un cavo USB-A con una normale spina e l'altro USB-A per la presa di corrente) come questo in foto :Spoiler:
- Il Kernel Modificato
- Bootloader sbloccato
- Android developer tools (adb, fastboot)
Caricate il file immagine boot sul telefono (non è permanente) tramite il comando :
Collegare tutto come segue (dovrebbe essere ovvio):codice:$ fastboot boot myboot.img
- Il cavo Y di alimentazione al PC o un adattatore
- L'altra estremità del cavo Y nel cavo OTG
- Cavo OTG nel telefono
- Dispositivo USB nella presa femmina del cavo Y
Avete bisogno di una shell remota sul dispositivo, Usate adbWireless o simili per usare ADB over WiFi, quindi:
Ora dal cellulare :$ adb connect 192.168.0.108:5555
(o qualunque sia l'ip del vostro telefono)
$ adb shell
E dovreste vedere "mode" se il vostro nuovo kernel funziona. Quindi diventate superuser e abilitate l'USB OTG:shell@android:/ $ ls /sys/kernel/debug/msm_otg/
Per disattivare la modalità USB host, utilizzare "none" o "peripheral". Si noti che, a questo punto, non ho potuto farlo andare in normale modalità USB. Ciò significa che MTP e ADB via USB non funziona ancora.shell@android:/ $ su
root@android:/ $ echo host > /sys/kernel/debug/msm_otg/mode
Collegare un dispositivo, e dovreste vedere più di due ingressi in "lsusb". In questo caso, congratulazioni! Il nexus ha riconosciuto la periferica USB!
Se si installa Stickmount, è possibile montare unità flash USB. Nexus Media Importer non sembra funzionare, però.
Come funziona?
In sostanza, ha solo aggiunto la seguente riga all'inizio del msm_otg_debugfs_init in msm_otg.c:
Qui un video che mostra il funzionamento di un mouse collegato al Nexus.motg->pdata->otg_control = OTG_USER_CONTROL;
Thread Originale XDA