cdc_acm driver lacks trival support for Hiro (Conexant) H05228 USB modem

Bug #1802738 reported by Maarten Jacobs
10
This bug affects 2 people
Affects Status Importance Assigned to Milestone
linux (Ubuntu)
Fix Released
Medium
Unassigned

Bug Description

I procured a USB modem manufactured by Hiro (model number H50228). This is in fact a Conexant modem, and while some conexant models are supported in cdc_adm, this particular type is not.

Hence, when I connect the modem to my system, cdc_adm does not initialize the modem properly, as evidenced by errors reported through journalctl:

Nov 10 21:46:10 <snip> kernel: usbcore: registered new interface driver cdc_acm
Nov 10 21:46:10 <snip> kernel: cdc_acm: USB Abstract Control Model driver for USB modems and ISDN adapters
Nov 10 21:47:01 <snip> kernel: cdc_acm 4-2:1.0: Zero length descriptor references
Nov 10 21:47:01 <snip> kernel: cdc_acm: probe of 4-2:1.0 failed with error -22

Similar errors of this type have been reported previously, and following the resolution for these errors I recompiled the cdc_acm kernel module, after which the modem is successfully registered:

Nov 10 21:47:48 <snip> kernel: usbcore: registered new interface driver cdc_acm
Nov 10 21:47:48 <snip> kernel: cdc_acm: USB Abstract Control Model driver for USB modems and ISDN adapters
Nov 10 21:48:17 <snip> kernel: cdc_acm 4-2:1.0: ttyACM0: USB ACM device

With my modified kernel module, the modem works (at least for the purposes I need it).

I will attach the patch once this bug has been opened. I don't know how to submit a patch for formal consideration so need some help on that front... Neither am I sure how to figure out exactly if this was already addressed in an upstream fix.

ProblemType: Bug
DistroRelease: Ubuntu 16.04
Package: linux-image-4.4.0-138-generic 4.4.0-138.164
ProcVersionSignature: Ubuntu 4.4.0-138.164-generic 4.4.155
Uname: Linux 4.4.0-138-generic x86_64
ApportVersion: 2.20.1-0ubuntu2.18
Architecture: amd64
AudioDevicesInUse:
 USER PID ACCESS COMMAND
 /dev/snd/controlC1: jacobsma 4053 F.... pulseaudio
 /dev/snd/controlC0: jacobsma 4053 F.... pulseaudio
 /dev/snd/controlC2: jacobsma 4053 F.... pulseaudio
CurrentDesktop: XFCE
Date: Sun Nov 11 11:20:40 2018
HibernationDevice: RESUME=UUID=899fa33b-30cb-41f4-b709-557ad528a5bd
InstallationDate: Installed on 2016-03-06 (979 days ago)
InstallationMedia: Xubuntu 14.04.4 LTS "Trusty Tahr" - Release amd64 (20160217.1)
MachineType: System manufacturer System Product Name
ProcFB: 0 nouveaufb
ProcKernelCmdLine: BOOT_IMAGE=/boot/vmlinuz-4.4.0-138-generic root=UUID=70a8bdf6-e697-4112-b584-4b650002555d ro
RelatedPackageVersions:
 linux-restricted-modules-4.4.0-138-generic N/A
 linux-backports-modules-4.4.0-138-generic N/A
 linux-firmware 1.157.20
RfKill:

SourcePackage: linux
UpgradeStatus: Upgraded to xenial on 2018-03-16 (240 days ago)
dmi.bios.date: 09/11/2014
dmi.bios.vendor: American Megatrends Inc.
dmi.bios.version: 1701
dmi.board.asset.tag: To Be Filled By O.E.M.
dmi.board.name: M5A78L-M LX PLUS
dmi.board.vendor: ASUSTeK Computer INC.
dmi.board.version: Rev X.0x
dmi.chassis.asset.tag: Asset-1234567890
dmi.chassis.type: 3
dmi.chassis.vendor: Chassis Manufacture
dmi.chassis.version: Chassis Version
dmi.modalias: dmi:bvnAmericanMegatrendsInc.:bvr1701:bd09/11/2014:svnSystemmanufacturer:pnSystemProductName:pvrSystemVersion:rvnASUSTeKComputerINC.:rnM5A78L-MLXPLUS:rvrRevX.0x:cvnChassisManufacture:ct3:cvrChassisVersion:
dmi.product.name: System Product Name
dmi.product.version: System Version
dmi.sys.vendor: System manufacturer

Revision history for this message
Maarten Jacobs (maarten256) wrote :
Revision history for this message
Ubuntu Kernel Bot (ubuntu-kernel-bot) wrote : Status changed to Confirmed

This change was made by a bot.

Changed in linux (Ubuntu):
status: New → Confirmed
Revision history for this message
Maarten Jacobs (maarten256) wrote :

The change I applied to cdc-acm.c is as follows:

--- cdc-acm.orig.c 2018-11-11 11:31:18.754382981 -0500
+++ cdc-acm.c 2018-11-10 17:32:29.802278377 -0500
@@ -1713,6 +1713,9 @@
  { USB_DEVICE(0x0572, 0x1324), /* Conexant USB MODEM RD02-D400 */
  .driver_info = NO_UNION_NORMAL, /* has no union descriptor */
  },
+ { USB_DEVICE(0x0572, 0x1349), /* Hiro (Conexant) USB MODEM H50228 */
+ .driver_info = NO_UNION_NORMAL, /* has no union descriptor */
+ },
  { USB_DEVICE(0x0572, 0x1328), /* Shiro / Aztech USB MODEM UM-3100 */
  .driver_info = NO_UNION_NORMAL, /* has no union descriptor */
  },

Revision history for this message
Joseph Salisbury (jsalisbury) wrote :

Thank you for providing a patch, and making Ubuntu better.

Can you provide some information on the status of the patch with regards to getting it merged upstream? Has it been sent upstream, what sort of feedback has it received, is it getting applied to a subsystem maintainer's tree, etc?

People affected by this bug are probably wondering why the kernel team doesn't just apply the patch and fix it. The reason is that the kernel team is reluctant (not opposed) to apply any patch to a stable kernel that is not from upstream. Applying patches that don't come from upstream add greatly to the support of the kernel as other upstream patches may touch the same area as the non-upstream patch and may prevent them from applying cleanly.

To submit your patch, send your patch with the detailed description/changelog and your Signoff (ending with Signed-off-by: your name <email>), to the emails listed from ./scripts/get_maintainer.pl drivers/SUBSYSTEM-DETAILS (the get_maintainer.pl is from the kernel sources). Once you have sent the patch upstream and it's accepted, please drop a note here so that we can cherry-pick/include the patch into Ubuntu kernel.

Changed in linux (Ubuntu):
importance: Undecided → Medium
status: Confirmed → Triaged
tags: added: kernel-da-key
tags: added: kernle-da-key
removed: kernel-da-key
Revision history for this message
Maarten Jacobs (maarten256) wrote :

Hello Joseph,

To keep things in sync here (and to make sure the bug doesn't expire due to inactivity):

1. I worked my way through the process for submitting a kernel patch. (Not for the faint hearted I might add ;))
2. The patch has been submitted - now I have to wait and see if there's anybody listening.

Revision history for this message
Maarten Jacobs (maarten256) wrote :

My kernel patch was accepted this morning (very quick!!). Per the notification received:

"The patch will show up in the next release of the linux-next tree
(usually sometime within the next 24 hours during the week.)

The patch will hopefully also be merged in Linus's tree for the
next -rc kernel release."

Revision history for this message
Maarten Jacobs (maarten256) wrote :

The patch was picked up in the stable kernel (https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/), and added to 4.19.5, 4.14.84, 4.9.141, 4.4.165, and 4.20-rc4.

Changed in linux (Ubuntu):
status: Triaged → Fix Released
Revision history for this message
Maarten Jacobs (maarten256) wrote :

Hello Kai-Heng,

I see how the fix I provided is included in the 4.4.0, however I don't see it (yet) in 4.15.0. Is there something I need to do to get this fix into 4.15.0, or will it eventually percolate through by itself?

Thanks!

Brad Figg (brad-figg)
tags: added: cscc
To post a comment you must log in.
This report contains Public information  
Everyone can see this information.

Other bug subscribers

Remote bug watches

Bug watches keep track of this bug in other bug trackers.