./jerome{m}

~/Experiments/JM-01 Cyberdeck.md · experiment · 8 min · updated

JM-01, a Cyberdeck in Two Versions

2026 · three.js · Raspberry Pi CM5 · LoRa · AR glasses · a concept, not built yet

The dual bar JM-01 deployed: the lower screen tilted up, the lid screen open above it, both antennas raised

In cyberpunk novels a deck is the machine you jack into. Out here, a cyberdeck is a portable computer you build yourself, in a case you designed, with the radios and ports you actually want. JM-01 is mine. It doesn't exist yet: everything on this page is a model in the browser, sized from the real parts it would hold. The sizes are measured off that model, and the weight and battery life are estimates. It comes in two versions because I couldn't settle on the screen. One has two bar screens. The other has no screen at all and uses AR glasses.

Worn, not carried

The deck rides sideways across your back on a two-point sling, and swings round to your waist when you want to type, where a waist strap holds it level. Everything about its shape follows from that.

  • The body is a wedge. Rev E, the current one, is a thin 2° wedge with a flat top. Its 2 mm aluminium bottom shell doubles as the heatsink: the Compute Module 5 sits face-down on it through a thermal pad.
  • It's asymmetric. A bent tube arches over the controls on the left and doubles as a handle. On the right, an open bay holds a treaded rubber grip, so nothing sticks out of the case.
  • The air goes out the back edge. Worn, the top faces your back, so it can't exhaust there. A 30 mm blower pulls air in under the front lip and pushes it out through the back. On your back the front edge points down and the back edge up, so it breathes like a chimney even with the fan off.
  • Two whips fold along the back edge and swing up together for range, pointing up behind your head when worn. The right one is LoRa, the left one the 70 cm voice radio.

It got there in five revisions, each one sketched as a croquis first and only then modelled. Rev A was a slab with a pop-up screen. Rev B had tube roll bars and Ethernet, and Rev C moulded end caps. Rev D made it asymmetric, with the arch on the left and the grip bay on the right. Rev E thinned it down to the wedge, with flat pouch cells and a CM5 in place of 21700 cells and a Pi 5. Then the screen question split it in two.

The dual bar

The first version keeps a screen, and doubles it. The lower screen is an 8.8 in bar, 1920×480, set behind 3 mm of polycarbonate. It lies flush when packed and tilts up 22° on friction hinges when you sit down. The flip-up visor that used to cover it became a second bar: shut, it lies face to face with the lower screen, armoured back out; open, it stands above it like a laptop lid. The shell and the mesh messages stay on the lower screen, and the SDR waterfall, a mesh map and the system's vitals go up top.

jm01 · liveThe dual bar version. Drag to turn it, scroll to zoom. Type to use its shell, and click the toggles, the knob, the PTT on the left end or the thumbstick. Inside lifts the shell off the parts.open ↗

I looked at a real foldable panel too: an 8.01 in OLED from a folding phone, 2480×1860, sold with an HDMI board. It lost on three counts: it's narrower than the bar, it needs a hinge I'd have to make, and its surface is soft. Two rigid bars on a plain hinge are cruder, but they're tougher. One thing is still open: the lid screen hangs off the CM5's spare MIPI DSI port, and I haven't confirmed that the CM5 can drive it, the lower screen and the back HDMI all at once. If it can't, the lid screen and the back HDMI share an output.

General arrangement of the dual bar version: the plan with the parts under the shell dashed, the front and right elevations, and the deployed side view with the screen raised and the lid open

The AR version

The second version has no screen. A pair of AR glasses, the XREAL Air kind, puts a large virtual screen in front of you, and the deck becomes a keyboard with a computer in it. Without a screen to hold up, it loses the lid, the hinges and the whole raised band behind the keys.

The AR version on its mat, the glasses cabled to its back edge and the virtual screen they show floating behind it

The catch is video. These glasses take DisplayPort over USB-C and draw their power from the same cable, and the CM5's USB-C has no video. Rather than hang a dongle off the back, an internal video bridge board turns the CM5's HDMI into DisplayPort and muxes it with USB and power onto one back USB-C, so the glasses' own cable plugs straight in. Head tracking would come from XRLinuxDriver, an open-source driver that runs on ARM64 but that I haven't seen tried on a CM5.

Losing the screen made room to rethink the depth, and it took three passes to go from 22.6 cm to 16.6:

  • the status LEDs moved into the controls: each toggle's tip is its own light, and the dial has a 16-segment ring;
  • the CM5 went under the left panel, behind the dial;
  • the battery's two pouch cells lie side by side under the keyboard;
  • the SDR, blower, LoRa, UPS and clock line up in one row beside the port jacks.

The 3.4 cm left behind the keys can't shrink much more: the Ethernet jack is about 2.1 cm deep, and the blower is 30 mm across. Going further would mean dropping one of them.

jm01-ar · liveThe AR version. AR view switches the virtual screen on and off; it fades when you look straight down. Ports turns it round to the glasses port.open ↗

General arrangement of the AR version: plan, front and right elevations, and the deployed side view with the antennas up and the glasses port marked

Side by side

Drawn over each other at the same scale, the difference is one band across the back: the screens, the lid and its hinges, and the space the CM5 and the battery used to take.

Both versions drawn over each other at 1:2: the dual bar in grey, the AR version in amber on top, the 60 mm band the AR version gives up hatched in red, and a table of their differences

Dual barAR
Size, packed39.8 × 22.6 × 5.2 cm40.0 × 16.6 × 5.0 cm
Weight, estimated≈ 1.85 kg≈ 1.15 kg, plus ~75 g of glasses
Displaytwo 8.8 in bars, 1920×960 togetherglasses, 1080p per eye
Writing, estimated~6 h with both screens on, ~7.5 h lid screen off~7.5 h with the glasses on
Status lightsan LED stripthe toggle tips and the dial's ring
Battery and CM5under the screenunder the keyboard and the left panel

Both run on the same two LiPo pouch cells, about 70 Wh (63 usable), which keeps them under the 100 Wh limit for carry-on luggage. Either one lasts around 18 hours as a screen-off mesh node, also an estimate.

The radios

There are three, and only one of them needs a licence.

  • LoRa is an SX1262 module running Meshtastic, a text mesh: messages hop from node to node with no network, no SIM and no account.
  • The voice radio is an SA818, a 1 W module on the 70 cm band for push-to-talk voice and APRS. An amber PTT bar sits on the left end, with a red light while you're transmitting. Anyone may listen, but transmitting needs an amateur licence (in France, the ANFR exam). It only draws power, about 5 W, while you hold the PTT.
  • The SDR is an RTL-SDR v4, receive only, on the SMA jack on the back. That's the waterfall on the lid screen.

Small things that matter

A thumbstick, not a pointing stick. The pointing stick between G and H became a sealed analog thumbstick at the front of the left panel. That's where your left thumb lands when you hold the deck by the arch. The keyboard's QMK controller reads it as a mouse, and the three click buttons stay under the space bar for your right thumb.

An e-ink panel, 1.02 in and 128 × 80, sits behind the dial. You can read it with the lid shut or the glasses off. It shows the time, the battery and the time left, unread mesh messages and the latest one, the voice channel, the IP address to SSH into, and which radios are on. It only redraws when something changes. When the deck is off it keeps a badge, with no power at all: the name, the battery, the last sync, and if found: jeromem.dev. A wider 2.13 in strip didn't fit: the AR version would have needed another centimetre of depth.

Every port has a rubber cap, every corner has a rubber block, and a neoprene sleeve with a window zips over the whole deck when it rains. That's cheaper than sealing the keyboard.

What's inside

Both versions share most of their insides. These sheets show them exploded, numbered against a parts list.

The dual bar version exploded: the top shell lifted off and the parts spread out, numbered against a parts list of thirteen

The AR version exploded, with the video bridge where the display driver was, numbered against its parts list

Everything hangs off the Compute Module. There's no USB hub: its two USB 3 ports go to the back sockets, and its two USB 2 ports to the keyboard and the SDR. LoRa and the e-ink panel share one SPI bus.

USBSPII2S, GPIOPCIe, I2CUSB-C PD inUPS and charging2 LiPo cells, 70 WhCompute Module 5, 8 GBkeyboard, thumbstick,RTL-SDR, back USBLoRa SX1262, e-inkpanelWM8960 codec, SA818radioNVMe SSD, Qwiic, clockUSBSPII2S, GPIOPCIe, I2CUSB-C PD inUPS and charging2 LiPo cells, 70WhCompute Module 5,8 GBkeyboard,thumbstick,RTL-SDR, back USBLoRa SX1262, e-inkpanelWM8960 codec,SA818 radioNVMe SSD, Qwiic,clock
diagramhover a box to trace it · click to zoomtap to zoom and pan

The two versions only differ in where the picture goes:

dual barARone cableHDMI 0MIPI DSIHDMI 0, USB 3HDMI 1Compute Module 5lower bar screenlid screenvideo bridgeAR glassesback HDMIdual barARone cableHDMI 0MIPI DSIHDMI 0, USB 3HDMI 1Compute Module 5lower bar screenlid screenvideo bridgeAR glassesback HDMI
diagramhover a box to trace it · click to zoomtap to zoom and pan

The back edges

Both back edges at full size. The AR version's USB-C is the glasses port, with an amber light pipe that's lit while they're plugged in.

The AR version's back edge, the glasses' cable plugged into its USB-C port, the sling and its e-ink tag looped behind it

Both back edges at 1:1 with every port named, and a 3:1 detail of the AR version's glasses port with its light pipe

How the drawings are made

The sheets come from the same three.js models as the two you can turn above, so they can't drift from them. Each view is an orthographic camera at true scale: 1:2 on an A3 sheet is 20 units to the centimetre. At that scale the plan, the front and the right elevation line up in third-angle projection, and the dimensions are measured off the model itself. The line renderer draws every part in black first, so it hides whatever is behind it. On top of that it draws every hard edge in amber, plus outlines for the curved parts, made by pushing their back faces out along the normals. The parts under the shell are drawn a second time, only where the depth test fails, in dashed grey: the X-ray in the plans. The text is set in this site's own typefaces and turned into outlines, so each sheet is a single SVG that needs no fonts. Click one to open it full size.

What's next

Building it. I'll start with the parts that could change the design: whether the CM5 can drive three displays at once, whether XRLinuxDriver runs on it, and how warm the aluminium gets under a long compile. Real use will decide between the two versions, or what v2 becomes.


Back to Experiments · play in the Labs · see how this site works.