HL7812 USB Descriptors

I have an issue where the HL7812 reports bInterfaceProtocol 0 None on the USB interfaces.
This is not supported by the cdc_acm driver in our legacy Debian Wheezy products.

If we have to, I can go down patching the kernel - but would prefer not to. If it is an oversight in the module, could it be corrected.

More Background
With the sunset of 3G, I am evaluating the suitability of the HL7812 to field upgrade products.

We opted to use the snap-in socket for just this eventuality. Originally using the HL8548, we have already performed a successful migration to the HL7692 but with the EOL of that module we have to migrate to another module.

We connect the modem to an applications processor over USB. On legacy products, this processor is running an older version of Debian Wheezy (as this is the only manufacturer supported version for that IC\module).

Enabling the USB port on the HL7812 it fails to create the /dev/ttyACMx ports.

Comparing with a HL8548:

HL7812

      bInterfaceClass         2 Communications
      bInterfaceSubClass      2 Abstract (modem)
      bInterfaceProtocol      0 None
      iInterface              0

HL8548

      bFunctionClass          2 Communications
      bFunctionSubClass       2 Abstract (modem)
      bFunctionProtocol       1 AT-commands (v.25ter)
      iFunction               4 CDC ACM

@mark.bewley

So there is a difference between the Intel (and Qualcomm) cat 1+ based units and the Altair based ones. You can only have either the UART enabled OR the USB, both cannot run at the same time.

If you send the at+kusbcomp=1 command over UART it will enable the USB on the next power up but your AT command access to the UART will be off and it will be diverted to the USB. Then when on USB you can switch it back again using at+kusbcomp=0. The secret is to make sure you have USB access, there have been customers who used the command but did not have USB access, if you do this there is no way to switch it back so be careful.

Regards

Matt

Thanks for that. Yes, we discovered the UART \ USB behaviour.

Most of our [deployed] product supports USB only (some early batches had the UART connectivity, but this was not fitted\dropped from the design).

We have used the at+kusbcomp=1 command. The USB device is detected by Linux, but it isn’t selected the cdc_acm driver.

@mark.bewley

No sure what the issue is, its working with my Ubuntu laptop correctly as per the below.
HL7812 USB connection to Ubuntu host.txt (17.4 KB)

Newer version of CDC-ACM drivers?

Regards

Matt

Yes, using a lot older version of Linux (on embedded device).
HL7812 on Debian Wheezy.txt

Just checking the latest source code (for Ubuntu) it has:

/* control interfaces without any protocol set */
	{ USB_INTERFACE_INFO(USB_CLASS_COMM, USB_CDC_SUBCLASS_ACM,
		USB_CDC_PROTO_NONE) },

This isn’t in the older Debian Wheezy driver.

Modifying the kernel may be our only option - but a pain to manage this deployment for field engineers.

Wasn’t sure if this is something that could be addressed in modem FW, so we don’t have to do a kernel update.

To complete this thread, I have been able to workaround patching the kernel.

I have been able to compile the patched cdc_acm.ko and include it in our application package (that we can distribute OTA to our products).
Then use modprobe to reload the driver from disk.