Gaming handheld from an old Android Smartphone

, ,
, ,

Introduction

We all have old smartphones that still work but can’t be used anymore because the manufacturer decided to abandon them. They don’t receive updates anymore; apps stop working, behave unpredictably, or get progressively slower.

This project aims to reuse one of these old – but still capable – smartphones by turning it into a retrogaming handheld console.



00 | Research

Project scope

Scope

Saving an old smartphone, specifically a Huawei P20 lite from a life closed in a drawer – or worse, in a landfill – by turning it into a retrogaming handheld portable console.

Goals

  • Good ergonomics: Design the controllers to reduce hand, wrist and elbow fatigue as much as possible.
  • User friendliness: The final product must be usable by anyone without requiring specific knowledge on how it was made or what software is installed.
  • Modular design: All the mods must be reversible. I have to be able to revert the mods and use the smartphone “as-a-smartphone” if I need to.

Constraints

  • Smartphone (Huawei P20 lite) hardware limitations + soldering skills:
    • The smartphone model (Huawei P20 lite) was chosen for no other reason than it was an old smartphone I already had.
    • The P20 lite emulation capabilities are limited up to PS1 games (and not all of them at full speed). For this reason – and to make the soldering a bit easier – I decided not to include the analog joysticks for this project.
  • FDM 3D printer (Anycubic Kossel Linear Plus):
    • The parts need to be designed to be 3D printed by a (not that good) FDM 3D printer.

Components and tools selection

Hardware

Hardware components used in the project.

Software

Here’s a list of the software I used and the tutorials I used to install and configure them. This project page won’t cover LineageOS installation and ES-DE configuration; below are the links to the resources I used.

The arduino code will be covered in section 01 | Design | Code

Inspiration

The two main sources that inspired me to start this project are two YouTube videos:


Handheld CAD design

01 | Design

Product design

Early sketches and inspiration

Since the console is meant to play PS1 games it seemed obvious to mirror the PlayStation button layout. The main sources of inspiration were the Dualshock controllers.

Early sketches and controller inspiration
My old PS1 controller and the new handheld meant to replace it

Product design features

The console shell is built to achieve two goals:

  • Ergonomics
  • Modularity

All the design decisions were made keeping this two concepts in mind


02 | Prototype

3D printed parts

The shell is designed to be 3D printed vertically, using the higher resolution of the Z axis of an FDM 3D printer to achieve a better finish of the parts while limiting the aumont of supports needed.

Electronics

The electronics consist of four perfboards connected by wires and JST connectors to an Arduino Pro Micro clone board.

See the 00 | Research | hardware and the 03 | make sections for more details on the components and assembly.

The buttons are a mix of soft (push buttons and DPAD) and standard tactile buttons (everything else)

Code

The code runs on a Pro Micro or Arduino Leonardo board. It’s based on the “Simple arcade stick example” from the “Arduino Joystick Library by MHeironimus.

The pinout has been “manually” optimized to run on the P20 lite – which for some unknown reason doesn’t support the standard Xinput pinout. With the modified code the P20 lite recognizes all the buttons without additional configuration needed with the exception of start and select not being recognized in some apps like ES-DE (it works in all the other emulators though).

v0 – Components testing

The first prototype was on a breadboard in order to test all the hardware components, code and software compatibility.

v1 – Ergonomics test

Work in progress

v2 – v4 – Design iteration

Work in progress


03 | Make

v5 – Final Design

Work in progress

Testing

Work in progress


04 | Conclusion

Successes

Work in progress

Failures

Work in progress

Things to improve

Work in progress