The Ultimate Handheld Hacking Device - "hackdeck": hardware

Back in 2024, I wrote a blog post about my ultimate (at the time) handheld hacking device. In it, I briefly described available options in the cyberdeck space, such as the HackberryPi and the ClockworkPi uConsole, noting that they were nearly impossible to find (again, at the time). I also explained why I chose not to pursue one of those devices, opting instead to set up NetHunter on my rooted phone.
That approach worked quite well, and I had a lot of fun working on the project. At the same time, as I mentioned in the post, I know myself well enough to expect that I would eventually change my mind and probably go for a proper cyberdeck. Well, that time has now arrived.
Requirements
Before I get into the details of my new cyberdeck, let's first talk about the requirements. My NetHunter setup already allowed me to do quite a few things, mainly in the security domain:
- run a version of Kali Linux, including tools like nmap, with full terminal access and all the usual Kali goodness
- connect an external Wi-Fi adapter and use it in monitor mode
- connect an SDR and experiment with radio
- perform HID attacks
- connect a CH341A and use
flashromto dump the contents of an SPI flash chip
Here are a couple of examples of what I was able to do with it:
My new cyberdeck needed to support at least all of that, but ideally much more. Over the past few months, for example, I've really started to enjoy the M5Stack ecosystem, so I wanted the ability to interface with M5Stack modules as well.
That led to a few additional requirements:
- significantly smaller than a laptop, though not necessarily pocket-sized
- a full physical keyboard (typing on NetHunter's on-screen keyboard - which pops up, disappears, and often covers half the screen - became a real pain over time)
- some way to interface with the M5Stack ecosystem and other electronics
So, let's take a look at what I came up with.
Implementation
After doing some research, I finally decided to pull the trigger on the ClockworkPi uConsole deck. As you can imagine, I was very excited for it to arrive. I knew delivery could take up to a few months, so I tried to be patient. My patience lasted three months, after which I decided to order another one elsewhere - and I'm very glad I did.
I had read that, to avoid getting scammed, it's best to order directly from ClockworkPi, but I don't think that's actually the best option. At the time of writing, it has been six months since I placed my order on the ClockworkPi website, and it still hasn't shipped. I suspect that ClockworkPi has started prioritizing bulk orders for distributors, so you likely have a much better chance of getting one from them.
I ordered mine from SAPSAN, and it arrived within a few days.
Anyway, I have it now, so let's talk about the choices and specs.
Specs
The uConsole I chose came with a CM4 and no LTE module. I had read that the CM5 tends to run hot and significantly reduces battery life. I also didn't want to deal with an external heatsink, especially since I had other plans for what to put on the back plate.

Assembling this thing was a pure joy. The quality and build are simply amazing. It feels like a solid, industrial-grade device in your hands. The entire case is made of aluminum, but there are free 3D models available if you'd prefer to print it using a material of your choice.

Along with the uConsole, I got the following:
- Adapter board
- AIO expansion board
- Battery board with NVMe support
- Wi-Fi adapter

After putting everything together, this is what it looks like:

Add-ons and modding
Although the uConsole with all the extensions is a fairly complete device, it became too bulky for my taste. The main issue was the seven SMA connectors sticking out of the deck. Since I don't plan on using LoRa or GPS, I decided to mount a single SMA bracket on top of the deck with a foldable antenna, and add one SMA connector on the side for SDR.

As for the Wi-Fi adapter, there's really no clean way to route another SMA connector outside without mounting the AIO SMA rig on top, so I decided not to use it. For Wi-Fi in monitoring mode, I'm now using an external USB adapter that I plug in only when needed.

With this setup, I now have both USB-A and USB-C ports available for connecting any devices I need. This works particularly well with my M5Stack units, where I use an M5Stack NanoC6 as an interface connected via USB-C, exposing any attached device over a TTY interface. I'll cover the software side of things in a separate blog post.

Of course, I'm not limited to M5Stack. I use those USB ports for other devices as well - for example, connecting the Chameleon Ultra and experimenting with RFID.

Trackball
A quick note about the trackball: it's not good. Regardless of what others say, even with QMK firmware upgrades, the hardware is disappointing. At the time of writing, I'm still waiting for a third-party keyboard with a trackpad instead . I'll update this post once it arrives.
Operating system
Kali, of course. It's my preferred distro, and I'm sticking with it, although there are other options available (e.g., ParrotOS). It works mostly out of the box, but it still requires drivers for the Wi-Fi adapter, AIO board, and other components - the usual setup work.
The software side is a completely different story, so I'll be covering that in a separate blog post.
Final configuration
Here's what the final configuration looks like:

Yes, I call it the "Hackdeck," and this is the tactical configuration...

... in a very compact packaging.
Resources
Here are the components I used for this build:
uConsole and expansions
Adapter board (required for most of AIOv2 features)
AC1200 wifi adapter (not used in the end)
ALFA AWUS036acs (used this one)
3D models
Battery bumper (based on this)
Display cover (based on this)
Display cover - hinge (based on this)
Top antenna bracket (based on this)
Back plate (based on this)
Back plate handle(based on this)
M4 washers (based on this)
usb-c cover (based on this)
usb-a cover (based on this)
rj45 cover (based on this)
jack 3.5 cover (based on this)
micro hdmi cover (based on this)
Other