Build Your Own Smartphone and save $$ and avoid Google Spying On You!






DIY Smartphone

DIY Smartphone using Raspberry Pi A+, Camera, TFT, and Adafruit FONA with custom mobile OS.




Introducing the TyTelli: A DIY smartphone anyone can make. The TyTelli uses the Raspberry Pi for processing and has a 3.5in touchscreen. An Adafruit Fona is used to give the TyTelli the capability to make calls, send sms messages, and get the time using the built in RTC. It also has a 5mp camera module giving it the power to take HD photos and send them to Dropbox over WiFi. Speaking of Wifi, the typhone has a USB wifi adapter so it can communicate with the internet along with cellular networks. All this technology is enclosed in a 3D printed case.

Notice: this project’s name has been changed from “Tyfone” to “TyTelli” to avoid confusion with Tyfone Inc.

Note that in the video TYOS 0.1.0 is used. Many, many new features have been added since then.


The TyTelli is made up of a few basic components:

  • The Raspberry Pi
  • The cellular module (FONA)
  • The 3.5in TFT
  • 3D Printed case.

The Raspberry Pi handles all the processing, and connects everything together. The TFT talks to the Raspberry Pi over SPI, and the FONA talks to it over UART. Everything is powered with a 1200mah battery connected to the FONA. The FONA has a charging circuit perfect for use with the phone. Since the battery is only 3.7v, a boost converter is used to boost the voltage to 5v for the Raspberry Pi and TFT. A metal speaker and microphone is connected to the FONA for audio, along with an antenna. The FONA also has a real time clock built in, so the Raspberry Pi can keep time even when off wifi connection. The Raspberry Pi also has a USB Wifi Adapter connected to it giving it internet access. Right now all that it is used for is to upload camera photos to dropbox, but more features will be implemented in the future. The Raspberry Pi camera module is used for pictures and video. Below are some fritzing diagrams on how everything is connected. Read more »

  • 1 × Raspberry Pi A+
  • 1 × Adafruit FONA UFL Version
  • 1 × 3.5in PiTFT Assembled
  • 1 × Raspberry Pi Camera 5MP
  • 1 × Powerboost 500 Basic
  • 1 × GSM Antenna
  • 1 × 1W 8ohm Speaker
  • 1 × USB Wifi Adapter
  • 1 × Electret Microphone
  • 1 × 1200mah Lithium Ion Battery

View all 15 components

  • System Design / Licenses

    Tyler Spadgenske08/16/2015 at 18:33 0 comments

    System Design

    The tytelli is a open source low cost, 3D printable, DIY smartphone used to teach the user about electronics, cellular communication, and computer programming in Python. If the idea is well received tytelli may become a kit.


    TYOS, the tytelli’s core software is under the MIT license.

    The CAD design files are under the Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License.

    The Adafruit FONA, 3.5in TFT, and Powerboost are under the Creative Commons Attribution, Share-Alike license.

  • TYOS 0.5.1

    Tyler Spadgenske08/16/2015 at 18:18 0 comments

    In previous releases of TYOS, the software depended on adafruit-pi-cam, a point and shoot camera project from Adafruit. As you can see in the original demonstration video, the software is slow, pictures are low resolution, and only half of the display is used. All that has changed in the new release.

    The new camera app takes full advantage of the entire screen, loads pictures almost instantly, and instead of an endless “Loading…” prompt, a subprocess is created to handle the uploading to Dropbox to reduce waiting times by over half.

  • TYOS 0.4.9

    Tyler Spadgenske06/11/2015 at 20:45 0 comments

    A couple days ago I released TYOS 0.4.9, below is a list and some pictures of the new features. Note that some of the features were actually released in TYOS 0.3.2.

    New Features

    • Error logs. When an error occurs it is stored in tyos/logs/tyos.log
    • Audio config file. Switch your audio mode from built in (1) to external (0) in the config filetyos/configure/audio.conf
    • Added debug mode to framebuffer.
    • More than four apps can be installed. New app list

    • Settings app. Delete SMS messages and toggle on and off the headset for phones without built in speaker and microphone.

    Along with that, over 15 bugs were squashed with some help from Todd Riesz. Thanks Todd!

    How to Update

    1. Remove old TYOS build with sudo rm -rf tyos
    2. Download new edition with wget
    3. Unzip package with unzip 0.4.9
    4. Rename with mv TYOS-0.4.9 tyos

View all 4 project logs

View all instructions

Enjoy this project?




Helmar wrote 03/30/2016 at 15:17

anyone tried it out using an rpi3 ?

i got the PiTFT working but tyos very unstable and unpredictable


Tyler Spadgenske wrote 03/30/2016 at 15:26

I have heard this from some other users but do not have a Raspberry Pi 3 to test it out. I do not believe it is TYOS itself that is acting up, just the way the PiTFT is configured. Adafruit has not updated their kernel so PiTFTs on RPi 3’s will not work or behave erratically. More info:


Helmar wrote 03/30/2016 at 16:12

dunno, PiTFT si working so far quite well with rasbian.

i think that the problem is in the communication with the fona.

there are some problems with the UART on rpi3, for now im just using minicom for testing the fona, at least i can receive SMS and phonecalls, but sometimes fona ist just resetting, even if i just put in headphones


Tyler Spadgenske wrote 03/30/2016 at 16:36

Maybe the baud rate is unstable. Have you tried this? That might explain why the fona is resetting


Helmar wrote 03/30/2016 at 20:21

thnx but i already did this “fix”

its actually more for “high-speed” uart like 115200baud. but im using 9600 or 14400 (my very first modem had 4800baud, feels like a timetravel 😉 )

i can do everything with AT-commands when using minicom but on /dev/ttyAMA0 (before i did the fix it was ttyAMA1, didnt work at all, not even on ttyS0)

With the newest raspian that is not nessesary anymore but since i want to use the PiTFT 3.5″ im stuck with the adafruit-rasbian image from september+uart-fix+pitftfix. hopefully they’ll update it some time soon.

for now ill focus on putting everything in a nice case, and adding a 5Ah LiIon battery. One stability issue could be caused by the laboratory power supply i use for testing because of the current limiter (better save than sorry). An other suspect is  the 5V step-up regulator for the pi im using. its supposed to to operate up to 1.4A, but its really tiny:

ill do some further testing and let you know. anyway its good to know all the important AT-commands. maybe ill write my own gui after all. Ill see …


Tyler Spadgenske wrote 03/30/2016 at 23:11

If you decide to change the serial port or baud rate you can update tyos in the tyos/src/ file.


Helmar wrote 03/31/2016 at 07:59

i dont think its a matter of baudrate. minicom works very stable with 14400

e.g. i managed to switch on the FM-module to listen to some radio. pritty neat

anyway i can also place calls ATDnumber; or receive calls picking up with ATA

that works for a few seconds, then the leds on the FONA go dark and come back after 2-3sec, searching for network. for me it looks like a reset. for now i do not know what the cause is … any idea ?


Tyler Spadgenske wrote 03/31/2016 at 12:56

If you have a arduino or other device with a serial port (or even just an FTDI cable) try communicating with the fona that way so you can determine whether there is something wrong with the fona board itself or minicom/raspberry pi  is acting up. 


Helmar wrote 03/31/2016 at 16:39

looks like the stability issues were caused by the power supply i was using.

now powerd by a LiIon battery (26650 5Ah), i can place calls without resetting, just the mic and the buzzer/vibration-motor is not working, yet

But FM-Radio does 😉 

waiting for the camera still, before i dont want to close it


Helmar wrote 04/04/2016 at 07:54

i played around a bit with it in the weekend. Serial port works well,using 14400 baud atm, but probably can go higher. I Also installed the newest rasbain, since adafruit fixed the PiTFT for the rpi3.

Just remains that ive a few issues with TYOS, incoming calls i can accept but i cant place outgoing calls (when pressing the green buttom nothing happens), same is for SMS. But in minicom i can dial out and send SMS, so no problem with the hardware. Battery, time and signal strength is displayed, no problem there. Camera i cant say still waiting for it.
Do you have a suggestion where in your code i could look, to fix this issue. Seems to me that the and are not executed, but ive a little hard time
understanding you code. Didnt do much in python yet…
I tried the more rudimentary PiPhone-software ( here i can place and receive calls, so in general it should work…
thnx for your help


Tyler Spadgenske wrote 04/04/2016 at 12:51

Are you entering 10 digit phone numbers? I may have made the code only work in the US. 😛 if so give me a day to fix it


Helmar wrote 04/04/2016 at 19:19

yes, well the number i tried has 12 digits 😉

that would explains it i guess 

thnx for fixing it !


Tyler Spadgenske wrote 04/05/2016 at 02:09

I updated the code, so just delete whatever version you have and clone this repository: sorry for the inconvience  


Helmar wrote 04/05/2016 at 20:11

thnx a lot, working now 😉

an other “issue” i had was the time. First i thought i had onyl to set AT+CLTS=1 and AT&W, but still showing a “wrong” time until i looked through the where you convert time to 12hr format and substract 3hrs.

But my provider gives me the right local time so i dont need it. I commented out  the lines 147 and 148, now time is correct (at least for me)

next thing ill be going through the code and see if i can add a small app to turn on and tune the FM-Radio, but it will probably take a while. Will let you know how it turns out

the buzzer doesnt do anything, very strange, but ill figure it out eventually 😉


Helmar wrote 04/07/2016 at 12:06

could you tell me which fonts you are using e.g. for rhe settings menu.png file ?



Tyler Spadgenske wrote 04/07/2016 at 14:53

The heading is Arista 2.0 ( Everything else is arial black


Helmar wrote 04/08/2016 at 22:12

thnx 😉

just an other question, why are you removing the leading 0 in the time line 154: t = t.lstrip(‘0’)  => after mignight  the time would be displayed like that    :11

i removed the line and now its 00:12


Helmar wrote 04/09/2016 at 20:54

hi, i cooked up a small app for the FM radio of the FONA

has all the basic features of a radio, on/off, volume, channel scan a.s.o

tried to make it as stable as possible but sure they will be some bugs left
Important is that the radio should be on before performing any other actions.
i tried to catch that in most of the functions i know where it would cause trouble
e.g. if you want to select a new channel and the radio wasnt on and no channel scan was performed before, it will switch on the radio and perform a scan (radio will be on and off twice). Channels are no beeing saved for now. a default
channel (88.8MHz) is set in the beginning.

once i had a clash with the during channel scan (scan takes a fw seconds), after i increased self.UPDATE_TIME = 60 and self.DEAD = 60 in it never happened again … so i left it as it is

Radio will be interrupted when incoming call is detected and continued after hangup

baudrate im using now 38400, seems to be ok




Paulo Andrade wrote 02/22/2016 at 18:51

Can I use SIM900A instead of FONA? Great project btw


Tyler Spadgenske wrote 02/22/2016 at 19:57

I believe you can since both modules use the same AT command set but I have not tested it with the SIM900


Helmar wrote 03/31/2016 at 16:46

well depends on the board. i was testing one which did not work. UART was 5V only RPI has 3V3. would have needed a level shifter, i just sent it back and got a Fona… but if you have one already it should work just the same as long as the UART is on the right level …


eric.kimei wrote 05/07/2015 at 17:58

wow so gonna add more features like allowing having diferent kinda of apllication


Mikael Murstam wrote 04/10/2015 at 17:42

Hello cool project. If your Python program requires X, you should modify the .xsession file in your home directory so that only your app will start when X starts. This way you will have no taskbar and if your python program crashes it will restart automatically. If it does not require X, you shouldn’t start X at all in order to save resources. =). 


gojirasan2 wrote 04/08/2015 at 21:15

Typhoon is what I think when I see that name.  Nice project.


Tim Arnold wrote 04/07/2015 at 12:03

Wow cool ….  how long does the battery last … with the voltage upgrade for the PI?   can this thing actually make phone calls yet?


Tyler Spadgenske wrote 04/07/2015 at 12:13

The battery lasts approximately 4 hours. The phone can make and receive calls, send text messages, and take pictures and load them to dropbox.


R. James wrote 04/04/2015 at 20:14

Tyler, this Effin Rocks 😉
And uv made TyOS open-access (open source?) 
Good on u fella, I have a multi-boot on my model B. Running Debian, RiscOS (!ChoozeOS R2D2 drive image) and KODI-Xbmc. Ur Python should run fine on a Pi2 (or the development board to make it more compact?)
SO I can have an un-hackable machine, running Only TyOS – they plug into a friends TV and Change Brains to run, just about anything 🙂
Brilliant. R.James