Close
0%
0%

ZeroPhone - a Raspberry Pi smartphone

Pi Zero-based open-source mobile phone (that you can assemble for 50$ in parts)

Similar projects worth following
This is a mobile phone that is:

1) As open-source as possible *while also being cheap*
2) Easy to get parts for if you want to assemble one
3) Easy to assemble and repair
4) Free from apps with privacy concerns
5) Easy to write apps for

It costs about 50$ in parts, and all the parts are available on eBay. Most of the phone can be assembled with just a soldering iron. User interface is written using Python, it has an UI framework for easier app development - and it gets better every day.

A crowdfunded manufacturing run is expected in a month - subscribe to newsletter below!

Subscribe to the project newsletter - to get weekly news and be notified about crowdfunding!


Project description and FAQ

Read previous newsletter editions

  • Modern phones are getting more and more complicated and hardware-packed. Unfortunately, that means they're becoming less modifiable and repairable.
  • Phones are getting more and more integrated. Unfortunately, that means more and more possibilities for manufacturers to lock them down without allowing us to modify them.
  • More and more software&hardware is kept closed-sourced. That means it's harder to learn, experiment and customize your phone.

The factors I've listed (integration, complexity and closed-source) are necessary in the world we're living in, with all the advances in engineering, competition between companies, as well as laws in different countries.

However, what if we could have a phone free from those constraints?

We can. This is the reason ZeroPhone project was born.

Features:

  • Raspberry Pi Zero in a PCB sandwich
  • No proprietary connectors, hard-to-get parts or chips that are tricky to solder
  • All the specifications for making this phone yourself will be available
  • Python as the main language for developing apps (aiming to add other languages later)
  • UI toolkit making development quicker and easier
  • Numeric keypad, 1.3" 128x64 monochrome OLED screen (with screen header supporting other types of screens)
  • 2G modem for phone functions, can be replaced with a 3G modem
  • WiFi (using an ESP8266), HDMI and audio outputs, a free USB host port
  • GPIO expansion headers for customization
  • Tons of Pi Zero-related hacks that were discovered along the way, that I'll share with you as the project goes =)

  • Software: notes on beta software, part 1

    Arsenijs02/11/2017 at 17:23 0 comments

    February 11th:

    Software is one of the numerous tasks for today. First, I decided to implement a character input UI element - using the numpad. It won't be as fancy as it's supposed to be, but that's beta. However, there are absolutely crucial features, and all added together they form a bulk of the work.


    I decided to liberally spray the code with comments, as if whoever will be reading the code will be a Python beginner who has only interacted with the code but hasn't understood its workings yet. It goes against Clean Code, a book I respect and partially live by, but then - the code I'm writing is not for professional coders and there isn't a tightly-knit team of developers, and the code will be read much, much more often than it'll be modified. There's the problem of keeping the comments up to date, but, in general, commenting as the code flows might very likely become a contribution requirement, at least for the software core of the ZeroPhone project (I'm not going to dictate what external apps do, of course, as long as it's not in the core).

    Read more »

  • What about the apps?

    Arsenijs02/08/2017 at 18:12 10 comments

    "Apps" is a concept that has been with us for ages. I won't be talking about anything that Apple, Google or Microsoft might mean by "apps", I'll use it as "applications, software" because it's short, precise and gets the point across, as well as the most common usage at this point in time.

    ZeroPhone is not my first project of a portable, personal assistant, communicator device. Indeed, the listed qualities are what made smartphones so important in our lives. During all the previous projects I've worked on, I understood one important thing - in the end, it's all about software.

    Nowadays, software support makes or breaks a project, I won't get tired of repeating it because it's true and software really is so damn important. This project needs to have above average software coverage quality - I want to outline what "above average" means here, and what I'll be aiming for when planning my priorities for the project.


    Read more »

  • Hardware: alpha board testing jig

    Arsenijs02/08/2017 at 05:43 0 comments

    This project interests many people. Many people asked questions and gave suggestions, some went as far as to contribute. Those people are interested to help me with various aspects of the project, and most of them will need hardware. So, I had to learn to assemble, test and ship things =) Assembly is simple, shipping is, too. Let's talk about testing the boards.

    The boards go through e-test on the factory - to check for shorted or disconnected tracks. However, I still had to ship every board with an ATMega programmed, two traces cut and 5 magnet wires soldered to make new tracks. Furthermore, I literally emptied all my Arduino Pro Mini stash by this time and had to re-use ATMegas from Pro Mini boards harvested from my previous projects - some of them definitely had fried GPIOs, I just couldn't tell which ones. Also, same could be said about my ESP-12 module stash, I had to check every one I could harvest from somewhere, since I burned some of them - been recklessly driving motors and doing other horrible things with those.

    Solder, something to watch and lots of patience

    Read more »

  • Software: Tor control panel

    Arsenijs02/08/2017 at 04:55 3 comments

    TOR is a popular software that many people use for different purposes: anonymisation, .onion site access, changing IPs - anything goes. Today, I'm not going to show you anything that changes the world of privacy-related apps.

    I'll just show a simple Tor control panel that works as a ZeroPhone app. You can just select "Tor control" in the apps and get a menu to turn Tor on or off, see your external IP and request a new one, as well as see some stats and check your connectivity. Here, you can read the app's code.

    It's a simple but powerful demo of what ZeroPhone is capable of - something no usual phone can do. This app took 2 hours to write - including all the package installs, finding the right settings and Googling. Think about it - 2 hours of work for adding a Tor control panel to ZeroPhone UI.

    Read more »

  • Project state - back PCB finished; time for software!

    Arsenijs02/01/2017 at 04:44 2 comments

    Back PCB finished! It's the least pretty PCB of all them. I was hurrying to send it off because I need to make the next prototype. The layout was also pretty constrained - Pi Zero, expansion headers, MCP23017 and GSM modem sitting flush from one side, TP4056, USB port, DC-DC and RTC from another. Routing could have been done prettier, but overall it's still good and I reached most of my goals. All the PCB files, including Gerbers, are on GitHub now.

    Features planned but scrapped:

    • General-purpose high-power LED (maybe better left as a mod? Will see when I'll be routing the board next time)
    • Simple solution for hardware low-power shutdown - I need to consult some people about using TL431, I apparently didn't understand something about making a circuit that'd switch a MOSFET at 3V and have some hysteresis as well.
    • Bringing out MCP23017 GPIOs taken by the RGB LED on testpoints - just not enough board space. There are two more GPIOs on the MCP that are free, I just forgot to bring them out - that's a task for the next revision (along with refactoring the routing)

    Now, onto software goals. I aim to make the first revision of software limited, but polished. I think it makes sense to include the following features:

    Read more »

  • Why do we need Open-Source phones?

    Arsenijs01/28/2017 at 02:09 0 comments

    Most modern smartphones have FM receivers. Obvious? Not if you're from USA, since phone resellers disable FM receivers in software to make you spend more money on data. Now that I have your attention, I want you to know you can take action against it, and I encourage you to.

    This is an argument you can make in 10 seconds when somebody asks you about why you need an open-source phone. Just think how ubiquitous mobile phones have become in our life - and realize that the ones developing those phones are mostly big companies. Companies with their own interests, looking for new ways to get more money from you using the technology that's a requirement for everybody nowadays. Open-source technology has been solving problems like this for a very long time, so applying it to mobile phones seems like a logical solution. What can it solve for us, exactly?

    Read more »

  • Hardware: making the phone accessible and using Chinese breakouts

    Arsenijs01/26/2017 at 21:56 5 comments

      The phone has to be accessible, and by that I mean that the components should be easily sourceable. What are the criteria for this?

      Less obscure components. If there's somebody not able to get the DC-DC chip or specific inductor I'm using (say, shipping is more than the IC costs), I will try to do at least one of those things:

      1. make it optional to use (like I'm doing with the audio buffering on the new board)
      2. make footprints compatible with other more popular ICs/breakouts
      3. make it work some other way

      Boards should be easy to make. That means two-layer boards, using PCB design settings that are easy for board houses to make and using dimensions that are typical limits of board houses (also, encouraging pamelizing boards). While I'm not aiming to make the boards etchable at home (this task is high effort/small advantage for the project), I encourage anybody who needs this feature to try and make the boards suitable.

      Components should be easy to solder. No BGA, LGA or anything that needs a heat gun. Unless absolutely necessary, I'll avoid this like a plague. BGA and LGA are very nice technologies, but I'll leave them to people capable of actually soldering them right and having the right tools - and that's a pretty small number of people, if we look at who this phone is aimed for. Also, breakouts. If a screen has (x < 0.8mm) FPC pitch, needs 10 or more passives to operate, as well as a boost converter - I'll just pick the one with a breakout that has 8 pins, with everything already soldered and, hopefully, tested.

      Let's see some examples.


    Read more »

  • Project state - Beta hardware almost finished

    Arsenijs01/26/2017 at 02:33 1 comment

    New revision of front PCB was developed. It's hopefully final for now (Murphy's laws still apply). I've changed a lot of things, such as component placement, ATMega pin usage and audio connections. with a PCB like this, it's "solder components and it works", just like it's supposed to be. This Monday, front PCB was just sent to OSHPark (and I want to express my gratitude to @oshpark for giving us a discount, the project can now move forward much faster!). Also, props to @jaromir.sukuba for reviewing the boards and suggesting many useful changes!

    The keypad PCB got new features! First of all, I erased all traces and let my OCD take over. As a result, the front side has fully symmetrical traces (once you solder the keys on, the board is supposed to be beautiful). @Lars R. suggested capacitative buttons. I'm not going to make that myself (I like mechanical switches), but I made sure that whoever wants them can add them - keypad now has I2C lines coming from the Pi (as well as power and one GPIO for interrupts). Now anybody can just design another keypad PCB with a capacitative button controller. Keys were moved and made easier to solder, too. Also, there are two side button options on eBay - I made sure keypad PCB supports both.

    The back PCB is not as simple - it's still work in progress. I forgot that it needs all the power management stuff, like RTC with battery, 5V generation for USB (still using available components), a full-sized USB socket (placed in a non-weird way) and have access to Pi USB lines. Hey, let's talk about the back board!

    Read more »

  • Hardware: PCB dimensions and sandwiching

    Arsenijs01/18/2017 at 17:11 5 comments

    The phone has to have plenty of hardware both on front and back, as well as some on the sides. Usually, the keypad phone designers built a phone with one big mainboard (as big as the phone itself) often a separate flex PCBs for keypad/side keys (occasionaly using mechanical side keys). In flip phones, there'd be another PCB for the LCD panel most of the time.

    How do I know? I spent 4 years fixing mobile phones (also PCs and laptops) for a living, and I used to repair my own phones before that. I didn't exactly design those, and the repairs would be "replace that module" most of the time, but it gave me insights into what components they typically use and how they're put together.


    Dimensions

    Two months ago I started making mockups out of paper so that I'd have some insight into what the boards should look like. It was clear there'd have to be at least 2 PCBs - one for the front and another one for the back. I wouldn't be able to make the thing smaller than the Pi Zero,and making it slightly wider wouldn't be such a big of a problem. Pi Zero is 31mm wide, I just rounded it up and got 40, which looked perfectly fine.

    I was going to order the PCBs from DirtyPCBs, and as I couldn't realistically aim for 5x5cm panel, I chose 10x10cm. Then I measured the keypad layout I was aiming for, the display height and understood that it'd be close to 10cm height, so I might as well make it 10.

    Read more »

  • Project roadmap, alpha boards published (DO NOT ORDER)

    Arsenijs01/17/2017 at 21:09 0 comments

      So, I've been learning KiCad as I've been making these boards - literally my first board in KiCad, coming from Eagle CAD. Furthermore, there were component sourcing problems, unknown variables, untested footprints, too many questions and no answers. Thus, the boards published have bugs, mishaps and poor design choices. The boards are for reference only, as well as for those who want to get familiar with the project's design choices, and for at least a little bit decreasing the "bus factor" variables.

      Here they are. Here's the TODO on those just so you know how much is to be fixed/improved. DO NOT ORDER these boards if you'll be saying I didn't warn you afterwards. It was necessary to order them because there are people interested in contributing and I hate to delay other people, especially when they want to help with my project.

      Roadmap

      The current roadmap as I imagine it is:

      1. Check the current version (actually, all that's left to check is the vibromotor circuit)
      2. Fix the front&keypad PCBs and send them to fab
        1. (*In parallel) assemble and send out alpha prototypes to testers/contributors
        2. Make the back PCB and send it to fab
      3. Start developing v1.0 of software to accompany boards that'll arrive
        1. Coordinate the contributors
      4. Once the boards arrive, assemble a prototype for testing
        1. Possibly, wait for some components from eBay/wherever stuff has to be ordered from
      5. Send out boards to people/maker outlets for reviews
        1. Publish board files
        2. While the shipping goes, make assembly instructions and publish them

      (* Things in lower-level lists are done more or less in parallel with the high-level task)

      That's what I need to get the first revision ready and start building the community of users. Is that enough to start the ball rolling? Of course not, there'll be lots of additions, changes of plans and sudden discoveries - and a lot of reading about similar projects, ways they solved problems, tradeoffs and any tricks that could be handy. Moreover, I'll re-read the roadmap over this week to see if I've missed anything - and update it here.


      That's all for today. For this week, I will also do a writeup on a part of this project - for now, on hardware design decisions.

View all 13 project logs

Enjoy this project?

Share      

Discussions

Craig Hissett wrote 02/15/2017 at 13:17 point

Received my kit buddy - thank you so much!

As soon as my screen arrives I'll get this bad boy assembled and start having some fun!

:-)

  Are you sure? yes | no

Arsenijs wrote 02/15/2017 at 13:20 point

Nice! Thank you for notifying, I will get to preparing the SD card images tomorrow =)

You can actually assemble everything without the display - if you have some free time, the display can easily be soldered last.

  Are you sure? yes | no

Craig Hissett wrote 02/15/2017 at 13:33 point

Awesome sauce! Thanks mate!

  Are you sure? yes | no

kunstenaar wrote 02/15/2017 at 12:24 point

Just fyi:

https://blog.rosenzweig.io/blobless-linux-on-the-pi.html

Sounds we getting closer to 'bloblessness'... Have a good read. ;)

  Are you sure? yes | no

Arsenijs wrote 02/15/2017 at 15:45 point

It was a very educational read, indeed! Wondering if it'll ever get usable - maybe, with all the interest to both this and the ZeroPhone project, it will =)

  Are you sure? yes | no

Samurai wrote 02/13/2017 at 16:38 point

How long did it take for you to build this marvelous nerdy great thing?
I wonder if I wonna do the same...

  Are you sure? yes | no

Arsenijs wrote 02/14/2017 at 12:15 point

About two months of work since I've started it, and many more to come =) As for the "assembling it from the kit" - shouldn't take more than an evening of drinking beer&soldering.

  Are you sure? yes | no

kamathln wrote 02/13/2017 at 05:15 point

HI, 

I feel a couple of jog dials would be an awesome usabiity enhancement. Adjusting volumes, scrolling though menus, file lists etc., will be a breeze.

  Are you sure? yes | no

Arsenijs wrote 02/13/2017 at 09:58 point

Hi! I had a very early Sony-Ericsson phone with a side jog dial, it was awesome =) I won't be including that in the mass-produced version (they're hard to source), but it can be a keypad PCB mod (I've added 5 pins to the keypad PCB that have I2C, so would be very easy to implement jog dial readouts with a small MCU). Thank you for the idea!

  Are you sure? yes | no

Hacker404 wrote 02/13/2017 at 00:00 point

Hi, it's RÖB, you mentioned the new 4G/LTE modules on a HAD article. Thanks for the heads up. 

When I started my M2M / IoT project I just ordered some 2G modules from China as I didn't know 2G was being phased out here. 

I see you have used a SIM800, I have one in transit and I also have a SIM900 in a COMSAT 1.1 Arduino shield. 

These are three band. I know it's a long shot but is it at all possible to get these to use a 3G band for HTTP traffic. I wonder if they can be re-flashed, if someone has written the code.

  Are you sure? yes | no

Arsenijs wrote 02/13/2017 at 09:54 point

Hi! Nice to hear from you, was seeing your comments on the blog from time to time, didn't know you also had an .io page =)

So, 2G has disappeared in Australia? Or is it just some carriers and other will follow soon?

You think it'd be possible to make a 2G module firmware that'd make it work on 3G? I don't understand enough of 2G/3G/those modules' capabilities, but I do know that Simcom isn't helpful about SDKs (read: you're not getting any). To be fair, I don't have any first-hand experience with this and have only heard about it from my colleagues, but if that's true, making any kind of GSM module firmware fixes is going to be tricky for sure.

  Are you sure? yes | no

Hacker404 wrote 02/13/2017 at 10:23 point

We basically have three mobile carries here. One killed 2G on the first of January and from memory the other two will be killing 2G by mid year. 

From what I understand from the application notes for SIMCom modules, they have an embedded micro-controller that you run LUA code on. I assume the same micro handles the protocols and could (possibly) use the 3G band if it had the right code unless there was some hardware limitation that I am not aware of. I don't have enough data or the ability to reverse engineer the modules like the SIM900 or SIM800 to do this though. 

Obviously it's better for the company to sell new modules anyway so they wont be releasing a firmware update. 

Anyway - love this project and it good that there is so much interest. 

Some link about Australian mobiles - 

https://www.whistleout.com.au/MobilePhones/Guides/Will-my-phone-work-in-Australia-carrier-network-frequencies

http://whirlpool.net.au/wiki/Mobile_Phone_Frequencies

  Are you sure? yes | no

Samurai wrote 02/12/2017 at 11:15 point

A new cool thing!
Its freacking!
Does it have the potentiallity to be mass producted?

  Are you sure? yes | no

Arsenijs wrote 02/13/2017 at 09:59 point

Hi! Yes, I plan to crowdfund some mass-production, follow the updates, I'll tell more about it in a month =)

  Are you sure? yes | no

Samurai wrote 02/13/2017 at 16:35 point

Happy to hear that!
Sure! I follow the project eagerly. ^__^
I want to do smth like you did but with a little difference.
I wish you the best,my friend...

  Are you sure? yes | no

Reinhardt wrote 02/11/2017 at 10:44 point

Wow, that's great!

  Are you sure? yes | no

Krokofant wrote 01/27/2017 at 14:23 point

I've been pointed to this by the Linux Action Show podcast and I am really excited by the project.

I think I am not able to contribute at this stage, but I hope to get my hands on a revision 1.0 kit  when it's ready. 

If/when the base apps are materializing I would like to help with translation to german language if you can use that.

  Are you sure? yes | no

Arsenijs wrote 01/28/2017 at 00:52 point

Hi! I'm happy to hear you're willing to help (and Linux Action Show is awesome, I'm honored to see my project reviewed by these guys!). I'll ping you once I'll be making kits, and once more when I'll implement translation support in the phone's applications (basic apps will definitely materialize, it's just a question of "when" now, I'm laying the groundwork next week =) )

  Are you sure? yes | no

jackie wrote 01/27/2017 at 09:17 point

Could we possibly get a list of stuff that i set in stone and we can buy today if we want to build one later when everything is finished?

Thanks!

  Are you sure? yes | no

Arsenijs wrote 01/28/2017 at 00:12 point

Hi! This is my goal, I just need to make new PCBs and test them, then I absolutely can and will set stuff in stone =) I'll ping you when I'll have everything ready, would love to hear your feedback!

  Are you sure? yes | no

s.stevenson.1992 wrote 01/24/2017 at 23:41 point

Can you offer any advice for someone trying to make one out of salvaged parts? I have an old Alcatel gathering dust and it has the perfect form factor, comfortable keys and a tiny screen (which I am not entirely set on but I need to get it working first anyway).
I was hoping to build off your project and add the Zero4U USB hub and then get the case 3D printed locally from a modified version of the existing case.

  Are you sure? yes | no

Arsenijs wrote 01/26/2017 at 02:20 point

Hi! If you want to build off my project, check the GitHub repo - I'm going to soon release beta boards as soon as I release them, it'd be a great starting point (it is already). See the schematics, you can get insights into how it works, see what features you need and do not need and don't be shy to ask for advice =) The project is not even v1.0 yet, but there's already plenty to start from. As for more detailed advice, I'll go comment on your project now.

  Are you sure? yes | no

Ninjalicious wrote 01/18/2017 at 16:10 point

Love this project! Direly needed by hacker community, small cheap phones built on modular components!

  Are you sure? yes | no

Tisham Dhar wrote 01/17/2017 at 01:46 point

The ESP8266 sticking out on the side looks a bit odd. You may be better served in space by using the ESP8285 based module such as this: https://www.itead.cc/psf-a85.html which has a UFL connecter and can attach a big antenna for network scanning and such.

  Are you sure? yes | no

Arsenijs wrote 01/17/2017 at 02:36 point

It sticks out because I was designing it in a haste, it'll be fixed in the next revision. I see that ESP8285 does support SDIO but it's easier to source ESP8266-12E so I'll stick to that to make sure it's easy for anybody to assemble what I'm making =) After all, it's open-source so anybody can just mod a board, send them to a boardhouse and assemble their own phone. However, the base version has to be as accessible as possible - that includes using accessible ESPs instead of maybe more suitable ones. Anyway, hanks for the suggestion - I was wondering whether ESP8285 would support SDIO mode, and you made me check, it;s a good food for thought =)

  Are you sure? yes | no

Roy Dom wrote 01/16/2017 at 21:12 point

qwerty keyboard attachment maybe? 

  Are you sure? yes | no

Arsenijs wrote 01/17/2017 at 02:37 point

Yes, though I won't be focusing on that for now - working on a new board revision =)

  Are you sure? yes | no

Roy Dom wrote 01/17/2017 at 17:48 point

This would be amazing with ad hoc  on a small mesh network as a handheld messenger. free sms for a small team , like a next gen pager.

  Are you sure? yes | no

Arsenijs wrote 01/18/2017 at 15:09 point

Indeed - and it would be easy to make software for this! I'll think about an attachment like this, though I'll need to think about the ergonomics - the screen is small and not sideways. It's possible I'll make a Xbox ChatPad attachment - wrote Python drivers for it some time ago, should be easy enough =)

  Are you sure? yes | no

Arsenijs wrote 01/15/2017 at 11:11 point

@Drew DeVault Just so you know - the mounting and placement of components will change at least a couple of times even until I release a ready-working first revision, and I'm not 100% sure I won't need to make at least one fundamental change that could mess up a design. 

What I'm saying is - I absolutely can and want to send you a prototype, I appreciate the eagerness to help and the project would benefit from that massively. I'm just saying so you know to expect changes of requirements if you're to start at this point of development (and so other people interested know this). If you still want to start now, PM me here or email me (crimier at yandex ru) so we can work out the details.

  Are you sure? yes | no

Craig Hissett wrote 01/14/2017 at 09:01 point

I love this already. It's the perfect format for a portable, all-in-one pyLCI device - exactly what I'm after!

  Are you sure? yes | no

Arsenijs wrote 01/14/2017 at 09:19 point

I can send you partly-assembled prototype boards (you'll need your own display and Pi Zero) - if you're willing to cover the postage fees from Latvia =)

  Are you sure? yes | no

Craig Hissett wrote 01/14/2017 at 10:24 point

You absolute hero!

  Are you sure? yes | no

Drew DeVault wrote 01/14/2017 at 18:38 point

Can I get in on this? I'd be interested in starting designs for a 3D printable enclosure.

  Are you sure? yes | no

Does this project spark your interest?

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