This is the result of my Sara G350 debug on NuttX:
NuttShell (NSH) nsh> pppd tun fd:3 tty fd:4 ipcp init AHDLC_TX - transmit frame, protocol 0xc021, length 4 offline 0 0x05 0x01 0x00 0x04 AHDLC_TX - transmit frame, protocol 0xc021, length 4 offline 1 0x05 0x02 0x00 0x04 chat: char = ~ (0x7E) chat: char = � (0xFF) chat: char = } (0x7D) chat: char = # (0x23) chat: char = � (0xC2) chat: char = # (0x23) chat: char = (0x7F) chat: char = ' (0x27) chat: char = (0x7F) chat: char = # (0x23) chat: char = (0x7F) chat: char = " (0x22) chat: char = (0x7F) chat: char = & (0x26) chat: char = ? (0x3F) chat: char = � (0xC7) chat: char = ~ (0x7E) chat: char = ~ (0x7E) chat: char = � (0xFF) chat: char = } (0x7D) chat: char = # (0x23) chat: char = � (0xC1) chat: char = ! (0x21) chat: char = } (0x7D) chat: char = % (0x25) chat: char = } (0x7D) chat: char = " (0x22) chat: char = } (0x7D) chat: char = (0x20) chat: char = } (0x7D) chat: char = % (0x25) chat: char = Y (0x59) chat: char = ) (0x29) chat: char = ~ (0x7E) chat: char = + (0x2B) chat: char = ; (0x3B) chat: char = + (0x2B) chat: char = A (0x41) chat: char = T (0x54) chat: char = E (0x45) chat: char = 1 (0x31) (0x0D)har = (0x0D)har = chat: char = (0x0A) chat: char = O (0x4F) chat: char = K (0x4B) (0x0D)har = chat: char = (0x0A) chat: send 'ATZ` chat_check_response read: chat: char = A (0x41) chat_check_response read: A chat: char = T (0x54) chat_check_response read: T chat: char = Z (0x5A) chat: wait for 'OK` chat_check_response read: (0x0D)har = chat_check_response read: (0x0D)har = chat_check_response read: chat: char = (0x0A) chat_check_response read: chat: char = O (0x4F) chat_check_response read: O chat: char = K (0x4B) chat: got it! (0x0D)har = chat: char = (0x0A) chat: send 'AT` chat_check_response read: chat: char = A (0x41) chat_check_response read: A chat: char = T (0x54) chat: wait for 'OK` chat_check_response read: (0x0D)har = chat_check_response read: (0x0D)har = chat_check_response read: chat: char = (0x0A) chat_check_response read: chat: char = O (0x4F) chat_check_response read: O chat: char = K (0x4B) chat: got it! (0x0D)har = chat: char = (0x0A) chat: send 'AT+CGDCONT = 1,"IP","internet"` chat_check_response read: chat: char = A (0x41) chat_check_response read: A chat: char = T (0x54) chat_check_response read: T chat: char = + (0x2B) chat_check_response read: + chat: char = C (0x43) chat_check_response read: C chat: char = G (0x47) chat_check_response read: G chat: char = D (0x44) chat_check_response read: D chat: char = C (0x43) chat_check_response read: C chat: char = O (0x4F) chat_check_response read: O chat: char = N (0x4E) chat_check_response read: N chat: char = T (0x54) chat_check_response read: T chat: char = (0x20) chat_check_response read: chat: char = = (0x3D) chat_check_response read: = chat: char = (0x20) chat_check_response read: chat: char = 1 (0x31) chat_check_response read: 1 chat: char = , (0x2C) chat_check_response read: , chat: char = " (0x22) chat_check_response read: " chat: char = I (0x49) chat_check_response read: I chat: char = P (0x50) chat_check_response read: P chat: char = " (0x22) chat_check_response read: " chat: char = , (0x2C) chat_check_response read: , chat: char = " (0x22) chat_check_response read: " chat: char = i (0x69) chat_check_response read: i chat: char = n (0x6E) chat_check_response read: n chat: char = t (0x74) chat_check_response read: t chat: char = e (0x65) chat_check_response read: e chat: char = r (0x72) chat_check_response read: r chat: char = n (0x6E) chat_check_response read: n chat: char = e (0x65) chat_check_response read: e chat: char = t (0x74) chat_check_response read: t chat: char = " (0x22) chat: wait for 'OK` chat_check_response read: (0x0D)har = chat_check_response read: (0x0D)har = chat_check_response read: chat: char = (0x0A) chat_check_response read: chat: char = O (0x4F) chat_check_response read: O chat: char = K (0x4B) chat: got it! (0x0D)har = chat: char = (0x0A) chat: send 'ATD*99***1#` chat_check_response read: chat: char = A (0x41) chat_check_response read: A chat: char = T (0x54) chat_check_response read: T chat: char = D (0x44) chat_check_response read: D chat: char = * (0x2A) chat_check_response read: * chat: char = 9 (0x39) chat_check_response read: 9 chat: char = 9 (0x39) chat_check_response read: 9 chat: char = * (0x2A) chat_check_response read: * chat: char = * (0x2A) chat_check_response read: * chat: char = * (0x2A) chat_check_response read: * chat: char = 1 (0x31) chat_check_response read: 1 chat: char = # (0x23) chat: wait for 'CONNECT` chat_check_response read: (0x0D)har = chat_check_response read: (0x0D)har = chat_check_response read: chat: char = (0x0A) chat_check_response read: chat: char = C (0x43) chat_check_response read: C chat: char = O (0x4F) chat_check_response read: O chat: char = N (0x4E) chat_check_response read: N chat: char = N (0x4E) chat_check_response read: N chat: char = E (0x45) chat_check_response read: E chat: char = C (0x43) chat_check_response read: C chat: char = T (0x54) chat: got it! ipcp init ipcp init Sending LCP request packet - len 10 AHDLC_TX - transmit frame, protocol 0xc021, length 10 offline 0 0x01 0x00 0x00 0x0a 0x02 0x06 0xff 0xff 0xff 0xff Receiving packet with good crc value, len 24 0x01 0x01 0x00 0x14 0x02 0x06 0x00 0x00 0x00 0x00 0x05 0x06 0xed 0xb6 0x5b 0x05 0x07 0x02 0x08 0x02 LCP Packet - ipcp init received [LCP Config Request id 1 Send ACK! Writing ACK frame AHDLC_TX - transmit frame, protocol 0xc021, length 20 offline 1 0x02 0x01 0x00 0x14 0x02 0x06 0x00 0x00 0x00 0x00 0x05 0x06 0xed 0xb6 0x5b 0x05 0x07 0x02 0x08 0x02 - end ACK Write frame Receiving packet with good crc value, len 14 0x02 0x00 0x00 0x0a 0x02 0x06 0xff 0xff 0xff 0xff LCP Packet - LCP-ACK - >>>>>>>> good ACK id up! 0 **Sending IPCP Request packet AHDLC_TX - transmit frame, protocol 0x8021, length 10 offline 0 0x01 0x00 0x00 0x0a 0x03 0x06 0x00 0x00 0x00 0x00 Receiving packet with good crc value, len 14 0x01 0x01 0x00 0x0a 0x03 0x06 0xbf 0x78 0xee 0x5e IPCP Packet - IPCP len 10 check lcplist IPCP options are good Peer IP Send IPCP ACK! SET- stuff -- are we up? c=10 dif=2 Writing ACK frame AHDLC_TX - transmit frame, protocol 0x8021, length 10 offline 1 0x02 0x01 0x00 0x0a 0x03 0x06 0xbf 0x78 0xee 0x5e - End ACK Write frame Receiving packet with good crc value, len 14 0x03 0x00 0x00 0x0a 0x03 0x06 0xbf 0x78 0xee 0x5e IPCP Packet - IPCP len 10 CONF NAK **Sending IPCP Request packet AHDLC_TX - transmit frame, protocol 0x8021, length 10 offline 0 0x01 0x01 0x00 0x0a 0x03 0x06 0xbf 0x78 0xee 0x5e Receiving packet with good crc value, len 14 0x02 0x01 0x00 0x0a 0x03 0x06 0xbf 0x78 0xee 0x5e IPCP Packet - IPCP len 10 CONF ACK were up! Receiving packet with good crc value, len 44 0x45 0x00 0x00 0x28 0x7b 0xfb 0x40 0x00 0x40 0x06 0xfc 0xf0 0xad 0xfc 0x66 0x10 0xbf 0x78 0xee 0x5e 0x01 0xbb 0xd6 0x15 0x39 0x78 0xcc 0xf2 0x00 0x00 0x00 0x00 0x50 0x04 0x00 0x00 0x0f 0xc1 0x00 0x00 IPV4 Packet--- len 8 Writing ECHO-REQUEST frame AHDLC_TX - transmit frame, protocol 0xc021, length 8 offline 0 0x09 0x01 0x00 0x08 0x00 0x00 0x00 0x00 - end ECHO-REQUEST Write frame Receiving packet with good crc value, len 12 0x0a 0x01 0x00 0x08 0xed 0xb6 0x5b 0x05 LCP Packet - LCP-ECHO REPLY Receiving packet with good crc value, len 44 0x45 0x00 0x00 0x28 0x0a 0x36 0x40 0x00 0x40 0x06 0xfd 0x24 0x41 0x37 0x44 0x67 0xbf 0x78 0xee 0x5e 0x01 0xbb 0xa7 0x8c 0x87 0x92 0x83 0x53 0x00 0x00 0x00 0x00 0x50 0x04 0x00 0x00 0xc8 0x3d 0x00 0x00 IPV4 Packet--- Receiving packet with good crc value, len 44 0x45 0x00 0x00 0x28 0x92 0xf2 0x40 0x00 0x40 0x06 0xe5 0xf9 0xad 0xfc 0x66 0x10 0xbf 0x78 0xee 0x5e 0x01 0xbb 0xcf 0xf6 0x06 0x37 0xf1 0xec 0x00 0x00 0x00 0x00 0x50 0x04 0x00 0x00 0x24 0x27 0x00 0x00 IPV4 Packet--- len 8 Writing ECHO-REQUEST frame AHDLC_TX - transmit frame, protocol 0xc021, length 8 offline 0 0x09 0x02 0x00 0x08 0x00 0x00 0x00 0x00 - end ECHO-REQUEST Write frame Receiving packet with good crc value, len 12 0x0a 0x02 0x00 0x08 0xed 0xb6 0x5b 0x05 LCP Packet - LCP-ECHO REPLY
This is the small “workaround” I did to get the modem working:
diff --git a/netutils/pppd/chat.c b/netutils/pppd/chat.c index 35ab4c2..637686c 100644 --- a/netutils/pppd/chat.c +++ b/netutils/pppd/chat.c @@ -110,7 +110,12 @@ static int chat_check_response(int fd, const char* response, int timeout) while (*response) { + /* Just a workaround to get data from modem */ + printf("chat_check_response read: %c\n", c); + ret = chat_read_byte(fd, &c, timeout); + //printf("chat_check_response read: %c\n", c); + if (ret < 0) { return ret; @@ -153,6 +158,10 @@ int ppp_chat(int fd, struct chat_script_s *script, int echo) while (request) { + /* Wait data arrived before flushing */ + + usleep(100000); + chat_flush(fd); printf("chat: send '%s`\n", request);