Take the 2-minute tour ×
Ask Ubuntu is a question and answer site for Ubuntu users and developers. It's 100% free, no registration required.

When I press one of the righthand side buttons (not the usual back/forward buttons) the mouse freezes, and the -22 error(see below) comes up in dmesg. When I remove the mouse and put it in again it works, but the buttons still freezes the mouse.

I couldn't find any useful information on either error -22 or concerning the Sensei mouse.

This is from dmesg after boot:

[    2.473271] input: La-VIEW Technology SteelSeries   as /devices/pci0000:00/0000:00:1d.0/usb2/2-1/2-1.6/2-1.6:1.0/input/input3
[    2.473445] generic-usb 0003:1038:1361.0001: input,hidraw0: USB HID v1.00 Mouse [La-VIEW Technology SteelSeries  ] on usb-0000:00:1d.0-1.6/input0
[    2.474360] generic-usb: probe of 0003:1038:1361.0002 failed with error -22
[    2.474427] usbcore: registered new interface driver usbhid
[    2.474493] usbhid: USB HID core driver

xinput list-props 8 yields:

Device 'La-VIEW Technology SteelSeries  ':
Device Enabled (142):   1
Coordinate Transformation Matrix (144): 1.000000, 0.000000, 0.000000, 0.000000, 1.000000, 0.000000, 0.000000, 0.000000, 1.000000
Device Accel Profile (271): 0
Device Accel Constant Deceleration (272):   3.000000
Device Accel Adaptive Deceleration (273):   1.000000
Device Accel Velocity Scaling (274):    10.000000
Device Product ID (260):    4152, 4961
Device Node (261):  "/dev/input/event3"
Evdev Axis Inversion (275): 0, 0
Evdev Axes Swap (277):  0
Axis Labels (278):  "Rel X" (152), "Rel Y" (153), "Rel Horiz Wheel" (269), "Rel Vert Wheel" (270)
Button Labels (279):    "Button Left" (145), "Button Middle" (146), "Button Right" (147), "Button Wheel Up" (148), "Button Wheel Down" (149), "Button Horiz Wheel Left" (150), "Button Horiz Wheel Right" (151), "Button Side" (264), "Button Extra" (265), "Button Forward" (266), "Button Back" (267), "Button Task" (268), "Button Unknown" (263), "Button Unknown" (263), "Button Unknown" (263), "Button Unknown" (263)
Evdev Middle Button Emulation (280):    0
Evdev Middle Button Timeout (281):  50
Evdev Third Button Emulation (282): 0
Evdev Third Button Emulation Timeout (283): 1000
Evdev Third Button Emulation Button (284):  3
Evdev Third Button Emulation Threshold (285):   20
Evdev Wheel Emulation (286):    0
Evdev Wheel Emulation Axes (287):   0, 0, 4, 5
Evdev Wheel Emulation Inertia (288):    10
Evdev Wheel Emulation Timeout (289):    200
Evdev Wheel Emulation Button (290): 4
Evdev Drag Lock Buttons (291):  0

Update 1:

I have now tried to sniff the usb packets to see what's going on when i press the buttons that freeze the mouse. I've put them below:

No.     Time        Source                Destination           Protocol Length Info
 199479 390.237182  6.1                   host                  USB      64     URB_INTERRUPT in

Frame 199479: 64 bytes on wire (512 bits), 64 bytes captured (512 bits)
USB URB
    URB id: 0xffff8801ca55ba80
    URB type: URB_COMPLETE ('C')
    URB transfer type: URB_INTERRUPT (0x01)
    Endpoint: 0x81, Direction: IN
        1... .... = Direction: IN (1)
        .000 0001 = Endpoint value: 1
    Device: 6
    URB bus id: 2
    Device setup request: not relevant ('-')
    Data: present (0)
    URB sec: 1343162038
    URB usec: 333931
    URB status: Protocol error (-EPROTO) (-71)
    URB length [bytes]: 0
    Data length [bytes]: 0
    [Request in: 194548]
    [Time from request: 23.890818000 seconds]

No.     Time        Source                Destination           Protocol Length Info
 199480 390.251625  host                  6.1                   USB      64     URB_INTERRUPT in

Frame 199480: 64 bytes on wire (512 bits), 64 bytes captured (512 bits)
USB URB
    URB id: 0xffff8801ca55ba80
    URB type: URB_SUBMIT ('S')
    URB transfer type: URB_INTERRUPT (0x01)
    Endpoint: 0x81, Direction: IN
        1... .... = Direction: IN (1)
        .000 0001 = Endpoint value: 1
    Device: 6
    URB bus id: 2
    Device setup request: not relevant ('-')
    Data: not present ('<')
    URB sec: 1343162038
    URB usec: 348374
    URB status: Operation now in progress (-EINPROGRESS) (-115)
    URB length [bytes]: 8
    Data length [bytes]: 0
    [Response in: 199481]

No.     Time        Source                Destination           Protocol Length Info
 199481 390.255254  6.1                   host                  USB      64     URB_INTERRUPT in

Frame 199481: 64 bytes on wire (512 bits), 64 bytes captured (512 bits)
USB URB
    URB id: 0xffff8801ca55ba80
    URB type: URB_COMPLETE ('C')
    URB transfer type: URB_INTERRUPT (0x01)
    Endpoint: 0x81, Direction: IN
        1... .... = Direction: IN (1)
        .000 0001 = Endpoint value: 1
    Device: 6
    URB bus id: 2
    Device setup request: not relevant ('-')
    Data: present (0)
    URB sec: 1343162038
    URB usec: 352003
    URB status: Protocol error (-EPROTO) (-71)
    URB length [bytes]: 0
    Data length [bytes]: 0
    [Request in: 199480]
    [Time from request: 0.003629000 seconds]

No.     Time        Source                Destination           Protocol Length Info
 199488 390.279626  host                  6.1                   USB      64     URB_INTERRUPT in

Frame 199488: 64 bytes on wire (512 bits), 64 bytes captured (512 bits)
USB URB
    URB id: 0xffff8801ca55ba80
    URB type: URB_SUBMIT ('S')
    URB transfer type: URB_INTERRUPT (0x01)
    Endpoint: 0x81, Direction: IN
        1... .... = Direction: IN (1)
        .000 0001 = Endpoint value: 1
    Device: 6
    URB bus id: 2
    Device setup request: not relevant ('-')
    Data: not present ('<')
    URB sec: 1343162038
    URB usec: 376375
    URB status: Operation now in progress (-EINPROGRESS) (-115)
    URB length [bytes]: 8
    Data length [bytes]: 0
    [Response in: 199489]

No.     Time        Source                Destination           Protocol Length Info
 199489 390.283255  6.1                   host                  USB      64     URB_INTERRUPT in

Frame 199489: 64 bytes on wire (512 bits), 64 bytes captured (512 bits)
USB URB
    URB id: 0xffff8801ca55ba80
    URB type: URB_COMPLETE ('C')
    URB transfer type: URB_INTERRUPT (0x01)
    Endpoint: 0x81, Direction: IN
        1... .... = Direction: IN (1)
        .000 0001 = Endpoint value: 1
    Device: 6
    URB bus id: 2
    Device setup request: not relevant ('-')
    Data: present (0)
    URB sec: 1343162038
    URB usec: 380004
    URB status: Protocol error (-EPROTO) (-71)
    URB length [bytes]: 0
    Data length [bytes]: 0
    [Request in: 199488]
    [Time from request: 0.003629000 seconds]

No.     Time        Source                Destination           Protocol Length Info
 199504 390.331599  host                  6.1                   USB      64     URB_INTERRUPT in

Frame 199504: 64 bytes on wire (512 bits), 64 bytes captured (512 bits)
USB URB
    URB id: 0xffff8801ca55ba80
    URB type: URB_SUBMIT ('S')
    URB transfer type: URB_INTERRUPT (0x01)
    Endpoint: 0x81, Direction: IN
        1... .... = Direction: IN (1)
        .000 0001 = Endpoint value: 1
    Device: 6
    URB bus id: 2
    Device setup request: not relevant ('-')
    Data: not present ('<')
    URB sec: 1343162038
    URB usec: 428348
    URB status: Operation now in progress (-EINPROGRESS) (-115)
    URB length [bytes]: 8
    Data length [bytes]: 0
    [Response in: 199505]

No.     Time        Source                Destination           Protocol Length Info
 199505 390.335256  6.1                   host                  USB      64     URB_INTERRUPT in

Frame 199505: 64 bytes on wire (512 bits), 64 bytes captured (512 bits)
USB URB
    URB id: 0xffff8801ca55ba80
    URB type: URB_COMPLETE ('C')
    URB transfer type: URB_INTERRUPT (0x01)
    Endpoint: 0x81, Direction: IN
        1... .... = Direction: IN (1)
        .000 0001 = Endpoint value: 1
    Device: 6
    URB bus id: 2
    Device setup request: not relevant ('-')
    Data: present (0)
    URB sec: 1343162038
    URB usec: 432005
    URB status: Protocol error (-EPROTO) (-71)
    URB length [bytes]: 0
    Data length [bytes]: 0
    [Request in: 199504]
    [Time from request: 0.003657000 seconds]

Update 2:

I've just tried rebooting from windows (not shutting down and booting again mind you) - and now the mouse registers fine with the extra buttons (they're btn 10 and 11).

I've had a similar thing happen to my touchpad on my laptop (where it behaved differently after rebooting from windows - though not for the better in that situation). I think the rationale were that there must've been some kind of ram/rom in the hardware which stored some driver specific stuff and which didn't get cleared properly on a reboot.

I have no idea if this would help anyone, but now it's documented.

share|improve this question
    
I was wondering how that nice USB sniff log was obtained, so I hope it's OK to jot it down here: managed to find relevant info here and here. I found sudo tshark -i usbmon2 -V in Ubuntu produces that kind of log directly in terminal's stdout. Cheers! –  sdaau Oct 27 '12 at 18:22
    
Something or another happened between Ubuntu 12.10 and 13.04 that eliminated this issue, at least for me... –  skomorokh Jun 27 '13 at 14:41
add comment

6 Answers

up vote 3 down vote accepted

The issue appears to have been resolved as of the 3.7.x kernel (https://bbs.archlinux.org/viewtopic.php?id=139994), so you should have a working mouse when 13.04 ships.

share|improve this answer
add comment

Fortunately, the config is configurable via the firmware in the mouse. Connect the mouse to any Windows 7 PC. Download SteelSeries Engine for Windows, disable the page up and page down buttons. Reconnect the mouse to your Ubuntu.

share|improve this answer
    
You are absolutely right, but I were looking to fix the issue and make use of the buttons (I use them for switching tabs). –  Fraekkert May 31 '12 at 17:20
add comment

I don't have a fix, but I might have a hint as to what's happening.

I have the same mouse, and the same problem, and I suspect a kernel bug somewhere in the USB subsystem. Using kernel 3.2.0 (Debian-unstable), and following the usbmon documentation:

# mount -t debugfs none_debugfs /sys/kernel/debug
# modprobe usbmon
# grep -B5 SteelSeries /sys/kernel/debug/usb/devices
T:  Bus=03 ...
...
# cat /sys/kernel/debug/usb/usbmon/3u

Now I should be seeing a trace of everything happening on USB bus 3. And indeed, when I move the mouse, I see lines like:

ee561cc0 3981940473 C Ii:3:016:1 0:1 8 = 01000000 ffff0000
ee561cc0 3981940545 S Ii:3:016:1 -115:1 8 <

But when I click one of those right-side mouse buttons, I get nothing. And then I don't get any data when I move the mouse anymore. Which I can only assume means the USB driver went Wat.

I'd wonder about the mouse (and still do, a little), but both OSX and (I assume) Windows handle it just fine.

share|improve this answer
add comment

Ditto. Except that disabling it in Windows only seems to temporarily fix the problem--it resurfaces if the mouse is reconnected. Which, interestingly, seems to then persist until I next visit Windows. I should probably stop plugging it into my monitor.

I also tried the 3.4 kernel from the kernel PPA to no effect.

After some searching about for this error and fixes for input devices that flake out in Linux, I've found a few things to try out. Alas they tend to require a kernel rebuild which I've not done lately outside of easy monolithic bzImage situations. And so I'll share them here until I investigate Ubuntu's convenient module rebuilding facilities:

There is a file in USB core called quirks.c which implements workarounds for some misbehaving devices:

Our mouse isn't one of them. But perhaps one of those tweaks would help? They're documented in the header.

Alternatively, there is a HID_MAX_USAGES constant in hid.h that was exceeded by some devices.

In one case where that was the fix, it was also observed the mouse offered multiple interfaces. Our mouse does too, check lsusb -v and search for Ideazon (which is SteelSeries parent company/manufacturer/what they're called in USB land). Maybe we can just blacklist that part somehow?

share|improve this answer
add comment

Same problem here as well with same behaviour. I've made a workaround for that by USB resetting the device using simple libusb solution and a wrapper which uses lsusb output to reset Ideazon and that works for me.

I can also confirm that changing HID_MAX_USAGES doesn't help at all. Neither helps removing additional HID Keyboard device that Sensei exports (2-1.4:1.1 aka 0003:1038:1361.0004) with "echo 2-1.4:1.1 > /sys/bus/usb/drivers/usbhid/unbind". It really does unbind the HID driver from virtual keyboard, but the USB event is still being sent and confuses Linux USB driver, state from which only USB device reset helps.

Unfortunately, remapping keys 6 and 7 in SteelSeries Engine (Windows only) doesn't work permanently, as mouse keeps reverting the profile to sending pgup/pgdown after each poweroff.

share|improve this answer
add comment

Ok it's more of a work around than a solution, but as @skomorokh said, disable the buttons in Windows, and then save the setting in a new profile and store it on the mouse to avoid losing the configuration when unplugging the mouse.

share|improve this answer
1  
I've been thinking about this myself, but i use it to dualboot to windows, where i would rather like to use it with the buttons. –  Fraekkert Aug 6 '12 at 17:27
add comment

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.