neagix / wii-linux-ngx

Modern Linux for Wii/GameCube
https://neagix.github.io/wii-linux-ngx/
134 stars 8 forks source link

USB/hubs not working properly #13

Open neagix opened 7 years ago

neagix commented 7 years ago

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.

neagix commented 7 years ago

I verified that with v2.6.32 you can plugin USB devices later on (keyboard, mass storage) without issues

derek57 commented 4 years ago

@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...