This is to explain what is (was) my problem with configuring USB on Sony Vaio FX240.
I don't know if problems with USB on other Sony Vaio laptops are caused by the same bug, but if your logs (see /var/log/messages) are similar, maybe you can fix it in the same way.

This is log from broken USB (without patch):

   jajo kernel: usb.c: registered new driver usbdevfs
   jajo kernel: usb.c: registered new driver hub
   jajo kernel: uhci.c: USB Universal Host Controller Interface driver v1.1
   jajo kernel: PCI: Found IRQ 10 for device 00:1f.2
   jajo kernel: IRQ routing conflict for 00:1f.2, have irq 9, want irq 10
   jajo kernel: PCI: Setting latency timer of device 00:1f.2 to 64
   jajo kernel: uhci.c: USB UHCI at I/O 0x1820, IRQ 9
   jajo kernel: usb.c: new USB bus registered, assigned bus number 1
   jajo kernel: hub.c: USB hub found
   jajo kernel: hub.c: 2 ports detected
   jajo kernel: PCI: Found IRQ 9 for device 00:1f.4
   jajo kernel: PCI: Setting latency timer of device 00:1f.4 to 64
   jajo kernel: uhci.c: USB UHCI at I/O 0x2400, IRQ 9
   jajo kernel: usb.c: new USB bus registered, assigned bus number 2
   jajo kernel: hub.c: USB hub found
   jajo kernel: hub.c: 2 ports detected
   jajo kernel: usb.c: registered new driver hid
   jajo kernel: hid-core.c: v1.8 Andreas Gal, Vojtech Pavlik <vojtech at suse.cz>
   jajo kernel: hid-core.c: USB HID support drivers
   jajo kernel: mice: PS/2 mouse device common for all mice
   jajo kernel: hub.c: USB new device connect on bus1/2, assigned device number 2
   jajo kernel: usb_control/bulk_msg: timeout
   jajo kernel: usb.c: USB device not accepting new address=2 (error=-110)
   jajo kernel: hub.c: USB new device connect on bus1/2, assigned device number 3
   jajo kernel: usb_control/bulk_msg: timeout
   jajo kernel: usb.c: USB device not accepting new address=3 (error=-110)
    


As you can see at the end, USB device does not respond to the driver. This is because default values (stored in bios?) for IRQ for USB is wrong. PCI driver founds IRQ 10 for USB (PCI: Found IRQ 10 for device 00:1f.2), but all devices should have IRQ 9.
I think Windows driver silently overrides the default value to IRQ 9.
My patch also disable this value for this particular device (PCI: 8086:2442). And then proper IRQ is set.

If your USB is not working, you can make a short test if your problem is a wrong IRQ.

  1. You must have USB drivers compiled as modules
  2. Unload (or do not load) all USB modules
  3. Connect your USB device (eg. mouse)
  4. Start something that will generate a lot of interrupts on IRQ 9.
    I did hundred pings per second to some host: ping -i0.01 some.host
    Internal ethernet card, and a sound card uses the same IRQ 9.
    Playing some music may be also enough.
  5. While doing this, load USB modules, and check if 'usb_control/bulk_msg: timeout' message is gone. If so, USB device should work.

My patch works works with device 8086:2442, but yours can be other. It can be easily changed. Check it with lspci, and lspci -n.

Good luck!

PS
If this hack works on any Laptop other then FX240, please write me about it. I'll add a notice here.
I know that USB patch works (at least) on: FX200, FX220, FX240, FX250, FX270, FX290, FX370, FX503

Resources



Back to Linux on Sony Vaio FX240 page.