I had been trying to get USB working with 3.17 and 3.18-rc kernels on my Odroid U3 for some time, and had been looking for fixes in the source code.
It turned out that I was looking in the wrong place – and a clue to this was the lack of any mention of the problem on the Linux Kernel Mailing List..
It seems that the ‘original’ version of U-Boot on the Odroid U3 was the culprit, and updating this to a newer version fixed the problem:
# uname -a
Linux localhost 3.18.0-rc3 #3 SMP PREEMPT Sat Nov 8 01:03:47 EST 2014 armv7l armv7l armv7l GNU/Linux
Bus 001 Device 003: ID 0424:3503 Standard Microsystems Corp.
Bus 001 Device 002: ID 0424:9730 Standard Microsystems Corp.
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
And – this means that networking works as well, as this is connected via the USB bus:
# ifup eth0
IPv6: ADDRCONF(NETDEV_UP): eth0: link is not ready
IPv6: ADDRCONF(NETDEV_CHANGE): eth0: link becomes ready
smsc95xx 1-2:1.0 eth0: link up, 100Mbps, full-duplex, lpa 0xCDE1
I found the ‘new’ U-Boot at: https://github.com/tobiasjakobi/u-boot
Full instructions can be found in the u-boot/doc/README.odroid file.. This newer U-Boot (u-boot-dtb.bin) also has support for loading both zImage and xxx.dtb files at boot time..
The examples above were using the kernel.org version of 3.18-rc3, but this did not boot cleanly, and fell back to an emergency shell.. I will probably go back to -rc2 for the time being, as I did manage to get this version to boot OK.. It should be mentioned that none of these should be considered as ‘stable’, and boot results – on my system – were not always consistent..
Thanks are due to tobiasjakobi and prahal for all the work they have put in with the Odroid and newer kernels..
Robert Gadsdon. November 8, 2014.