zephyr: Problem with PPP + GSM MUX with SIMCOM7600E

Describe the bug I am trying out the GSM PPP driver and GSM MUX with two SIMCOM modems: SIM868 and SIM7600E. It works as a charm on SIM868 but I am having problems with SIM7600E.

When just using MODEM_GSM_PPP=y and GSM_MUX=n it works fine

When enabling GSM_MUX, AT commands works fine and I can run ping in parallel, so network connectivity works to some extent…

My problem is when I start something more demanding on PPP (such as a lwm2m client, or a dns-lookup) the modem halts and then reboots. The same thing happens even if I do not use any AT commands in parallel with the client.

When dumping the logs I do not see anything that is obviously wrong. Is there anyone here who have experience with the GSM MUX and can advise on how to debug this issue?

I have been in contact with the modem vendor and they claim muxing should work in general.

To Reproduce Steps to reproduce the behavior:

Use the LWM2M client sample code

This is the prj.conf I used:

CONFIG_NET_SHELL=y
CONFIG_LOG=y
CONFIG_CONSOLE=y
CONFIG_LOG_DEFAULT_LEVEL=4
CONFIG_LWM2M_LOG_LEVEL_DBG=y
CONFIG_NET_LOG=y

CONFIG_NET_IPV6=n
CONFIG_NET_CONFIG_NEED_IPV4=y
CONFIG_NET_CONNECTION_MANAGER=y
CONFIG_NETWORKING=y

CONFIG_LWM2M=y

CONFIG_MODEM=y
CONFIG_NET_PPP=y
CONFIG_NET_L2_PPP=y
CONFIG_NET_L2_PPP_OPTION_MRU_NEG=y
CONFIG_MODEM_GSM_PPP=y
CONFIG_MODEM_GSM_UART_NAME="UART_1"
CONFIG_MODEM_GSM_APN="m2m.tele2.com"
CONFIG_DEVICE_POWER_MANAGEMENT=y

CONFIG_GSM_MUX=y
CONFIG_MODEM_GSM_SIMCOM=y
CONFIG_MAIN_STACK_SIZE=2048

Impact This is a showstopper for my client

Logs and console output I do not see anything in the logs that looks out of the ordinary. Would appreciate tips on what data to look for.

Environment (please complete the following information):

  • OS: Linux, MacOS
  • Toolchain: arm-none-eabi
  • Commits:
     - name: zephyr
       remote: upstream
       path: zephyr
       revision: 98bcc51b0925a92db28f127d08b842b1d609bce8
       clone-depth: 10
       west-commands: scripts/west-commands.yml
    
     - name: hal_nordic
       revision: 00580f43b9d48f2079d611ce12f0fbc78d3040f1
       path: modules/hal/nordic
    
     - name: cmsis
       revision: 542b2296e6d515b265e25c6b7208e8fea3014f90
       path: modules/hal/cmsis
    
     - name: segger
       revision: 6fcf61606d6012d2c44129edc033f59331e268bc
       path: modules/debug/segger
    

About this issue

  • Original URL
  • State: closed
  • Created 4 years ago
  • Comments: 25 (23 by maintainers)

Most upvoted comments

For anyone struggling with SIM7600 I have the advice. Check if the power source for SIM7600 is good enough before you spend hours on tshooting…

Currently the modem code in drivers/modem/modem_iface_uart.c:modem_iface_uart_write() is using polling interface. Perhaps it might be possible to use the interrupt driver API instead, would require some changes to modem code and more testing. Patches are welcome if you want to try that route.

You probably know this but just in case, the https://simcom.ee/documents/ contains documentation for various SIMCOM modems.