FunKey project - All your games on your keychain !

Fun-on-a-Keychain is back, packing all your games and multiple emulators in a cute and extremely tiny handheld console.

Public Chat
Similar projects worth following
FunKey aims to provide a very tiny and cute handheld gaming console that anyone can carry on their keychain. Bored in transports, sleeping in class or simply having a few minutes to kill? Pop up your FunKey from your ever-carried keychain and start back your favorite game right where you left it.

Its foldable design allows for large comfortable buttons, optimized screen space, and a strong protected shell when closed, while its Allwinner 1Ghz A7 processor coupled with a full Linux distribution built from scratch are powerful enough to allow you to play your favorite retro consoles at full speed (NES, SNES, Gameboy, GBA, PS1, Sega Genesis, Sega Master System) while being optimized for battery life.

As always with our previous experiences (Keymu, Funkey Zero) the goal of FunKey is also to share the knowledge, that is why our ideas, designs, programs and experiences will all be layed out on this very page.

We hope you’ll come to love FunKey as much as we do.

A bit of History

It’s now been a bit more than two years since we entered the HaD contest with Keymu: an open-source keychain-sized multi-emulator handheld console which received quite an unexpected success.

Keymu did not pretend to be more than a prototype destined to be built by anyone willing to get their hands dirty. And even though it was often asked to be produced and sold, the world of difference between prototyping and producing kind of humbled us into taking it slowly.

We first needed to focus on correcting electrical and software issues Keymu had, that is why we started working on a new prototype without a foldable design but with almost everything new under the hood. The prototype turned out pretty great, so much so that we decided to give it a name and enter once again the HaD prize: this was last year’s FunKey Zero.

A lot has happened in a year, among which the expansion of our team of enthusiasts to the grand number of three, now bringing together the much-needed professional mechanical hindsight to our electrical+software knowledge.

Keymu and its optimized design can now be born again, merging with all FunKey Zero’s improvements, thought for production and readier than ever to bring fun on your Keychain, meet the FunKey Project.



42.5x44.5x13.8 mm

Processor & RAM

ARM Cortex-A7 @ 1.2GHz. Extensions: NEON, VFPv4.

64MB of RAM DDR2 up to 400MHz


SD card 16GB


LCD IPS screen, 1.52”, 240x240 px


10 mm mono speaker, 500mW


420mAh Li-ion battery for hours of gameplay

Recharging and loading games

via Micro USB port

What’s new?

Mechanical design

FunKey’s most discernable new features is the return of the foldable design but it's only the tip of the iceberg. Everything is new here, and of course the details will be presented more thoroughly in future logs but, to get a sense, here are the main new features:

  • The casing 

Completly rethought, it is now a slimmer package than Keymu and way smaller one than Funkey Zero: only 42.5x44.5x13.8 mm when closed. 

It is also now sturdier thanks to a combination of snap/fit parts and two small screws on the back.

  •  The active hinge 

The flexible cable between the screen and the mother board now passes through the hinge without enduring any stress. The cable is actually already enrolled inside the hinge so that closing and opening the console will not fold the cable in two (like it was the case with Keymu) but keep enrolling and unrolling it instead. 

Also now, like with foldable phones, there is a satisfying snap when closing the console, and the spring in the hinge ensures that it stays firmly closed.

  •  The buttons 

The biggest improvement was done to the L/R buttons which were very tiny and unclickable on Keymu. They now are basically the whole bottom left and right side of the console: 

The playing buttons are also now bigger and even more comfortable since we added more space between the game buttons and the directional pad so that both thumbs cannot interfere with each other. 

  • Other improvements 

On/off/menu button that can only be accessed when the console is open, notification LED for charging and low battery info, better cord attachment for the keychain, nice FunKey logo on the back (that we’re still trying to get illuminated thans to the screen's backlight).

Electrical design

For those who followed the first Keymu project, you’ll know it was based on a daughter board designed to function around the now extinct Intel Edison module (may it rest in peace). The next iteration: Funkey Zero, was a way for us to prototype with new processors....

Read more »

FunKey Rev.

FunKey Rev. A schematics, layout and 3D parts

Zip Archive - 2.39 MB - 04/17/2019 at 21:29


  • 1 × AllWinner V3s Cortex-A7 1.2GHz (ARM v7-A) Processor with integrated 64MB DRAM
  • 1 × X-Powers AXP209 Power Management Unit
  • 1 × LED0402 Red LED 0402
  • 3 × Würth Electronics 74404032047 WE-LQS SMT Power Inductor
  • 1 × TDK VLS252012CX-M VLS-CX-1 SMT Power Inductor

View all 44 components

  • Electronic Design

    Squonk423 days ago 0 comments

    In the "Files" section you can find the "FunKey Rev." file containing all the source files making up FunKey's electronic design.

    The whole design is done using KiCAD release 5.0.0-rc3-unknown-14ce5182~65ubuntu16.04.1, but it should work with all KiCAD > 5.0.0 on all platforms.

    Besides the schematic and layout files, this archive contains the schematic symbol and footprint libraries, as well as all the project-specific 3D parts in STEP format.

    As a bonus, the archives contains too the BOM in both CSV and LibrOffice Calc .formats, as well as an interactive BOM generated by the InteractiveHtmlBom tool. This file is very handy if you need to pick & place components manually with tweezers.

    Please note that this archive contains the file for revision A which has been prototyped with PCBs ordered with stencils from JLC PCB and almost all components sourced from Mouser (except for the Chinese micro USB connector and a few parts that were momentarily out of stock). The only bug we found besides bad solder joints was a BOM mistake for R11: it should be a 240R 1% 0402 resistor instead of a 240k. This resistor is used to calibrate the DRAM data/clock skew and its value is critical.

    We anticipate a revision B that will correct this (small) BOM mistake, as well as some other minor concerns:

    • increase the current limiting resistor for the LED R26 to reduce the light intensity
    • swap the battery and screen connectors J5 and J3 to simplify the screen flex design
    • drive the screen RESET signal from a CPU (U3) GPIO rather than automatically from the PMIC (U5)
    • find a way to solder the loudspeaker using a better method: currently, we use through-hole resistor legs to solder the speaker to the PCB 8-)
    • increase the test pad diameter from 0.5 mm to 1 mm, they are way too small today

  • Electronic Parts

    Squonk426 days ago 0 comments

    The main part in the FunKey device is of course the CPU: an AllWinner V3s SoC with integrated 64MB DDR2 DRAM. Not much compared to a Raspberry Pi for example, but it turns out it has just the right capacity for our purpose, and a minimum size because of its integrated DDR2 RAM, without the length and impedance-controlled constraints on PCB trace requirements.

    The V3s also features a low power consumption and all the required peripheral that we need.

    The V3s CPU is generally used with a companion AXP209 PMIC chip in charge of supplying all the required voltages for the CPU: +3V3, +3V3 (RTC), +3V0, +1V25, most of these using integrated DC/DC buck converters or simpler LDOs for the ones requiring the less power. The AXP209 also features an integrated Coulomb counter for monitoring the available battery power, as well as a soft-power switch controller that acts just like the one in your smartphone!

    A separate AP3418KTR-G1 DC/DC converter is sued for providing the DDR2 DRAM +1V8 power.

    The second most important part in our design is probably our small 1.5" LCD screen. It has an amazing 240 x 240 pixel resolution, while using a simple SPI-based interface and not a complex DSi interface based on the differential high-speed MIPI specification, which requires a dedicated controller that is only available in higher-end SoC:

    For audio playback, we wanted to have an internal speaker. But given the reduced dimensions, we tried to find the smallest available one, which has a very small 10 mm diameter, with a total height of 2.9 mm, out of which 1.4 mm can be inserted into a PCB hole, thus only having a height above PCB of 1.5 mm:

    We use a simple mono audio playback through a PAM8301AAF amplifier. This amp has all the required characteristics, with a filterless (no capacitor) design.

    After testing tactile domes in our FunKey Zero prototype, we decided to go back to standard tactile switches, as their placement can be done by a regular SMT pick&place machine with a very good accuracy, just like all the other components on the PCB, unlike the tactile domes which require an adhesive tape to place them, making them less accurate in their absolute positioning.

    We also need some right-angled tactile switches for the rear left and right buttons:

    We took the smallest we could get, but we may experiment with softer (no-click) ones for the rear buttons to bring a better play experience.

    For the microUSB connector we choose a common mid-mount model with through-hole pins in order to avoid tearing it off the board if you don't pull the chord straight. 

    The only remaining mechanical part is the small DF37NB-24DS-0.4V(51) connector, matching the LCD screen connector.

    For debug, we features a 3-pin  1.27 mm pitch header, with console UART RX, TX and GND pins.

    The only remaining active part is a P-MOSFET used to drive the screen backlight from a V3s GPIO pin.

    We use TVS diodes on all user-accessible parts to prevent ESD (these are small 0402 TVS), and a dedicated USB ESD protection a close as possible to the USB connector.

    All other parts are passive resistors, capacitors or ferrite beads in 0402 form factor whenever possible, as we don't have a lot of available real estate on this board.

    As you can see, none of the components was chosen randomly, and finding the right part took us a significant amount of time!

  • Alive and kicking!

    Squonk427 days ago 0 comments

    The first prototype only had a solder bridge between 2 SD Card connector pins, preventing it to boot from the card. It took us a few days to figure it out.

    Here is the second prototype, which caused us more headaches: one of the power inductors was broken, some solder joints were not good, and the big V3s CPU chip (LQFP with 128 pin) was offset by almost one pin. We had to remove it completely and solder a brand new one in place. First, it didn't work, but we eventually had the board booting after pouring solder paste from below the chip to have its central die pad connected to GND.

    How fun is hardware debugging!

View all 3 project logs

Enjoy this project?



Shranav Palakurthi wrote a day ago point

Have you thought about using a piezo speaker/buzzer? Should be cheaper and waaaay thinner (sacrificing a little bit of audio quality). For chiptunes, though, it should be fine.

  Are you sure? yes | no

Squonk42 wrote a day ago point

You are right, piezo speakers/buzzers are much thinner, but they have a larger diameter too, so they can only be placed on the bottom side.

Piezo speakers/buzzers are driven using PWM signals, which we currently don't know how to generate on the V3s using the ALSA API ;-)

And if audio quality is OK for the oldest consoles, it may be too limited for the most advanced ones like the GBA, Genesis or PS1.

  Are you sure? yes | no

Shranav Palakurthi wrote a day ago point

You bring up some good points. Keep up the great work!

  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