USB HIDRAW Feature Report Implementation for HID devices not working correctly in Ubuntu 14.04

Bug #1353021 reported by Michael Powers on 2014-08-05
124
This bug affects 51 people
Affects Status Importance Assigned to Milestone
linux (Ubuntu)
Undecided
Unassigned
Trusty
Undecided
Tim Gardner
Utopic
Undecided
Unassigned

Bug Description

With the release of Ubuntu 14.04 I've been investigating an issue with a software library I maintain to talk to USB based HID signature pads. I believe I've narrowed the issue down to the HIDRAW implementation released with Ubuntu 14.04. Essentially what seems to be failing is the ioctl to get feature reports (HIDIOCGFEATURE). Any attempt to get a feature report results in a failure with a ENODEV error code.

The devices I'm testing with are USB signature pads (http://www.scriptel.com). These signature pads use HID feature reports to communicate capabilities and to set up the device. I can provide further information along with USB/HID descriptors if it would be helpful.

I have been testing with Ubuntu 14.04 Desktop (x64) with kernel version:
Linux <hostname> 3.13.0-32-generic #57-Ubuntu SMP Tue Jul 15 03:51:08 UTC 2014 x86_64 x86_64 x86_64 GNU/Linux

This kernel exhibits the problematic behavior, but when testing with Ubuntu 13.10 Desktop (x64):
Linux <hostname> 3.11.0-23-generic #40-Ubuntu SMP Wed Jun 4 21:05:23 UTC 2014 x86_64 x86_64 x86_64 GNU/Linux

The 13.10 kernel's version of HIDRAW seems to work correctly. I've also tested with the vanilla kernel:
Linux <hostname> 3.13.1-hidtest #1 SMP Tue Aug 5 09:14:28 EDT 2014 x86_64 x86_64 x86_64 GNU/Linux

The vanilla kernel appears to work correctly as well. Kernel source used was downloaded from:
https://www.kernel.org/pub/linux/kernel/v3.x/linux-3.13.1.tar.xz
The configuration file used was from config-3.13.0-32-generic provided in linux-image-3.13.0-32-generic

I believe the breaking change was made as part of commit aa6c390c4d59c9ff4fffd887e15783b2b793951b as part of ubuntu/ubuntu-trusty.git.

I have attached a simple C program to demonstrate the problem. You'll need a USB HID device with known feature reports.

Please let me know if I can provide any additional information or be of any assistance.

ProblemType: Bug
DistroRelease: Ubuntu 14.04
Package: linux-image-3.13.0-32-generic 3.13.0-32.57
ProcVersionSignature: Ubuntu 3.13.0-32.57-generic 3.13.11.4
Uname: Linux 3.13.0-32-generic x86_64
ApportVersion: 2.14.1-0ubuntu3.2
Architecture: amd64
AudioDevicesInUse:
 USER PID ACCESS COMMAND
 /dev/snd/controlC0: mpowers 2863 F.... pulseaudio
CurrentDesktop: Unity
Date: Tue Aug 5 13:51:39 2014
HibernationDevice: RESUME=UUID=3a5a866c-6086-47d6-8080-70715896a719
InstallationDate: Installed on 2014-04-17 (109 days ago)
InstallationMedia: Ubuntu 14.04 LTS "Trusty Tahr" - Release amd64 (20140417)
ProcFB:
 0 inteldrmfb
 1 nouveaufb
ProcKernelCmdLine: BOOT_IMAGE=/boot/vmlinuz-3.13.0-32-generic root=UUID=9b49575f-fb86-45d7-af5e-b3fde82f91ac ro quiet splash vt.handoff=7
RelatedPackageVersions:
 linux-restricted-modules-3.13.0-32-generic N/A
 linux-backports-modules-3.13.0-32-generic N/A
 linux-firmware 1.127.5
SourcePackage: linux
UpgradeStatus: No upgrade log present (probably fresh install)
dmi.bios.date: 12/07/2012
dmi.bios.vendor: American Megatrends Inc.
dmi.bios.version: E1762II1.50U
dmi.board.asset.tag: To be filled by O.E.M.
dmi.board.name: CZ-17
dmi.board.version: REV:1.0
dmi.chassis.asset.tag: No Asset Tag
dmi.chassis.type: 10
dmi.chassis.vendor: To Be Filled By O.E.M.
dmi.chassis.version: To be filled by O.E.M.
dmi.modalias: dmi:bvnAmericanMegatrendsInc.:bvrE1762II1.50U:bd12/07/2012:svn:pnCZ-17:pvrREV1.0:rvn:rnCZ-17:rvrREV1.0:cvnToBeFilledByO.E.M.:ct10:cvrTobefilledbyO.E.M.:
dmi.product.name: CZ-17
dmi.product.version: REV:1.0

Michael Powers (mpowers-b) wrote :

This change was made by a bot.

Changed in linux (Ubuntu):
status: New → Confirmed
Reilly Grant (reillyg) wrote :

Looks like this patch to remove hid_get_raw_report was pulled in,

commit cafebc058bf86e63fff5354864781d3de11e41d3
Author: Benjamin Tissoires <email address hidden>
Date: Wed Feb 5 16:33:22 2014 -0500

    HID: remove hid_get_raw_report in struct hid_device

    dev->hid_get_raw_report(X) and hid_hw_raw_request(X, HID_REQ_GET_REPORT)
    are strictly equivalent. Switch the hid subsystem to the hid_hw notation
    and remove the field .hid_get_raw_report in struct hid_device.

    Reviewed-by: David Herrmann <email address hidden>
    Signed-off-by: Benjamin Tissoires <email address hidden>
    Signed-off-by: Jiri Kosina <email address hidden>

without also pulling in this earlier patch that added an ll_driver->raw_request for the USB HID driver:

commit 975a683271e690e7e467b274f22efadf1e696b5e
Author: Frank Praznik <email address hidden>
Date: Wed Jan 22 13:49:42 2014 -0500

    HID: Add transport-driver functions to the USB HID interface.

    Add raw_request, set_raw_report and output_report transport-driver functions to
    the USB HID driver.

    Signed-off-by: Frank Praznik <email address hidden>
    Acked-by: David Herrmann <email address hidden>
    Signed-off-by: Jiri Kosina <email address hidden>

Tim Gardner (timg-tpi) wrote :
Changed in linux (Ubuntu Utopic):
status: Confirmed → Fix Released
Changed in linux (Ubuntu Trusty):
assignee: nobody → Tim Gardner (timg-tpi)
status: New → In Progress
Andy Whitcroft (apw) on 2014-08-21
Changed in linux (Ubuntu Trusty):
status: In Progress → Fix Committed
Reilly Grant (reillyg) wrote :

I have a report from a user that the offending patch was also backported to Saucy. I'm not sure how to add that to the affected versions list above.

Reilly Grant (reillyg) wrote :

By Saucy I mean Precise, which is the LTS release.

Brad Figg (brad-figg) wrote :

This bug is awaiting verification that the kernel in -proposed solves the problem. Please test the kernel and update this bug with the results. If the problem is solved, change the tag 'verification-needed-trusty' to 'verification-done-trusty'.

If verification is not done by 5 working days from today, this fix will be dropped from the source code, and this bug will be closed.

See https://wiki.ubuntu.com/Testing/EnableProposed for documentation how to enable and use -proposed. Thank you!

tags: added: verification-needed-trusty
Michael Powers (mpowers-b) wrote :

Verified today that my test application as well as my library and applications appear to work correctly with the kernel in -proposed with version:
Linux <computername> 3.13.0-36-generic #63-Ubuntu SMP Wed Sep 3 21:30:07 UTC 2014 x86_64 x86_64 x86_64 GNU/Linux

Please let me know if you'd like me to test anything else.

tags: added: verification-done-trusty
removed: verification-needed-trusty

I confirm that kernel 3.13.0-36 from -proposed also solves the issues regarding Sixaxis/Dualshock3 controller described in duplicate bug #1326725.

Launchpad Janitor (janitor) wrote :
Download full text (5.8 KiB)

This bug was fixed in the package linux - 3.13.0-36.63

---------------
linux (3.13.0-36.63) trusty; urgency=low

  [ Joseph Salisbury ]

  * Release Tracking Bug
    - LP: #1365052

  [ Feng Kan ]

  * SAUCE: (no-up) irqchip:gic: change access of gicc_ctrl register to read
    modify write.
    - LP: #1357527
  * SAUCE: (no-up) arm64: optimized copy_to_user and copy_from_user
    assembly code
    - LP: #1358949

  [ Ming Lei ]

  * SAUCE: (no-up) Drop APM X-Gene SoC Ethernet driver
    - LP: #1360140
  * [Config] Drop XGENE entries
    - LP: #1360140
  * [Config] CONFIG_NET_XGENE=m for arm64
    - LP: #1360140

  [ Stefan Bader ]

  * SAUCE: Add compat macro for skb_get_hash
    - LP: #1358162
  * SAUCE: bcache: prevent crash on changing writeback_running
    - LP: #1357295

  [ Suman Tripathi ]

  * SAUCE: (no-up) arm64: Fix the csr-mask for APM X-Gene SoC AHCI SATA PHY
    clock DTS node.
    - LP: #1359489
  * SAUCE: (no-up) ahci_xgene: Skip the PHY and clock initialization if
    already configured by the firmware.
    - LP: #1359501
  * SAUCE: (no-up) ahci_xgene: Fix the link down in first attempt for the
    APM X-Gene SoC AHCI SATA host controller driver.
    - LP: #1359507

  [ Tuan Phan ]

  * SAUCE: (no-up) pci-xgene-msi: fixed deadlock in irq_set_affinity
    - LP: #1359514

  [ Upstream Kernel Changes ]

  * iwlwifi: mvm: Add a missed beacons threshold
    - LP: #1349572
  * mac80211: reset probe_send_count also in HW_CONNECTION_MONITOR case
    - LP: #1349572
  * genirq: Add an accessor for IRQ_PER_CPU flag
    - LP: #1357527
  * arm64: perf: add support for percpu pmu interrupt
    - LP: #1357527
  * cifs: sanity check length of data to send before sending
    - LP: #1283101
  * KVM: nVMX: Pass vmexit parameters to nested_vmx_vmexit
    - LP: #1329434
  * KVM: nVMX: Rework interception of IRQs and NMIs
    - LP: #1329434
  * KVM: vmx: disable APIC virtualization in nested guests
    - LP: #1329434
  * HID: Add transport-driver functions to the USB HID interface.
    - LP: #1353021
  * ahci_xgene: Removing NCQ support from the APM X-Gene SoC AHCI SATA Host
    Controller driver.
    - LP: #1358498
  * fold d_kill() and d_free()
    - LP: #1354234
  * fold try_prune_one_dentry()
    - LP: #1354234
  * new helper: dentry_free()
    - LP: #1354234
  * expand the call of dentry_lru_del() in dentry_kill()
    - LP: #1354234
  * dentry_kill(): don't try to remove from shrink list
    - LP: #1354234
  * don't remove from shrink list in select_collect()
    - LP: #1354234
  * more graceful recovery in umount_collect()
    - LP: #1354234
  * dcache: don't need rcu in shrink_dentry_list()
    - LP: #1354234
  * lift the "already marked killed" case into shrink_dentry_list()
  * split dentry_kill()
    - LP: #1354234
  * expand dentry_kill(dentry, 0) in shrink_dentry_list()
    - LP: #1354234
  * shrink_dentry_list(): take parent's ->d_lock earlier
    - LP: #1354234
  * dealing with the rest of shrink_dentry_list() livelock
    - LP: #1354234
  * dentry_kill() doesn't need the second argument now
    - LP: #1354234
  * dcache: add missing lockdep annotation
    - LP: #1354234
  * fs: convert use of typedef ctl_table to struct ctl_table
 ...

Read more...

Changed in linux (Ubuntu Trusty):
status: Fix Committed → Fix Released
Emanem (em4n3m) wrote :

Apologies for this question, don't know where I can find the answer to it: when the above version of the kernel will be officially released?
Currently I have:

uname -a
Linux scv 3.13.0-34-generic #60-Ubuntu SMP Wed Aug 13 15:45:27 UTC 2014 x86_64 x86_64 x86_64 GNU/Linux

Cheers!

Download full text (4.7 KiB)

3.13.0-36-generic is the first kernel version that includes the fix.

On Wed, Feb 25, 2015 at 11:30 AM Emanem <email address hidden> wrote:

> Apologies for this question, don't know where I can find the answer to it:
> when the above version of the kernel will be officially released?
> Currently I have:
>
> uname -a
> Linux scv 3.13.0-34-generic #60-Ubuntu SMP Wed Aug 13 15:45:27 UTC 2014
> x86_64 x86_64 x86_64 GNU/Linux
>
> Cheers!
>
> --
> You received this bug notification because you are subscribed to the bug
> report.
> https://bugs.launchpad.net/bugs/1353021
>
> Title:
> USB HIDRAW Feature Report Implementation for HID devices not working
> correctly in Ubuntu 14.04
>
> Status in linux package in Ubuntu:
> Fix Released
> Status in linux source package in Trusty:
> Fix Released
> Status in linux source package in Utopic:
> Fix Released
>
> Bug description:
> With the release of Ubuntu 14.04 I've been investigating an issue with
> a software library I maintain to talk to USB based HID signature pads.
> I believe I've narrowed the issue down to the HIDRAW implementation
> released with Ubuntu 14.04. Essentially what seems to be failing is
> the ioctl to get feature reports (HIDIOCGFEATURE). Any attempt to get
> a feature report results in a failure with a ENODEV error code.
>
> The devices I'm testing with are USB signature pads
> (http://www.scriptel.com). These signature pads use HID feature
> reports to communicate capabilities and to set up the device. I can
> provide further information along with USB/HID descriptors if it would
> be helpful.
>
> I have been testing with Ubuntu 14.04 Desktop (x64) with kernel version:
> Linux <hostname> 3.13.0-32-generic #57-Ubuntu SMP Tue Jul 15 03:51:08
> UTC 2014 x86_64 x86_64 x86_64 GNU/Linux
>
> This kernel exhibits the problematic behavior, but when testing with
> Ubuntu 13.10 Desktop (x64):
> Linux <hostname> 3.11.0-23-generic #40-Ubuntu SMP Wed Jun 4 21:05:23 UTC
> 2014 x86_64 x86_64 x86_64 GNU/Linux
>
> The 13.10 kernel's version of HIDRAW seems to work correctly. I've also
> tested with the vanilla kernel:
> Linux <hostname> 3.13.1-hidtest #1 SMP Tue Aug 5 09:14:28 EDT 2014
> x86_64 x86_64 x86_64 GNU/Linux
>
> The vanilla kernel appears to work correctly as well. Kernel source used
> was downloaded from:
> https://www.kernel.org/pub/linux/kernel/v3.x/linux-3.13.1.tar.xz
> The configuration file used was from config-3.13.0-32-generic provided
> in linux-image-3.13.0-32-generic
>
> I believe the breaking change was made as part of commit
> aa6c390c4d59c9ff4fffd887e15783b2b793951b as part of ubuntu/ubuntu-
> trusty.git.
>
> I have attached a simple C program to demonstrate the problem. You'll
> need a USB HID device with known feature reports.
>
> Please let me know if I can provide any additional information or be
> of any assistance.
>
> ProblemType: Bug
> DistroRelease: Ubuntu 14.04
> Package: linux-image-3.13.0-32-generic 3.13.0-32.57
> ProcVersionSignature: Ubuntu 3.13.0-32.57-generic 3.13.11.4
> Uname: Linux 3.13.0-32-generic x86_64
> ApportVersion: 2.14.1-0ubuntu3.2
> Architecture: amd64
> AudioDevicesInUse:
> ...

Read more...

To post a comment you must log in.
This report contains Public information  Edit
Everyone can see this information.

Other bug subscribers