"Cannot communicate via USB with HL7588 Module"

We have problems using the HL7588 module, when connecting a modem to our device via usb, it is defined as ttyUSB0 and there are no other ttyacm devices, although we assume that there should be a port for configuring the modem through AT commands. We assume that this can be solved by flashing the modem. However, in our case we have the module soldered on the board and we do not have access to the usb interface from the outside. The question is how can I reflash a module from Linux. And “or” how to run it properly without being able to control the power on. In our solution, our processor starts simultaneously with the module (VBATT is powered up automatically with the processor).

Below is the readout we are seeing:
[1438128.119727] usb 1-6: New USB device found, idVendor=8087, idProduct=0716 [1438128.119729] usb 1-6: New USB device strings: Mfr=0, Product=0, SerialNumber=0 [1438128.125256] usb_serial_simple 1-6:1.0: flashloader converter detected [1438128.125330] usb 1-6: flashloader converter now attached to ttyUSB0.

Hi @will1,
You can reflash the module by using dwl (which without being able to control power on) as procedure below (The steps were performed on HL7692 but they are same. You can follow it)

  • Download HL7588 Xmodem File here. Store it on your PC
  • Download teraterm file here .
  • Extract zip file then open ttermpro.exe
  • Open serial port to enter AT command
  • Send : AT+WDSI=4095
  • Define the size of dwl file: at+wdsd=20304768. (This number is the size of file. You can see below)

  • Select then . Select rev.dwl and 1K Xmodem, then click Send. It starts transferring the file. It takes about 15 minutes to complete transfer process
    2

OK
+WDSI: 3 /// It means a package is ready to install
at+wdsc?
+WDSC: 0,0
+WDSC: 1,0
+WDSC: 2,1
+WDSC: 3,0
+WDSC: 4,15,60,240,960,2880,10080,10080

OK

  • Start install FW. When module responses WDSI:14. Teratern will be disconnected. Go set up>Serial port>Open it again

at+wdsr=4
OK

  • The firmware is upgraded successfully

Please share any concerns you have. Help us tick Solution if the answers help resolve your problem
Thanks

Hello @ Vianney

The above procedure seems to be for Windows. We have an embedded linux device. Do you have an analogous procedure for linux?
Thanks
Will

Hi @will1,
Pls follow the attached1002045_NL-SW-LTE-S7x_Linux-Firmware-Update-Guide.pdf (470.0 KB) for Linux Firmware Update Procedure. It supports using USB and UART
Thanks

@Vianney
This does not solve our problem. We cannot use AT commands, our modem does not respond to requests via usb, and the problem is that we see only one usb tty, although several usb ACMs are assumed and we cannot understand what the problem is.

We run the commands:

screen /dev/ttyUSB0 115200

+++
AT
AT0 

and another, but the modem does not give an answer.

Also, we dont believe this to be a hardware issue as all voltage behavior is correct at reset, VBATT, and power_on pins, and overall current draw to our device increases by around 70mA as expected after our start script.

Attached are dmesg output, the modem start script, and our linux kernel config file.
Thanks so much,
Will

config.txt (107.3 KB)
lte_usberror.txt (31.5 KB)
HL7588_startscript.txt (506 Bytes)

Hi @will1,

  • Method #1: Did you see ttyUSB0 in /dev/? If yes, it’s strange. There is different behavior in my site, ttyUSB0 just appears when I connect HL7588 to Linux via UART connection. Like screenshot

    Several ACMs will show when I connect HL7800 to Linux via USB connection. Like screenshot

    Can you confirm the connection that you are using?
  • Method #2: I found some relating cases which have the same issue. Hopefully, It can help resolve your problem
    Troubleshooting Linux
    If Linux does not create devices, check for the kernel module:
    # lsmod | grep cdc_acm
    If entries aren’t found, load the kernel module with root privileges:
    # modprobe cdc-acm
    If this returns an error response, such as # FATAL: Module cdc-acm not found, the kernel module is not on your system. You will need to build the driver.
    Building a Linux Driver
    If your system is missing the Linux driver:
  1. Retrieve the appropriate kernel source code version for your system. This should be in your OS
    distribution package. Unpack it.
  2. In its root directory type: # make menuconfig
  3. Configure the kernel according to your system configuration,
  4. Browse to menu Device Driver > USB Support and select USB Modem (CDC ACM) support.
  5. To start the build once configured, type # make
    The kernel module cdc-acm.ko is in the directory drivers/usb/class. If the kernel was built previously, compile the
    module by typing:
    # make M=drivers/usb/class
    To load the module use modprobe or insmod.

Thanks

1 Like

@Vianney
Thanks for your help in this tricky issue.

The usb_cdc driver is installed, we can see it in the dmesg output of our device. And one more issue, we observe a periodic restart of the modem, this is again evident from the output of dmesg. Our core version:

Linux am33x-nimbus-hub 4.14.108+ # 10 SMP PREEMPT Tue May 12 23:20:28 +05 2020 armv7l GNU / Linux

We collect it ourselves and the config file was attached in the previous message. Unfortunately, we still cannot understand what the problem is.

Additional files: the output of the lsusb -v command and the output of dmesg with a periodic restart of the modem we put in this message .

root@am33x-nimbus-hub:~# dmesg | grep cdc
[    4.580813] usbcore: registered new interface driver cdc_ether
[    4.580851] usbcore: registered new interface driver cdc_eem
[    4.581005] usbcore: registered new interface driver cdc_subset
[    4.581233] usbcore: registered new interface driver cdc_ncm
[    4.581274] usbcore: registered new interface driver huawei_cdc_ncm
[    4.581358] usbcore: registered new interface driver cdc_mbim
[    4.582507] usbcore: registered new interface driver cdc_acm
[    4.582513] cdc_acm: USB Abstract Control Model driver for USB modems and ISDN adapters
[    4.582625] usbcore: registered new interface driver cdc_wdm
[    4.871545] tilcdc 4830e000.lcdc: bound 0-0070 (ops tda998x_ops)
[    4.872804] [drm] Initialized tilcdc 1.0.0 20121205 for 4830e000.lcdc on minor 0

dmesg output (restart issue):

[   26.721981] IPv6: ADDRCONF(NETDEV_UP): eth0: link is not ready
[  228.771443] usb 1-1: new high-speed USB device number 2 using musb-hdrc
[  228.920654] usb 1-1: New USB device found, idVendor=8087, idProduct=0716
[  228.920672] usb 1-1: New USB device strings: Mfr=0, Product=0, SerialNumber=0
[  228.925220] usb_serial_simple 1-1:1.0: flashloader converter detected
[  228.925807] usb 1-1: flashloader converter now attached to ttyUSB0
[  234.961807] usb 1-1: USB disconnect, device number 2
[  234.962564] flashloader ttyUSB0: flashloader converter now disconnected from ttyUSB0
[  234.962659] usb_serial_simple 1-1:1.0: device disconnected
[  235.527441] usb 1-1: new high-speed USB device number 3 using musb-hdrc
[  235.676656] usb 1-1: New USB device found, idVendor=8087, idProduct=0716
[  235.676672] usb 1-1: New USB device strings: Mfr=0, Product=0, SerialNumber=0
[  235.678379] usb_serial_simple 1-1:1.0: flashloader converter detected
[  235.678932] usb 1-1: flashloader converter now attached to ttyUSB0
[  330.718625] usb 1-1: USB disconnect, device number 3
[  330.725152] flashloader ttyUSB0: flashloader converter now disconnected from ttyUSB0
[  330.725312] usb_serial_simple 1-1:1.0: device disconnected
[  331.287445] usb 1-1: new high-speed USB device number 4 using musb-hdrc
[  331.436655] usb 1-1: New USB device found, idVendor=8087, idProduct=0716
[  331.436672] usb 1-1: New USB device strings: Mfr=0, Product=0, SerialNumber=0
[  331.438400] usb_serial_simple 1-1:1.0: flashloader converter detected
[  331.438957] usb 1-1: flashloader converter now attached to ttyUSB0
[  426.478409] usb 1-1: USB disconnect, device number 4
[  426.485017] flashloader ttyUSB0: flashloader converter now disconnected from ttyUSB0
[  426.485176] usb_serial_simple 1-1:1.0: device disconnected
[  427.047449] usb 1-1: new high-speed USB device number 5 using musb-hdrc
[  427.196657] usb 1-1: New USB device found, idVendor=8087, idProduct=0716
[  427.196673] usb 1-1: New USB device strings: Mfr=0, Product=0, SerialNumber=0
[  427.201041] usb_serial_simple 1-1:1.0: flashloader converter detected
[  427.201620] usb 1-1: flashloader converter now attached to ttyUSB0
[  522.238176] usb 1-1: USB disconnect, device number 5
[  522.244726] flashloader ttyUSB0: flashloader converter now disconnected from ttyUSB0
[  522.244880] usb_serial_simple 1-1:1.0: device disconnected
[  522.807446] usb 1-1: new high-speed USB device number 6 using musb-hdrc
[  522.956663] usb 1-1: New USB device found, idVendor=8087, idProduct=0716
[  522.956680] usb 1-1: New USB device strings: Mfr=0, Product=0, SerialNumber=0
[  522.958388] usb_serial_simple 1-1:1.0: flashloader converter detected
[  522.958945] usb 1-1: flashloader converter now attached to ttyUSB0

USB Output (after start script)

:root@am33x-nimbus-hub:~# lsusb -v

Bus 002 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Device Descriptor:
  bLength                18
  bDescriptorType         1
  bcdUSB               2.00
  bDeviceClass            9 Hub
  bDeviceSubClass         0
  bDeviceProtocol         1 Single TT
  bMaxPacketSize0        64
  idVendor           0x1d6b Linux Foundation
  idProduct          0x0002 2.0 root hub
  bcdDevice            4.14
  iManufacturer           3 Linux 4.14.108+ musb-hcd
  iProduct                2 MUSB HDRC host driver
  iSerial                 1 musb-hdrc.1
  bNumConfigurations      1
  Configuration Descriptor:
    bLength                 9
    bDescriptorType         2
    wTotalLength       0x0019
    bNumInterfaces          1
    bConfigurationValue     1
    iConfiguration          0
    bmAttributes         0xe0
      Self Powered
      Remote Wakeup
    MaxPower                0mA
    Interface Descriptor:
      bLength                 9
      bDescriptorType         4
      bInterfaceNumber        0
      bAlternateSetting       0
      bNumEndpoints           1
      bInterfaceClass         9 Hub
      bInterfaceSubClass      0
      bInterfaceProtocol      0 Full speed (or root) hub
      iInterface              0
      Endpoint Descriptor:
        bLength                 7
        bDescriptorType         5
        bEndpointAddress     0x81  EP 1 IN
        bmAttributes            3
          Transfer Type            Interrupt
          Synch Type               None
          Usage Type               Data
        wMaxPacketSize     0x0004  1x 4 bytes
        bInterval              12
Hub Descriptor:
  bLength               9
  bDescriptorType      41
  nNbrPorts             1
  wHubCharacteristic 0x0011
    Per-port power switching
    No overcurrent protection
    TT think time 8 FS bits
  bPwrOn2PwrGood        5 * 2 milli seconds
  bHubContrCurrent      0 milli Ampere
  DeviceRemovable    0x02
  PortPwrCtrlMask    0xff
 Hub Port Status:
   Port 1: 0000.0104 power suspend
can't get device qualifier: Resource temporarily unavailable
can't get debug descriptor: Resource temporarily unavailable
Device Status:     0x0001
  Self Powered

Bus 001 Device 003: ID 8087:0716 Intel Corp.
Device Descriptor:
  bLength                18
  bDescriptorType         1
  bcdUSB               2.00
  bDeviceClass            2 Communications
  bDeviceSubClass         0
  bDeviceProtocol         0
  bMaxPacketSize0        64
  idVendor           0x8087 Intel Corp.
  idProduct          0x0716
  bcdDevice            0.00
  iManufacturer           0
  iProduct                0
  iSerial                 0
  bNumConfigurations      1
  Configuration Descriptor:
    bLength                 9
    bDescriptorType         2
    wTotalLength       0x002e
    bNumInterfaces          1
    bConfigurationValue     1
    iConfiguration          0
    bmAttributes         0xc0
      Self Powered
    MaxPower              500mA
    ** UNRECOGNIZED:  05 24 00 10 01
    ** UNRECOGNIZED:  05 24 01 00 00
    ** UNRECOGNIZED:  04 24 02 02
    Interface Descriptor:
      bLength                 9
      bDescriptorType         4
      bInterfaceNumber        0
      bAlternateSetting       0
      bNumEndpoints           2
      bInterfaceClass        10 CDC Data
      bInterfaceSubClass      0
      bInterfaceProtocol      0
      iInterface              0
      Endpoint Descriptor:
        bLength                 7
        bDescriptorType         5
        bEndpointAddress     0x83  EP 3 IN
        bmAttributes            2
          Transfer Type            Bulk
          Synch Type               None
          Usage Type               Data
        wMaxPacketSize     0x0200  1x 512 bytes
        bInterval               0
      Endpoint Descriptor:
        bLength                 7
        bDescriptorType         5
        bEndpointAddress     0x02  EP 2 OUT
        bmAttributes            2
          Transfer Type            Bulk
          Synch Type               None
          Usage Type               Data
        wMaxPacketSize     0x0200  1x 512 bytes
        bInterval               0
Device Qualifier (for other device speed):
  bLength                10
  bDescriptorType         6
  bcdUSB               2.00
  bDeviceClass            2 Communications
  bDeviceSubClass         0
  bDeviceProtocol         0
  bMaxPacketSize0        64
  bNumConfigurations      1
can't get debug descriptor: Resource temporarily unavailable
Device Status:     0x0001
  Self Powered

Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Device Descriptor:
  bLength                18
  bDescriptorType         1
  bcdUSB               2.00
  bDeviceClass            9 Hub
  bDeviceSubClass         0
  bDeviceProtocol         1 Single TT
  bMaxPacketSize0        64
  idVendor           0x1d6b Linux Foundation
  idProduct          0x0002 2.0 root hub
  bcdDevice            4.14
  iManufacturer           3 Linux 4.14.108+ musb-hcd
  iProduct                2 MUSB HDRC host driver
  iSerial                 1 musb-hdrc.0
  bNumConfigurations      1
  Configuration Descriptor:
    bLength                 9
    bDescriptorType         2
    wTotalLength       0x0019
    bNumInterfaces          1
    bConfigurationValue     1
    iConfiguration          0
    bmAttributes         0xe0
      Self Powered
      Remote Wakeup
    MaxPower                0mA
    Interface Descriptor:
      bLength                 9
      bDescriptorType         4
      bInterfaceNumber        0
      bAlternateSetting       0
      bNumEndpoints           1
      bInterfaceClass         9 Hub
      bInterfaceSubClass      0
      bInterfaceProtocol      0 Full speed (or root) hub
      iInterface              0
      Endpoint Descriptor:
        bLength                 7
        bDescriptorType         5
        bEndpointAddress     0x81  EP 1 IN
        bmAttributes            3
          Transfer Type            Interrupt
          Synch Type               None
          Usage Type               Data
        wMaxPacketSize     0x0004  1x 4 bytes
        bInterval              12
Hub Descriptor:
  bLength               9
  bDescriptorType      41
  nNbrPorts             1
  wHubCharacteristic 0x0011
    Per-port power switching
    No overcurrent protection
    TT think time 8 FS bits
  bPwrOn2PwrGood        5 * 2 milli seconds
  bHubContrCurrent      0 milli Ampere
  DeviceRemovable    0x02
  PortPwrCtrlMask    0xff
 Hub Port Status:
   Port 1: 0000.0507 highspeed power suspend enable connect
can't get device qualifier: Resource temporarily unavailable
can't get debug descriptor: Resource temporarily unavailable
Device Status:     0x0001
  Self Powered
root@am33x-nimbus-hub:~# lsusb
Bus 002 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 001 Device 003: ID 8087:0716 Intel Corp.
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub

Hi @will1,
Are you using UART or USB connection to your device? Some socket boards support UART port looks like an USB port. You might take an image capturing the port in board which HL7588 is connected to your device. Although the HL75xx support UART connections, it is highly recommended that a USB connection be used instead as UART may not be enabled by default in the firmware. Below is the example


Thanks

@Vianney

We are using usb as evident by attached schematic.

Please advise on where to go from here. We have provided clear explanation and documented extensively since 9 May but have not gotten anywhere. This is a critical aspect of our product. Can we please get a hold of technical support directly?
Thanks

Hi will1

Please refer to page 28 in AirPrime_HL7548_and_HL7588x_Product_Technical_Specification_Rev14_0.pdf

Note: When a USB supply is not available, connect USB_VBUS to VBATT to supply the USB interface.
USB_VBUS will have a voltage range of 3.3V to 4.5V when connected to VBATT.

You can get the AirPrime_HL7548_and_HL7588x_Product_Technical_Specification_Rev14_0.pdf at here.
https://source.sierrawireless.com/resources/airprime/hardware_specs_user_guides/airprime_hl7548_and_hl7588x_product_technical_specification/

The ttyACM ports will show when I connect HL7588 to Linux via USB connection.

dmesg output:

[ 88.561656] usb 1-1: new high-speed USB device number 2 using ehci-pci
[ 88.649524] usb 1-1: New USB device found, idVendor=1519, idProduct=0443, bcdDevice=17.29
[ 88.649526] usb 1-1: New USB device strings: Mfr=0, Product=0, SerialNumber=1
[ 88.649527] usb 1-1: SerialNumber: 354610060035829
[ 89.918256] cdc_ncm 1-1:1.6: MAC-Address: 00:00:11:12:13:14
[ 89.918258] cdc_ncm 1-1:1.6: setting rx_max = 16384
[ 89.920820] cdc_ncm 1-1:1.6 wwan0: register ‘cdc_ncm’ at usb-0000:02:03.0-1, Mobile Broadband Network Device (NO ARP), 00:00:11:12:13:14
[ 89.923188] cdc_acm 1-1:1.0: ttyACM0: USB ACM device
[ 89.924347] cdc_acm 1-1:1.2: ttyACM1: USB ACM device
[ 89.975056] cdc_ncm 1-1:1.8: MAC-Address: 00:00:11:12:13:16
[ 89.975059] cdc_ncm 1-1:1.8: setting rx_max = 16384
[ 89.979422] cdc_ncm 1-1:1.8 wwan1: register ‘cdc_ncm’ at usb-0000:02:03.0-1, Mobile Broadband Network Device (NO ARP), 00:00:11:12:13:16
[ 89.979942] cdc_acm 1-1:1.4: ttyACM2: USB ACM device
[ 89.981198] usbcore: registered new interface driver cdc_acm
[ 89.981198] cdc_acm: USB Abstract Control Model driver for USB modems and ISDN adapters
[ 90.033906] cdc_ncm 1-1:1.10: MAC-Address: 00:00:11:12:13:18
[ 90.033908] cdc_ncm 1-1:1.10: setting rx_max = 16384
[ 90.035838] cdc_ncm 1-1:1.10 wwan2: register ‘cdc_ncm’ at usb-0000:02:03.0-1, Mobile Broadband Network Device (NO ARP), 00:00:11:12:13:18
[ 90.083860] cdc_ncm 1-1:1.12: MAC-Address: 00:00:11:12:13:1a
[ 90.083862] cdc_ncm 1-1:1.12: setting rx_max = 16384
[ 90.086683] cdc_ncm 1-1:1.12 wwan3: register ‘cdc_ncm’ at usb-0000:02:03.0-1, Mobile Broadband Network Device (NO ARP), 00:00:11:12:13:1a
[ 90.088017] usbcore: registered new interface driver cdc_ncm
[ 90.093343] usbcore: registered new interface driver cdc_wdm
[ 90.098165] usbcore: registered new interface driver cdc_mbim
[ 90.181021] cdc_ncm 1-1:1.8 wwx000011121316: renamed from wwan1
[ 90.188760] cdc_ncm 1-1:1.6 wwx000011121314: renamed from wwan0
[ 90.192398] cdc_ncm 1-1:1.10 wwx000011121318: renamed from wwan2
[ 90.201650] cdc_ncm 1-1:1.12 wwx00001112131a: renamed from wwan3
[ 92.825598] rfkill: input handler disabled