ESP32 WiPhone

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

Public Chat
Similar projects worth following
The WiPhone project is an open source phone capable of making free calls through the internet. The phone is intended to be hackable, modular, cheap, and open, while remaining usable by everyday people. It makes calls over WiFi only (no cellular radio).

Planned Features

  • polished enough normal (non-hackers) are happy to use it as an everyday phone
  • can call other WiPhones using the internet
  • can call smartphones or computers (using an app)
  • wireless firmware updates
  • Arduino compatible software
  • Espressif ESP32 processor
  • 120 x 65 x 12mm
  • 320 x 240 (2.4") LCD screen
  • spare I/O broken out to user-accessable header
  • code, schematic, layout, and mechanical files freely downloadable

Current Status

The WiPhone is currently being prototyped using a few different PCBs as shown in the block diagram down at the bottom. Separate PCBs are used to because it's easier to swap out mistakes (and also to allow starting with an off the shelf keypad, LED, and audio breakout boards).

Main Board: This is where most of the important bits are. ESP32 for the main processor and WiFi stack, memory, charging and power management, and a USB to UART adapter for firmware upload and external communication.

Audio Board: This breaks out all of the audio components, including a codec.

Keypad: Simple mechanical button pad with a keyscanner IC reporting button presses back to the processor over I2C.

LCD Adapter: Almost nothing going on here, just need to route the SPI connection back to the main board. Ideally this would be a parallel connection instead, but there just aren't enough free pins on the ESP32.

Dev Board: This is a prototyping area. Or whatever custom circuit you want area. Eventually the Dev Board would be the only one that remains outside the phone. An external connector would allow connecting or disconnecting whatever custom PCB you want to the phone. Similar to shields/capes/hats/Qwiic/Grove/Booster Packs/modules, but common sense indicates it requires inventing a new name.
WiPhone Block Diagram
WiPhone Block Diagram

JPEG Image - 390.83 kB - 08/15/2018 at 12:48


JPEG Image - 407.44 kB - 08/14/2018 at 11:41


JPEG Image - 11.17 kB - 08/11/2018 at 11:53


JPEG Image - 7.30 kB - 08/11/2018 at 11:53


JPEG Image - 288.15 kB - 08/11/2018 at 11:53


View all 20 files

  • SN7326 Keypad

    stupid6 hours ago 0 comments

    This is a simple keypad to test the SN7326 I2C keypad controller in the 25 button configuration we wanted for the WiPhone. Posting in the hopes it might be useful to someone else.

    Hosted on Gitlab: SN7326 25 Button Breakout

    Overview (from the SN7326 datasheet)

    The SN7326 is a 64 key, key-scan controller. It offloads the burden of keyboard scanning from the host processor.
    The SN7326 supports keypad matrix of up to 8×8. Key press and release events are encoded into a byte format and loaded into a key event register for retrieval by the host processor. The SN7326 integrates a debounce function which rejects false or transient key switch activities.
    The interrupt output (INT) is used to signify if there are any keypad activities. To minimize power, the SN7326 automatically enters a low power standby mode when there is no keypad, I/O, or host activity.


    • 2.4V to 5.5V operation
    • I2C interface
    • multi-key press detection
    • 0.3μA (typ.) standby current
    • 4x4mm QFN-24 package

    The design is in PADS. Everything is there to fabricate it yourself. BOM, gerbers, PDF schematic + PADS schematic and layout.

    Pin 1: GND
    Pin 2: VDD
    Pin 3: SDA
    Pin 4: SCL
    Pin 5: LED/RST
    Pin 6: INT

    25 Button SN7326 Keypad
    25 Button SN7326 Keypad

  • Motherboard Arrived!

    stupida day ago 0 comments

    The alpha motherboard arrived. Here’s some quick shots of the front/back + one with the LCD mounted just for fun:

    WiPhone Motherboard
    WiPhone Motherboard

  • Phone Teardowns + Keyboard Survey

    stupid3 days ago 0 comments

    We have a bunch of cheap phones we’ve been tearing apart, and wanted to post a some pics. Particularly, we’ve been looking to see how they make the buttons and keypads.

    Teardown Pics

    This one is a fake Nokia. Of all the cheap phones we’ve torn apart, the layout of this one seems the most sensible. The keypad feels nice (relatively). The PCB has ample room for components. There aren’t any odd internal bridge pieces or discontinuities in the PCB. The overall size is appropriate. If we are going to try to make a cheap, usable phone, this one seems worth learning from.

    This is one of those tiny ultra-cheap phones that Westerners tend to call “Gongkai” phones after the article Bunnie Huang wrote.

    In both cases, the keypad is made using a PCB with exposed traces used as the contacts. Metal domes are used for the buttons themselves, and everything is kept in alignment with an adhesive-backed sheet.

    Overview of Keypad Designs and Components

    Tactile Switches

    Common Tactile Switch With Frame and Plastic Button
    Simple Tactile Switch
    Tactile switches are typically small momentary-on switches. In keypad applications they are usually sealed, surface mount, and low profile. Some versions have a small frame and plastic button, while others are basically just a metal dome adhered to a set of contacts.

    If you are designing a high volume product with a keypad, tactile switches actually aren’t that common due to the extra cost relative to the next few options. But for lower volumes they are often used since they are durable, come in known actuation forces and heights, and easy to work with.

    Separated Switches

    Most higher volume applications use a separate system where the circuit traces are directly bridged by a contact. Often the contact is more or less integrated into mechanical keypad. All of the phones we’ve torn apart use this style of switch.


    Printed Contacts

    Printed contacts are cheap and have a short design life. One example of printed contacts would be a silicone keypad that is silkscreened on one side with conductive ink. The ink is usually located on bumps on the underside of the keypad that align with the contacts on the circuit. If you’ve ever had a remote control with buttons that stopped working well, it probably used printed contacts.
    Rubber Keypad with Conductive Printing

    Carbon Pills

    Carbon pills are typically made by insert molding them into a silicone compression mold. They have a long design life and are often found in things with a squishy keypad like home phones.
    Keypad with Carbon Pill Contacts
    Carbon Pill

    Dome Contacts

    Dome contacts are a simple metal dome that gets positioned over the circuit to be bridged. They are often mounted on a sheet that holds them in position. Dome contacts are often used in cell phone keypads due to their compact size, long design life, and snap feel.
    Dome Contact

    Substrate Materials

    Substrates can be copper traces on a PCB as seen in the image above, or screen printed carbon on a plastic film.

    Capacitive Switches

    Capacitive keypads have been showing up more often in designs, and operate in a fundamentally different way than a normal conduction based switch. Actuation life for these is theoretically infinite, but they need a relatively large spacing to avoid triggering neighbor buttons and they give no force feedback. Typical applications for these are things like building access panels.
    Capacitive PCB Keypad

  • WM8750BL Audio Codec Dev board

    stupid08/03/2018 at 11:42 0 comments

    We wanted to publish the dev board we made for the WM8750BL audio codec IC.

    Design files: 20180702 - audio codec board
    Datasheet: WM8750BL_v4.1-1131666.pdf

    Overview (from the datasheet)

    The WM8750BL is a low power, high quality stereo CODEC designed for portable digital audio applications.

    The device integrates complete interfaces to stereo or mono microphones and a stereo headphone. External component requirements are drastically reduced as no separate microphone or headphone amplifiers are required. Advanced on-chip digital signal processing performs graphic equaliser, 3-D sound enhancement and automatic level control for the microphone or line input.


    • Stereo / Mono Microphone Interface
    • 400mW Speaker Driver (mono)
    • Headphone Driver
    • Digital Graphic Equaliser
    • Audio sample rates: 8, 11.025, 16, 22.05, 24, 32, 44.1, 48, 88.2, 96kHz
    • 5x5x0.9mm QFN package
    • 1.8-3.3V Supply

    The design is in PADS. Everything is there to fabricate it yourself. BOM, gerbers, PDF schematic + PADS schematic and layout.

    Currently the audio quality is not very good. There's a good chance that's due to the digital and analog ground planes not being separated.

    Pin 1: GND
    Pin 2: VCC
    Pin 3: SDA
    Pin 4: SCL
    Pin 5: ADCDAT
    Pin 6: WS
    Pin 7: BCLK
    Pin 8: DACDAT

    WM8750BL Breakout Board
    WM8750BL Breakout Board

  • Audio Codecs?

    stupid07/25/2018 at 12:01 0 comments

    A: it's a file format
    B: it's an encryption method
    C: it's a format converter
    D: it's a little wizard that lives in 3.5mm holes

    The answer is actually all of the above, depending on the situation. In all cases it COdes and DECodes audio from one format to another. Sometimes so that the bandwidth/storage size is small but the sound quality is high. Other times it's to convert from a format electronics can understand (1's and 0's) to one our ears can (analog waves).

    Software Codecs

    In software, an audio codec is associated with the familiar MP3, AAC, OGG file extensions that store compressed audio on a hard drive or flash card, or stream it to/from a remote location. This type of codec often concerns itself with compression, saving storage space or bandwidth. The codec is typically a software library, and different codecs optimize for different levels of fidelity, compression, and computational complexity.

    Hardware Codecs

    A hardware codec is typically an IC that handles converting analog audio between an analog waveform and a digital signal. Sampling rate and bit depth control the signal fidelity, and usually the signal is not compressed at this stage (though it can be). The digital output of a hardware codec is usually a hardware bus like I2S, I2C, SPI, or AC-Link.

    We tested a few different codecs and ended up with a system that looks like this:

    WiPhone Audio Codec Block Diagram
    WiPhone Audio Codec Block Diagram

    Chips we tested:

    • ES8316 from Everest Semiconductor:
      Bought this on a pre-made dev board and never got it to reply to us. We think the little wizard died.

    • WM8731 from Wolfson Microelectronics:
      Also on a pre-made dev board. This one works, but doesn't have a driver for an external speaker.

    • WM8750BL, also from Wolfson:
      We had to make a custom PCB to try this one. It's more complex to control (lots of registers), but has mic in, headphone out, and speaker driver, which completely solves our analog sound requirements. Currently it's running on a separate dev board. There are some noise issues that are most likely related to not separating digital and analog ground planes, but it seems to be functioning well otherwise.


  • Making a call

    stupid07/24/2018 at 14:10 0 comments

    We successfully called an Android phone. Most of the features we want to unclude are either fairly straightforward or a proof of concept exists in another project. Calling, however, is a pretty big chunk of the functionality that seems to be unique to this project, and our number one goal at the beginning is to prove it can work without big issues.

View all 6 project logs

Enjoy this project?



Similar Projects

Does this project spark your interest?

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