Free Shipping on orders over US$49.99

First Ever Finger-Size Full-Touch E-Ink Phone

AshwaniPhones are getting smarter and more complex with many functions that most of us find difficult to use. The modern smartphone uses either a backlight display or an OLED display that can harm our eyes on prolonged use.

You may have wondered how phones are designed and whether you could make your own smartphone. So, here is how you can make your own smartphone having impressive E-ink technology. This full-touch, finger-sized phone uses UI-powered Linux operating system (OS) that can be accessed using any OS and VNC HDMI. It can perform all the basic functions of a phone.

Author’s prototype
Fig. 1: Author’s prototype

The author’s prototype is shown in Fig. 1 and the prototype with its calling screen is shown in Fig. 2. It is so small (see Fig. 3) that it can be strapped to your little finger.

Author’s prototype with calling screen
Fig. 2: Author’s prototype with calling screen

E-ink technology saves power due to the absence of a backlit displays and is good for those who want to avoid the glare of OLED and backlit displays. E-Ink display, like the printed paper, remains visible even when power is cut off until you refresh it.

E-ink phone size compared to a finger
Fig. 3: E-ink phone size compared to a finger

However, this is not all. We are going to develop the E-Ink phone, and, without any extra cost, you will get a full Linux-based portable finger-sized computer as well! So, let us start collecting the required components, which are listed in the table above.


Though it is a totally homemade DIY phone, we can design it to look slim and attractive. So, for the phone, make its body the same size as the E-ink touch display. Then make space, as shown in Fig. 4, for embedding the GSM module inside the phone body.

Body design
Fig. 4: Body design

Next make a tiny hole where the speaker is to be placed, so that you can hear the sound (see Fig. 5). Similarly, make holes for the mic and power input. Now, after designing the phone body, 3D print it.

Holes made in the phone’s body
Fig. 5: Holes made in the phone’s body

Prepare the Raspberry Pi with its latest OS and then enable the SPI and I2C and serial ports of the Raspberry Pi. To do that, run the following command in Llinux terminal and enable software configuration one by one, as shown in Fig. 6.

Software configuration
Fig. 6: Software configuration

sudo raspi-config

Next, install the driver for the E-ink touch display and the Python modules to use the display. To do that, open the Linux terminal and run the following commands:

tar zxvf bcm2835-1.68.tar.gz
cd bcm2835-1.68/
sudo ./configure && sudo make && sudo make
check && sudo make install

sudo apt-get install wiringpi

#For Pi 4, you need to update it:
wget https://project-downloads.drogon.
sudo dpkg -i wiringpi-latest.deb
gpio -v
#You will get 2.52 information if you
install it correctly
sudo apt-get update
sudo apt-get install python3-pip
sudo apt-get install python3-pil
sudo apt-get install python3-numpy
sudo pip3 install RPi.GPIO
sudo pip3 install spidev

cd ~
git clone

Creating UI

We need to create the user interface (UI) for the phone so that it looks beautiful. You can choose any icon and design a custom UI of your choice. For the prototype, round icons were used, as shown in Fig. 7. For UI, we must have the basic design to perform the basic functions. So, here is the list of UI pages for the basic phone functions:

UI for dialing screen
Fig. 7: UI for dialing screen
  • Main screen
  • Dialing screen
  • Contacts screen
  • Messages
  • Incoming call
  • Calling screen

For every screen UI, we need to get the icon, resize, and place it such that it fits inside the actual size of the phone’s display (5.4cm size in prototype). For the main screen UI, the battery icon is used for getting power information, a tour icon for getting the signal info, and a dial icon for the dialing screen, contacts, and messaging screens. In the middle, it is kept blank to display time, date, etc.

UI for main screen
Fig. 8: UI for main screen

Create the dialing screen UI for the numbers and other icons. Dial a number and go to home screen, or erase and refresh the screen. Similarly, make UIs for the remaining phone functions and screen.

Save the images from the UIs in the pic folder of the Python library that was cloned earlier. Open the code for displaying.

Coding phone OS

To create the code for OS for the phone, import the modules and library for interfacing the E-ink touch display. Then import the Python modules for using the SIM 800L GSM module. Next, set the path where you keep the UI images for the phone and create the while loop to check the screen. The page to display is similar to the previous, but new if its previous one has a new page number. Update the display with UI pic.

Python code
Fig. 9: Python code

For the (first) home page, check the touch points for the icons like dial icon, contact icon, or message icon. Also, check the incoming call by checking the ring pin. Then create an ‘if’ condition where you check the touch points to match the range of icons on the UI. If you touch the phone icon, the touch point should match with the touch point corresponding to the phone.

Set the function in the if condition to change the page number to next (No. 2). That is, in the UI image of the dialing screen, update the phone screen and set the page number to 2. Now the phone moves to dial screen with buttons numbers. Create the if conditions for checking the numbers and icons.

Home screen
Fig. 10: Home screen

Touch the dial pad screen if the touch point range of the number is one or two, or other number buttons. Update an empty string named number, and add that number to the string. If the touch point matches with the call icon, it sends the command to the GSM module to call that number. It also sets the page number to the calling screen and updates the display with the calling screen.

On the calling screen, check the touch points for the Call Hang icon. If your touch point matches the range of the call-hang icon, the touch point will send the command to SIM800L GSM module to cut the call and hang up. It will also change the page number to 0 and update the display with the home screen UI.

Call function
Fig. 11: Call function

Similarly, check the touch points and incoming call and then change the page number and update the display screen with UI for the message, contact, or ringing screen. Then in that screen, check the touch point for the button icon, touch point range, and set the function for those buttons—like hanging phone, home, main screen, calling, and other functions for the button icons. The Python code for achieving the above-mentioned actions are shown in Fig. 9 through Fig. 12.

Message function
Fig. 12: Message function


After coding, connect the components as per the diagram shown in Fig. 13. Place the Raspberry Pi and SIM 800L module inside in the enclosure/body that has been designed. Fix the speaker and microphone against the holes made in the enclosure for them.

Circuit diagram
Fig. 13: Circuit diagram

Fix the battery and charging unit in between the display and Raspberry Pi. Then mount the display on the enclosure with the pins matching the E-ink female header-to-header on Raspberry Pi, as shown in Fig. 14. Fix the GSM module on the slot, as shown in Fig. 15, and the phone screen on the base phone cover, as shown in Fig. 16.

E-ink header-to-header pins on Raspberry Pi
Fig. 14: E-ink header-to-header pins on Raspberry Pi


The E-ink phone is now ready to show its magic. Insert the SIM in GSM module and run the OS code, and you are ready to use it.

GSM module fixed in the enclosure
Fig. 15: GSM module fixed in the enclosure

Tap on on the Call icon and you get the dialing screen. Key in a phone number and touch on Call icon to make the call. Touch the Home icon to get the home screen and touch Contacts to see the contact numbers.

Phone screen fixed on the base phone cover
Fig. 16: Phone screen fixed on the base phone cover

Next, try making a call from some other phone to your E-ink phone. When connected, the buzzer starts ringing and it takes you to the ringing screen. Here, touch the Call Attend icon to attend the call and Call Hang icon to hang up the call.

E-ink phone after assembly
Fig. 17: E-ink phone after assembly

The final assembled E-ink phone is shown in Fig. 17. Enjoy!

Ashwini Kumar Sinha is a technology enthusiast at EFY

Source link

We will be happy to hear your thoughts

Leave a reply

Enable registration in settings - general
Compare items
  • Total (0)
Shopping cart