Converting USB 2.0 OTG SoCs to USB Type-C
While existing Device, Host, and DRD devices can be converted to support the USB Type-C connection with some effort, it is not practical to convert existing OTG SoCs. OTG requires a new state machine using the configuration channel to support USB Type-C. Host Negotiation Protocol is used to swap host and device role for OTG, while Power Delivery communication is used to change roles for USB Type-C. Combined, these challenges preclude simple upgrades of OTC SoCs to USB Type-C. - See more at: https://www.synopsys.com/Company/Pu...esign-type-c-2015q1.aspx#sthash.Ri02Guwe.dpuf
After a bit of hacking around I was able to enable usb otg on my N1!
I've had a look at kernel sources for device with similar SoC (Nexus Player) and saw an interesting debugfs entry. To my surprise it worked like a charm and immediately detected the attached usb hub with a thumb drive, it even powered the hub so I didn't have to use an external power source!
To enable host mode, the following command has to be enterted in root console:
echo A > /sys/kernel/debug/usb/dwc3_debugfs_root/otg_id
Caveats (will try to find a way to resolve them):
- after enabling host mode N1, won't charge from the usb port - a reboot is required to enable the charging again
- probably same is true for pheripherial mode (connecting n1 to a pc). In theory, changing a to b in the above echo command should bring the tablet back to normal mode but for some reason it won't charge without a reboot so I'm assuming that same is true for non otg usb connectivity. Will have a look at the sources and debug messages to find out what's going on
Thanks for your hard job.
I have tried on my N1. It is amazing that otg did work. However, the otg can not coexist with charging function as yours. Hope someone could find a solution.
Hey,
Are you on Android 5.1.1 or 5.0 ?
I've had a look at the code of the usb driver of the a phone with similar chipset (asus zenfone 5) and it seems that the source of the problem is that the tablet fails to detect an appropriate charger type, which could mean either that the otg cable does not support this or the code of the driver does not work properly with usb C. Was wondering if something changed around this after the update?