wii-linux-ngx
wii-linux-ngx copied to clipboard
USB/hubs not working properly
Sometimes the USB keyboard gets never detected if I plug it in after the kernel boots.
The workaround is to boot with the keyboard plugged-in, then everything works fine
The kernel messages that document this problem are:
[ 50.798734] usb 2-1.2: unable to read config index 0 descriptor/start: -61
[ 50.799307] usb 2-1.2: can't read configurations, error -61
[ 50.872739] usb 2-1.2: new low-speed USB device number 10 using ohci-hlwd
[ 50.899781] usb 2-1.2: device descriptor read/8, error -61
[ 51.028733] usb 2-1.2: device descriptor read/8, error -61
[ 51.199738] usb 2-1.2: new low-speed USB device number 11 using ohci-hlwd
[ 51.242739] usb 2-1.2: unable to read config index 0 descriptor/start: -61
[ 51.243275] usb 2-1.2: can't read configurations, error -61
[ 51.244742] hub 2-1:1.0: unable to enumerate USB device on port 2
[ 59.622371] usb 2-2: new low-speed USB device number 12 using ohci-hlwd
[ 59.837736] usb 2-2: unable to read config index 0 descriptor/start: -61
[ 59.838271] usb 2-2: can't read configurations, error -61
[ 60.002377] usb 2-2: new low-speed USB device number 13 using ohci-hlwd
[ 60.208733] usb 2-2: unable to read config index 0 descriptor/start: -61
[ 60.209300] usb 2-2: can't read configurations, error -61
[ 60.369042] usb 2-2: new low-speed USB device number 14 using ohci-hlwd
[ 60.408734] usb 2-2: device descriptor read/all, error -61
[ 60.569045] usb 2-2: new low-speed USB device number 15 using ohci-hlwd
[ 60.608734] usb 2-2: device descriptor read/all, error -61
[ 60.609783] hub 2-0:1.0: unable to enumerate USB device on port 2
It has to be verified if this is a regression from v2.6 kernels; v3.14.x and v3.15.x both have this issue.
Cc @DeltaResero that also experienced this issue.
I verified that with v2.6.32 you can plugin USB devices later on (keyboard, mass storage) without issues
@neagix
You have different settings on the Wii-Linux Kernel variables (defconfig files) within this repo...
"CONFIG_SLAB=y" "# CONFIG_SLOB is not set" "# CONFIG_SLUB is not set"
Setting these in the defconfig files as shown above makes USB work properly ALL the time.
BTW:
The problem with the Gamecube SI driver crashing with a plugged in controller while booting Linux on the Wii is, because the updated version of the driver itself doesn't allocate memory to the controller struct "input_dev" sub-member "absinfo".
Have a look at the function "si_setup_pad":
"absinfo" members of the "idev" variable are tried to be set BEFORE the call to the function "input_set_abs_params" is being made.
The function "input_set_abs_params" itself allocates the memory for "absinfo" but RETURNS if it fails with that. So trying to set variables of "absinfo" while there is no memory allocated, fails horribly...