This project is an implementation of a cell phone while keeping true to the unix philosophy.
This project uses the following components:
Fone consists of a server which will speak to the FONA baord using the serial interface. It accepts two types of transactions from clients:
- Commands - These are transactions which require the FONA board to query or execute a task.
- Subscriptions - These are transactions which require the server to notify a subscribing client about any subscribed notifications originating from the FONA board.
Every client in the server will have a specialized function and will need to communicate to the FONA board via the server.
Additional information may be found in the man pages in docs/man/
-
Setup build environment
sudo apt install build-essential screen
-
Connect the GPIO pins on the FONA 808 to the pi. Look here for more detail on pinouts
- FONA GND -> Pi Ground
- FONA Vio -> Pi 3v3 power
- FONA RX -> Pi TXD
- FONA TX -> Pi RXD
-
Configure ppp to connect to the network stack
apt install ppp cp etc/ppp/peers/fona /etc/ppp/peers/fona chmod 644 /etc/ppp/peers/fona cp etc/chatscripts/gprs /etc/chatscripts/gprs chmod 644 /etc/chatscripts/gprs
-
Deploying (may be daemonized later)
sudo pon fona cd /path/to/fone/code make all screen -fa -d -m -S foneserver ./build/foneserver # Wait until foneserver is running ./build/fone_configure screen -fa -d -m -S call-receive ./build/call-receive screen -fa -d -m -S sms-receive ./build/sms-receive
AT+CLIP=1 # Enable Caller ID
ATE 0 # Disable Echoing
AT+CHFA=0 # Main audio
AT+CLVL=20 # Volume
# Receiving SMS
AT+CMGL="ALL" # List all messages in storage
AT+CPMS="SM" # Prefer SM store
AT+CNMI=2,0 # do not emit +CMTI notifications. This will need to change if moved to subscription model
- Core
- Tether Cellular Data Connection
- Threaded named pipes
- Threaded UART interface
- Transaction message queue
- Subscriber message queue
- Application Clients
- Test Network
- Sending SMS
- Receive SMS
- Initiate Phone Call
- Answer Phone Call
- GPS
- Something else?
- User Interfaces