Raspberry Pi
On the Raspberry Pi you will need to disable the kernel's use of the hardware serial connection. By default when the Raspberry Pi boots it will use the serial connection to print messages from the kernel which will confuse FONA. However it's easy to disable this serial usage by running Andrew Scheller's handy serial console script. Connect to your Raspberry Pi's command terminal and execute:sudo wget https://raw.github.com/lurch/rpi-serial-console/master/rpi-serial-console -O /usr/bin/rpi-serial-console && sudo chmod +x /usr/bin/rpi-serial-console sudo rpi-serial-console disable
For reference, when you're done using FONA and wish to enable the kernel serial console again you can run the script with:
sudo rpi-serial-console enable
BeagleBone Black
On the BeagleBone Black you'll need to enable a serial UART in the device tree. By default the BeagleBone Black uses its serial UART ports for GPIO and other uses. However by loading a device tree overlay you can enable a serial UART.The BeagleBone Black supports up to 4 serial UARTs. In this guide I found it's easiest to use UART4 and will describe its usage below.
The best way to enable UART4 is to modify the uEnv.txt file so the UART4 device tree overlay is loaded automatically at boot. With the BeagleBone Black connected to your computer through its USB mini connection, open the 'boot' USB storage device. Edit the file uEnv.txt on this device and add the following line at the bottom on a new line:
capemgr.enable_partno=BB-UART4
NOTE: Don't edit uEnv.txt from a Windows machine as it can change line endings and cause the BeagleBone Black to require an operating system reinstall! Instead connect to the BeagleBone Black's command terminal and edit uEnv.txt by following the steps at the end of the exporting an overlay guide page.
Once uEnv.txt has been updated, reboot your BeagleBone Black and verify you can see a /dev/ttyO4 (that's an upper case O, not a zero) device.
Software Setup
On both the Raspberry Pi and BeagleBone Black perform the steps below to install and setup the PPP software.First make sure software is installed by executing the following in a command terminal:
sudo apt-get update sudo apt-get install ppp screen elinks
Once the commands above are executed you can test communication with FONA. The screen tool will be used to open the serial connection to FONA and verify FONA responds to commands. Make sure FONA is wired to your device and turned on (the blue LED is solidly lit and the red LED periodically flashes). Then on a Raspberry Pi execute:
screen /dev/ttyAMA0 115200
screen /dev/ttyO4 115200
Now type AT and press enter (you might not see the AT characters echoed back as you type, don't worry that's ok). You should see FONA respond with OK. If you see the OK response then communication with FONA is working great and you can close screen. To close screen press Ctrl-A and type :quit and press enter.
If you did not see the OK response, double check FONA is wired correctly to your serial port and is turned on (solid blue LED lit, periodic red flash), then try again. Don't move on until you've confirmed you can connect to FONA and get a response from it!
PPP Configuration
Next you can configure PPP by following the steps below to create a new PPP peer configuration. The steps below were adapted from Ubuntu's ADSL PPPoE guide manual configuration by hand section.In a command terminal execute the following commands to login as root and navigate to the /etc/ppp/peers/ directory:
sudo -i cd /etc/ppp/peers/
wget https://raw.githubusercontent.com/adafruit/FONA_PPP/master/fona
nano fona
# Example PPPD configuration for FONA GPRS connection on Debian/Ubuntu. # MUST CHANGE: Change the -T parameter value **** to your network's APN value. # For example if your APN is 'internet' (without quotes), the line would look like: # connect "/usr/sbin/chat -v -f /etc/chatscripts/gprs -T internet" connect "/usr/sbin/chat -v -f /etc/chatscripts/gprs -T ****" # MUST CHANGE: Uncomment the appropriate serial device for your platform below. # For Raspberry Pi use /dev/ttyAMA0 by uncommenting the line below: #/dev/ttyAMA0 # For BeagleBone Black use /dev/ttyO4 by uncommenting the line below: #/dev/ttyO4 # Speed of the serial line. 115200 # Assumes that your IP address is allocated dynamically by the ISP. noipdefault # Try to get the name server addresses from the ISP. usepeerdns # Use this connection as the default route to the internet. defaultroute # Makes PPPD "dial again" when the connection is lost. persist # Do not ask the remote to authenticate. noauth # No hardware flow control on the serial link with FONA nocrtscts # No modem control lines with FONA. local
Notice the two sections at the top that say MUST CHANGE. The first section controls which script is called by PPPD to tell FONA to set up a GPRS connection. This section uses the chat command to send and expect certain strings when communicating with FONA.
The only thing you must change is the APN value on the connect line. You need to change the -T **** option at the end to be -T APN_value. For example if your APN is "internet" (without quotes), you would change the line to read:
connect "/usr/sbin/chat -v -f /etc/chatscripts/gprs -T internet"
The rest of the settings in the file do not need to be modified. Save the file (press Ctrl-O then enter in nano), then quit the editor (press Ctrl-X in nano).
You might have noticed that the connect line in the PPP peers configuration references a specific chat script. To see this configuration open the /etc/chatscripts/gprs file in a text editor to see what it contains. For example execute:
nano /etc/chatscripts/gprs
# You can use this script unmodified to connect to cellular networks. # The APN is specified in the peers file as the argument of the -T command # line option of chat(8). # For details about the AT commands involved please consult the relevant # standard: 3GPP TS 27.007 - AT command set for User Equipment (UE). # (http://www.3gpp.org/ftp/Specs/html-info/27007.htm) ABORT BUSY ABORT VOICE ABORT "NO CARRIER" ABORT "NO DIALTONE" ABORT "NO DIAL TONE" ABORT "NO ANSWER" ABORT "DELAYED" ABORT "ERROR" # cease if the modem is not attached to the network yet ABORT "+CGATT: 0" "" AT TIMEOUT 12 OK ATH OK ATE1 # +CPIN provides the SIM card PIN #OK "AT+CPIN=1234" # +CFUN may allow to configure the handset to limit operations to # GPRS/EDGE/UMTS/etc to save power, but the arguments are not standard # except for 1 which means "full functionality". #OK AT+CFUN=1 OK AT+CGDCONT=1,"IP","\T","",0,0 OK ATD*99# TIMEOUT 22 CONNECT ""
One thing to note is the commented line '+CPIN provides the SIM card PIN'. If your SIM card requires a PIN to unlock, uncomment this line and set the PIN value.
Save the file if you've made changes, and exit the text editor. You are now done configuring the PPP connection and can exit the sudo interactive root shell by running:
exit