Sixfab offers Shields for Raspberry Pi which provides cellular Internet connection anywhere with the availability of mobile network coverage. These shields are:

  1. Raspberry Pi GSM/GPRS Shield
  2. Raspberry Pi 3G-4G/LTE Base Shield V2
  3. Raspberry Pi Cellular IoT Application Shield
  4. Raspberry Pi Cellular IoT HAT

Each of this shields can be connected to the Internet via PPP(Point to Point Protocol). For this tutorial, we have written a script to install and perform the required steps.

Without further ado let us jump into the installation process:

  1. Get the script by the following commandwget https://raw.githubusercontent.com/sixfab/Sixfab_PPP_Installer/master/ppp_installer/install.sh
  2. Now change the permission of the downloaded script.chmod +x install.sh
  3. Now install the scriptsudo ./install.shIt will ask several questions, just answer them accordingly to complete the installation process. The questions are:
    • Please choose your Sixfab ShieldYou will be offered to choose among the mentioned three shields. Then it will fetch required scripts for you.install.sh01
    • Do you have updated kernelIt asks if your kernel is up-to-date. If no[N] it updates the kernel else it skips the update. Then it installs ppp.install.sh02
    • What is your carrier APN?Here, it asks for your carrier’s APN. For me it is hologram.install.sh03
    • Enter your PORT nameIn this step you will enter your PORT. For 3G, 4G/LTE Base Shield it will be ttyUSB3.install.sh04
    • Do you want to activate auto connect/reconnect service at R.Pi boot up?This option allows you to connect to Internet via your shield automatically when your Raspberry Pi Starts. If you want to connect to Internet automatically type y else N. If you have selected N then you will need to run sudo pon to connect to internet and sudo poff to stop it.intall.sh05

Enjoy your Internet connection.

EXTRA

Route: One of the possible errors you may get is routing error. In this case, run the following commands

sudo route del default

sudo route add default ppp0

Credential: If your carrier asks for username and password;
Remove noauth from /etc/ppp/peers/provider and add following lines
user “YOUR USERNAME”
password “YOURPASSWORD”

Selecting port

Shield/HAT PORT
GSM/GPRS Shield ttyS0/ttyUSB0
3G-4G/LTE Base Shield ttyUSB3
Cellular IoT App. Shield ttyS0

If you face any problem please ask your question in the comment section below. Also mention which shield are you using/HAT

111 thoughts on “PPP installer for Sixfab Shield”

  1. Works great as well as all the sensors. However, I can’t get figure out how to access the GPS status, longitude, latitude, etc. Will there be documentation and/or samples for GPS as well? With the PPP taking the serial/UART, will I still be able to access the eGPS data?

  2. this guideline is great and I did work my shield, but I have realize that when I restart raspberry pi, shield try to connect to GSM, since it was configured on that way in file install.sh. I was wondering if you could tell me where is stored file with AT commands to configure LTE CAT-M instead of GSM and also how to changet APN.

    Thanks for help
    oscar

    1. Hi Oscar,
      Please install our Raspberry Pi library for the shield. Github source
      There, you may use setMode() to get LTE Cat M1 mode, NB-IoT mode or GSM mode. Check here for more details.
      For changing APN setting remove “noauth” line from /etc/ppp/peers/provider and add following lines
      user “YOURUSERNAME”
      password “YOURPASS”

  3. Hello Saeed,
    I am using the Sixfab RPi CellularIoT App Shield and trying to connect to internet using a vodafone ireland normal sim. I am using this in conjunction with the Raspberry pi 3 running ubuntu mate.
    Could you please help what am I missing as i am not getting a remote ip ?
    I used the PPP installer https://github.com/sixfab/Sixfab_PPP_Installer

    [email protected]:~$ sudo pon
    pppd options in effect:
    debug # (from /etc/ppp/peers/provider)
    updetach # (from /etc/ppp/peers/provider)
    dump # (from /etc/ppp/peers/provider)
    noauth # (from /etc/ppp/peers/provider)
    remotename 3gppp # (from /etc/ppp/peers/provider)
    /dev/ttyS0 # (from /etc/ppp/peers/provider)
    115200 # (from /etc/ppp/peers/provider)
    lock # (from /etc/ppp/peers/provider)
    connect chat -s -v -f /etc/chatscripts/chat-connect -T hs.vodafone.ie # (from /etc/ppp/peers/provider)
    disconnect chat -s -v -f /etc/chatscripts/chat-disconnect # (from /etc/ppp/peers/provider)
    nocrtscts # (from /etc/ppp/peers/provider)
    modem # (from /etc/ppp/peers/provider)
    asyncmap 0 # (from /etc/ppp/options)
    lcp-echo-failure 4 # (from /etc/ppp/options)
    lcp-echo-interval 30 # (from /etc/ppp/options)
    hide-password # (from /etc/ppp/peers/provider)
    novj # (from /etc/ppp/peers/provider)
    novjccomp # (from /etc/ppp/peers/provider)
    ipcp-accept-local # (from /etc/ppp/peers/provider)
    ipcp-accept-remote # (from /etc/ppp/peers/provider)
    ipparam 3gppp # (from /etc/ppp/peers/provider)
    noipdefault # (from /etc/ppp/peers/provider)
    ipcp-max-failure 30 # (from /etc/ppp/peers/provider)
    defaultroute # (from /etc/ppp/peers/provider)
    usepeerdns # (from /etc/ppp/peers/provider)
    noccp # (from /etc/ppp/peers/provider)
    noipx # (from /etc/ppp/options)
    abort on (BUSY)
    abort on (NO CARRIER)
    abort on (NO DIALTONE)
    abort on (ERROR)
    abort on (NO ANSWER)
    timeout set to 30 seconds
    send (AT^M)
    expect (OK)
    ^M
    OK
    — got it

    send (ATE0^M)
    expect (OK)
    ^M
    ^M
    OK
    — got it

    send (ATI;+CSUB;+CSQ;+COPS?;+CGREG?;&D2^M)
    expect (OK)
    ^M
    ^M
    Quectel^M
    BG96^M
    Revision: BG96MAR02A07M1G^M
    ^M
    SubEdition: V08^M
    ^M
    +CSQ: 15,0^M
    ^M
    +COPS: 1,0,”vodafone IE vodafone IE”,0^M
    ^M
    +CGREG: 0,1^M
    ^M
    OK
    — got it

    send (AT+CGDCONT=1,”IP”,”hs.vodafone.ie”,,0,0^M)
    expect (OK)
    ^M
    ^M
    OK
    — got it

    send (AT+QCFG=”nwscanseq”,01,1^M)
    expect (OK)
    ^M
    ^M
    OK
    — got it

    send (AT+QCFG=”nwscanmode”,1,1^M)
    expect (OK)
    ^M
    ^M
    OK
    — got it

    send (AT+QCFG=”iotopmode”,2,1^M)
    expect (OK)
    ^M
    ^M
    OK
    — got it

    send (ATD*99#^M)
    expect (CONNECT)
    ^M
    ^M
    CONNECT
    — got it

    Script chat -s -v -f /etc/chatscripts/chat-connect -T hs.vodafone.ie finished (pid 1728), status = 0x0
    Serial connection established.
    using channel 2
    Using interface ppp0
    Connect: ppp0 /dev/ttyS0
    sent [LCP ConfReq id=0x1 ]
    rcvd [LCP ConfReq id=0x12 ]
    No auth is possible
    sent [LCP ConfRej id=0x12 ]
    rcvd [LCP ConfAck id=0x1 ]
    rcvd [LCP ConfReq id=0x13 ]
    sent [LCP ConfAck id=0x13 ]
    sent [LCP EchoReq id=0x0 magic=0xa1822443]
    sent [IPCP ConfReq id=0x1 ]
    rcvd [LCP DiscReq id=0x14 magic=0xf726c96e]
    rcvd [LCP EchoRep id=0x0 magic=0xf726c96e a1 82 24 43]
    rcvd [IPCP ConfReq id=0xc]
    sent [IPCP ConfNak id=0xc ]
    rcvd [IPCP ConfNak id=0x1 ]
    sent [IPCP ConfReq id=0x2 ]
    rcvd [IPCP ConfReq id=0xd]
    sent [IPCP ConfAck id=0xd]
    rcvd [IPCP ConfAck id=0x2 ]
    Could not determine remote IP address: defaulting to 10.64.64.64
    not replacing default route to wlan0 [172.20.10.1]
    local IP address 10.177.14.221
    remote IP address 10.64.64.64
    primary DNS address 89.19.64.44
    secondary DNS address 89.19.64.172
    [email protected]:~$

  4. Hey there,

    So I am having some issues installing this on Ubuntu Mate 16.04. I run the install script and everything installs correctly with no errors. However, when I reboot nothing happens. The stat light is dimly lit and there is no activity on the blue light. (I have to press the pwr button in order for it to “power on”) . Once powered on it wont connect. I run sudo pon and it just fails everytime. “status = 0x3 Connect script failed” This is a fresh install of Ubuntu. Any ideas? Thanks!

  5. Hey,

    I tried this but I haven’t manage to get it to work. I use Raspbian on my raspberry pi, does it has anything to say?

    I use the quectel EC25-E with the shield v2. I tried my SIM-card on my phone and find the correct APN here. My SIM-card has turned off the PIN-code. Does I need to do any changes because of this?

    Kind regards

    1. Hello,

      What is the error are you getting? Please share the log.
      Which antennas are you using? Is your Power supply sufficient?
      Does your sim ask for sim pin code? If yes please remove it.

      1. After i pressed “Y” on the question of auto-connection the raspberry re-booted and I couldn’t see anything special.
        I don’t know what changed but the next day it worked after i powered on the raspberry again. I later tried to take out and put in the sim-card again to see what happened. At first it did not work again, tried to reboot and still no change. When i turned the raspberry off, unplugged it from the power supply and then started t again. After this it worked again.

  6. Hi

    I use “Raspberry Pi 3G-4G/LTE Base Shield V2” with EC25 Mini PCle 4G/LTE Module.

    So,If I conecct LTE network necessary following items

    1.APN Name
    2.User Name
    3.Password
    4.Certification Type(PAP,CHAP)

    Please tell me how to setting above.

    1. Hello,

      1.APN Name: While installing the script you are asked for apn.
      2.User Name and
      3.Password: Remove noauth from /etc/ppp/peers/provider and add
      user “YOUR USERNAME”
      password “YOURPASSWORD”

      4.Certification Type(PAP,CHAP): Check section 5.8.4 of PPP Connection

      1. Hi Saeed

        Thanks for your support.

        OK,about “User Name and Password”.
        So,How to setting “APN Name” ?
        My “APN Name” is “freetel.link”
        What & Where I must write this characters.

        Kengo

  7. Hi Saeed

    Thank you.
    I understand.

    So,Finally, I must set Certification method.
    I understand PAP and CHAP.
    So,I want to know that How to write setting file on Raspberry pi.

    1.How to choose PAP or CHAP
    My provider accept both.
    Where is a setting file for Raspberry pi(stretch) choose certification method.

    2.How to write setting file.
    a./etc/ppp/pap-secrets
    b./etc/ppp/chap-secrets

    userName “aaaaa”
    passWord “bbbbb”

    Best Regard

  8. Hi Saeed

    This is result of “sudo pppd call gprs”

    I think serial connection of LTE network was successed.
    But ppp authentication was failed

    >Script chat -s -v -f /etc/chatscripts/quectel-chat-connect -T freetel.link finished (pid 713), status = 0x0
    >Serial connection established.
    >using channel 3
    >Using interface ppp0
    >Connect: ppp0 /dev/ttyUSB3
    >sent [LCP ConfReq id=0x1 ]
    >rcvd [LCP ConfReq id=0x24 ]
    >No auth is possible

    So Please tell me how to send certification request by pap

    kengo

    $ sudo pppd call gprs
    pppd options in effect:
    debug # (from /etc/ppp/peers/gprs)
    nodetach # (from /etc/ppp/peers/gprs)
    dump # (from /etc/ppp/peers/gprs)
    noauth # (from /etc/ppp/peers/gprs)
    remotename 3gppp # (from /etc/ppp/peers/gprs)
    /dev/ttyUSB3 # (from /etc/ppp/peers/gprs)
    115200 # (from /etc/ppp/peers/gprs)
    lock # (from /etc/ppp/peers/gprs)
    connect chat -s -v -f /etc/chatscripts/quectel-chat-connect -T freetel.link # (from /etc/ppp/peers/gprs)
    disconnect chat -s -v -f /etc/chatscripts/quectel-chat-disconnect # (from /etc/ppp/peers/gprs)
    nocrtscts # (from /etc/ppp/peers/gprs)
    modem # (from /etc/ppp/peers/gprs)
    asyncmap 0 # (from /etc/ppp/options)
    lcp-echo-failure 4 # (from /etc/ppp/options)
    lcp-echo-interval 30 # (from /etc/ppp/options)
    hide-password # (from /etc/ppp/peers/gprs)
    novj # (from /etc/ppp/peers/gprs)
    novjccomp # (from /etc/ppp/peers/gprs)
    ipcp-accept-local # (from /etc/ppp/peers/gprs)
    ipcp-accept-remote # (from /etc/ppp/peers/gprs)
    ipparam 3gppp # (from /etc/ppp/peers/gprs)
    noipdefault # (from /etc/ppp/peers/gprs)
    ipcp-max-failure 30 # (from /etc/ppp/peers/gprs)
    defaultroute # (from /etc/ppp/peers/gprs)
    usepeerdns # (from /etc/ppp/peers/gprs)
    noccp # (from /etc/ppp/peers/gprs)
    noipx # (from /etc/ppp/options)
    abort on (BUSY)
    abort on (NO CARRIER)
    abort on (NO DIALTONE)
    abort on (ERROR)
    abort on (NO ANSWER)
    timeout set to 30 seconds
    send (AT^M)
    expect (OK)
    ^M
    OK
    — got it

    send (ATE0^M)
    expect (OK)
    ^M
    ^M
    OK
    — got it

    send (ATI;+CSUB;+CSQ;+COPS?;+CGREG?;&D2^M)
    expect (OK)
    ^M
    ^M
    Quectel^M
    EC25^M
    Revision: EC25JFAR06A04M4G_DCM^M
    ^M
    SubEdition: V02^M
    ^M
    +CSQ: 12,99^M
    ^M
    +COPS: 0^M
    ^M
    +CGREG: 0,2^M
    ^M
    OK
    — got it

    send (AT+CGDCONT=1,”IP”,”freetel.link”,,0,0^M)
    expect (OK)
    ^M
    ^M
    OK
    — got it

    send (ATD*99#^M)
    expect (CONNECT)
    ^M
    ^M
    CONNECT
    — got it

    Script chat -s -v -f /etc/chatscripts/quectel-chat-connect -T freetel.link finished (pid 713), status = 0x0
    Serial connection established.
    using channel 3
    Using interface ppp0
    Connect: ppp0 /dev/ttyUSB3
    sent [LCP ConfReq id=0x1 ]
    rcvd [LCP ConfReq id=0x24 ]
    No auth is possible
    sent [LCP ConfRej id=0x24 ]
    rcvd [LCP ConfAck id=0x1 ]
    rcvd [LCP ConfReq id=0x25 ]
    sent [LCP ConfAck id=0x25 ]
    sent [LCP EchoReq id=0x0 magic=0xfd00715d]
    sent [IPCP ConfReq id=0x1 ]
    rcvd [LCP DiscReq id=0x26 magic=0xe4fbef78]
    rcvd [LCP EchoRep id=0x0 magic=0xe4fbef78 fd 00 71 5d]
    Modem hangup
    Connection terminated

  9. Hello there,

    I’m trying to use a Raspberry Pi 3 with the 3G-4G/LTE Base Shield V2 set with the EC25 Mini PCle 4G/LTE Module.

    It worked well on the USB port but I can’t make it work with the serial GPIO for some reasons. I read it could come from the mini serial that is used by default on the GPIO. Any idea of how use it directly ?

    Thank you for your help.
    Best regards.

    1. Hi,

      1. Did you bridge the UART resistor sections available under the shield?
      2. Did you enable Serial port hardware and disable getty service?

  10. I’m using “EC25-E 4G/LTE Mini PCIe with Raspberry Pi 3G-4G/LTE Base Shield V2” in Eagleye530s (artik 533 based) with ubuntu Ubuntu 16.04.5 LTS and 4.4.113-0533GS0F-44U-01Q5 kernel, and get:

    Couldn’t open the /dev/ppp device: No such device or address
    modprobe: FATAL: Module ppp_generic not found in directory /lib/modules/4.4.113-0533GS0F-44U-01Q5
    pppd: Please load the ppp_generic kernel module.

    Any idea? Regards

  11. Hello!
    I am trying to follow the steps, but after the final question “do you want to activate the reconnect service?” my whole Raspberry Pi shuts off and reboot.
    I have a 5V3A charger, an EC25-E module and a V2 Base Shield. I am using my Virgin Mobile SIM card, with the goto.virginmobile.uk APN.
    Would anyone know what is going wrong?

    Thank you very much!

  12. Thank you Saeed. Actually it did reboot in an anomalous way, before saving the settings. I had the charger connected to a power strip, I then connected it directly to a socket and it seems it goes to its normal reboot. But then? How do I actually connect to the internet once the Raspberry Pi has rebooted? Even saving the connect automatically option it does not connect automatically… Thanks for your advice

  13. TIP
    If you have to delete and re-add the default ppp0 route restart your network or at least i had too for the new route take effect.

    sudo route del default
    sudo route add default ppp0
    sudo /etc/init.d/networking restart

  14. Hey Saeed,
    I use a SIM card for eplus (AldiTalk) which works in another Router perfectly.
    In this router (3G router) the 3G authenitcation method is set to “none”.
    When I insert the SIM into my raspi with LTE shield and following your instructions, I get the following output:

    pppd options in effect:
    debug # (from /etc/ppp/peers/provider)
    updetach # (from /etc/ppp/peers/provider)
    dump # (from /etc/ppp/peers/provider)
    noauth # (from /etc/ppp/peers/provider)
    remotename 3gppp # (from /etc/ppp/peers/provider)
    /dev/ttyUSB3 # (from /etc/ppp/peers/provider)
    115200 # (from /etc/ppp/peers/provider)
    lock # (from /etc/ppp/peers/provider)
    connect chat -s -v -f /etc/chatscripts/chat-connect -T internet # (from /etc/ppp/peers/provider)
    disconnect chat -s -v -f /etc/chatscripts/chat-disconnect # (from /etc/ppp/peers/provider)
    nocrtscts # (from /etc/ppp/peers/provider)
    modem # (from /etc/ppp/peers/provider)
    asyncmap 0 # (from /etc/ppp/options)
    lcp-echo-failure 4 # (from /etc/ppp/options)
    lcp-echo-interval 30 # (from /etc/ppp/options)
    hide-password # (from /etc/ppp/peers/provider)
    novj # (from /etc/ppp/peers/provider)
    novjccomp # (from /etc/ppp/peers/provider)
    ipcp-accept-local # (from /etc/ppp/peers/provider)
    ipcp-accept-remote # (from /etc/ppp/peers/provider)
    ipparam 3gppp # (from /etc/ppp/peers/provider)
    noipdefault # (from /etc/ppp/peers/provider)
    ipcp-max-failure 30 # (from /etc/ppp/peers/provider)
    defaultroute # (from /etc/ppp/peers/provider)
    usepeerdns # (from /etc/ppp/peers/provider)
    noccp # (from /etc/ppp/peers/provider)
    noipx # (from /etc/ppp/options)
    abort on (BUSY)
    abort on (NO CARRIER)
    abort on (NO DIALTONE)
    abort on (ERROR)
    abort on (NO ANSWER)
    timeout set to 30 seconds
    send (AT^M)
    expect (OK)
    ^M
    OK
    — got it

    send (ATE0^M)
    expect (OK)
    ^M
    ^M
    OK
    — got it

    send (ATI;+CSUB;+CSQ;+COPS?;+CGREG?;&D2^M)
    expect (OK)
    ^M
    ^M
    Quectel^M
    EC25^M
    Revision: EC25EFAR06A03M4G^M
    ^M
    SubEdition: V03^M
    ^M
    +CSQ: 26,99^M
    ^M
    +COPS: 0^M
    ^M
    +CGREG: 0,2^M
    ^M
    OK
    — got it

    send (AT+CGDCONT=1,”IP”,”internet”,,0,0^M)
    expect (OK)
    ^M
    ^M
    OK
    — got it

    send (ATD*99#^M)
    expect (CONNECT)
    ^M
    ^M
    CONNECT
    — got it

    Script chat -s -v -f /etc/chatscripts/chat-connect -T internet finished (pid 1063), status = 0x0
    Serial connection established.
    using channel 3
    Using interface ppp0
    Connect: ppp0 /dev/ttyUSB3
    sent [LCP ConfReq id=0x1 ]
    rcvd [LCP ConfReq id=0x6 ]
    No auth is possible
    sent [LCP ConfRej id=0x6 ]
    rcvd [LCP ConfAck id=0x1 ]
    rcvd [LCP ConfReq id=0x7 ]
    sent [LCP ConfAck id=0x7 ]
    sent [LCP EchoReq id=0x0 magic=0x7114b92a]
    sent [IPCP ConfReq id=0x1 ]
    rcvd [LCP DiscReq id=0x8 magic=0xd5f47a24]
    rcvd [LCP EchoRep id=0x0 magic=0xd5f47a24 71 14 b9 2a]
    Modem hangup
    Connection terminated.

    What am I doing wrong?
    Thx for help, Volker

  15. Hi Saeed
    Thank a lot by your support.
    I bought a sixfab for 3G, 4G/LTE base shield V2 in order to connect to my carrier T-mobile. I’m using a Quectel EC25-AF. I try to follow your post but I can’t connect or surf. What I’m wrong?. Attached the log. Thanks by your help.

    [email protected]:~ $ sudo pppd call gprs
    pppd options in effect:
    debug # (from /etc/ppp/peers/gprs)
    nodetach # (from /etc/ppp/peers/gprs)
    dump # (from /etc/ppp/peers/gprs)
    noauth # (from /etc/ppp/peers/gprs)
    remotename 3gppp # (from /etc/ppp/peers/gprs)
    /dev/ttyUSB3 # (from /etc/ppp/peers/gprs)
    115200 # (from /etc/ppp/peers/gprs)
    lock # (from /etc/ppp/peers/gprs)
    connect chat -s -v -f /etc/chatscripts/quectel-chat-connect -T fast.t-mobile.com# (from /etc/ppp/peers/gprs)
    disconnect chat -s -v -f /etc/chatscripts/quectel-chat-disconnect # (from /etc/ppp/peers/gprs)
    nocrtscts # (from /etc/ppp/peers/gprs)
    modem # (from /etc/ppp/peers/gprs)
    asyncmap 0 # (from /etc/ppp/options)
    lcp-echo-failure 4 # (from /etc/ppp/options)
    lcp-echo-interval 30 # (from /etc/ppp/options)
    hide-password # (from /etc/ppp/peers/gprs)
    novj # (from /etc/ppp/peers/gprs)
    novjccomp # (from /etc/ppp/peers/gprs)
    ipcp-accept-local # (from /etc/ppp/peers/gprs)
    ipcp-accept-remote # (from /etc/ppp/peers/gprs)
    ipparam 3gppp # (from /etc/ppp/peers/gprs)
    noipdefault # (from /etc/ppp/peers/gprs)
    ipcp-max-failure 30 # (from /etc/ppp/peers/gprs)
    defaultroute # (from /etc/ppp/peers/gprs)
    usepeerdns # (from /etc/ppp/peers/gprs)
    noccp # (from /etc/ppp/peers/gprs)
    noipx # (from /etc/ppp/options)
    abort on (BUSY)
    abort on (NO CARRIER)
    abort on (NO DIALTONE)
    abort on (ERROR)
    abort on (NO ANSWER)
    timeout set to 30 seconds
    send (AT^M)
    expect (OK)
    ^M
    OK
    — got it

    send (ATE0^M)
    expect (OK)
    ^M
    ^M
    OK
    — got it

    send (ATI;+CSUB;+CSQ;+COPS?;+CGREG?;&D2^M)
    expect (OK)
    ^M
    ^M
    Quectel^M
    EC25^M
    Revision: EC25AFFAR07A03M4G^M
    ^M
    SubEdition: V05^M
    ^M
    +CSQ: 29,99^M
    ^M
    +COPS: 0,0,”T-Mobile”,7^M
    ^M
    +CGREG: 0,1^M
    ^M
    OK
    — got it

    send (AT+CGDCONT=1,”IP”,”fast.t-mobile.com”,,0,0^M)
    expect (OK)
    ^M
    ^M
    OK
    — got it

    send (ATD*99#^M)
    expect (CONNECT)
    ^M
    ^M
    CONNECT
    — got it

    Script chat -s -v -f /etc/chatscripts/quectel-chat-connect -T fast.t-mobile.com finished (pid 2730), status = 0x0
    Serial connection established.
    using channel 3
    Using interface ppp0
    Connect: ppp0 /dev/ttyUSB3
    sent [LCP ConfReq id=0x1 ]
    rcvd [LCP ConfReq id=0x9 ]
    No auth is possible
    sent [LCP ConfRej id=0x9 ]
    rcvd [LCP ConfAck id=0x1 ]
    rcvd [LCP ConfReq id=0xa ]
    sent [LCP ConfAck id=0xa ]
    sent [LCP EchoReq id=0x0 magic=0xeae6e4c2]
    sent [IPCP ConfReq id=0x1 ]
    rcvd [LCP DiscReq id=0xb magic=0xc3c9738]
    rcvd [LCP EchoRep id=0x0 magic=0xc3c9738 ea e6 e4 c2]
    Modem hangup
    Connection terminated.
    [email protected]:~ $ ifconfig ppp0
    ppp0: error fetching interface information: Device not found

  16. Hey Saeed,
    thx for answer.

    I tried internet.eplus.de also before with the same result.
    Then I switched to internet because my 3G Router uses this APN and can connect to the internet with it.

    Script chat -s -v -f /etc/chatscripts/chat-connect -T internet.eplus.de finished (pid 10462), status = 0x0
    Serial connection established.
    using channel 13
    Using interface ppp0
    Connect: ppp0 /dev/ttyUSB3
    sent [LCP ConfReq id=0x1 ]
    rcvd [LCP ConfReq id=0x24 ]
    No auth is possible
    sent [LCP ConfRej id=0x24 ]
    rcvd [LCP ConfAck id=0x1 ]
    rcvd [LCP ConfReq id=0x25 ]
    sent [LCP ConfAck id=0x25 ]
    sent [LCP EchoReq id=0x0 magic=0x7a3eaccb]
    sent [IPCP ConfReq id=0x1 ]
    rcvd [LCP DiscReq id=0x26 magic=0xe496b039]
    rcvd [LCP EchoRep id=0x0 magic=0xe496b039 7a 3e ac cb]
    Modem hangup
    Connection terminated.

  17. Hi Saeed:
    I am using the “Sixfab GSM/GPRS shield v1.5”. I connected the shield through the microUSB to Raspberry Pi 3 B, the OS is Raspbian Stretch. I followed the the steps in this tutorial, after the pi rebooted, I got the following error:

    [email protected]:~ $ sudo pon
    /usr/sbin/pppd: In file /etc/ppp/peers/provider: unrecognized option ‘/dev/’

    I am doing my senior design, and the system need to be connected to cloud, as well as GPS coordinates, I would really grateful if you could help me to find a tutorial which provide those information.

  18. Hey Saeed,
    do you have any further ideas how to get a connection in my case?
    If not, the inventment in the shield seems to be useless for me ;(

    Greetings
    Volker

  19. Trying to get PPP internetconnection working on Raspberry pi3B+ using Raspberry Pi Cellular IoT HAT – LTE-M & NB-IoT & eGPRS

    The install script works fine. But trying to start with “sudo pon” gives me the error “/usr/sbin/pppd: In file /etc/ppp/peers/provider: unrecognized option ‘/dev/ttyS0’
    What am I doing wrong?

    Another question: Is it possible to get the hat to work as PPP without the USB-cable? (using that cable I might as well use a USB-modem)

  20. In what way should I power it?
    I have the hat connected to the Pi via the I/O header and the USB-cable. Does it need separate power supply, and where should I connect it?

    1. For you Raspberry Pi Cellular IoT HAT, connecting through UART is enough. There is no need for a separate power supply.

  21. hello,
    when i use the sudo pon command i get this output.

    pppd options in effect:
    debug # (from /etc/ppp/peers/provider)
    updetach # (from /etc/ppp/peers/provider)
    dump # (from /etc/ppp/peers/provider)
    noauth # (from /etc/ppp/peers/provider)
    remotename 3gppp # (from /etc/ppp/peers/provider)
    /dev/ttyS0 # (from /etc/ppp/peers/provider)
    115200 # (from /etc/ppp/peers/provider)
    lock # (from /etc/ppp/peers/provider)
    connect chat -s -v -f /etc/chatscripts/chat-connect -T fast.t-mobile.com # (from /etc/ppp/peers/provider)
    disconnect chat -s -v -f /etc/chatscripts/chat-disconnect # (from /etc/ppp/peers/provider)
    nocrtscts # (from /etc/ppp/peers/provider)
    modem # (from /etc/ppp/peers/provider)
    asyncmap 0 # (from /etc/ppp/options)
    lcp-echo-failure 4 # (from /etc/ppp/options)
    lcp-echo-interval 30 # (from /etc/ppp/options)
    hide-password # (from /etc/ppp/peers/provider)
    novj # (from /etc/ppp/peers/provider)
    novjccomp # (from /etc/ppp/peers/provider)
    ipcp-accept-local # (from /etc/ppp/peers/provider)
    ipcp-accept-remote # (from /etc/ppp/peers/provider)
    ipparam 3gppp # (from /etc/ppp/peers/provider)
    noipdefault # (from /etc/ppp/peers/provider)
    ipcp-max-failure 30 # (from /etc/ppp/peers/provider)
    defaultroute # (from /etc/ppp/peers/provider)
    usepeerdns # (from /etc/ppp/peers/provider)
    noccp # (from /etc/ppp/peers/provider)
    noipx # (from /etc/ppp/options)
    Device ttyS0 is locked by pid 2855

    How do i get the ttys0 device to be unlocked thanks

  22. Hi Saeed, Thank you for the update.

    I’ve installed ppp for my Raspberry Pi Cellular IoT HAT. I’ve chosen the GPRS/EDGE technology. APN : Sunsurf (Singapore) Port : ttyUSB0.

    I cannot connect to internet. Here is my log :

    Apr 18 11:34:18 beam chat[1041]: expect (OK)
    Apr 18 11:34:18 beam sh[539]: expect (OK)
    Apr 18 11:34:48 beam chat[1041]: alarm
    Apr 18 11:34:48 beam sh[539]: alarm
    Apr 18 11:34:48 beam sh[539]: Failed
    Apr 18 11:34:48 beam chat[1041]: Failed
    Apr 18 11:34:48 beam sh[539]: Script chat -s -v -f /etc/chatscripts/chat-connect -T sunsurf finished (pid 1040), status = 0x3
    Apr 18 11:34:48 beam sh[539]: Connect script failed
    Apr 18 11:34:48 beam pppd[1038]: Script chat -s -v -f /etc/chatscripts/chat-connect -T sunsurf finished (pid 1040), status = 0x3
    Apr 18 11:34:48 beam pppd[1038]: Connect script failed
    Apr 18 11:34:49 beam pppd[1038]: Exit.
    Apr 18 11:34:50 beam sh[539]: /usr/src/reconnect.sh: 13: /usr/src/reconnect.sh: gpio: not found
    Apr 18 11:34:50 beam sh[539]: /usr/src/reconnect.sh: 13: [: =: unexpected operator
    Apr 18 11:34:50 beam sh[539]: ping: SO_BINDTODEVICE: Invalid argument
    Apr 18 11:34:50 beam sh[539]: Connection down, reconnecting…
    Apr 18 11:34:50 beam pppd[1074]: pppd options in effect:
    Apr 18 11:34:50 beam sh[539]: pppd options in effect:
    Apr 18 11:34:50 beam sh[539]: debug#011#011# (from /etc/ppp/peers/provider)
    Apr 18 11:34:50 beam sh[539]: updetach#011#011# (from /etc/ppp/peers/provider)
    Apr 18 11:34:50 beam sh[539]: dump#011#011# (from /etc/ppp/peers/provider)
    Apr 18 11:34:50 beam sh[539]: noauth#011#011# (from /etc/ppp/peers/provider)
    Apr 18 11:34:50 beam sh[539]: remotename 3gppp#011#011# (from /etc/ppp/peers/provider)
    Apr 18 11:34:50 beam sh[539]: /dev/ttyUSB0#011#011# (from /etc/ppp/peers/provider)
    Apr 18 11:34:50 beam sh[539]: 115200#011#011# (from /etc/ppp/peers/provider)
    Apr 18 11:34:50 beam sh[539]: lock#011#011# (from /etc/ppp/peers/provider)
    Apr 18 11:34:50 beam sh[539]: connect chat -s -v -f /etc/chatscripts/chat-connect -T sunsurf#011#011# (from /etc/ppp/peers/provider)
    Apr 18 11:34:50 beam sh[539]: disconnect chat -s -v -f /etc/chatscripts/chat-disconnect#011#011# (from /etc/ppp/peers/provider)
    Apr 18 11:34:50 beam sh[539]: nocrtscts#011#011# (from /etc/ppp/peers/provider)
    Apr 18 11:34:50 beam sh[539]: modem#011#011# (from /etc/ppp/peers/provider)
    Apr 18 11:34:50 beam sh[539]: asyncmap 0#011#011# (from /etc/ppp/options)
    Apr 18 11:34:50 beam sh[539]: lcp-echo-failure 4#011#011# (from /etc/ppp/options)
    Apr 18 11:34:50 beam sh[539]: lcp-echo-interval 30#011#011# (from /etc/ppp/options)
    Apr 18 11:34:50 beam sh[539]: hide-password#011#011# (from /etc/ppp/peers/provider)
    Apr 18 11:34:50 beam sh[539]: novj#011#011# (from /etc/ppp/peers/provider)
    Apr 18 11:34:50 beam sh[539]: novjccomp#011#011# (from /etc/ppp/peers/provider)
    Apr 18 11:34:50 beam sh[539]: ipcp-accept-local#011#011# (from /etc/ppp/peers/provider)
    Apr 18 11:34:50 beam sh[539]: ipcp-accept-remote#011#011# (from /etc/ppp/peers/provider)
    Apr 18 11:34:50 beam sh[539]: ipparam 3gppp#011#011# (from /etc/ppp/peers/provider)
    Apr 18 11:34:50 beam sh[539]: noipdefault#011#011# (from /etc/ppp/peers/provider)
    Apr 18 11:34:50 beam sh[539]: ipcp-max-failure 30#011#011# (from /etc/ppp/peers/provider)
    Apr 18 11:34:50 beam sh[539]: defaultroute#011#011# (from /etc/ppp/peers/provider)
    Apr 18 11:34:50 beam sh[539]: usepeerdns#011#011# (from /etc/ppp/peers/provider)
    Apr 18 11:34:50 beam sh[539]: noccp#011#011# (from /etc/ppp/peers/provider)
    Apr 18 11:34:50 beam sh[539]: noipx#011#011# (from /etc/ppp/options)
    Apr 18 11:34:50 beam pppd[1074]: debug#011#011# (from /etc/ppp/peers/provider)
    Apr 18 11:34:50 beam pppd[1074]: updetach#011#011# (from /etc/ppp/peers/provider)
    Apr 18 11:34:50 beam pppd[1074]: dump#011#011# (from /etc/ppp/peers/provider)
    Apr 18 11:34:50 beam pppd[1074]: noauth#011#011# (from /etc/ppp/peers/provider)
    Apr 18 11:34:50 beam pppd[1074]: remotename 3gppp#011#011# (from /etc/ppp/peers/provider)
    Apr 18 11:34:50 beam pppd[1074]: /dev/ttyUSB0#011#011# (from /etc/ppp/peers/provider)
    Apr 18 11:34:50 beam pppd[1074]: 115200#011#011# (from /etc/ppp/peers/provider)
    Apr 18 11:34:50 beam pppd[1074]: lock#011#011# (from /etc/ppp/peers/provider)
    Apr 18 11:34:50 beam pppd[1074]: connect chat -s -v -f /etc/chatscripts/chat-connect -T sunsurf#011#011# (from /etc/ppp/peers/provider)
    Apr 18 11:34:50 beam pppd[1074]: disconnect chat -s -v -f /etc/chatscripts/chat-disconnect#011#011# (from /etc/ppp/peers/provider)
    Apr 18 11:34:50 beam pppd[1074]: nocrtscts#011#011# (from /etc/ppp/peers/provider)
    Apr 18 11:34:50 beam pppd[1074]: modem#011#011# (from /etc/ppp/peers/provider)
    Apr 18 11:34:50 beam pppd[1074]: asyncmap 0#011#011# (from /etc/ppp/options)
    Apr 18 11:34:50 beam pppd[1074]: lcp-echo-failure 4#011#011# (from /etc/ppp/options)
    Apr 18 11:34:50 beam pppd[1074]: lcp-echo-interval 30#011#011# (from /etc/ppp/options)
    Apr 18 11:34:50 beam pppd[1074]: hide-password#011#011# (from /etc/ppp/peers/provider)
    Apr 18 11:34:50 beam pppd[1074]: novj#011#011# (from /etc/ppp/peers/provider)
    Apr 18 11:34:50 beam pppd[1074]: novjccomp#011#011# (from /etc/ppp/peers/provider)
    Apr 18 11:34:50 beam pppd[1074]: ipcp-accept-local#011#011# (from /etc/ppp/peers/provider)
    Apr 18 11:34:50 beam pppd[1074]: ipcp-accept-remote#011#011# (from /etc/ppp/peers/provider)
    Apr 18 11:34:50 beam pppd[1074]: ipparam 3gppp#011#011# (from /etc/ppp/peers/provider)
    Apr 18 11:34:50 beam pppd[1074]: noipdefault#011#011# (from /etc/ppp/peers/provider)
    Apr 18 11:34:50 beam pppd[1074]: ipcp-max-failure 30#011#011# (from /etc/ppp/peers/provider)
    Apr 18 11:34:50 beam pppd[1074]: defaultroute#011#011# (from /etc/ppp/peers/provider)
    Apr 18 11:34:50 beam pppd[1074]: usepeerdns#011#011# (from /etc/ppp/peers/provider)
    Apr 18 11:34:50 beam pppd[1074]: noccp#011#011# (from /etc/ppp/peers/provider)
    Apr 18 11:34:50 beam pppd[1074]: noipx#011#011# (from /etc/ppp/options)
    Apr 18 11:34:50 beam pppd[1074]: pppd 2.4.7 started by root, uid 0
    Apr 18 11:34:51 beam chat[1077]: abort on (BUSY)
    Apr 18 11:34:51 beam chat[1077]: abort on (NO CARRIER)
    Apr 18 11:34:51 beam sh[539]: abort on (BUSY)
    Apr 18 11:34:51 beam sh[539]: abort on (NO CARRIER)
    Apr 18 11:34:51 beam sh[539]: abort on (NO DIALTONE)
    Apr 18 11:34:51 beam sh[539]: abort on (ERROR)
    Apr 18 11:34:51 beam sh[539]: abort on (NO ANSWER)
    Apr 18 11:34:51 beam sh[539]: timeout set to 30 seconds
    Apr 18 11:34:51 beam sh[539]: send (AT^M)
    Apr 18 11:34:51 beam chat[1077]: abort on (NO DIALTONE)
    Apr 18 11:34:51 beam chat[1077]: abort on (ERROR)
    Apr 18 11:34:51 beam chat[1077]: abort on (NO ANSWER)
    Apr 18 11:34:51 beam chat[1077]: timeout set to 30 seconds
    Apr 18 11:34:51 beam chat[1077]: send (AT^M)
    Apr 18 11:34:51 beam chat[1077]: expect (OK)
    Apr 18 11:34:51 beam sh[539]: expect (OK)
    Apr 18 11:35:21 beam chat[1077]: alarm
    Apr 18 11:35:21 beam sh[539]: alarm
    Apr 18 11:35:21 beam sh[539]: Failed
    Apr 18 11:35:21 beam chat[1077]: Failed
    Apr 18 11:35:21 beam sh[539]: Script chat -s -v -f /etc/chatscripts/chat-connect -T sunsurf finished (pid 1076), status = 0x3
    Apr 18 11:35:21 beam sh[539]: Connect script failed
    Apr 18 11:35:21 beam pppd[1074]: Script chat -s -v -f /etc/chatscripts/chat-connect -T sunsurf finished (pid 1076), status = 0x3
    Apr 18 11:35:21 beam pppd[1074]: Connect script failed
    Apr 18 11:35:22 beam pppd[1074]: Exit.
    Apr 18 11:35:23 beam sh[539]: /usr/src/reconnect.sh: 13: /usr/src/reconnect.sh: gpio: not found
    Apr 18 11:35:23 beam sh[539]: /usr/src/reconnect.sh: 13: [: =: unexpected operator
    Apr 18 11:35:23 beam sh[539]: ping: SO_BINDTODEVICE: Invalid argument
    Apr 18 11:35:23 beam sh[539]: Connection down, reconnecting…
    Apr 18 11:35:23 beam pppd[1127]: pppd options in effect:
    Apr 18 11:35:23 beam sh[539]: pppd options in effect:
    Apr 18 11:35:23 beam sh[539]: debug#011#011# (from /etc/ppp/peers/provider)
    Apr 18 11:35:23 beam sh[539]: updetach#011#011# (from /etc/ppp/peers/provider)
    Apr 18 11:35:23 beam sh[539]: dump#011#011# (from /etc/ppp/peers/provider)
    Apr 18 11:35:23 beam sh[539]: noauth#011#011# (from /etc/ppp/peers/provider)
    Apr 18 11:35:23 beam sh[539]: remotename 3gppp#011#011# (from /etc/ppp/peers/provider)
    Apr 18 11:35:23 beam sh[539]: /dev/ttyUSB0#011#011# (from /etc/ppp/peers/provider)
    Apr 18 11:35:23 beam sh[539]: 115200#011#011# (from /etc/ppp/peers/provider)
    Apr 18 11:35:23 beam sh[539]: lock#011#011# (from /etc/ppp/peers/provider)
    Apr 18 11:35:23 beam sh[539]: connect chat -s -v -f /etc/chatscripts/chat-connect -T sunsurf#011#011# (from /etc/ppp/peers/provider)
    Apr 18 11:35:23 beam sh[539]: disconnect chat -s -v -f /etc/chatscripts/chat-disconnect#011#011# (from /etc/ppp/peers/provider)
    Apr 18 11:35:23 beam sh[539]: nocrtscts#011#011# (from /etc/ppp/peers/provider)
    Apr 18 11:35:23 beam sh[539]: modem#011#011# (from /etc/ppp/peers/provider)
    Apr 18 11:35:23 beam sh[539]: asyncmap 0#011#011# (from /etc/ppp/options)
    Apr 18 11:35:23 beam sh[539]: lcp-echo-failure 4#011#011# (from /etc/ppp/options)
    Apr 18 11:35:23 beam sh[539]: lcp-echo-interval 30#011#011# (from /etc/ppp/options)
    Apr 18 11:35:23 beam sh[539]: hide-password#011#011# (from /etc/ppp/peers/provider)
    Apr 18 11:35:23 beam sh[539]: novj#011#011# (from /etc/ppp/peers/provider)
    Apr 18 11:35:23 beam sh[539]: novjccomp#011#011# (from /etc/ppp/peers/provider)
    Apr 18 11:35:23 beam sh[539]: ipcp-accept-local#011#011# (from /etc/ppp/peers/provider)
    Apr 18 11:35:23 beam sh[539]: ipcp-accept-remote#011#011# (from /etc/ppp/peers/provider)
    Apr 18 11:35:23 beam sh[539]: ipparam 3gppp#011#011# (from /etc/ppp/peers/provider)
    Apr 18 11:35:23 beam sh[539]: noipdefault#011#011# (from /etc/ppp/peers/provider)
    Apr 18 11:35:23 beam sh[539]: ipcp-max-failure 30#011#011# (from /etc/ppp/peers/provider)
    Apr 18 11:35:23 beam sh[539]: defaultroute#011#011# (from /etc/ppp/peers/provider)
    Apr 18 11:35:23 beam sh[539]: usepeerdns#011#011# (from /etc/ppp/peers/provider)
    Apr 18 11:35:23 beam sh[539]: noccp#011#011# (from /etc/ppp/peers/provider)
    Apr 18 11:35:23 beam sh[539]: noipx#011#011# (from /etc/ppp/options)
    Apr 18 11:35:23 beam pppd[1127]: debug#011#011# (from /etc/ppp/peers/provider)
    Apr 18 11:35:23 beam pppd[1127]: updetach#011#011# (from /etc/ppp/peers/provider)
    Apr 18 11:35:23 beam pppd[1127]: dump#011#011# (from /etc/ppp/peers/provider)
    Apr 18 11:35:23 beam pppd[1127]: noauth#011#011# (from /etc/ppp/peers/provider)
    Apr 18 11:35:23 beam pppd[1127]: remotename 3gppp#011#011# (from /etc/ppp/peers/provider)
    Apr 18 11:35:23 beam pppd[1127]: /dev/ttyUSB0#011#011# (from /etc/ppp/peers/provider)
    Apr 18 11:35:23 beam pppd[1127]: 115200#011#011# (from /etc/ppp/peers/provider)
    Apr 18 11:35:23 beam pppd[1127]: lock#011#011# (from /etc/ppp/peers/provider)
    Apr 18 11:35:23 beam pppd[1127]: connect chat -s -v -f /etc/chatscripts/chat-connect -T sunsurf#011#011# (from /etc/ppp/peers/provider)
    Apr 18 11:35:23 beam pppd[1127]: disconnect chat -s -v -f /etc/chatscripts/chat-disconnect#011#011# (from /etc/ppp/peers/provider)
    Apr 18 11:35:23 beam pppd[1127]: nocrtscts#011#011# (from /etc/ppp/peers/provider)
    Apr 18 11:35:23 beam pppd[1127]: modem#011#011# (from /etc/ppp/peers/provider)
    Apr 18 11:35:23 beam pppd[1127]: asyncmap 0#011#011# (from /etc/ppp/options)
    Apr 18 11:35:23 beam pppd[1127]: lcp-echo-failure 4#011#011# (from /etc/ppp/options)
    Apr 18 11:35:23 beam pppd[1127]: lcp-echo-interval 30#011#011# (from /etc/ppp/options)
    Apr 18 11:35:23 beam pppd[1127]: hide-password#011#011# (from /etc/ppp/peers/provider)
    Apr 18 11:35:23 beam pppd[1127]: novj#011#011# (from /etc/ppp/peers/provider)
    Apr 18 11:35:23 beam pppd[1127]: novjccomp#011#011# (from /etc/ppp/peers/provider)
    Apr 18 11:35:23 beam pppd[1127]: ipcp-accept-local#011#011# (from /etc/ppp/peers/provider)
    Apr 18 11:35:23 beam pppd[1127]: ipcp-accept-remote#011#011# (from /etc/ppp/peers/provider)
    Apr 18 11:35:23 beam pppd[1127]: ipparam 3gppp#011#011# (from /etc/ppp/peers/provider)
    Apr 18 11:35:23 beam pppd[1127]: noipdefault#011#011# (from /etc/ppp/peers/provider)
    Apr 18 11:35:23 beam pppd[1127]: ipcp-max-failure 30#011#011# (from /etc/ppp/peers/provider)
    Apr 18 11:35:23 beam pppd[1127]: defaultroute#011#011# (from /etc/ppp/peers/provider)
    Apr 18 11:35:23 beam pppd[1127]: usepeerdns#011#011# (from /etc/ppp/peers/provider)
    Apr 18 11:35:23 beam pppd[1127]: noccp#011#011# (from /etc/ppp/peers/provider)
    Apr 18 11:35:23 beam pppd[1127]: noipx#011#011# (from /etc/ppp/options)
    Apr 18 11:35:23 beam pppd[1127]: pppd 2.4.7 started by root, uid 0
    Apr 18 11:35:24 beam chat[1129]: abort on (BUSY)
    Apr 18 11:35:24 beam chat[1129]: abort on (NO CARRIER)
    Apr 18 11:35:24 beam sh[539]: abort on (BUSY)
    Apr 18 11:35:24 beam sh[539]: abort on (NO CARRIER)
    Apr 18 11:35:24 beam sh[539]: abort on (NO DIALTONE)
    Apr 18 11:35:24 beam sh[539]: abort on (ERROR)
    Apr 18 11:35:24 beam sh[539]: abort on (NO ANSWER)
    Apr 18 11:35:24 beam sh[539]: timeout set to 30 seconds
    Apr 18 11:35:24 beam sh[539]: send (AT^M)
    Apr 18 11:35:24 beam chat[1129]: abort on (NO DIALTONE)
    Apr 18 11:35:24 beam chat[1129]: abort on (ERROR)
    Apr 18 11:35:24 beam chat[1129]: abort on (NO ANSWER)
    Apr 18 11:35:24 beam chat[1129]: timeout set to 30 seconds
    Apr 18 11:35:24 beam chat[1129]: send (AT^M)
    Apr 18 11:35:24 beam chat[1129]: expect (OK)
    Apr 18 11:35:24 beam sh[539]: expect (OK)

  23. Dear Saeed !
    I succeeded for install model 4G with my Rasp Pi follow all step you shared , now i can connect internet normally.
    I trying to check status of internet connection by AT command code but it not work. so , Can you help me !

    1. The USB provides you with 4 device options (ttyUSB0~3)
      Among them,
      ttyUSB0 DM
      ttyUSB1 GPS NMEA OUTPUT
      ttyUSB2 AT Command Communication
      ttyUSB3 PPP connection or AT command communication

  24. Hello Saeed,

    I’ve tried with ttyS0 and I have this error :
    pppd options in effect:
    debug # (from /etc/ppp/peers/provider)
    updetach # (from /etc/ppp/peers/provider)
    dump # (from /etc/ppp/peers/provider)
    noauth # (from /etc/ppp/peers/provider)
    remotename 3gppp # (from /etc/ppp/peers/provider)
    /dev/ttyS0 # (from /etc/ppp/peers/provider)
    115200 # (from /etc/ppp/peers/provider)
    lock # (from /etc/ppp/peers/provider)
    connect chat -s -v -f /etc/chatscripts/chat-connect -T sunsurf # (from /etc/ppp/peers/provider)
    disconnect chat -s -v -f /etc/chatscripts/chat-disconnect # (from /etc/ppp/peers/provider)
    nocrtscts # (from /etc/ppp/peers/provider)
    modem # (from /etc/ppp/peers/provider)
    asyncmap 0 # (from /etc/ppp/options)
    lcp-echo-failure 4 # (from /etc/ppp/options)
    lcp-echo-interval 30 # (from /etc/ppp/options)
    hide-password # (from /etc/ppp/peers/provider)
    novj # (from /etc/ppp/peers/provider)
    novjccomp # (from /etc/ppp/peers/provider)
    ipcp-accept-local # (from /etc/ppp/peers/provider)
    ipcp-accept-remote # (from /etc/ppp/peers/provider)
    ipparam 3gppp # (from /etc/ppp/peers/provider)
    noipdefault # (from /etc/ppp/peers/provider)
    ipcp-max-failure 30 # (from /etc/ppp/peers/provider)
    defaultroute # (from /etc/ppp/peers/provider)
    usepeerdns # (from /etc/ppp/peers/provider)
    noccp # (from /etc/ppp/peers/provider)
    noipx # (from /etc/ppp/options)
    Can’t get terminal parameters: Input/output error
    Script chat -s -v -f /etc/chatscripts/chat-connect -T sunsurf finished (pid 3188), status = 0x2
    Connect script failed

    Do you think the problem can be with my SIM card ? I’m using a 4G SIM card and it might not be compatible with the HAT.

    1. It hasn’t even started communication with the SIM.
      Is your serial enabled?
      Could you please share the image of your setup?

      you can mail at hello[at]sixfab[dot]com

      1. Hi Saeed.

        Yes the serial is enabled and Login shell to be accessible over serial is disable.
        Thank you for your help, I have sent you a mail.

  25. I am having to enter:
    sudo route del default
    sudo route add default ppp0

    everytime I power on and off again. A reboot is no problem. Is there any file option I can change to make the default ppp0 persistant for power offs?

  26. Hi Saeed, Upon installation I’ve chose the third options for PPP connections. And I’m using Cellular IoT App. Shield. After I done all the steps and choses the wrong USB port with ttyUSB3. And i tried to reinstall again with the correct port to ttyS0. And i’ve encounter several issues. first things first when I tried to sudo pon this issues occurs :
    [email protected]:~ $ sudo pon
    pppd options in effect:
    debug # (from /etc/ppp/peers/provider)
    updetach # (from /etc/ppp/peers/provider)
    dump # (from /etc/ppp/peers/provider)
    noauth # (from /etc/ppp/peers/provider)
    remotename 3gppp # (from /etc/ppp/peers/provider)
    /dev/ttyS0 # (from /etc/ppp/peers/provider)
    115200 # (from /etc/ppp/peers/provider)
    lock # (from /etc/ppp/peers/provider)
    connect chat -s -v -f /etc/chatscripts/chat-connect -T tunetalk # (from /etc/ppp/peers/provider)
    disconnect chat -s -v -f /etc/chatscripts/chat-disconnect # (from /etc/ppp/peers/provider)
    nocrtscts # (from /etc/ppp/peers/provider)
    modem # (from /etc/ppp/peers/provider)
    asyncmap 0 # (from /etc/ppp/options)
    lcp-echo-failure 4 # (from /etc/ppp/options)
    lcp-echo-interval 30 # (from /etc/ppp/options)
    hide-password # (from /etc/ppp/peers/provider)
    novj # (from /etc/ppp/peers/provider)
    novjccomp # (from /etc/ppp/peers/provider)
    ipcp-accept-local # (from /etc/ppp/peers/provider)
    ipcp-accept-remote # (from /etc/ppp/peers/provider)
    ipparam 3gppp # (from /etc/ppp/peers/provider)
    noipdefault # (from /etc/ppp/peers/provider)
    ipcp-max-failure 30 # (from /etc/ppp/peers/provider)
    defaultroute # (from /etc/ppp/peers/provider)
    usepeerdns # (from /etc/ppp/peers/provider)
    noccp # (from /etc/ppp/peers/provider)
    noipx # (from /etc/ppp/options)
    abort on (BUSY)
    abort on (NO CARRIER)
    abort on (NO DIALTONE)
    abort on (ERROR)
    abort on (NO ANSWER)
    timeout set to 30 seconds
    send (AT^M)
    — write timed out
    Failed
    Script chat -s -v -f /etc/chatscripts/chat-connect -T tunetalk finished (pid 27380), status = 0x1
    Connect script failed

    After several tries, i get this errors:
    pppd options in effect:
    debug # (from /etc/ppp/peers/provider)
    updetach # (from /etc/ppp/peers/provider)
    dump # (from /etc/ppp/peers/provider)
    noauth # (from /etc/ppp/peers/provider)
    remotename 3gppp # (from /etc/ppp/peers/provider)
    /dev/ttyS0 # (from /etc/ppp/peers/provider)
    115200 # (from /etc/ppp/peers/provider)
    lock # (from /etc/ppp/peers/provider)
    connect chat -s -v -f /etc/chatscripts/chat-connect -T tunetalk # (from /etc/ppp/peers/provider)
    disconnect chat -s -v -f /etc/chatscripts/chat-disconnect # (from /etc/ppp/peers/provider)
    nocrtscts # (from /etc/ppp/peers/provider)
    modem # (from /etc/ppp/peers/provider)
    asyncmap 0 # (from /etc/ppp/options)
    lcp-echo-failure 4 # (from /etc/ppp/options)
    lcp-echo-interval 30 # (from /etc/ppp/options)
    hide-password # (from /etc/ppp/peers/provider)
    novj # (from /etc/ppp/peers/provider)
    novjccomp # (from /etc/ppp/peers/provider)
    ipcp-accept-local # (from /etc/ppp/peers/provider)
    ipcp-accept-remote # (from /etc/ppp/peers/provider)
    ipparam 3gppp # (from /etc/ppp/peers/provider)
    noipdefault # (from /etc/ppp/peers/provider)
    ipcp-max-failure 30 # (from /etc/ppp/peers/provider)
    defaultroute # (from /etc/ppp/peers/provider)
    usepeerdns # (from /etc/ppp/peers/provider)
    noccp # (from /etc/ppp/peers/provider)
    noipx # (from /etc/ppp/options)
    Device ttyS0 is locked by pid 16366

    Afterwards, my pi wasn’t able to connect to internet. But the status light in on the Shield lights up with blinking. So i’ve need to manually set the default gateway in order to reconnect. Is there any way to fix this? I can send you more details about it. Thanks

  27. Hi i have two questions,

    1. How can i stop auto reconnect?
    2. How can i change reconnect to 30 minutes trying?

    1. 1. You can use sudo systemctl stop reconnect.service to stop and
      sudo systemctl stop reconnect.service to disable.

      2. You can replace sleep 1 with sleep 30m in /usr/src/reconnect.sh

  28. [email protected]:~ $ sudo ./install.sh
    Please choose your Sixfab Shield:
    1: GSM/GPRS Shield
    2: 3G, 4G/LTE Base Shield
    3: Cellular IoT Shield
    2
    You chose Base Shield
    Downloading setup files
    –2019-05-09 21:56:08– https://raw.githubusercontent.com/sixfab/rpiShields/master/ppp_installer/chat-connect
    Resolving raw.githubusercontent.com (raw.githubusercontent.com)… 151.101.4.133
    Connecting to raw.githubusercontent.com (raw.githubusercontent.com)|151.101.4.133|:443… connected.
    HTTP request sent, awaiting response… 404 Not Found
    2019-05-09 21:56:09 ERROR 404: Not Found.

    Download failed

    Getting this error message, also I had to connect the 4G shield via UART with the raspberry because when i used it by USB the raspberry would randomly shutdown probably because of power consumption; the problem is I was also using the GPS, how do I get the data from the GPS via UART?

    1. Hi,

      Please update the install.sh script. You are trying an old script.

      Power Supply is a huge factor for this 4G/LTE Base shield. Make sure you are using 5V 2A adapter to power up your device.

      If your UART is connected to the internet then you cannot use it for GPS. Use USB for GPS.

  29. Thanks Saeed
    To anyone with the same problem I suggest deleting all the old install.sh scripts from the /home/pi folder, since it will always run the oldest file.
    Also I fixed the power supply issue using an external power supply connected to the shield via the +5V- pins, taking the black and red cables from a standard USB cable.

  30. I’m seeing:

    send (AT^M)
    warning: write() on stdout returned 0
    — write failed: Success
    Failed
    Script chat -s -v -f /etc/chatscripts/chat-connect -T wholesale finished (pid 9275), status = 0x1
    Connect script failed

    My setup:

    Device: Cellular IoT HAT
    Carrier: Ting
    APN: wholesale
    Tech: NB-IoT
    Port: ttyS0

    Any thoughts? I posted the full log in a github issue: https://github.com/sixfab/Sixfab_PPP_Installer/issues/3

  31. Hi,

    I have the Cellular IoT App sheild, but it deos not respond after installing all of the above.
    Sudo pon gives unrecognised option ‘/dev/ttyS0’

  32. Hi,
    I have attempted installing the Cellular IoT App Shield onto a A+ Pi many times without success. The device does not appear as ttyS0.
    I have followed all instructions.
    ‘sudo pon’ gives the following error:
    /usr/sbin/pppd: In file /etc/ppp/peers/provider: unrecognized option ‘dev/ttyS0’

  33. “Serial login shell is disabled and serial interface is enabled”
    anything else I can do to get it functioning?

  34. Hello,
    i’ve a ip but no connexion.
    I’ve activate auto connect/reconnect service at R.Pi boot up but no result.

    After a sudo pon,no result too and, at the end, i’ve : Device ttyUSB3 is locked by pid

    A solution ?
    Thanks a lot

    1. The ttyUSB3 is locked by the auto0reconnect service.
      Can you see ppp0 in ifconfig output?
      If yes, Did you try to ping using ppp0 interface?

      1. I see nothing about ppp0 in ifconfig : error in the research and no device found.

        I re install all with this tutorial and after a “sudo pon” i’ve a “modem hangup – connextion terminated”.
        i follow by a “sudo poff” and i’ve a “/usr/bin/poff : no pppd is running none stopped”

        I don’t understood why ppp0 is not running.
        Some Help please ?
        Thanks

        1. Do you have installed sure reconnect service?
          Could you please send the image of your setup?
          Is there any other USB device connected to your Raspberry Pi?

          1. Hello,
            I found why : pincode of sim card.
            I desactivate it with my phone and ive a conexion !
            BUT, theres is a BUT : its very very slow
            My zone of 4g are good here. I ‘ve try it near the window and its the same thing.
            Some idea ?

  35. Any further thoughts ?
    I’ve followed all instructions without success.
    Have I got a faulty unit? Does this actually work?

  36. Just for your info, EC25 + Rpi 4G Shield works great also on an Nvidia Jetson Nano board using this PPP instructions.

  37. Hello there,

    I’m using a Raspberry Pi 3 B (not B+) with the 3G-4G/LTE Base Shield V2 set with the EC25 Mini PCle 4G/LTE Module with LTE Main & Diversity & GNSS Triple Port u.FL Antenna – 100mm.

    My carrier is “simyo”, APN “orangeworld” (https://blog.simyo.es/simyo-configuracion-internet-wap-mms/configura-tu-modem-usb-con-simyo/)

    I did everything as proposed by this post and I get the following trace when doing “sudo pon”:

    [email protected]:~ $ sudo pon
    pppd options in effect:
    debug # (from /etc/ppp/peers/provider)
    updetach # (from /etc/ppp/peers/provider)
    dump # (from /etc/ppp/peers/provider)
    noauth # (from /etc/ppp/peers/provider)
    remotename 3gppp # (from /etc/ppp/peers/provider)
    /dev/ttyUSB3 # (from /etc/ppp/peers/provider)
    115200 # (from /etc/ppp/peers/provider)
    lock # (from /etc/ppp/peers/provider)
    connect chat -s -v -f /etc/chatscripts/chat-connect -T orangeworld # (from /etc/ppp/peers/provider)
    disconnect chat -s -v -f /etc/chatscripts/chat-disconnect # (from /etc/ppp/peers/provider)
    nocrtscts # (from /etc/ppp/peers/provider)
    modem # (from /etc/ppp/peers/provider)
    asyncmap 0 # (from /etc/ppp/options)
    lcp-echo-failure 4 # (from /etc/ppp/options)
    lcp-echo-interval 30 # (from /etc/ppp/options)
    hide-password # (from /etc/ppp/peers/provider)
    novj # (from /etc/ppp/peers/provider)
    novjccomp # (from /etc/ppp/peers/provider)
    ipcp-accept-local # (from /etc/ppp/peers/provider)
    ipcp-accept-remote # (from /etc/ppp/peers/provider)
    ipparam 3gppp # (from /etc/ppp/peers/provider)
    noipdefault # (from /etc/ppp/peers/provider)
    ipcp-max-failure 30 # (from /etc/ppp/peers/provider)
    defaultroute # (from /etc/ppp/peers/provider)
    usepeerdns # (from /etc/ppp/peers/provider)
    noccp # (from /etc/ppp/peers/provider)
    noipx # (from /etc/ppp/options)
    abort on (BUSY)
    abort on (NO CARRIER)
    abort on (NO DIALTONE)
    abort on (ERROR)
    abort on (NO ANSWER)
    timeout set to 30 seconds
    send (AT^M)
    expect (OK)
    ^M
    OK
    — got it

    send (ATE0^M)
    expect (OK)
    ^M
    ^M
    OK
    — got it

    send (ATI;+CSUB;+CSQ;+COPS?;+CGREG?;&D2^M)
    expect (OK)
    ^M
    ^M
    Quectel^M
    EC25^M
    Revision: EC25EFAR06A03M4G^M
    ^M
    SubEdition: V03^M
    ^M
    +CSQ: 20,99^M
    ^M
    +COPS: 0^M
    ^M
    +CGREG: 0,2^M
    ^M
    OK
    — got it

    send (AT+CGDCONT=1,”IP”,”orangeworld”,,0,0^M)
    expect (OK)
    ^M
    ^M
    OK
    — got it

    send (ATD*99#^M)
    expect (CONNECT)
    ^M
    ^M
    CONNECT
    — got it

    Script chat -s -v -f /etc/chatscripts/chat-connect -T orangeworld finished (pid 2230), status = 0x0
    Serial connection established.
    using channel 39
    Using interface ppp0
    Connect: ppp0 /dev/ttyUSB3
    sent [LCP ConfReq id=0x1 ]
    rcvd [LCP ConfReq id=0x6f ]
    No auth is possible
    sent [LCP ConfRej id=0x6f ]
    rcvd [LCP ConfAck id=0x1 ]
    rcvd [LCP ConfReq id=0x70 ]
    sent [LCP ConfAck id=0x70 ]
    sent [LCP EchoReq id=0x0 magic=0x5f495129]
    sent [IPCP ConfReq id=0x1 ]
    rcvd [LCP DiscReq id=0x71 magic=0xd1322b32]
    rcvd [LCP EchoRep id=0x0 magic=0xd1322b32 5f 49 51 29]
    Modem hangup
    Connection terminated.

    _
    Please let me know your comments as I cannot get connectivity.

          1. Hello Saeed, thanks for following up.

            I’m using now the official RPI adapter and I get the same output.

            Please help, what should I do? Where is the problem? What does it means “No auth is possible”? Why the connection is terminated? How do I know if the connection credentials are ok?

            Looking forward your comments. Thanks.

          2. Hi,

            Sorry for delaying,

            Do you have tried with different SIM?

            Make sure your APN is correct.

            Regarding “no auth possible” Remote side wants to make Chap authentication but auth chap not defined in our pppd config.

  38. Hello, I re send this comment :
    After follow this tutorial, i’ve a IP but console say : “Connexion close”
    Not possible to suf on da web.

    Some help ?
    Thanks

  39. Hey,

    thanks in advance for your tip. But I can’t get an internet connection at all. My shield is the Cellular IoT Application Shield. I installed your ppp, enabled Serial and disabled the login shell. If I tried sudo pon I always get

    pppd options in effect
    debug # (from /etc/ppp/peers/provider)
    updetach # (from /etc/ppp/peers/provider)
    dump # (from /etc/ppp/peers/provider)
    noauth # (from /etc/ppp/peers/provider)
    remotename 3gppp # (from /etc/ppp/peers/provider)
    /dev/ttyS0 # (from /etc/ppp/peers/provider)
    115200 # (from /etc/ppp/peers/provider)
    lock # (from /etc/ppp/peers/provider)
    connect chat -s -v -f /etc/chatscripts/chat-connect -T internet # (from /etc/ppp/peers/provider)
    disconnect chat -s -v -f /etc/chatscripts/chat-disconnect # (from /etc/ppp/peers/provider)
    nocrtscts # (from /etc/ppp/peers/provider)
    modem # (from /etc/ppp/peers/provider)
    asyncmap 0 # (from /etc/ppp/options)
    lcp-echo-failure 4 # (from /etc/ppp/options)
    lcp-echo-interval 30 # (from /etc/ppp/options)
    hide-password # (from /etc/ppp/peers/provider)
    novj # (from /etc/ppp/peers/provider)
    novjccomp # (from /etc/ppp/peers/provider)
    ipcp-accept-local # (from /etc/ppp/peers/provider)
    ipcp-accept-remote # (from /etc/ppp/peers/provider)
    ipparam 3gppp # (from /etc/ppp/peers/provider)
    noipdefault # (from /etc/ppp/peers/provider)
    ipcp-max-failure 30 # (from /etc/ppp/peers/provider)
    defaultroute # (from /etc/ppp/peers/provider)
    usepeerdns # (from /etc/ppp/peers/provider)
    noccp # (from /etc/ppp/peers/provider)
    noipx # (from /etc/ppp/options)
    Device ttyS0 is locked by pid 556

    What am I doing wrong?

    Kind regards
    Constantin

      1. Hey,
        I installed the reconnect script! I get an error for ifconfig ppp0
        ppp0: error fetching interface information: Device not found.

        Further information:
        I installed the Rasbian 9.8 stretch and already set up an WIFI hotspot on my raspberry. My Board is a Raspberry PI 3 B+.

        Thanks for your quick answer!

  40. Hi Saeed, I’m not getting a connection as of yet after running the ppp installer. Am I right to say that my ISP not giving out an IP address to interface wwan0 but otherwise, all is OK? I’m running a 2.5A official RPi power supply.

    Here is my output:

    p[email protected]:~ $ sudo pon
    pppd options in effect:
    debug # (from /etc/ppp/peers/provider)
    updetach # (from /etc/ppp/peers/provider)
    dump # (from /etc/ppp/peers/provider)
    noauth # (from /etc/ppp/peers/provider)
    remotename 3gppp # (from /etc/ppp/peers/provider)
    /dev/ttyUSB3 # (from /etc/ppp/peers/provider)
    115200 # (from /etc/ppp/peers/provider)
    lock # (from /etc/ppp/peers/provider)
    connect chat -s -v -f /etc/chatscripts/chat-connect -T internet.tele2.nl # (from /etc/ppp/peers/provider)
    disconnect chat -s -v -f /etc/chatscripts/chat-disconnect # (from /etc/ppp/peers/provider)
    nocrtscts # (from /etc/ppp/peers/provider)
    modem # (from /etc/ppp/peers/provider)
    asyncmap 0 # (from /etc/ppp/options)
    lcp-echo-failure 4 # (from /etc/ppp/options)
    lcp-echo-interval 30 # (from /etc/ppp/options)
    hide-password # (from /etc/ppp/peers/provider)
    novj # (from /etc/ppp/peers/provider)
    novjccomp # (from /etc/ppp/peers/provider)
    ipcp-accept-local # (from /etc/ppp/peers/provider)
    ipcp-accept-remote # (from /etc/ppp/peers/provider)
    ipparam 3gppp # (from /etc/ppp/peers/provider)
    noipdefault # (from /etc/ppp/peers/provider)
    ipcp-max-failure 30 # (from /etc/ppp/peers/provider)
    defaultroute # (from /etc/ppp/peers/provider)
    usepeerdns # (from /etc/ppp/peers/provider)
    noccp # (from /etc/ppp/peers/provider)
    noipx # (from /etc/ppp/options)
    abort on (BUSY)
    abort on (NO CARRIER)
    abort on (NO DIALTONE)
    abort on (ERROR)
    abort on (NO ANSWER)
    timeout set to 30 seconds
    send (AT^M)
    expect (OK)
    ^M
    OK
    — got it

    send (ATE0^M)
    expect (OK)
    ^M
    ^M
    OK
    — got it

    send (ATI;+CSUB;+CSQ;+COPS?;+CGREG?;&D2^M)
    expect (OK)
    ^M
    ^M
    Quectel^M
    EC25^M
    Revision: EC25EFAR06A03M4G^M
    ^M
    SubEdition: V03^M
    ^M
    +CSQ: 22,99^M
    ^M
    +COPS: 0,0,”Tele2 NL Tele2 NL”,7^M
    ^M
    +CGREG: 0,1^M
    ^M
    OK
    — got it

    send (AT+CGDCONT=1,”IP”,”internet.tele2.nl”,,0,0^M)
    expect (OK)
    ^M
    ^M
    OK
    — got it

    send (ATD*99#^M)
    expect (CONNECT)
    ^M
    ^M
    CONNECT
    — got it

    Script chat -s -v -f /etc/chatscripts/chat-connect -T internet.tele2.nl finished (pid 1189), status = 0x0
    Serial connection established.
    using channel 2
    Using interface ppp0
    Connect: ppp0 /dev/ttyUSB3
    sent [LCP ConfReq id=0x1 ]
    rcvd [LCP ConfReq id=0x18 ]
    No auth is possible
    sent [LCP ConfRej id=0x18 ]
    rcvd [LCP ConfAck id=0x1 ]
    rcvd [LCP ConfReq id=0x19 ]
    sent [LCP ConfAck id=0x19 ]
    sent [LCP EchoReq id=0x0 magic=0x8c8ee1a7]
    sent [IPCP ConfReq id=0x1 ]
    rcvd [LCP DiscReq id=0x1a magic=0x44d8e17d]
    rcvd [LCP EchoRep id=0x0 magic=0x44d8e17d 8c 8e e1 a7]
    rcvd [IPCP ConfReq id=0x10]
    sent [IPCP ConfNak id=0x10 ]
    rcvd [IPCP ConfNak id=0x1 ]
    sent [IPCP ConfReq id=0x2 ]
    rcvd [IPCP ConfReq id=0x11]
    sent [IPCP ConfAck id=0x11]
    rcvd [IPCP ConfAck id=0x2 ]
    Could not determine remote IP address: defaulting to 10.64.64.64
    not replacing default route to eth0 [192.168.0.1]
    local IP address 10.122.157.160
    remote IP address 10.64.64.64
    primary DNS address 62.58.48.30
    secondary DNS address 62.58.153.220

    [email protected]:~ $ ifconfig
    eth0: flags=4163 mtu 1500
    inet 192.168.0.57 netmask 255.255.255.0 broadcast 192.168.0.255
    inet6 fe80::bbd:5dac:b87b:72d6 prefixlen 64 scopeid 0x20
    ether b8:27:eb:54:11:3a txqueuelen 1000 (Ethernet)
    RX packets 242 bytes 29741 (29.0 KiB)
    RX errors 0 dropped 1 overruns 0 frame 0
    TX packets 237 bytes 37662 (36.7 KiB)
    TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0

    lo: flags=73 mtu 65536
    inet 127.0.0.1 netmask 255.0.0.0
    inet6 ::1 prefixlen 128 scopeid 0x10
    loop txqueuelen 1000 (Local Loopback)
    RX packets 4 bytes 444 (444.0 B)
    RX errors 0 dropped 0 overruns 0 frame 0
    TX packets 4 bytes 444 (444.0 B)
    TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0

    ppp0: flags=4305 mtu 1500
    inet 10.122.157.160 netmask 255.255.255.255 destination 10.64.64.64
    ppp txqueuelen 3 (Point-to-Point Protocol)
    RX packets 4 bytes 52 (52.0 B)
    RX errors 0 dropped 0 overruns 0 frame 0
    TX packets 4 bytes 58 (58.0 B)
    TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0

    wlan0: flags=4163 mtu 1500
    inet 172.24.1.1 netmask 255.255.0.0 broadcast 172.24.255.255
    inet6 fe80::867:9c32:3e6c:ade3 prefixlen 64 scopeid 0x20
    ether b8:27:eb:01:44:6f txqueuelen 1000 (Ethernet)
    RX packets 0 bytes 0 (0.0 B)
    RX errors 0 dropped 0 overruns 0 frame 0
    TX packets 24 bytes 3568 (3.4 KiB)
    TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0

    wwan0: flags=4163 mtu 1500
    inet 169.254.250.97 netmask 255.255.0.0 broadcast 169.254.255.255
    inet6 fe80::7628:89bb:f1ac:22c7 prefixlen 64 scopeid 0x20
    ether 56:0a:bb:4a:6d:93 txqueuelen 1000 (Ethernet)
    RX packets 0 bytes 0 (0.0 B)
    RX errors 0 dropped 0 overruns 0 frame 0
    TX packets 30 bytes 5326 (5.2 KiB)
    TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0

    1. Never mind Saeed, I had to remove the default route again after connecting. Pinging works now, traceroute shows new route. It is curious though that wwan0 keeps showing a 169.254.x.x IP.

      On another note, I saw the QMI tutorial. Would that be able to be used in the 4G hotspot tutorial as a higher performing option?

        1. Awesome, will try that and I guess I need to change the IP tables entry as well from ppp0 to wwan0. Thanks for the support!

        2. Hi Saeed,

          Seems that running the makefile results in an error if you already use the PPP variant or if you already tried to run the QMI installer before the new version:
          modprobe -r option qcserial qmi_wwan
          modprobe: FATAL: Module option is in use.
          Makefile:13: recipe for target ‘install’ failed
          make: *** [install] Error 1

          Is there something I can change in the script and/or makefile so that it continues if qcserial and qmi_wwan is already in use? I’d rather not go back to a clean install and try again. 😉

          Full log:
          [email protected]:~ $ sudo ./qmi_install.sh
          Clear Files
          Change directory to /home/pi
          Downloading source files
          –2019-06-14 14:57:10– https://github.com/sixfab/Sixfab_RPi_3G-4G-LTE_Base_Shield/raw/master/tutorials/QMI_tutorial/src/quectel-CM.zip
          Resolving github.com (github.com)… 140.82.118.3
          Connecting to github.com (github.com)|140.82.118.3|:443… connected.
          HTTP request sent, awaiting response… 302 Found
          Location: https://raw.githubusercontent.com/sixfab/Sixfab_RPi_3G-4G-LTE_Base_Shield/master/tutorials/QMI_tutorial/src/quectel-CM.zip [following]
          –2019-06-14 14:57:13– https://raw.githubusercontent.com/sixfab/Sixfab_RPi_3G-4G-LTE_Base_Shield/master/tutorials/QMI_tutorial/src/quectel-CM.zip
          Resolving raw.githubusercontent.com (raw.githubusercontent.com)… 151.101.0.133, 151.101.64.133, 151.101.128.133, …
          Connecting to raw.githubusercontent.com (raw.githubusercontent.com)|151.101.0.133|:443… connected.
          HTTP request sent, awaiting response… 200 OK
          Length: 66876 (65K) [application/zip]
          Saving to: ‘quectel-CM.zip’

          quectel-CM.zip 100%[====================================================================================================>] 65.31K –.-KB/s in 0.1s

          2019-06-14 14:57:14 (631 KB/s) – ‘quectel-CM.zip’ saved [66876/66876]

          Archive: quectel-CM.zip
          creating: /home/pi/files/quectel-CM/
          inflating: /home/pi/files/quectel-CM/util.h
          inflating: /home/pi/files/quectel-CM/util.c
          inflating: /home/pi/files/quectel-CM/udhcpc.c
          inflating: /home/pi/files/quectel-CM/quectel-qmi-proxy.c
          inflating: /home/pi/files/quectel-CM/QmiWwanCM.c
          inflating: /home/pi/files/quectel-CM/QMIThread.h
          inflating: /home/pi/files/quectel-CM/QMIThread.c
          inflating: /home/pi/files/quectel-CM/MPQMUX.h
          inflating: /home/pi/files/quectel-CM/MPQMUX.c
          inflating: /home/pi/files/quectel-CM/MPQMI.h
          inflating: /home/pi/files/quectel-CM/MPQCTL.h
          inflating: /home/pi/files/quectel-CM/Makefile
          inflating: /home/pi/files/quectel-CM/main.c
          inflating: /home/pi/files/quectel-CM/GobiNetCM.c
          inflating: /home/pi/files/quectel-CM/dhcpclient.c
          inflating: /home/pi/files/quectel-CM/default.script
          Checking Kernel
          4.19.42-v7+ based kernel found
          Downloading source files
          –2019-06-14 14:57:14– https://github.com/sixfab/Sixfab_RPi_3G-4G-LTE_Base_Shield/raw/master/tutorials/QMI_tutorial/src/4.19.1.zip
          Resolving github.com (github.com)… 140.82.118.3
          Connecting to github.com (github.com)|140.82.118.3|:443… connected.
          HTTP request sent, awaiting response… 302 Found
          Location: https://raw.githubusercontent.com/sixfab/Sixfab_RPi_3G-4G-LTE_Base_Shield/master/tutorials/QMI_tutorial/src/4.19.1.zip [following]
          –2019-06-14 14:57:14– https://raw.githubusercontent.com/sixfab/Sixfab_RPi_3G-4G-LTE_Base_Shield/master/tutorials/QMI_tutorial/src/4.19.1.zip
          Resolving raw.githubusercontent.com (raw.githubusercontent.com)… 151.101.192.133, 151.101.128.133, 151.101.64.133, …
          Connecting to raw.githubusercontent.com (raw.githubusercontent.com)|151.101.192.133|:443… connected.
          HTTP request sent, awaiting response… 200 OK
          Length: 101553 (99K) [application/zip]
          Saving to: ‘drivers.zip’

          drivers.zip 100%[====================================================================================================>] 99.17K 417KB/s in 0.2s

          2019-06-14 14:57:15 (417 KB/s) – ‘drivers.zip’ saved [101553/101553]

          Archive: drivers.zip
          creating: /home/pi/files/drivers/
          creating: /home/pi/files/drivers/.git/
          extracting: /home/pi/files/drivers/.git/COMMIT_EDITMSG
          extracting: /home/pi/files/drivers/.git/HEAD
          inflating: /home/pi/files/drivers/.git/config
          inflating: /home/pi/files/drivers/.git/description
          creating: /home/pi/files/drivers/.git/hooks/
          inflating: /home/pi/files/drivers/.git/hooks/applypatch-msg.sample
          inflating: /home/pi/files/drivers/.git/hooks/commit-msg.sample
          inflating: /home/pi/files/drivers/.git/hooks/fsmonitor-watchman.sample
          inflating: /home/pi/files/drivers/.git/hooks/post-update.sample
          inflating: /home/pi/files/drivers/.git/hooks/pre-applypatch.sample
          inflating: /home/pi/files/drivers/.git/hooks/pre-commit.sample
          inflating: /home/pi/files/drivers/.git/hooks/pre-push.sample
          inflating: /home/pi/files/drivers/.git/hooks/pre-rebase.sample
          inflating: /home/pi/files/drivers/.git/hooks/pre-receive.sample
          inflating: /home/pi/files/drivers/.git/hooks/prepare-commit-msg.sample
          inflating: /home/pi/files/drivers/.git/hooks/update.sample
          inflating: /home/pi/files/drivers/.git/index
          creating: /home/pi/files/drivers/.git/info/
          inflating: /home/pi/files/drivers/.git/info/exclude
          creating: /home/pi/files/drivers/.git/logs/
          inflating: /home/pi/files/drivers/.git/logs/HEAD
          creating: /home/pi/files/drivers/.git/logs/refs/
          creating: /home/pi/files/drivers/.git/logs/refs/heads/
          inflating: /home/pi/files/drivers/.git/logs/refs/heads/master
          creating: /home/pi/files/drivers/.git/objects/
          creating: /home/pi/files/drivers/.git/objects/03/
          extracting: /home/pi/files/drivers/.git/objects/03/5c2935335b6c52c0815f35c9d1575f5c29a59f
          creating: /home/pi/files/drivers/.git/objects/19/
          extracting: /home/pi/files/drivers/.git/objects/19/5ba83612ad35f67e55c282e64ea5b637313113
          creating: /home/pi/files/drivers/.git/objects/25/
          extracting: /home/pi/files/drivers/.git/objects/25/926acedbfa6265c542319e1938b3bdd90ee485
          creating: /home/pi/files/drivers/.git/objects/39/
          extracting: /home/pi/files/drivers/.git/objects/39/dec0a7d5ff21373eacc04b3bdb45ae21bc5d09
          creating: /home/pi/files/drivers/.git/objects/61/
          extracting: /home/pi/files/drivers/.git/objects/61/3f91add03da189c0fd5334cbccbbf720060079
          creating: /home/pi/files/drivers/.git/objects/6e/
          extracting: /home/pi/files/drivers/.git/objects/6e/bd8c4cc4d3e73319f0b11790d417da1ec690fa
          creating: /home/pi/files/drivers/.git/objects/72/
          extracting: /home/pi/files/drivers/.git/objects/72/a55b6b421184c4fb69411ba3d0150e6c337a88
          creating: /home/pi/files/drivers/.git/objects/91/
          extracting: /home/pi/files/drivers/.git/objects/91/2472f26e4f6c5a9ad30357f7a47d9a3085a1d9
          creating: /home/pi/files/drivers/.git/objects/92/
          extracting: /home/pi/files/drivers/.git/objects/92/cb4b634d343b2fda1752788c459aa21b5e00b2
          creating: /home/pi/files/drivers/.git/objects/a7/
          extracting: /home/pi/files/drivers/.git/objects/a7/52b118ac3c4bc0714022c869ce41093bce9710
          creating: /home/pi/files/drivers/.git/objects/b4/
          extracting: /home/pi/files/drivers/.git/objects/b4/28445756a9e7994114e7aee3a9ea1b5b2ac994
          creating: /home/pi/files/drivers/.git/objects/d2/
          extracting: /home/pi/files/drivers/.git/objects/d2/8dab4b9effcd5d766bb76fa2e2d92de7dcd4f1
          creating: /home/pi/files/drivers/.git/objects/e7/
          inflating: /home/pi/files/drivers/.git/objects/e7/2ad9f81c73973b86bd7992c0f331039a8192bf
          creating: /home/pi/files/drivers/.git/objects/f0/
          extracting: /home/pi/files/drivers/.git/objects/f0/9393322edaf3f9356d5ab816db40e21d78f7aa
          creating: /home/pi/files/drivers/.git/refs/
          creating: /home/pi/files/drivers/.git/refs/heads/
          extracting: /home/pi/files/drivers/.git/refs/heads/master
          inflating: /home/pi/files/drivers/99-quectel-modem.rules
          inflating: /home/pi/files/drivers/Makefile
          creating: /home/pi/files/drivers/drivers/
          creating: /home/pi/files/drivers/drivers/net/
          creating: /home/pi/files/drivers/drivers/net/usb/
          inflating: /home/pi/files/drivers/drivers/net/usb/qmi_wwan.c
          creating: /home/pi/files/drivers/drivers/usb/
          creating: /home/pi/files/drivers/drivers/usb/serial/
          inflating: /home/pi/files/drivers/drivers/usb/serial/option.c
          inflating: /home/pi/files/drivers/drivers/usb/serial/qcserial.c
          inflating: /home/pi/files/drivers/drivers/usb/serial/usb-wwan.h
          inflating: /home/pi/files/drivers/drivers/usb/serial/usb_wwan.c
          Installing udhcpc
          Reading package lists… Done
          Building dependency tree
          Reading state information… Done
          udhcpc is already the newest version (1:1.22.0-19).
          0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.
          Copying udhcpc default script
          Change directory to /home/pi/files/drivers
          rm -rf *~ .tmp_versions modules.order Module.symvers
          find . -type f -name *~ -o -name *.o -o -name *.ko -o -name *.cmd -o -name *.mod.c -o -name *.ur-safe | xargs rm -rf
          make -C /lib/modules/4.19.42-v7+/build M=/home/pi/files/drivers modules
          make[1]: Entering directory ‘/usr/src/linux-headers-4.19.42-v7+’
          CC [M] /home/pi/files/drivers/./drivers/usb/serial/usb_wwan.o
          CC [M] /home/pi/files/drivers/./drivers/usb/serial/option.o
          CC [M] /home/pi/files/drivers/./drivers/usb/serial/qcserial.o
          CC [M] /home/pi/files/drivers/./drivers/net/usb/qmi_wwan.o
          Building modules, stage 2.
          MODPOST 4 modules
          CC /home/pi/files/drivers/./drivers/net/usb/qmi_wwan.mod.o
          LD [M] /home/pi/files/drivers/./drivers/net/usb/qmi_wwan.ko
          CC /home/pi/files/drivers/./drivers/usb/serial/option.mod.o
          LD [M] /home/pi/files/drivers/./drivers/usb/serial/option.ko
          CC /home/pi/files/drivers/./drivers/usb/serial/qcserial.mod.o
          LD [M] /home/pi/files/drivers/./drivers/usb/serial/qcserial.ko
          CC /home/pi/files/drivers/./drivers/usb/serial/usb_wwan.mod.o
          LD [M] /home/pi/files/drivers/./drivers/usb/serial/usb_wwan.ko
          make[1]: Leaving directory ‘/usr/src/linux-headers-4.19.42-v7+’
          rm -rf *~ .tmp_versions modules.order Module.symvers
          find . -type f -name *~ -o -name *.o -o -name *.ko -o -name *.cmd -o -name *.mod.c -o -name *.ur-safe | xargs rm -rf
          make -C /lib/modules/4.19.42-v7+/build M=/home/pi/files/drivers modules
          make[1]: Entering directory ‘/usr/src/linux-headers-4.19.42-v7+’
          CC [M] /home/pi/files/drivers/./drivers/usb/serial/usb_wwan.o
          CC [M] /home/pi/files/drivers/./drivers/usb/serial/option.o
          CC [M] /home/pi/files/drivers/./drivers/usb/serial/qcserial.o
          CC [M] /home/pi/files/drivers/./drivers/net/usb/qmi_wwan.o
          Building modules, stage 2.
          MODPOST 4 modules
          CC /home/pi/files/drivers/./drivers/net/usb/qmi_wwan.mod.o
          LD [M] /home/pi/files/drivers/./drivers/net/usb/qmi_wwan.ko
          CC /home/pi/files/drivers/./drivers/usb/serial/option.mod.o
          LD [M] /home/pi/files/drivers/./drivers/usb/serial/option.ko
          CC /home/pi/files/drivers/./drivers/usb/serial/qcserial.mod.o
          LD [M] /home/pi/files/drivers/./drivers/usb/serial/qcserial.ko
          CC /home/pi/files/drivers/./drivers/usb/serial/usb_wwan.mod.o
          LD [M] /home/pi/files/drivers/./drivers/usb/serial/usb_wwan.ko
          make[1]: Leaving directory ‘/usr/src/linux-headers-4.19.42-v7+’
          cp /home/pi/files/drivers/drivers/usb/serial/option.ko /lib/modules/4.19.42-v7+/kernel/drivers/usb/serial/
          cp /home/pi/files/drivers/drivers/usb/serial/usb_wwan.ko /lib/modules/4.19.42-v7+/kernel/drivers/usb/serial/
          cp /home/pi/files/drivers/drivers/usb/serial/qcserial.ko /lib/modules/4.19.42-v7+/kernel/drivers/usb/serial/
          cp /home/pi/files/drivers/drivers/net/usb/qmi_wwan.ko /lib/modules/4.19.42-v7+/kernel/drivers/net/usb/
          modprobe -r option qcserial qmi_wwan
          modprobe: FATAL: Module option is in use.
          Makefile:13: recipe for target ‘install’ failed
          make: *** [install] Error 1
          Change directory to /home/pi/files/quectel-CM
          rm -rf quectel-CM *~
          rm -rf quectel-qmi-proxy
          gcc -Wall -s quectel-qmi-proxy.c -o quectel-qmi-proxy -lpthread -ldl
          gcc -Wall -s QmiWwanCM.c GobiNetCM.c main.c MPQMUX.c QMIThread.c util.c udhcpc.c -o quectel-CM -lpthread -ldl
          main.c: In function ‘kill_brothers’:
          main.c:299:5: warning: this ‘if’ clause does not guard… [-Wmisleading-indentation]
          if (ls_dir(“/proc”, is_brother_process, argv))
          ^~
          main.c:302:2: note: …this statement, but the latter is misleadingly indented as if it is guarded by the ‘if’
          return 0;
          ^~~~~~
          MPQMUX.c:36:25: warning: ‘qmi_ctl_CtlFlags’ defined but not used [-Wunused-const-variable=]
          static const QMI_NAME_T qmi_ctl_CtlFlags[] = {
          ^~~~~~~~~~~~~~~~
          MPQMUX.c:25:25: warning: ‘qmi_QMIType’ defined but not used [-Wunused-const-variable=]
          static const QMI_NAME_T qmi_QMIType[] = {
          ^~~~~~~~~~~
          MPQMUX.c:20:25: warning: ‘qmi_CtlFlags’ defined but not used [-Wunused-const-variable=]
          static const QMI_NAME_T qmi_CtlFlags[] = {
          ^~~~~~~~~~~~
          MPQMUX.c:16:25: warning: ‘qmi_IFType’ defined but not used [-Wunused-const-variable=]
          static const QMI_NAME_T qmi_IFType[] = {
          ^~~~~~~~~~
          After reboot please follow commands mentioned below
          go to /home/pi/files/quectel-CM and run sudo ./quectel-CM -s [YOUR APN]
          Press ENTER key to reboot

          [email protected]:~/files/quectel-CM $

          1. Hi,

            You will need to disconnect the module before you install.
            “modprobe: FATAL: Module option is in use.”

  41. hey saeed,
    i am using the cellular iot app shield and i am trying to connect through NB LTE without success.My provider claims that the network is ok.Also i am able to connect to 2G so my sim works fine.
    Any thoughts?
    [email protected]:~# pon
    pppd options in effect:
    debug # (from /etc/ppp/peers/provider)
    updetach # (from /etc/ppp/peers/provider)
    dump # (from /etc/ppp/peers/provider)
    noauth # (from /etc/ppp/peers/provider)
    remotename 3gppp # (from /etc/ppp/peers/provider)
    /dev/ttyS0 # (from /etc/ppp/peers/provider)
    115200 # (from /etc/ppp/peers/provider)
    lock # (from /etc/ppp/peers/provider)
    connect chat -s -v -f /etc/chatscripts/chat-connect -T iot # (from /etc/ppp/peers/provider)
    disconnect chat -s -v -f /etc/chatscripts/chat-disconnect # (from /etc/ppp/peers/provider)
    nocrtscts # (from /etc/ppp/peers/provider)
    modem # (from /etc/ppp/peers/provider)
    asyncmap 0 # (from /etc/ppp/options)
    lcp-echo-failure 4 # (from /etc/ppp/options)
    lcp-echo-interval 30 # (from /etc/ppp/options)
    hide-password # (from /etc/ppp/peers/provider)
    novj # (from /etc/ppp/peers/provider)
    novjccomp # (from /etc/ppp/peers/provider)
    ipcp-accept-local # (from /etc/ppp/peers/provider)
    ipcp-accept-remote # (from /etc/ppp/peers/provider)
    ipparam 3gppp # (from /etc/ppp/peers/provider)
    noipdefault # (from /etc/ppp/peers/provider)
    ipcp-max-failure 30 # (from /etc/ppp/peers/provider)
    defaultroute # (from /etc/ppp/peers/provider)
    usepeerdns # (from /etc/ppp/peers/provider)
    noccp # (from /etc/ppp/peers/provider)
    noipx # (from /etc/ppp/options)
    abort on (BUSY)
    abort on (NO CARRIER)
    abort on (NO DIALTONE)
    abort on (ERROR)
    abort on (NO ANSWER)
    timeout set to 30 seconds
    send (AT^M)
    expect (OK)
    ^M
    OK
    — got it

    send (ATE0^M)
    expect (OK)
    ^M
    ^M
    OK
    — got it

    send (AT+QCFG=”band”,0,0,80000^M)
    expect (OK)
    ^M
    ^M
    OK
    — got it

    send (AT+QCFG=”nwscanseq”,03,1^M)
    expect (OK)
    ^M
    ^M
    OK
    — got it

    send (AT+QCFG=”nwscanmode”,3,1^M)
    expect (OK)
    ^M
    ^M
    OK
    — got it

    send (AT+QCFG=”iotopmode”,1,1^M)
    expect (OK)
    ^M
    ^M
    OK
    — got it

    send (ATI;+CSUB;+CSQ;+COPS?;+CGREG?;&D2^M)
    expect (OK)
    ^M
    ^M
    Quectel^M
    BG96^M
    Revision: BG96MAR02A07M1G^M
    ^M
    SubEdition: V08^M
    ^M
    +CSQ: 99,99^M
    ^M
    +COPS: 0^M
    ^M
    +CGREG: 0,4^M
    ^M
    OK
    — got it

    send (AT+CGDCONT=1,”IP”,”iot”,,0,0^M)
    expect (OK)
    ^M
    ^M
    OK
    — got it

    send (ATD*99#^M)
    expect (CONNECT)
    ^M
    ^M
    CONNECT
    — got it

    Script chat -s -v -f /etc/chatscripts/chat-connect -T iot finished (pid 1050), status = 0x0
    Serial connection established.
    using channel 3
    Using interface ppp0
    Connect: ppp0 /dev/ttyS0
    sent [LCP ConfReq id=0x1 ]
    rcvd [LCP ConfReq id=0x6 ]
    No auth is possible
    sent [LCP ConfRej id=0x6 ]
    rcvd [LCP ConfAck id=0x1 ]
    rcvd [LCP ConfReq id=0x7 ]
    sent [LCP ConfAck id=0x7 ]
    sent [LCP EchoReq id=0x0 magic=0xb19c239e]
    sent [IPCP ConfReq id=0x1 ]
    rcvd [LCP DiscReq id=0x8 magic=0x61c13ff5]
    rcvd [LCP EchoRep id=0x0 magic=0x61c13ff5 b1 9c 23 9e]
    sent [IPCP ConfReq id=0x1 ]
    sent [IPCP ConfReq id=0x1 ]
    sent [IPCP ConfReq id=0x1 ]
    sent [IPCP ConfReq id=0x1 ]
    sent [IPCP ConfReq id=0x1 ]
    sent [IPCP ConfReq id=0x1 ]
    sent [IPCP ConfReq id=0x1 ]
    sent [IPCP ConfReq id=0x1 ]
    sent [IPCP ConfReq id=0x1 ]
    sent [LCP EchoReq id=0x1 magic=0xb19c239e]
    IPCP: timeout sending Config-Requests
    sent [LCP TermReq id=0x2 “No network protocols running”]
    sent [LCP TermReq id=0x3 “No network protocols running”]
    Connection terminated.
    abort on (ERROR)
    abort on (NO DIALTONE)

    Sending break to the modem
    send (+++^M)
    send (+++^M)
    send (+++^M)

    Goodbye
    Script chat -s -v -f /etc/chatscripts/chat-disconnect finished (pid 1455), status = 0x0
    Serial link disconnected.
    Modem hangup

    1. Do your provider confirms that they have active NB-IoT support in your location?

      +CSQ: 99,99^M
      Shows the module is not getting any signal from the network station.

  42. Got the Raspberry Pi Cellular IoT HAT setup using USB, had to add “gpio=24=op,dh” at my /boot/config.txt to make the modem start at bootup. But still had an error at boot saying to look at systemctl status reconnect.service. This says the main process exited with status 217/USER.

    When I start pon it does generate a device ppp0 with an ip address. During this process I already get under-voltage warnings. When I change the default route to ppp0 and try to ping I get under-voltage warnings again and ppp0 disappears.

    I’m using a 3.5 A power supply. With another USB modem I do not have this problem. Is my device broken?

    1. Hello,

      The reconnect service does start the modem at bootup.

      What is the voltage of your power supply?
      Generally, when the voltage is below 4.95V it shows the under voltage warning. It will not affect the connection.

Leave a Reply

Your email address will not be published. Required fields are marked *