ESP32 WiPhone

The WiPhone project is an open source mobile IP phone. WiPhone is intended to be hackable, modular, cheap, and open, while remaining usable.

Public Chat
Similar projects worth following

The campaign is over. You can pre-order here:

Or join the mailing list to follow along:


WiPhone Prototype
WiPhone Prototype

The WiPhone project is an open source phone capable of making free calls through the internet. It makes calls over WiFi, without the need for a cellular radio.

It's also an open source, self-contained Arduino development platform. It comes in a nice package, with a battery, power supply, and on/off circuitry, unlike most other dev boards. Once your project is done, instead of an eyesore of tangled wires, it's discreet and visually appealing.

The phone is intended to be hackable, modular, cheap, and open, while remaining usable by everyday people.


Modern smartphones are more and more a tool we don't own, we're only allowed to carry around. One that serves the interests of those who allow you to buy it in return for the tentacles that get inserted into your life. You don't own it, it owns you. It tracks you, serves you ads, and sucks away your time with mindless dopamine hits. We want a phone that's firmly in our control, optimized for the convenience of the owner, not various corporate boards, ad and tracking networks and government organizations.

We want a phone that reverses that, and puts us back in control. Maybe even fights back a little. Full control of the firmware to allow us to repurpose the phone into whatever application we want. Hardware with accessible I/O and an easy disassembly process.


  • Completely free calling, as long as you can set up an account and install a SIP/VoIP app on the devices you need to call.
  • International calls are same as local ones. No restrictions based on borders or calling plans.
  • Don’t need to deal with another country’s SIM cards or radio compatibility when traveling.
  • Keep the same address all over the world.
  • Set up your kid with a phone that lets them contact you without the distractions of a smartphone.
  • Give a pre-configured phone to an elderly relation set up with just the numbers they need.
  • Keep a spare in a bag in case your primary phone gets broken or lost. Don’t need to maintain a service plan for the backup.
  • Avoid being tracked by cell tower triangulation or IMSI catching (Stingray).
  • Load your own firmware to implement different calling protocols or completely different use-cases. The firmware is unlocked and freely modifiable.
  • Commercial phone interchange services are available if you need to call someone on a regular phone. Typical plans cost about $25/year (US or Europe providers).

Planned Features

  • polished enough normal (non-hackers) are happy to use it as an everyday phone
  • open source
  • can call other WiPhones using the internet
  • can call smartphones or computers (using an app installed on the device being called)
  • wireless firmware updates
  • Arduino compatible software
  • Espressif ESP32 processor
  • roughly 120 x 65 x 12mm
  • 320 x 240 (2.4“) LCD screen
  • spare I/O broken out to user-accessible header

JPEG Image - 80.48 kB - 02/21/2019 at 15:39


JPEG Image - 104.72 kB - 02/21/2019 at 15:38


JPEG Image - 101.54 kB - 02/21/2019 at 15:38


JPEG Image - 81.21 kB - 02/21/2019 at 15:38


JPEG Image - 90.01 kB - 02/21/2019 at 15:38


View all 71 files

  • Crowdfunding Video Preview

    stupid03/22/2019 at 07:36 6 comments

    Feedback appreciated... please let us know if you see something that could be improved, or clarified.

    Hoping to launch next week.

    Can also check out the Kickstarter preview page here (the campaign won't be live until next week):

  • A Hot New Place for Sexy Pics

    stupid02/28/2019 at 15:32 0 comments

    We added an Instagram account and will probably be posting more of the "finished product" type pics there.  Some uploaded already as we get ready for crowdfunding.

    Nerd pics still go here :).

  • Testing the Keypad Mold

    stupid02/21/2019 at 15:51 0 comments

    Our prototype keypad mold arrived and we made some test parts, and also learned a few things about handling silicone.

    Some pics of the mold:

    Top Surface of Assembled Mold
    Top Surface of Assembled Mold

    This mold is a very simple clamshell type that's only going to be used for manual testing. We just want to figure out if the keypad geometry is correct before moving to a production mold, and also get a few parts to use in the latest batch of testing phones. We will fill it by hand using a syringe.

    Views of the inner surfaces. One side for the buttons, and the other side makes the inner features, including the little pips that push the dome contacts and close the electrical circuit.

    Button Side
    Keypad Inner Surface

    We also had some silicone compatible dye on hand, so later pours were tinted blue. The keypad will probably be black in production, but we didn't have any black dye.

    Before using the dye in a casting we made a few small test batches to make sure it would cure correctly. The supplier said it should work, but since we bought the dye and silicone from different places we wanted to test it first.

    The silicone is a 2 part condensation cure type. The first rubber hardness we tried was Shore 50A, which turned out to be too soft.

    We also learned a few tricks to make the process go smoother.

    This particular mold has some critical features on both sides that form natural bubble traps. Button surfaces tend to trap air on the outside, and the pips that press the dome contacts trap air on the inside. So we have to be careful when filling to mold to eliminate bubbles. Since the silicone is thick and not prone to running, we could fill the bubble trap areas using the syringe before closing the mold and pouring the reminder through the main sprue. There were likely still a few bubbles caused by this method, but they all end up in areas we don't care about.

    Filling Bubble-Trap Areas
    Filling Bubble-Trap Areas

    Another trick was to vacuum degas the syringe after loading it with silicone. It's almost impossible to mix silicone by hand without introducing bubbles, but the degas step pulls them back out.

    The pour process:

    Some results:
    This first one was not degassed. As you can see, there were lots of bubbles:

    Next pour went better. We degassed, were careful to fill the critical areas of the mold, and used the blue dye we had tested earlier:

    Some shots of the keypad in the prototype phone:

    The buttons weren't pressing the dome contacts enough to easily make the electrical contact, so we added some foam underneath. With the foam it works better, but is still a little soft. Later we will try some harder silicone. We will also need to modify the shape of the mold to add more silicone near the dome contacts so that the production parts make better contact.:

    Result after using the blue dye:

  • Another Hackaday Blog Writeup

    stupid02/06/2019 at 15:26 0 comments

    On the main page right now (2019/02/06):

    The WiFi Phone That Respects Your Right To Repair

  • Keypad

    stupid01/21/2019 at 02:55 0 comments

    Got some samples in today for the production keypad buttons. We went with dome contacts. These will be positioned over gold plated fingers on the main PCB, and they are held in position with a clear plastic overlay.

    WiPhone Button Array
    WiPhone Button Array

    Also sent out a little mold for the keypad. This is not the production mold, just a quick/cheap one to confirm the keypad geometry works. Should arrive later this week and we can make a few samples by squirting silicone into the mold using a syringe.

    WiPhone Keypad Mold
    WiPhone Keypad Mold
    WiPhone Keypad Mold - Bottom
    WiPhone Keypad Mold - Bottom

  • GUI, Software and Electronics Improvements

    stupid10/19/2018 at 03:44 0 comments

    We've been dialing a lot of things in on the motherboard. The biggest noticeable change is the GUI. It looks much more polished now. We're almost ready to start carrying the phone around for daily use.

    For complete details, read the full post on the WiPhone blog:

    WiPhone Boot Screen
    WiPhone Boot Screen

  • Daughter Boards

    stupid10/08/2018 at 10:10 0 comments

    What's an electronics project without an attempt at modularity? As part of our project goals, we want a phone that can be easily modified and expanded, but still remains something you could actually use every day. How do we balance those requirements?

    For complete details, read the full post on the WiPhone blog:

  • Capacitive Button Panel Testing

    stupid09/21/2018 at 09:38 0 comments

    Original post on the WiPhone blog:

    We wanted to see if it was possible to eliminate the physical buttons on the front of the phone by using a capacitive button panel.

    It has a few advantages:

    • At this point in time, it's what people expect (it looks good)
    • If we do it right, it could be easy to let people swap out a PCB with a different button layout, opening up the ability to adapt the hardware to different purposes.
    • Potentially longer design life, due to no moving parts


    • Somewhat risky. Physical button panel examples are everywhere, but you don't generally see capacitive button panels as dense as we need. There's probably a reason for that, so we expect to have issues with crosstalk/inadvertent triggering of neighboring buttons.

    We made a test panel, shown above, that has buttons of approximately the size and pitch we need for the phone. Overall, the test panel works OK. It is, in fact, easy to accidentally trigger neighboring buttons. But it was interesting enough we'll go ahead and make another panel using our current button layout and see how it performs in the phone.

  • Prototype 2 Assembly Video

    stupid09/18/2018 at 12:56 0 comments

    We wanted to post an assembly video showing how the mechanical parts of the phone go together. It's already a pretty simple process, and should get even easier once we have a single-piece keypad.

    At this stage it's still more of a prototye model than a production unit. The main purpose of this version is to give us something to actually use. Real world use is important for finding all the little issues that show up once a design moves from pictures on a screen to reality. Once we have a list of those we will evaluate what's possible to fix, and incorporate the improvements into the next version.

    We've been playing around with the phone for a few weeks, mostly debugging electronics and software. Once we get the bug situation under control we will start carrying the phones around and collecting improvement opportunities for UI, software, electronics, and hardware.

  • All Components Are Here

    stupid09/07/2018 at 09:26 0 comments

    We have all the components on hand now.

    WiPhone Components
    WiPhone Components

    Parts List:

    Back Panel - FR4, cut to the correct profile
    Motherboard - 4 layers, hand assembled
    Frame - Aluminum, CNC cut and clear anodized
    Front Panel - 2mm thick polycarbonate, CNC cut
    Screws - M2x4, 4x
    ON/OFF Button - Silicone, artisinal hand carved (OK, actually hand-snipped with a pair if dikes)
    Antenna - Whip antenna, we may change to chip or trace antenna after we do some signal strength optimization
    Keypad - Hard plastic, CNC cut. Eventually this will likely be a single cast silicone part.
    Battery - LiPo pouch.

    As the perceptive among you may have noticed, the parts have been assembled and our project pic updated. Later we will post more info, but for now we can say that everything fits with only minor issues. And the overall build looks and feels great, especially given how few revisions there have been.

    Shell, Partially Assembled

View all 19 project logs

Enjoy this project?



Ramon Schepers wrote 08/24/2018 at 23:30 point

Love the design alot, but have you thought of using a tft with capacitive touch instead of tact buttons? And what is the idle power consumption like in milliamps? I see you plan to include bare bone games too, are thise inline compiled, or sideloaded over wifi?

  Are you sure? yes | no

stupid wrote 08/25/2018 at 00:44 point

We've played around with a few capacitive touch concepts and something other than physical buttons may still make it into the final version, but buttons won out so far because they are cheap and we felt that interacting with physical buttons would be easier for beginners to deal with. Like, if you want to adapt the hardware to something else it's simple to do so.  We do have a capacitive button panel in prototyping (not a touch screen, but actual capacitive buttons instead of tactile ones). I'm not sure if we can make it work with the tiny button sizes we need, but it would result in a nice flat screen if we can.

Power consumption: Haven't gotten to that yet. We are still debugging the hardware on the first integrated phone and after that is done we should know. It will likely be driven by what's achievable in the ESP32. From reading around, it has the capability to enter a low power mode where it periodically wakes to check in with the access point, so I'm hoping we'll be able to have our cake and eat it too.

Games: We will likely do something, but who know what, yet. Andriy keeps putting games on the menu screens, I think because he wants to implement them instead of all this boring debugging and system bring-up :). But for now we are spending our time getting the basic functionality up and working.

  Are you sure? yes | no

Renne wrote 11/07/2018 at 12:38 point

Using the capacitive touch button function of the ESP32 saves a lot of mechanical work in mass production. It is possible to etch the symbols of the keys into the copper pads and use the substrate of the PCB as light-spreader by drilling conical blind holes for the LEDs in the backside of the PCB.

  Are you sure? yes | no

stupid wrote 11/08/2018 at 01:42 point

@Renne, we tested a capacitive button panel, and for the main keypad it doesn't look like it could work. The buttons are too close together and it's too easy to press multiple buttons at the same time. Might be OK for a single button somewhere.

If you look at other capacitive button panels, they usually need a grid size of something like 10mmx10mm. but that's much too large for our application.

This is the initial testing we did:

Later we also made a panel the same size as our keypad (not posted yet), and that one sort of worked, but as I mentioned, it was much too easy to press multiple buttons. Maybe with some more engineering time we could tune the circuit to get it working, but right now we need to concentrate on getting the core functionality working well.

  Are you sure? yes | no

prosto wrote 08/24/2018 at 15:45 point

look at gotenna , You project + lora = sucess

  Are you sure? yes | no

nate.damen wrote 08/21/2018 at 22:52 point

This is awesome! I'll definitely be digging in deep into this 

  Are you sure? yes | no

Arsenijs wrote 08/16/2018 at 09:57 point

Hello from one open-source phone to another =)

  Are you sure? yes | no

stupid wrote 08/16/2018 at 14:43 point

We should schedule a call to congratulate each other directly on such great projects :).

  Are you sure? yes | no

fabian wrote 09/18/2018 at 15:57 point

interesting, imagine ssh + terminal and usb C host for normal keyboard.

  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