After tearing my hair out making my Thinkpad’s Ericsson Business Mobile Networks BV F3507g Mobile Broadband Module work like it should I found the solution.
Without some magic initialization strings, whenever you create a PPP connection using pppd, you will simply get some cruft like the following
Connect: ppp20 <--> /dev/ttyACM1
sent [LCP ConfReq id=0x1
rcvd [LCP ConfReq id=0x2
sent [LCP ConfAck id=0x2
rcvd [LCP ConfAck id=0x1
sent [LCP EchoReq id=0x0 magic=0x7ee90359]
rcvd [LCP EchoRep id=0x0 magic=0xd1304c29]
rcvd [CHAP Challenge id=0x0 <4c95aa9b38117677e44d021350494e6f7c055a8b6881266714bdb20380b9fe5fac750a7b98f1d657442d62f3b029ae4fdce5ba6bc8618647749d12e3e0995e>, name = "Kermit"]
sent [CHAP Response id=0x0 <068d69fa57a15daa762f3d4ea548e605>, name = "xxxxx"]
rcvd [CHAP Success id=0x0 "Congratulations!"]
CHAP authentication succeeded: Congratulations!
CHAP authentication succeeded
sent [IPCP ConfReq id=0x1
rcvd [LCP TermReq id=0x1]
LCP terminated by peer
sent [LCP TermAck id=0x1
The key being “LCP terminated by peer”. This modem seems to be faking a lot of stuff on the PPP layer, and the termination is actually initiated by the modem, and not the actual network itself, causing one to do some serious headscratching.
The magic, is in the following initialisation string, that you add to your chat script.
Yes, that’s right, lets have FUN=1 !
Without that bit in the init string there is no PPP to be had. Your connections will always report “Congratulations!” and then summarily disconnect.
You can also use
AT+CFUN=5 for GSM/GPRS only mode or
AT+CFUN=6 for 3G only mode.
Herewith a complete /etc/ppp/peers/fuckyouericsson chat script
ABORT "NO CARRIER"
ABORT "NO DIALTONE"
ABORT "NO DIAL TONE"
ABORT "NO ANSWER"
ABORT "+CGATT: 0"
#REQUIRED TO MAKE THE MODEM ACTUALLY DO PPP
#set the APN