← Back to team overview

kernel-packages team mailing list archive

[Bug 1035723] Re: Joystick (SideWinder FF2) Force Feedback doesn't reset properly

 

Proposed patch to get the Microsoft Sidewinder Force Feedback 2 working.

Three bugs are addressed:

1) The FF2 driver (usbhid/hid-pidff.c) sends commands to the stick
during ff_init. However, this is called inside a block where
driver_input_lock is locked, so the results of these initial commands
are discarded. This one is the "killer", without this nothing else
works.

2) The usbhid driver ignores an endpoint stall when sending control
commands, causing the first few commands of the hid-pidff.c
initialisation to get lost.

3) The FF2 driver does not set the effect ID when uploading an effect.
The result is that the initial upload works but subsequent uploads to
modify effect parameters are all directed at the last-created effect.

Patch created against kernel 3.13.0 .


** Patch added: "swff2.patch"
   https://bugs.launchpad.net/ubuntu/+source/linux/+bug/1035723/+attachment/4300116/+files/swff2.patch

-- 
You received this bug notification because you are a member of Kernel
Packages, which is subscribed to linux in Ubuntu.
https://bugs.launchpad.net/bugs/1035723

Title:
  Joystick (SideWinder FF2) Force Feedback doesn't reset properly

Status in linux package in Ubuntu:
  Expired

Bug description:
  I've been trying to get the FF to work on my SideWinder Force Feedback
  2 joystick without success so far.

  This is what I get when I try to test it:
  [code]
  ~$ sudo fftest /dev/input/event4
  Force feedback test program.
  HOLD FIRMLY YOUR WHEEL OR JOYSTICK TO PREVENT DAMAGES

  Device /dev/input/event4 opened
  Axes query: 
  Effects: Constant Periodic Spring Friction 
  Number of simultaneous effects: 0
  Upload effects[0]: Function not implemented
  Upload effects[1]: Function not implemented
  Upload effects[2]: Function not implemented
  Upload effects[3]: Function not implemented
  Upload effects[4]: Function not implemented
  Upload effects[5]: Function not implemented
  Enter effect number, -1 to exit
  [/code]

  When I try any of the effects it does not do anything.

  When I plug it in the USB port it shows this in the 'dmesg' output:
  [code]
  [  170.280024] usb 4-2: new full-speed USB device number 2 using uhci_hcd
  [  170.489878] input: Microsoft SideWinder Force Feedback 2 Joystick as /devices/pci0000:00/0000:00:1a.1/usb4/4-2/4-2:1.0/input/input4
  [  170.521795] generic-usb 0003:045E:001B.0003: device reports 0 simultaneous effects
  [  170.582764] generic-usb 0003:045E:001B.0003: pid_block_load failed 60 times
  [  170.582768] generic-usb 0003:045E:001B.0003: upload request failed
  [  170.582774] generic-usb 0003:045E:001B.0003: input,hidraw2: USB HID v1.00 Joystick [Microsoft SideWinder Force Feedback 2 Joystick] on usb-0000:00:1a.1-2/input0
  [/code]

  This tells me that the kernel modules are present and being executed. It's using the 'hid-pidff' driver and I found that the message about '0 simultaneous effects' is generated here:
  file: drivers/hid/usbhid/hid-pidff.c
  line: 1178, function pidff_reset

  From the code I can see it should at least find 2 simultaneous
  effects, but it finds none and after 20 retries it fails and
  continues.

  After this, I leave my comfort zone, but I am happy to debug (with
  some assistance) and try anything out. Maybe you'll be able to convert
  me from being a Windows developer to a Linux developer :)

  Cheers

  ProblemType: Bug
  DistroRelease: Ubuntu 12.04
  Package: linux-image-3.2.0-29-generic 3.2.0-29.46
  ProcVersionSignature: Ubuntu 3.2.0-29.46-generic 3.2.24
  Uname: Linux 3.2.0-29-generic i686
  AlsaVersion: Advanced Linux Sound Architecture Driver Version 1.0.24.
  ApportVersion: 2.0.1-0ubuntu12
  Architecture: i386
  ArecordDevices:
   **** List of CAPTURE Hardware Devices ****
   card 0: Intel [HDA Intel], device 0: AD198x Analog [AD198x Analog]
     Subdevices: 2/2
     Subdevice #0: subdevice #0
     Subdevice #1: subdevice #1
  AudioDevicesInUse:
   USER        PID ACCESS COMMAND
   /dev/snd/controlC0:  marijn     1970 F.... pulseaudio
   /dev/snd/pcmC0D0p:   marijn     1970 F...m pulseaudio
  CRDA: Error: command ['iw', 'reg', 'get'] failed with exit code 1: nl80211 not found.
  Card0.Amixer.info:
   Card hw:0 'Intel'/'HDA Intel at 0xfe9dc000 irq 44'
     Mixer name	: 'Analog Devices AD1984'
     Components	: 'HDA:11d41984,10280211,00100400'
     Controls      : 30
     Simple ctrls  : 18
  Date: Sat Aug 11 20:33:24 2012
  HibernationDevice: RESUME=UUID=d05e0608-7ccc-4d87-ac0c-994266652f47
  InstallationMedia: Ubuntu 11.04 "Natty Narwhal" - Release i386 (20110427.1)
  IwConfig:
   lo        no wireless extensions.
   
   virbr0    no wireless extensions.
   
   eth0      no wireless extensions.
  MachineType: Dell Inc. OptiPlex 755
  ProcEnviron:
   LANGUAGE=en_GB:en
   TERM=xterm
   PATH=(custom, user)
   LANG=en_GB.UTF-8
   SHELL=/bin/bash
  ProcFB: 0 inteldrmfb
  ProcKernelCmdLine: BOOT_IMAGE=/boot/vmlinuz-3.2.0-29-generic root=UUID=99e917a5-032c-416b-ab03-af8b02651198 ro crashkernel=384M-2G:64M,2G-:128M quiet splash vt.handoff=7
  RelatedPackageVersions:
   linux-restricted-modules-3.2.0-29-generic N/A
   linux-backports-modules-3.2.0-29-generic  N/A
   linux-firmware                            1.79
  RfKill:
   
  SourcePackage: linux
  UpgradeStatus: Upgraded to precise on 2012-04-25 (108 days ago)
  dmi.bios.date: 05/31/2011
  dmi.bios.vendor: Dell Inc.
  dmi.bios.version: A19
  dmi.board.name: 0PU052
  dmi.board.vendor: Dell Inc.
  dmi.chassis.type: 15
  dmi.chassis.vendor: Dell Inc.
  dmi.modalias: dmi:bvnDellInc.:bvrA19:bd05/31/2011:svnDellInc.:pnOptiPlex755:pvr:rvnDellInc.:rn0PU052:rvr:cvnDellInc.:ct15:cvr:
  dmi.product.name: OptiPlex 755
  dmi.sys.vendor: Dell Inc.

To manage notifications about this bug go to:
https://bugs.launchpad.net/ubuntu/+source/linux/+bug/1035723/+subscriptions