We do sometimes go on about how absurdly powerful microcontrollers are these days, but this time it’s technically a microprocessor, not a microcontroller, at the heart of the build — specifically, an STM32MP2. Still, you know you’re living in the future when an STM32 of any sort can not only run [John Cronin]’s gk handheld game console, but provide 3D acceleration to boot.
Full disclosure: you’ve seen this handheld here before — sorta. That was version 3, which was an STM32-based handheld. V3 used the much less powerful STM32H7S7L8, with a single Cortex-M7 clocked at 600 MHz and a 2D NeoChrom GPU. The STM32MP2, by contrast, has dual Cortex-A35 cores running 1.5 GHz and a bonus Cortex-M33. It’s running a custom OS called gkos, which is mostly POSIX-compliant and boasts nigh-instantaneous boot times.
As with the last version, you can run a bevy of emulators from the 8-bit to the 32-bit era, but the added power and OpenGL support mean this handheld also runs N64 games via a fork of mupen64. There are also emulators for ‘real’ computers, namely Atari ST and XL, and a little-known thing known as a “PC”. DOSBox gets the equivalent performance of a 50 MHz 486, which means you can run all the classics, including DOOM, though that will be more performant running the native-running port of sdl-DOOM.
You also get extra inputs to play with and a bigger screen compared to the last version. Oh, and WiFi. There are accelerometers for tilt control, and did we mention the screen’s touch input is supported? If it weren’t for the form-factor, we’d call this a capable little computer. The GK handheld looks like an awesome handheld console, check it out in the demo video below.

Pretty cool! Needs to add SCUMMVM next.
Let’s run Doom on it
Tell me you didn’t read the article without telling me you didn’t read the article 🤦♂️
Its a joke my guy. Everyone says “lets run Doom on it” to everything. It wouldn’t be ran on everything that takes electricity basically, if people didn’t meme the hell out of it.
The meme is dead
And didn’t watch the video either. It’s on the 3 min mark.
This is definitely an option, and it should not be hard to port. I will add it to the TODO list.
If this appeals to you but you want a finished product, you can get an R36s device for <$20 when there are sales on aliexpress. They run Debian, all emulators up through psx/N64 era, and some PC games up through the GTA: San Andreas era.
The authentic devices have 1gb ram. If you are deal hunting you will probably end up with a clone which might have 500 – 800 MB ram. But zram mostly makes up for that. And you’ll use an alternative OS build (dArkOS4Clone)
If this can actually run diablo2 since it has opengl support that would be a huge advantage over the r36s. I doubt it’s going to be near the $15-30 price point of a clone/real r36s though.
Diablo 1 and Hellfire run fine through Port Manager, although they are a little clunky without a mouse.
Why would Diablo 2 be blocked on OpenGL? The PC version doesn’t even use it. I imagine it could be ported in the same way as the original (decompiling and recompiling) plus a thin Glide wrapper. I assume the issue is that Blizzard is just more litigious about D2 because they are still selling copies of the Resurrected version.
But where’s the appeal of running “full things” on micro-hardware with them?
how fast is llama-bench for any new models, gemma, qwen, bielik, etc.
?
about zero.naught tokens per fortnight i guess
I’ve tried it with an older AI model called Dr Sbaitso and it seems pretty quick.
Cortex-A35 (the STM32MP2 core(s)) has 1.7 DMIPS/MHz performance rating. For comparison Cortex-A53 (used in RPi Zero 2W, RPi 3, Nintеndo Switсh, etc) has 2.3 DMIPS/MHz.
And one more funny comparison – the Cortex-M33 (used in RP2350) has 1.5 DMIPS/MHz, not too bad for a low-cost microcontroller.
I’m surprised that STM is making an SoC with the same “STM32” name as their microcontrollers. Especially because stm32 has become stigmatized in my view ever since the RP2040 came out (the quality of genuine STM32 with the price of counterfeit STM32). But i’m interested in it, because i’m so dissatisfied with existing Linux SBCs.
Just looking at the STM32MP215 ‘discovery’ board, i think a lot of people will be unimpressed compared to raspi. $70 for “only” 2GB of RAM, only 100Mbit ethernet, only 1 USB port, no audio out, only one high-performance ARM core, no HDMI out, no builtin wifi, etc. TBH, exactly what i expect from the ‘discovery’ line.
But i don’t care about most of those things super much…what i care about is openness and idle power draw. I skimmed the user manual and datasheet and i don’t have any conclusive information on those…it superficially looks a lot more well-documented than the broadcom garbage that raspberry foundation exists to force upon us. It doesn’t look like you could, for example, shut down the Cortex-A35 big CPU and let Linux run on the Cortex-M33…they’re pretty separate, it’s not like big.LITTLE not-quite-symmetric MP.
The idle power consumption question is a big deal to me, and should be to most of the people doing raspi projects that get featured here. Though they probably don’t care because those are straight-to-the-trashcan projects. I’m not sure i’ve really found a good indication of what the real draw is, but from a glance at the datasheet it looks like the peak active CPU draw is much lower (~70mW) than the best raspi’s idle draw (500mW), and the sleep modes reduce that even further. But that’s very much an apples-to-oranges comparison – a raspi SBC’s complete draw compared to just the CPU within an STM32MP SoC. But given how much more open the STM32MP is, i have some optimism that you could actually approach that kind of consumption in real life.
So i’m cautiously optimistic that maybe someone has finally released a linux SBC that could be reasonably battery powered.
I don’t want video or audio or even wifi on a processor. That’s not processor things.
SoCs combine those functions, so i don’t think your pedantic point is right as far as it goes. But it’s irrelevant here because the discovery board is an SBC and those are definitely SBC things. Though i agree the omission might not be a big deal, it’s definitely note worthy.
You’ve highlighted two of the main reasons I went with the STM32MP2 for this project. First, the peripherals and boot sequence are incredibly well documented compared with other manufacturers. Particularly, most of the peripherals are very similar to those found in STM32 MCUs so I can actually use mostly the same code. For example the GPIOs, I2C, SPI and SDMMC drivers are mostly copy-paste from the older version with minimal changes.
Secondly, the power consumption was a major consideration. At full CPU and GPU usage, the power consumption (measured by an onboard INA236) is somewhere between 1.2 and 2.0W dependent upon screen brightness. The battery is probably massively oversized at 10,000 mAh at 3.7V nominal so I will let you calculate the estimated battery life on full charge. I probably didn’t need a battery that size but there was room in the case so I went for it. The OS boots to the game selection screen in slightly under 4 seconds from cold start, so there is also no need to employ standby modes etc – you can simply switch it off when not used.
No let’s play Crysis on it!
Quake okay what about Unreal Tournament, TimeSplitters, Perfect Dark, Turok, Halo, Gears of War and God of War, RE Code Veronica