Skip to content

Support use general modem (e.g SIM800 with CMUX) in the driver cellular modem #78269

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
chihosin opened this issue Sep 11, 2024 · 22 comments
Open
Assignees
Labels
area: Modem Drivers Enhancement Changes/Updates/Additions to existing features

Comments

@chihosin
Copy link

Is your enhancement proposal related to a problem? Please describe.
Support use general modem (e.g SIM800 with CMUX) in the driver cellular modem.

Describe the solution you'd like
In version 3.6, the gsm_modem driver worked correctly, but now it is not functioning properly with the cellular_modem. I tried adding a code snippet based on the SIM7080 to support SIM800’s initialization commands, but even after removing the PAP authentication part, it still fails to connect to the network.

Describe alternatives you've considered

Additional context
Here is the log after running the modified code.

[00:00:12.689,000] <dbg> modem_chat: modem_chat_script_next: sending: AT+CGDCONT=1,"IP",""
[00:00:12.690,000] <dbg> modem_cmux: modem_cmux_log_frame: tx ch:1 cr:1 pf:0 type:UIH dlen:20
[00:00:12.690,000] <dbg> modem_cmux: modem_cmux_log_frame: data:
                                     41 54 2b 43 47 44 43 4f  4e 54 3d 31 2c 22 49 50 |AT+CGDCO NT=1,"IP
                                     22 2c 22 22                                      |",""             
[00:00:12.690,000] <dbg> modem_cmux: modem_cmux_log_frame: tx ch:1 cr:1 pf:0 type:UIH dlen:1
[00:00:12.690,000] <dbg> modem_cmux: modem_cmux_log_frame: data:
                                     0d                                               |.                
[00:00:12.721,000] <dbg> modem_cmux: modem_cmux_log_frame: rcvd ch:1 cr:0 pf:0 type:UIH dlen:6
[00:00:12.721,000] <dbg> modem_cmux: modem_cmux_log_frame: data:
                                     0d 0a 4f 4b 0d 0a                                |..OK..           
[00:00:12.722,000] <dbg> modem_chat: modem_chat_log_received_command: OK
[00:00:12.722,000] <dbg> modem_chat: modem_chat_script_next: simcom_sim7080_dial_chat_script: step: 2
[00:00:12.722,000] <dbg> modem_chat: modem_chat_script_next: sending: ATD*99#
[00:00:12.722,000] <dbg> modem_cmux: modem_cmux_log_frame: tx ch:1 cr:1 pf:0 type:UIH dlen:7
[00:00:12.722,000] <dbg> modem_cmux: modem_cmux_log_frame: data:
                                     41 54 44 2a 39 39 23                             |ATD*99#          
[00:00:12.722,000] <dbg> modem_cmux: modem_cmux_log_frame: tx ch:1 cr:1 pf:0 type:UIH dlen:1
[00:00:12.722,000] <dbg> modem_cmux: modem_cmux_log_frame: data:
                                     0d                                               |.                
[00:00:12.751,000] <dbg> modem_cmux: modem_cmux_log_frame: rcvd ch:1 cr:0 pf:0 type:UIH dlen:11
[00:00:12.751,000] <dbg> modem_cmux: modem_cmux_log_frame: data:
                                     0d 0a 43 4f 4e 4e 45 43  54 0d 0a                |..CONNEC T..     
[00:00:12.751,000] <dbg> modem_chat: modem_chat_log_received_command: CONNECT
[00:00:12.751,000] <dbg> modem_chat: modem_chat_script_stop: simcom_sim7080_dial_chat_script: complete
[00:00:12.751,000] <dbg> modem_cellular: modem_cellular_log_event: event script success
[00:00:12.752,000] <dbg> modem_cellular: modem_cellular_log_state_changed: switch from run dial script to await registered
[00:00:13.089,000] <dbg> modem_cmux: modem_cmux_log_frame: rcvd ch:2 cr:0 pf:0 type:UIH dlen:24
[00:00:13.089,000] <dbg> modem_cmux: modem_cmux_log_frame: data:
                                     0d 0a 2b 43 47 45 56 3a  20 45 50 53 20 50 44 4e |..+CGEV:  EPS PDN
                                     20 41 43 54 20 38 0d 0a                          | ACT 8..         
[00:00:13.090,000] <dbg> modem_chat: modem_chat_on_unknown_command_received: +CGEV: EPS PDN ACT 8
[00:00:13.090,000] <dbg> modem_cmux: modem_cmux_log_frame: rcvd ch:3 cr:0 pf:0 type:UIH dlen:24
[00:00:13.090,000] <dbg> modem_cmux: modem_cmux_log_frame: data:
                                     0d 0a 2b 43 47 45 56 3a  20 45 50 53 20 50 44 4e |..+CGEV:  EPS PDN
                                     20 41 43 54 20 38 0d 0a                          | ACT 8..         
[00:00:13.090,000] <dbg> modem_chat: modem_chat_on_unknown_command_received: +CGEV: EPS PDN ACT 8
[00:00:14.753,000] <dbg> modem_cellular: modem_cellular_log_event: event timeout
[00:00:14.753,000] <dbg> modem_chat: modem_chat_script_start: running script: simcom_sim7080_periodic_chat_script
[00:00:14.753,000] <dbg> modem_chat: modem_chat_script_next: simcom_sim7080_periodic_chat_script: step: 0
[00:00:14.753,000] <dbg> modem_chat: modem_chat_script_next: sending: AT+CREG?
[00:00:14.753,000] <dbg> modem_cmux: modem_cmux_log_frame: tx ch:2 cr:1 pf:0 type:UIH dlen:8
[00:00:14.753,000] <dbg> modem_cmux: modem_cmux_log_frame: data:
                                     41 54 2b 43 52 45 47 3f                          |AT+CREG?         
[00:00:14.754,000] <dbg> modem_cmux: modem_cmux_log_frame: tx ch:2 cr:1 pf:0 type:UIH dlen:1
[00:00:14.754,000] <dbg> modem_cmux: modem_cmux_log_frame: data:
                                     0d                                               |.                
[00:00:14.780,000] <dbg> modem_cmux: modem_cmux_log_frame: rcvd ch:2 cr:0 pf:0 type:UIH dlen:8
[00:00:14.780,000] <dbg> modem_cmux: modem_cmux_log_frame: data:
                                     41 54 2b 43 52 45 47 3f                          |AT+CREG?         
[00:00:14.780,000] <dbg> modem_cmux: modem_cmux_log_frame: rcvd ch:2 cr:0 pf:0 type:UIH dlen:1
[00:00:14.780,000] <dbg> modem_cmux: modem_cmux_log_frame: data:
                                     0d                                               |.                
[00:00:14.780,000] <dbg> modem_cmux: modem_cmux_log_frame: rcvd ch:2 cr:0 pf:0 type:UIH dlen:14
[00:00:14.780,000] <dbg> modem_cmux: modem_cmux_log_frame: data:
                                     0d 0a 2b 43 52 45 47 3a  20 30 2c 36 0d 0a       |..+CREG:  0,6..  
[00:00:14.780,000] <dbg> modem_cmux: modem_cmux_log_frame: rcvd ch:2 cr:0 pf:0 type:UIH dlen:6
[00:00:14.780,000] <dbg> modem_cmux: modem_cmux_log_frame: data:
                                     0d 0a 4f 4b 0d 0a                                |..OK..           
[00:00:14.780,000] <dbg> modem_chat: modem_chat_on_unknown_command_received: AT+CREG?
[00:00:14.781,000] <dbg> modem_chat: modem_chat_log_received_command: +CREG:  0 6
[00:00:14.781,000] <dbg> modem_chat: modem_chat_log_received_command: OK
[00:00:14.781,000] <dbg> modem_chat: modem_chat_script_next: simcom_sim7080_periodic_chat_script: step: 1
[00:00:14.781,000] <dbg> modem_chat: modem_chat_script_next: sending: AT+CEREG?
[00:00:14.781,000] <dbg> modem_cellular: modem_cellular_log_event: event deregistered
[00:00:14.781,000] <dbg> modem_cmux: modem_cmux_log_frame: tx ch:2 cr:1 pf:0 type:UIH dlen:9
[00:00:14.781,000] <dbg> modem_cmux: modem_cmux_log_frame: data:
                                     41 54 2b 43 45 52 45 47  3f                      |AT+CEREG ?       
[00:00:14.781,000] <dbg> modem_cmux: modem_cmux_log_frame: tx ch:2 cr:1 pf:0 type:UIH dlen:1
[00:00:14.781,000] <dbg> modem_cmux: modem_cmux_log_frame: data:
                                     0d                                               |.                
[00:00:14.808,000] <dbg> modem_cmux: modem_cmux_log_frame: rcvd ch:2 cr:0 pf:0 type:UIH dlen:9
[00:00:14.808,000] <dbg> modem_cmux: modem_cmux_log_frame: data:
                                     41 54 2b 43 45 52 45 47  3f                      |AT+CEREG ?       
[00:00:14.808,000] <dbg> modem_cmux: modem_cmux_log_frame: rcvd ch:2 cr:0 pf:0 type:UIH dlen:1
[00:00:14.808,000] <dbg> modem_cmux: modem_cmux_log_frame: data:
                                     0d                                               |.                
[00:00:14.808,000] <dbg> modem_cmux: modem_cmux_log_frame: rcvd ch:2 cr:0 pf:0 type:UIH dlen:15
[00:00:14.808,000] <dbg> modem_cmux: modem_cmux_log_frame: data:
                                     0d 0a 2b 43 45 52 45 47  3a 20 30 2c 31 0d 0a    |..+CEREG : 0,1.. 
[00:00:14.808,000] <dbg> modem_cmux: modem_cmux_log_frame: rcvd ch:2 cr:0 pf:0 type:UIH dlen:6
[00:00:14.808,000] <dbg> modem_cmux: modem_cmux_log_frame: data:
                                     0d 0a 4f 4b 0d 0a                                |..OK..           
[00:00:14.809,000] <dbg> modem_chat: modem_chat_on_unknown_command_received: AT+CEREG?
[00:00:14.809,000] <dbg> modem_chat: modem_chat_log_received_command: +CEREG:  0 1
[00:00:14.809,000] <dbg> modem_chat: modem_chat_log_received_command: OK
[00:00:14.809,000] <dbg> modem_chat: modem_chat_script_next: simcom_sim7080_periodic_chat_script: step: 2
[00:00:14.809,000] <dbg> modem_chat: modem_chat_script_next: sending: AT+CGREG?
[00:00:14.809,000] <dbg> modem_cellular: modem_cellular_log_event: event registered
[00:00:14.810,000] <dbg> modem_cellular: modem_cellular_log_state_changed: switch from await registered to carrier on
[00:00:14.810,000] <dbg> net_l2_ppp: ppp_change_phase_debug: (net_mgmt): [0x3fcaf110] phase DEAD (0) => ESTABLISH (1) (ppp_open_async():202)
[00:00:14.810,000] <dbg> net_l2_ppp: ppp_open_async: (net_mgmt): Starting LCP
[00:00:14.811,000] <dbg> net_l2_ppp: ppp_fsm_lower_up: (net_mgmt): [LCP/0x3fcaf148] Current state INITIAL (0)
[00:00:14.811,000] <dbg> net_l2_ppp: ppp_change_state_debug: (net_mgmt): [LCP/0x3fcaf148] state INITIAL (0) => CLOSED (2) (():312)
[00:00:14.811,000] <dbg> net_l2_ppp: ppp_fsm_open: (net_mgmt): [LCP/0x3fcaf148] Current state CLOSED (2)
[00:00:14.811,000] <dbg> net_l2_ppp: ppp_change_state_debug: (net_mgmt): [LCP/0x3fcaf148] state CLOSED (2) => REQUEST_SENT (6) (():335)
[00:00:14.812,000] <dbg> net_l2_ppp: fsm_send_configure_req: (net_mgmt): [LCP/0x3fcaf148] Sending Configure-Req (1) id 1 to peer while in REQUEST_SENT (6)
[00:00:14.813,000] <dbg> net_l2_ppp: ppp_send_pkt: (net_mgmt): [LCP/0x3fcaf148] Sending 10 bytes pkt 0x3fc9ce9c (options len 4)
[00:00:14.813,000] <dbg> net_l2_ppp: net_pkt_hexdump: send L2
[00:00:14.813,000] <dbg> net_l2_ppp: net_pkt_hexdump: 0x3fc9ce9c
                                     c0 21 01 01 00 08                                |.!....           
[00:00:14.813,000] <dbg> net_l2_ppp: net_pkt_hexdump: 0x3fc9ce9c
                                     01 04 05 dc                                      |....             
[00:00:14.813,000] <dbg> modem_cmux: modem_cmux_log_frame: tx ch:2 cr:1 pf:0 type:UIH dlen:9
[00:00:14.814,000] <dbg> modem_cmux: modem_cmux_log_frame: data:
                                     41 54 2b 43 47 52 45 47  3f                      |AT+CGREG ?       
[00:00:14.814,000] <dbg> modem_cmux: modem_cmux_log_frame: tx ch:2 cr:1 pf:0 type:UIH dlen:1
[00:00:14.814,000] <dbg> modem_cmux: modem_cmux_log_frame: data:
                                     0d                                               |.                
[00:00:14.815,000] <dbg> modem_cmux: modem_cmux_log_frame: tx ch:1 cr:1 pf:0 type:UIH dlen:24
[00:00:14.815,000] <dbg> modem_cmux: modem_cmux_log_frame: data:
                                     7e ff 7d 23 c0 21 7d 21  7d 21 7d 20 7d 28 7d 21 |~.}#.!}! }!} }(}!
                                     7d 24 7d 25 dc 51 c1 7e                          |}$}%.Q.~         
[00:00:14.844,000] <dbg> modem_cmux: modem_cmux_log_frame: rcvd ch:2 cr:0 pf:0 type:UIH dlen:9
[00:00:14.844,000] <dbg> modem_cmux: modem_cmux_log_frame: data:
                                     41 54 2b 43 47 52 45 47  3f                      |AT+CGREG ?       
[00:00:14.844,000] <dbg> modem_cmux: modem_cmux_log_frame: rcvd ch:2 cr:0 pf:0 type:UIH dlen:1
[00:00:14.844,000] <dbg> modem_cmux: modem_cmux_log_frame: data:
                                     0d                                               |.                
[00:00:14.844,000] <dbg> modem_cmux: modem_cmux_log_frame: rcvd ch:2 cr:0 pf:0 type:UIH dlen:15
[00:00:14.844,000] <dbg> modem_cmux: modem_cmux_log_frame: data:
                                     0d 0a 2b 43 47 52 45 47  3a 20 30 2c 31 0d 0a    |..+CGREG : 0,1.. 
[00:00:14.844,000] <dbg> modem_cmux: modem_cmux_log_frame: rcvd ch:2 cr:0 pf:0 type:UIH dlen:6
[00:00:14.844,000] <dbg> modem_cmux: modem_cmux_log_frame: data:
                                     0d 0a 4f 4b 0d 0a                                |..OK..           
[00:00:14.845,000] <dbg> modem_chat: modem_chat_on_unknown_command_received: AT+CGREG?
[00:00:14.845,000] <dbg> modem_chat: modem_chat_log_received_command: +CGREG:  0 1
[00:00:14.845,000] <dbg> modem_chat: modem_chat_log_received_command: OK
[00:00:14.845,000] <dbg> modem_chat: modem_chat_script_stop: simcom_sim7080_periodic_chat_script: complete
[00:00:14.846,000] <dbg> modem_cmux: modem_cmux_log_frame: rcvd ch:1 cr:0 pf:0 type:UIH dlen:51
[00:00:14.846,000] <dbg> modem_cmux: modem_cmux_log_frame: data:
                                     7e ff 7d 23 c0 21 7d 21  7d 21 7d 20 7d 38 7d 22 |~.}#.!}! }!} }8}"
                                     7d 26 7d 20 7d 20 7d 20  7d 20 7d 23 7d 24 c0 23 |}&} } }  } }#}$.#
                                     7d 25 7d 26 36 d1 7c 2b  7d 27 7d 22 7d 28 7d 22 |}%}&6.|+ }'}"}(}"
                                     6e 73 7e                                         |ns~              
[00:00:14.846,000] <dbg> modem_cellular: modem_cellular_log_event: event registered
[00:00:14.846,000] <dbg> modem_cellular: modem_cellular_log_event: event script success
[00:00:14.847,000] <dbg> modem_ppp: modem_ppp_process_received_byte: Receiving PPP frame
[00:00:14.847,000] <dbg> modem_ppp: modem_ppp_process_received_byte: Received PPP frame (len 28)
[00:00:14.847,000] <dbg> net_l2_ppp: net_pkt_hexdump: recv L2
[00:00:14.847,000] <dbg> net_l2_ppp: net_pkt_hexdump: 0x3fc9cf8c
                                     c0 21 01 01 00 18 02 06  00 00 00 00 03 04 c0 23 |.!...... .......#
                                     05 06 36 d1 7c 2b 07 02  08 02                   |..6.|+.. ..      
[00:00:14.848,000] <dbg> net_l2_ppp: ppp_fsm_input: (rx_q[0]): [LCP/0x3fcaf148] LCP Configure-Req (1) id 1 payload len 20
[00:00:14.848,000] <dbg> net_l2_ppp: fsm_recv_configure_req: (rx_q[0]): [LCP/0x3fcaf148] Current state REQUEST_SENT (6)
[00:00:14.848,000] <dbg> net_l2_ppp: ppp_parse_options: (rx_q[0]): [LCP/0x3fcaf148] option ASYNC_CTRL_CHAR_MAP (2) len 6
[00:00:14.849,000] <dbg> net_l2_ppp: ppp_parse_option_conf_req_unsupported: (rx_q[0]): [LCP/0x3fcaf148] Check option ASYNC_CTRL_CHAR_MAP (2) len 4
[00:00:14.849,000] <dbg> net_l2_ppp: ppp_parse_options: (rx_q[0]): [LCP/0x3fcaf148] option AUTH_PROTO (3) len 4
[00:00:14.849,000] <dbg> net_l2_ppp: ppp_parse_option_conf_req_unsupported: (rx_q[0]): [LCP/0x3fcaf148] Check option AUTH_PROTO (3) len 2
[00:00:14.849,000] <dbg> net_l2_ppp: ppp_parse_options: (rx_q[0]): [LCP/0x3fcaf148] option MAGIC_NUMBER (5) len 6
[00:00:14.849,000] <dbg> net_l2_ppp: ppp_parse_option_conf_req_unsupported: (rx_q[0]): [LCP/0x3fcaf148] Check option MAGIC_NUMBER (5) len 4
[00:00:14.849,000] <dbg> net_l2_ppp: ppp_parse_options: (rx_q[0]): [LCP/0x3fcaf148] option PROTO_COMPRESS (7) len 2
[00:00:14.849,000] <dbg> net_l2_ppp: ppp_parse_option_conf_req_unsupported: (rx_q[0]): [LCP/0x3fcaf148] Check option PROTO_COMPRESS (7) len 0
[00:00:14.849,000] <dbg> net_l2_ppp: ppp_parse_options: (rx_q[0]): [LCP/0x3fcaf148] option ADDR_CTRL_COMPRESS (8) len 2
[00:00:14.849,000] <dbg> net_l2_ppp: ppp_parse_option_conf_req_unsupported: (rx_q[0]): [LCP/0x3fcaf148] Check option ADDR_CTRL_COMPRESS (8) len 0
[00:00:14.849,000] <dbg> net_l2_ppp: fsm_recv_configure_req: (rx_q[0]): [LCP/0x3fcaf148] Sending Configure-Rej (4) id 1 to peer while in REQUEST_SENT (6)
[00:00:14.850,000] <dbg> net_l2_ppp: ppp_send_pkt: (rx_q[0]): [LCP/0x3fcaf148] Sending 22 bytes pkt 0x3fc9ce9c (options len 16)
[00:00:14.850,000] <dbg> net_l2_ppp: net_pkt_hexdump: send L2
[00:00:14.850,000] <dbg> net_l2_ppp: net_pkt_hexdump: 0x3fc9ce9c
                                     c0 21 04 01 00 14                                |.!....           
[00:00:14.850,000] <dbg> net_l2_ppp: net_pkt_hexdump: 0x3fc9ce9c
                                     02 06 00 00 00 00 05 06  36 d1 7c 2b 07 02 08 02 |........ 6.|+....
[00:00:14.851,000] <dbg> modem_cmux: modem_cmux_log_frame: rcvd ch:1 cr:0 pf:0 type:UIH dlen:24
[00:00:14.851,000] <dbg> modem_cmux: modem_cmux_log_frame: data:
                                     7e ff 7d 23 c0 21 7d 22  7d 21 7d 20 7d 28 7d 21 |~.}#.!}" }!} }(}!
                                     7d 24 7d 25 dc 81 4b 7e                          |}$}%..K~         
[00:00:14.851,000] <dbg> modem_ppp: modem_ppp_process_received_byte: Receiving PPP frame
[00:00:14.851,000] <dbg> modem_ppp: modem_ppp_process_received_byte: Received PPP frame (len 12)
[00:00:14.851,000] <dbg> net_l2_ppp: net_pkt_hexdump: recv L2
[00:00:14.852,000] <dbg> net_l2_ppp: net_pkt_hexdump: 0x3fc9cf8c
                                     c0 21 02 01 00 08 01 04  05 dc                   |.!...... ..      
[00:00:14.852,000] <dbg> net_l2_ppp: ppp_fsm_input: (rx_q[0]): [LCP/0x3fcaf148] LCP Configure-Ack (2) id 1 payload len 4
[00:00:14.852,000] <dbg> net_l2_ppp: fsm_recv_configure_ack: (rx_q[0]): [LCP/0x3fcaf148] Current state REQUEST_SENT (6)
[00:00:14.852,000] <dbg> net_l2_ppp: ppp_change_state_debug: (rx_q[0]): [LCP/0x3fcaf148] state REQUEST_SENT (6) => ACK_RECEIVED (7) (():735)
[00:00:14.853,000] <dbg> modem_cmux: modem_cmux_log_frame: tx ch:1 cr:1 pf:0 type:UIH dlen:40
[00:00:14.853,000] <dbg> modem_cmux: modem_cmux_log_frame: data:
                                     7e ff 7d 23 c0 21 7d 24  7d 21 7d 20 7d 34 7d 22 |~.}#.!}$ }!} }4}"
                                     7d 26 7d 20 7d 20 7d 20  7d 20 7d 25 7d 26 36 d1 |}&} } }  } }%}&6.
                                     7c 2b 7d 27 7d 22 7d 28                          ||+}'}"}(         
[00:00:14.853,000] <dbg> modem_cmux: modem_cmux_log_frame: tx ch:1 cr:1 pf:0 type:UIH dlen:5
[00:00:14.853,000] <dbg> modem_cmux: modem_cmux_log_frame: data:
                                     7d 22 a4 e3 7e                                   |}"..~            
[00:00:14.883,000] <dbg> modem_cmux: modem_cmux_log_frame: rcvd ch:1 cr:0 pf:0 type:UIH dlen:23
[00:00:14.883,000] <dbg> modem_cmux: modem_cmux_log_frame: data:
                                     7e ff 7d 23 c0 21 7d 21  7d 22 7d 20 7d 28 7d 23 |~.}#.!}! }"} }(}#
                                     7d 24 c0 23 23 eb 7e                             |}$.##.~          
[00:00:14.883,000] <dbg> modem_ppp: modem_ppp_process_received_byte: Receiving PPP frame
[00:00:14.883,000] <dbg> modem_ppp: modem_ppp_process_received_byte: Received PPP frame (len 12)
[00:00:14.884,000] <dbg> net_l2_ppp: net_pkt_hexdump: recv L2
[00:00:14.884,000] <dbg> net_l2_ppp: net_pkt_hexdump: 0x3fc9cf8c
                                     c0 21 01 02 00 08 03 04  c0 23                   |.!...... .#      
[00:00:14.884,000] <dbg> net_l2_ppp: ppp_fsm_input: (rx_q[0]): [LCP/0x3fcaf148] LCP Configure-Req (1) id 2 payload len 4
[00:00:14.884,000] <dbg> net_l2_ppp: fsm_recv_configure_req: (rx_q[0]): [LCP/0x3fcaf148] Current state ACK_RECEIVED (7)
[00:00:14.885,000] <dbg> net_l2_ppp: ppp_parse_options: (rx_q[0]): [LCP/0x3fcaf148] option AUTH_PROTO (3) len 4
[00:00:14.885,000] <dbg> net_l2_ppp: ppp_parse_option_conf_req_unsupported: (rx_q[0]): [LCP/0x3fcaf148] Check option AUTH_PROTO (3) len 2
[00:00:14.885,000] <dbg> net_l2_ppp: ppp_parse_options: (rx_q[0]): [LCP/0x3fcaf148] option AUTH_PROTO (3) len 4
[00:00:14.885,000] <dbg> net_l2_ppp: lcp_auth_proto_parse: (rx_q[0]): [LCP] Received auth protocol c023 (PAP)
[00:00:14.885,000] <dbg> net_l2_ppp: lcp_config_info_req: (rx_q[0]): Authentication protocol negotiated: c023 (PAP)
[00:00:14.886,000] <dbg> net_l2_ppp: fsm_recv_configure_req: (rx_q[0]): [LCP/0x3fcaf148] Sending Configure-Ack (2) id 2 to peer while in ACK_RECEIVED (7)
[00:00:14.886,000] <dbg> net_l2_ppp: ppp_send_pkt: (rx_q[0]): [LCP/0x3fcaf148] Sending 10 bytes pkt 0x3fc9ce9c (options len 4)
[00:00:14.886,000] <dbg> net_l2_ppp: ppp_change_state_debug: (rx_q[0]): [LCP/0x3fcaf148] state ACK_RECEIVED (7) => OPENED (9) (():653)
[00:00:14.886,000] <dbg> net_l2_ppp: ppp_link_established: (rx_q[0]): [0x3fcaf110] Link established
[00:00:14.887,000] <dbg> net_l2_ppp: ppp_change_phase_debug: (rx_q[0]): [0x3fcaf110] phase ESTABLISH (1) => AUTH (2) (do_auth():74)
[00:00:14.887,000] <dbg> net_l2_ppp: ppp_fsm_open: (rx_q[0]): [PAP/0x3fcaf300] Current state INITIAL (0)
[00:00:14.887,000] <dbg> net_l2_ppp: ppp_change_state_debug: (rx_q[0]): [PAP/0x3fcaf300] state INITIAL (0) => STARTING (1) (():349)
[00:00:14.887,000] <dbg> net_l2_ppp: ppp_fsm_lower_up: (rx_q[0]): [IPCP/0x3fcaf220] Current state INITIAL (0)
[00:00:14.887,000] <dbg> net_l2_ppp: ppp_change_state_debug: (rx_q[0]): [IPCP/0x3fcaf220] state INITIAL (0) => CLOSED (2) (():312)
[00:00:14.887,000] <dbg> net_l2_ppp: ppp_fsm_lower_up: (rx_q[0]): [PAP/0x3fcaf300] Current state STARTING (1)
[00:00:14.888,000] <dbg> net_l2_ppp: fsm_send_configure_req: (rx_q[0]): [PAP/0x3fcaf300] Sending Configure-Req (1) id 1 to peer while in STARTING (1)
[00:00:14.888,000] <dbg> net_l2_ppp: ppp_send_pkt: (rx_q[0]): [PAP/0x3fcaf300] Sending 18 bytes pkt 0x3fc9ced8 (options len 12)
[00:00:14.888,000] <dbg> net_l2_ppp: ppp_change_state_debug: (rx_q[0]): [PAP/0x3fcaf300] state STARTING (1) => REQUEST_SENT (6) (():317)
[00:00:14.888,000] <dbg> net_l2_ppp: net_pkt_hexdump: send L2
[00:00:14.888,000] <dbg> net_l2_ppp: net_pkt_hexdump: 0x3fc9ce9c
                                     c0 21 02 02 00 08                                |.!....           
[00:00:14.888,000] <dbg> net_l2_ppp: net_pkt_hexdump: 0x3fc9ce9c
                                     03 04 c0 23                                      |...#             
[00:00:14.888,000] <dbg> net_l2_ppp: net_pkt_hexdump: send L2
[00:00:14.888,000] <dbg> net_l2_ppp: net_pkt_hexdump: 0x3fc9ced8
                                     c0 23 01 01 00 10                                |.#....           
[00:00:14.888,000] <dbg> net_l2_ppp: net_pkt_hexdump: 0x3fc9ced8
                                     05 62 6c 61 6e 6b 05 62  6c 61 6e 6b             |.blank.b lank    
[00:00:14.890,000] <dbg> modem_cmux: modem_cmux_log_frame: tx ch:1 cr:1 pf:0 type:UIH dlen:23
[00:00:14.890,000] <dbg> modem_cmux: modem_cmux_log_frame: data:
                                     7e ff 7d 23 c0 21 7d 22  7d 22 7d 20 7d 28 7d 23 |~.}#.!}" }"} }(}#
                                     7d 24 c0 23 f3 61 7e                             |}$.#.a~          
[00:00:14.891,000] <dbg> modem_cmux: modem_cmux_log_frame: tx ch:1 cr:1 pf:0 type:UIH dlen:31
[00:00:14.891,000] <dbg> modem_cmux: modem_cmux_log_frame: data:
                                     7e ff 7d 23 c0 23 7d 21  7d 21 7d 20 7d 30 7d 25 |~.}#.#}! }!} }0}%
                                     62 6c 61 6e 6b 7d 25 62  6c 61 6e 6b ad f2 7e    |blank}%b lank..~ 
[00:00:15.036,000] <dbg> modem_cmux: modem_cmux_log_frame: rcvd ch:1 cr:0 pf:0 type:UIH dlen:14
[00:00:15.036,000] <dbg> modem_cmux: modem_cmux_log_frame: data:
                                     7e ff 03 c0 23 02 01 00  06 00 00 fc 25 7e       |~...#... ....%~  
[00:00:15.037,000] <dbg> modem_ppp: modem_ppp_is_byte_expected: Dropping byte 0x03 because 0x7d was expected.
[00:00:15.037,000] <dbg> modem_ppp: modem_ppp_is_byte_expected: Dropping byte 0xc0 because 0x7e was expected.
[00:00:15.037,000] <dbg> modem_ppp: modem_ppp_is_byte_expected: Dropping byte 0x23 because 0x7e was expected.
[00:00:15.037,000] <dbg> modem_ppp: modem_ppp_is_byte_expected: Dropping byte 0x02 because 0x7e was expected.
[00:00:15.037,000] <dbg> modem_ppp: modem_ppp_is_byte_expected: Dropping byte 0x01 because 0x7e was expected.
[00:00:15.037,000] <dbg> modem_ppp: modem_ppp_is_byte_expected: Dropping byte 0x00 because 0x7e was expected.
[00:00:15.037,000] <dbg> modem_ppp: modem_ppp_is_byte_expected: Dropping byte 0x06 because 0x7e was expected.
[00:00:15.037,000] <dbg> modem_ppp: modem_ppp_is_byte_expected: Dropping byte 0x00 because 0x7e was expected.
[00:00:15.037,000] <dbg> modem_ppp: modem_ppp_is_byte_expected: Dropping byte 0x00 because 0x7e was expected.
[00:00:15.037,000] <dbg> modem_ppp: modem_ppp_is_byte_expected: Dropping byte 0xfc because 0x7e was expected.
[00:00:15.037,000] <dbg> modem_ppp: modem_ppp_is_byte_expected: Dropping byte 0x25 because 0x7e was expected.
@chihosin chihosin added the Enhancement Changes/Updates/Additions to existing features label Sep 11, 2024
Copy link

Hi @chihosin! We appreciate you submitting your first issue for our open-source project. 🌟

Even though I'm a bot, I can assure you that the whole community is genuinely grateful for your time and effort. 🤖💙

@bjarki-andreasen
Copy link
Collaborator

This frame is not a valid as it is not encapsulated:

[00:00:15.036,000] <dbg> modem_cmux: modem_cmux_log_frame: rcvd ch:1 cr:0 pf:0 type:UIH dlen:14
[00:00:15.036,000] <dbg> modem_cmux: modem_cmux_log_frame: data:
                                     7e ff 03 c0 23 02 01 00  06 00 00 fc 25 7e       |~...#... ....%~  

The frame should be:

7e ff    03 ... 7e <- unencapsulated
7e ff 7d 23 ... 7e <- encapsulated (0x7d, 0x23 means escape, ((0x23 ^ 0x20) == 0x03))

This may be because of some special rules in the PPP protocol, or it is just a bug in the simcom firmware. In either case, the modem subsystem expects all PPP packets to be encapsulated at this time.

@bjarki-andreasen
Copy link
Collaborator

I found this spec https://datatracker.ietf.org/doc/html/rfc1661#section-2 of the PPP protocol, maybe you can find something in there which allows for unencapsulated packets, which we can then implement in modem_ppp :)

@chihosin
Copy link
Author

image Thank you for your response. It seems that I have found the function causing the PPP connection process to stall. The issue appears to be the unrecognized PPP protocol at this point. I’ll try to resolve it when I have time.

@bienxanh1901
Copy link

Hi @chihosin,
Did you solve that problem?
I am trying cellular_modem sample with SIM7680C module but cannot connect to L4 (L4 was not connected in time)

This seem that ppp frame is invalid

                                     7e ff 03 c0 23 02 01 00  06 00 00 fc 25 7e       |~...#... ....%~  
[00:00:16.952,000] <dbg> modem_ppp: modem_ppp_is_byte_expected: Dropping byte 0x03 because 0x7d was expected.
[00:00:16.952,000] <dbg> modem_ppp: modem_ppp_is_byte_expected: Dropping byte 0xc0 because 0x7e was expected.```

@chihosin
Copy link
Author

Hi @chihosin,
Did you solve that problem?
I am trying cellular_modem sample with SIM7680C module but cannot connect to L4 (L4 was not connected in time)

This seem that ppp frame is invalid

                                     7e ff 03 c0 23 02 01 00  06 00 00 fc 25 7e       |~...#... ....%~  
[00:00:16.952,000] <dbg> modem_ppp: modem_ppp_is_byte_expected: Dropping byte 0x03 because 0x7d was expected.
[00:00:16.952,000] <dbg> modem_ppp: modem_ppp_is_byte_expected: Dropping byte 0xc0 because 0x7e was expected.```

I have resolved the issue, but this PPP problem is caused by Simcom’s Modem PPP program design being different from the general protocol. The 0x03 instruction was not correctly encapsulated. The method I am currently using is not very elegant and requires further research before submitting a PR.

@bienxanh1901
Copy link

Thank you so much for your explanation!

@chihosin
Copy link
Author

diff --git a/subsys/modem/modem_ppp.c b/subsys/modem/modem_ppp.c
index 537f198251f..f1b73061d85 100644
--- a/subsys/modem/modem_ppp.c
+++ b/subsys/modem/modem_ppp.c
@@ -222,6 +222,22 @@ static void modem_ppp_process_received_byte(struct modem_ppp *ppp, uint8_t byte)
 		break;
 
 	case MODEM_PPP_RECEIVE_STATE_HDR_7D:
+		if (byte == 0x03) {
+			ppp->rx_pkt = net_pkt_rx_alloc_with_buffer(
+				ppp->iface, CONFIG_MODEM_PPP_NET_BUF_FRAG_SIZE, AF_UNSPEC, 0,
+				K_NO_WAIT);
+
+			if (ppp->rx_pkt == NULL) {
+				LOG_WRN("Dropped frame, no net_pkt available");
+				ppp->receive_state = MODEM_PPP_RECEIVE_STATE_HDR_SOF;
+				break;
+			}
+
+			LOG_DBG("Receiving PPP frame");
+			ppp->receive_state = MODEM_PPP_RECEIVE_STATE_WRITING;
+			net_pkt_cursor_init(ppp->rx_pkt);
+			break;
+		}
 		if (modem_ppp_is_byte_expected(byte, MODEM_PPP_CODE_ESCAPE)) {
 			ppp->receive_state = MODEM_PPP_RECEIVE_STATE_HDR_23;
 		} else {

@bienxanh1901 Try this patch? I already use the PPP function of the A7680C normally.

@vytvir
Copy link
Contributor

vytvir commented Mar 24, 2025

@chihosin @bjarki-andreasen @bienxanh1901

PS. Sorry for all of the edits, it's been a rough morning for me 😅 .

We're not configuring LCP Async-Control-Character-Map (ACCM) (https://www.rfc-editor.org/rfc/rfc1662.html#section-7.1) and based on the specification it doesn't need to escape 0x03 as only Flag Sequence (0x7e) and Control Escape (0x7d) need to be escaped (https://www.rfc-editor.org/rfc/rfc1662.html#section-4.2).

The modem actually sends that ACCM is set to 0x00000000, which means that no escape characters are mapped:

[00:00:14.846,000] <dbg> modem_cmux: modem_cmux_log_frame: rcvd ch:1 cr:0 pf:0 type:UIH dlen:51
[00:00:14.846,000] <dbg> modem_cmux: modem_cmux_log_frame: data:
                                     7e ff 7d 23 c0 21 7d 21  7d 21 7d 20 7d 38 7d 22 |~.}#.!}! }!} }8}"
                                     7d 26 7d 20 7d 20 7d 20  7d 20 7d 23 7d 24 c0 23 |}&} } }  } }#}$.#
                                     7d 25 7d 26 36 d1 7c 2b  7d 27 7d 22 7d 28 7d 22 |}%}&6.|+ }'}"}(}"
                                     6e 73 7e                                         |ns~    
[...]
[00:00:14.849,000] <dbg> net_l2_ppp: ppp_parse_option_conf_req_unsupported: (rx_q[0]): [LCP/0x3fcaf148] Check option ASYNC_CTRL_CHAR_MAP (2) len 4
[...]

We reject this Configuration-Request, however, it is possible they are using 0x00000000 as a default. We should try to explicitly configure 0xffffffff just to make sure.

It shouldn't be too difficult to add LCP ACCM negotiation to LCP Configure-Request (https://datatracker.ietf.org/doc/html/rfc1661#section-5.1) as we already do this for MRU.

@vytvir
Copy link
Contributor

vytvir commented Mar 24, 2025

Modem: SIMCOM A7680C
Chipset: ASR1603

The same chipset is used in Quectel EG915N and Quectel EC200N.

TX: 7e ff 7d 23 c0 21 7d 21 7d 21 7d 20 7d 28 7d 21 7d 24 7d 25 dc 51 c1 7e

RX: 7e ff 7d 23 c0 21 7d 21 7d 21 7d 20 7d 38 7d 22 7d 26 7d 20 7d 20 7d 20 7d 20 7d 23 7d 24 c0 23 7d 25 7d 26 36 d1 7c 2b 7d 27 7d 22 7d 28 7d 22 6e 73 7e

RX: 7e ff 7d 23 c0 21 7d 22 7d 21 7d 20 7d 28 7d 21 7d 24 7d 25 dc 81 4b 7e

TX: 7e ff 7d 23 c0 21 7d 24 7d 21 7d 20 7d 34 7d 22 7d 26 7d 20 7d 20 7d 20 7d 20 7d 25 7d 26 36 d1 7c 2b 7d 27 7d 22 7d 28

TX: 7d 22 a4 e3 7e

RX: 7e ff 7d 23 c0 21 7d 21 7d 22 7d 20 7d 28 7d 23 7d 24 c0 23 23 eb 7e

TX: 7e ff 7d 23 c0 21 7d 22 7d 22 7d 20 7d 28 7d 23 7d 24 c0 23 f3 61 7e

TX: 7e ff 7d 23 c0 23 7d 21 7d 21 7d 20 7d 30 7d 25 62 6c 61 6e 6b 7d 25 62 6c 61 6e 6b ad f2 7e

RX: 7e ff 03 c0 23 02 01 00 06 00 00 fc 25 7e

-------------------------
Un-escaped byte sequences
-------------------------

TX: 7e ff 03 c0 21 01 01 00 08 01 04 05 dc 51 c1 7e

[LCP Payload: 01 01 00 08 01 04 05 dc ]

Configuration-Request (01 01 00 08).
MRU (01 04 05 dc) = 1500 Bytes.

RX: 7e ff 03 c0 21 01 01 00 18 02 06 00 00 00 00 03 04 c0 23 05 06 36 d1 7c 2b 07 02 08 02 6e 73 7e

[LCP Payload: 01 01 00 18 02 06 00 00 00 00 03 04 c0 23 05 06 36 d1 7c 2b 07 02 08 02]

Configuration-Request (01 01 00 18).
ACCM (02 06 00 00 00 00) = No escape
Authentication Protocol (03 04 c0 23) = PAP
Magic Number (05 06 36 d1 7c 2b) = Magic Number Used For Loop Detection
Protocol Field Compression (07 02).
Address and Control Field Compression (08 02).

RX: 7e ff 03 c0 21 02 01 00 08 01 04 05 dc 81 4b 7e

[LCP Payload: 02 01 00 08 01 04 05 dc]

Configuration-Ack (02 01 00 08)
MRU (01 04 05 dc) = 1500 Bytes.

TX: 7e ff 03 c0 21 04 01 00 14 02 06 00 00 00 00 05 06 36 d1 7c 2b 07 02 08 7e

TX: 7e 02 a4 e3 7e

[LCP Payload: 04 01 00 14 02 06 00 00 00 00 05 06 36 d1 7c 2b 07 02 08 02]

(Assuming we've fragmented one packet into two)

Configuration-Reject (04 01 00 14).
ACCM (02 06 00 00 00 00).
Magic Number (05 06 36 d1 7c 2b).
Protocol Field Compression (07 02).
Address and Control Field Compression (08 02).

RX: 7e ff 03 c0 21 01 02 00 08 03 04 c0 23 23 eb 7e

[LCP Payload: 01 02 00 08 03 04 c0 23]

Configuration-Request (01 02 00 08)
Authentication Protocol (03 04 c0 23) = PAP

TX: 7e ff 03 c0 21 02 02 00 08 03 04 c0 23 f3 61 7e

[LCP Payload: 02 02 00 08 03 04 c0 23]

Configuration-Accept (02 02 00 08)
Authentication Protocol (03 04 c0 23) = PAP.

TX: 7e ff 03 c0 23 01 01 00 10 05 62 6c 61 6e 6b 05 62 6c 61 6e 6b ad f2 7e

[PAP Payload: 01 01 00 10 05 62 6c 61 6e 6b 05 62 6c 61 6e 6b]

Authentication Request (01 01 00 10).
Username Length (05) = 5 Bytes.
Username (62 6c 61 6e 6b) = "blank"
Password (62 6c 61 6e 6b) = "blank"

RX: 7e ff 03 c0 23 02 01 00 06 00 00 fc 25 7e

[PAP Payload: 02 01 00 06 00 00]

Authentication Ack (02 01 00 06).
Message Length (00 00) = 0 Bytes.

Maybe this will be helpful.

@vytvir
Copy link
Contributor

vytvir commented Apr 23, 2025

Here's the patch to negotiate ACCM.

accm.patch

@olalonde
Copy link

olalonde commented May 4, 2025

Same issue here with other SIMCOM modem (A7672SA): #89455. I wish I found this issue earlier.

Also had to disable PAP (CONFIG_NET_L2_PPP_PAP=n) and then had the same issue with the unescaped 0x03 in the PPP frame sent by modem, whereas modem PPP driver expects 0x7d instead.

My understanding is that the zephyr driver expects 0x03 to be escaped (e.g. the escaped version is 0x7d 0x23 since 0x23 xor 0x20 = 0x03`), but the SIMCOM modem doesn't escape it. Again my understanding is that the characters require to be escaped are configured through an "ACCM" option during LCP.

Does the zephyr PPP driver explicitly send an ACCM option telling the modem that 0x03 is in the range of characters that need escaping? If not, it seems that it is indeed a valid PPP frame and it is the zephyr driver that is not behaving according to the standard.

Actually a weird thing is that the driver is "expecting" 0x7d, which doesn't make a lot of sense to me. Normally, you don't have a way to know in advance that the next byte will necessarily be an escape byte (0x7d). When 0x7d is encountered, shouldn't the parser decode the next byte and then process that decoded byte? e.g. see 0x7d, read next byte 0x23, decode it 0x23 xor 0x20 = 0x03, process 0x03.

I basically learned about PPP today so I might be wrong...

@olalonde
Copy link

olalonde commented May 4, 2025

Here's my attempt at a small refactor of the modem PPP code:

olalonde/sdk-zephyr-old@v3.7.99-ncs2-1...olalonde:sdk-zephyr:fix-78269

Escaped bytes are handled at the top since they can appear anywhere within a frame (at least, that's my understanding).

I tested the updated code with my SIMCOM modem and it works :)

If @bjarki-andreasen can confirm my understanding of escaped bytes and my approach is correct, I could write a pull request on the main Zerphyr repository.

@olalonde
Copy link

olalonde commented May 5, 2025

According to RFC:

On reception, prior to FCS computation, each octet with value less
than hexadecimal 0x20 is checked. If it is flagged in the receiving
ACCM, it is simply removed (it may have been inserted by intervening
data communications equipment). Each Control Escape octet is also
removed, and the following octet is exclusive-or'd with hexadecimal
0x20, unless it is the Flag Sequence (which aborts a frame).

My patch does not yet do the first part yet (removing bytes flagged by ACCM) but it implements the second part: "each Control Escape octet is also removed, and the following octet is exclusive-or'd with hexadecimal 0x20, unless it is the Flag Sequence (which aborts a frame).".

The current code doesn't handle escaped byte for the address field and for the control field, it ONLY accepted the escaped sequence 0x7d 0x23 whereas both 0x7d 0x23 and 0x03 are acceptable values according to standard.

@bjarki-andreasen
Copy link
Collaborator

bjarki-andreasen commented May 5, 2025

The default ACCM is 0xffffffff, which means all control characters MUST be mapped. To catch issues early, we adhere strictly to this in the modem_ppp module. The SIMCOM modem apparently uses a different ACCM. The optimal solution is to keep things simple, if the modem tries to configure an ACCM different than default, reject it, and on the other side, we should probably support configuring it, and ensure the modem uses the default ACCM.

Changing the modem_ppp module to be even more permissive (we already don't check FCS, which we probably should) is an ok compromise for now I think, but really, we should be enforcing ACCM to the default, and be checking FCS. With the changes in olalonde/sdk-zephyr-old@v3.7.99-ncs2-1...olalonde:sdk-zephyr:fix-78269 we are just assuming that the byte probably did not need to be escaped, as opposed to, "this is an obvious bit error" :)

Nice work figuring this out BTW :)

One note, bit errors are very unlikely when receiving PPP packets if we use CMUX, given there, we are definately checking FCS to make "more" sure that the data we receive over UART before unpacking and passing it to modem_ppp is what we expect.

@vytvir
Copy link
Contributor

vytvir commented May 5, 2025

The default ACCM is 0xffffffff, which means all control characters MUST be mapped. To catch issues early, we adhere strictly to this in the modem_ppp module. The SIMCOM modem apparently uses a different ACCM. The optimal solution is to keep things simple, if the modem tries to configure an ACCM different than default, reject it, and on the other side, we should probably support configuring it, and ensure the modem uses the default ACCM.

If we don't have a handler for a specific option, it is rejected by default. Modems generally try to set 0x00000000 ACCM and we reject this option, but we do not suggest any other value. I suspect that some modems stick to the 0x00000000 mapping anyways unless they receive an alternative offer.

The modem I have doesn't have this issue and the OP has disappeared for a few weeks. @olalonde perhaps you could test if my ACCM patch solves your issue? I have pre-tested on my board and it negotiates it correctly:

#78269 (comment)

@bjarki-andreasen
Copy link
Collaborator

bjarki-andreasen commented May 5, 2025

Ublox and Quectel modems seem to stick to 0xffffffff, guess there is a reason there is an option to negotiate it :)

@olalonde
Copy link

olalonde commented May 6, 2025

@vytvir sorry I missed your patch earlier. I tested it and it works 👍 (simcom A7672SA).

olalonde/sdk-zephyr-old@v3.7.99-ncs2-1...accm-patch

@olalonde
Copy link

olalonde commented May 6, 2025

@bjarki-andreasen

It seems that using an ACCM of 0x00000000 could speed up transmission since the default ACCM of 0xffffffff will on average increase frame size by 12.4%[0]. I don't know if this could be a good default to use in context of zephyr?

[0] assuming uniform distribution of bytes, transmitting all 256 bytes requires 256+2 bytes (because 0x7D, 0x7E are always escaped regardless of ACCM). with ACCM set to 0xffffffff it requires 256+2+32 since 32 bytes need an additional escape byte. So 32/258*100% increase.

@vytvir
Copy link
Contributor

vytvir commented May 6, 2025

@vytvir sorry I missed your patch earlier. I tested it and it works 👍 (simcom A7672SA).

olalonde/[email protected]

Just to confirm, does this fix your original issue without applying your changes to handling escaped bytes?

I guess it still makes sense to apply these changes to be a bit more explicit with regards to which ACCM we want, but I am also interesting if this fixes the problem that you and OP described originally. It would give some logic to how these modems operate.

@olalonde
Copy link

olalonde commented May 7, 2025

Just to confirm, does this fix your original issue without applying your changes to handling escaped bytes?

Yes, it does. Presumably the modem accepts the ACCM config and escapes the bytes as expected right?

@vytvir
Copy link
Contributor

vytvir commented May 7, 2025

Yes, it does. Presumably the modem accepts the ACCM config and escapes the bytes as expected right?

Yes, this was my suspicion all along. Created the PR here #89580.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
area: Modem Drivers Enhancement Changes/Updates/Additions to existing features
Projects
None yet
Development

No branches or pull requests

7 participants