Building a Custom Handheld

Talking Heads - Once in a Lifetime

I’m going to build my own handheld device using a CM4. I don’t know much about Linux or operating systems yet, but I’ll learn as I go.

First, the board.

Front side of the handheld main board

Back side of the handheld main board

This will be the main board for the project.

It handles power management, Li-ion charging and discharging, ports for an I/O board I’ll add later, and debug ports. It also has an RP2354A MCU that handles the buttons, joystick ADC, and battery voltage, communicates with the CM4 over SPI, and controls the power button. Audio is handled separately.

And then, soldering.

Assembled and soldered handheld main board

That was hard.

For the LCD, I decided to use this one.

On the software side, I’m building the system from scratch instead of using a build system such as Buildroot or Yocto. So far, I’ve set up a crosstool-NG cross toolchain, the Linux kernel, U-Boot, and a simple UART printf init program.

UART output from the simple printf init program

It works well.

Next, I’m going to work on the Linux drivers and device tree.

GitHub