DIY Smartphone

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

Similar projects worth following
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

View all 15 components

  • TYOS 0.5.6: Bug Fixes + Dev Release

    tyspa05/23/2016 at 22:15 0 comments

    Its been awhile, but its finally time for a TYOS update. Whats inside? Bug fixes.

    Changes to the Camera App

    • Fixed error that causes camera to overwrite, delete, and modify incorrect photos, after software is updated. This moves the index.dat file from inside TYOS to /home/pi. Otherwise, whenever you updated TYOS it would think that all your photos were deleted.
    • Added missing C library, that caused the camera app to not work at all. Most of you figured out this library was required and found out how to install it, now it is included by default.

    Other Fixes

    • TYOS now allows calls to be made from countries outside the United States.
    • TYOS now allows SMS messages to be sent from countries outside the United States. For some reason TYOS would only accept US based phone numbers. That is now fixed.

    How to Update

    1. Remove old build of TYOS: sudo rm -rf tyos
    2. Download new version: wget
    3. unzip: unzip
    4. Rename: mv TYOS-0.5.6 tyos
    5. Run: sudo python tyos/src/

    Developer Release!

    Although I am no longer developing new features @Helmar has been working on his own fork of TYOS. He added a Radio app, that allows the user to listen to FM radio, and a volume settings app that allows the user to change the volume, ring tone, and more all within TYOS. He also made some changes to the time and battery settings to suit his own needs. Its still a little buggy, but if you are looking for some new features please try it out. Note that if you are having trouble I may not be able to help you as I did not write the code.

    How To Install

    1. Remove standard version of TYOS:

    sudo rm -rf /home/pi/tyos

    2. Clone new version:

    git clone

    3. Run!

    sudo python tyos/src/

  • System Design / Licenses

    tyspa08/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

    tyspa08/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

    tyspa06/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

  • TYOS 0.2.4

    tyspa04/20/2015 at 22:03 0 comments

    I have been working on TYOS over the past week and have fixed many bugs and added a couple of new features.

    Bugs Fixed:
    • Long distance calling now accepted by call app
    • Apps automatically exit when phone detects incoming call
    • Messages are no longer accidentally considered calls
    • Battery percentage properly extracted
    • Overall cleanup of code
    New Features:
    • New Power app! Instead of instant shutdown when power app is opened, a small menu with options to shutdown, logout, or cancel appears. Logout is great for developers.
    • Reception of sms messages! Before you could only send sms messages, but now receiving them is possible thanks to the redesigned messaging app.
    • Contacts! Incoming messages will now associate names with numbers. Contacts are handled in the /home/pi/tyos/configure/contacts.conf Create the directory and file and then add a line with this format: Name=number
    • Low battery warning! When your phone's battery drops below 30% a warning appears on the main screen.
    • --version tag. Use this when running to get your version of TYOS. Automatic update checking coming soon

    TYOS is still under heavy development so check back soon for updates!

View all 5 project logs

View all instructions

Enjoy this project?



xavier114 wrote 08/19/2021 at 16:19 point

I try to run TyOS on raspbian with no success. I use a HDMI Display and I modify the file to displaying on fb0 (HDMI Display) and it still not work. What could be the problem?

  Are you sure? yes | no

PiCreate wrote 11/13/2022 at 21:12 point

I tried TyOS but I think it is broken because of no more 2g networks. 

  Are you sure? yes | no

Sean wrote 12/16/2018 at 04:17 point

Is this pretty power-inefficient compared to a conventional phone?

  Are you sure? yes | no

Giga5 wrote 08/15/2018 at 15:32 point

I have an issue. when i boot TyOS, it behaves very strangely and when i attempt to dial on the call app it types random numbers, and sometimes presses the call button which charges me for calls I didn't intend to make to random numbers. The OS just crashes when i enter the messages app, and shutdown app doesn't work. I end up having to Hard-Shutdown and reboot. Any ideas for the cause? P.S. I built it exactly how it was taught on instructables, and this is the only issue i've run into.

  Are you sure? yes | no

krushnaghaugule2112002 wrote 07/16/2018 at 11:12 point

you have knowledge about phones so do you work for any company

  Are you sure? yes | no

krushnaghaugule2112002 wrote 07/16/2018 at 11:11 point

sir i want to build my own smartphone like mi 4 can i bulid

  Are you sure? yes | no

Abe Lima wrote 08/21/2017 at 15:16 point

Is it possible to make a web browser app for the TyTelli?

  Are you sure? yes | no

davcap321 wrote 02/22/2017 at 20:27 point

Can I use a cheat chinese grps module?

  Are you sure? yes | no

davcap321 wrote 02/22/2017 at 20:07 point

Can I use a cheaper chinese version of Fona?

  Are you sure? yes | no

DADI RAHMAT wrote 10/18/2016 at 12:51 point

if Adafruit FONA UFL Version does not work with 3g or 4g network, can i change it to fona 3g cellular breakout ?

  Are you sure? yes | no

tyspa wrote 10/24/2016 at 23:42 point

The hardware is compatible, but my software does not currently support the FONA 3G. You can find the differences in the modules' command sets here:

  Are you sure? yes | no

Helmar wrote 03/30/2016 at 15:17 point

anyone tried it out using an rpi3 ?

i got the PiTFT working but tyos very unstable and unpredictable

  Are you sure? yes | no

tyspa wrote 03/30/2016 at 15:26 point

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:

  Are you sure? yes | no

Helmar wrote 03/30/2016 at 16:12 point

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

  Are you sure? yes | no

tyspa wrote 03/30/2016 at 16:36 point

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

  Are you sure? yes | no

Helmar wrote 03/30/2016 at 20:21 point

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 ...

  Are you sure? yes | no

tyspa wrote 03/30/2016 at 23:11 point

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

  Are you sure? yes | no

Helmar wrote 03/31/2016 at 07:59 point

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 ?

  Are you sure? yes | no

tyspa wrote 03/31/2016 at 12:56 point

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. 

  Are you sure? yes | no

Helmar wrote 03/31/2016 at 16:39 point

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

  Are you sure? yes | no

Helmar wrote 04/04/2016 at 07:54 point

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

  Are you sure? yes | no

tyspa wrote 04/04/2016 at 12:51 point

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

  Are you sure? yes | no

Helmar wrote 04/04/2016 at 19:19 point

yes, well the number i tried has 12 digits ;)

that would explains it i guess 

thnx for fixing it !

  Are you sure? yes | no

tyspa wrote 04/05/2016 at 02:09 point

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

  Are you sure? yes | no

Helmar wrote 04/05/2016 at 20:11 point

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 ;)

  Are you sure? yes | no

Helmar wrote 04/07/2016 at 12:06 point

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


  Are you sure? yes | no

tyspa wrote 04/07/2016 at 14:53 point

The heading is Arista 2.0 ( Everything else is arial black

  Are you sure? yes | no

Helmar wrote 04/08/2016 at 22:12 point

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

  Are you sure? yes | no

Helmar wrote 04/09/2016 at 20:54 point

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



  Are you sure? yes | no

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

Can I use SIM900A instead of FONA? Great project btw

  Are you sure? yes | no

tyspa wrote 02/22/2016 at 19:57 point

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

  Are you sure? yes | no

Helmar wrote 03/31/2016 at 16:46 point

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 ...

  Are you sure? yes | no

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

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

  Are you sure? yes | no

gojirasan2 wrote 04/08/2015 at 21:15 point

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

  Are you sure? yes | no

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

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

  Are you sure? yes | no

tyspa wrote 04/07/2015 at 12:13 point

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

  Are you sure? yes | no

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

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

  Are you sure? yes | no

Similar Projects

Does this project spark your interest?

Become a member to follow this project and never miss any updates