My Cyberdeck Build
I'm a big long time cyberpunk fan even before reading Neuromancer. After getting addicted to mechanical keyboards and building many portable gaming consoles, i feel like it's time to finally build my own cyberdeck!
The deck is supposed to be a portable computer like a notebook. Small but usable. The GPIO & other external interfaces of the SBC [Single Board Computers] should all be accessable from the outside. For the keyboard there is only one option, a mechanical one. Preferable a custom build, or something in the 60% to 40% area. A mouse is optinal but a trackpad/-ball would be benefitial.
Planned Features#
Must have#
- Batteries with charge & play
- Powerfull SBC
- Mechanical keyboard
- GPIO breakout
- Internal Speakers
Should have#
- Trackball / -pad
- Software defined radio with external antenna
- Internal USB-Hub for additional internal devices [SDR, GPS, Keyboard, ...]
- EL-Wire for cyberpunk fanciness
Could have / other ideas#
- GPS with internal antenna
- Solar panel for charging
- External wifi antenna
- LoRa/WAN
Components#
| Part | Description |
|---|---|
| NanoPC-T4 | Powerfull SBC to drive my deck |
| HD702E LCD | 7" Display with eDP interface |
| JJ50 | Small mechanical keyboard |
| Trackball | The Pimoroni Trackball Breakout seems like a good option |
| Batteries | Depends on the space i have in the case |
| RetroPSU | Helder's RetroPSU seems like a good battery management solution |
| ELWire & Transformator | Ordered some green ELWire with a cheap 5V transformator, let's hope it's not too noisy |
Case#
I will design the case from scratch in fusion 360.
Display#
I"m using the HD702E eDP Panel from FriendlyElec. Which has upstream linux support and connects using eDP. For it to work using Armbian I had to do some digging into the Device Tree files to enable eDP & also configure X11 to use the correct settings for the Display.
DTB Overlay#
TODO
Xorg Config#
Somehow Linux didn't get the right Modesetting for my HD702E Screen. So i had to fix it in xorg.conf:
Keyboard#
Firmware#
For the Firmware I'm using the QMK fork for "VIAL" a fork of "VIA", which allows the configuration of the keymap without reflashing the firmware.
Setup QMK#
Follow the QMK Docs - lol.
RetroPSU Linux integration#
I wanted to integrate the RetroPSU in a native Linux way to get the actuall battery status in lm-sensors.
To acomplish this, i had to dig into devicetrees and was quite successfull.
Devicetree Modifications#
Here is the part of my DTS-File that defindes RetroPSUs ADC chip [a TI ADS1015] connected to the I2C bus number 2.
This creates a IIO-Device you can check out under /sys/bus/iio/devices/.
Next I wanted to get the voltage of the battery as a battery- or sensor device. Luckily there was something called "iio-hwmon", which allows using a IIO-Device as hwmon-device [which will be useable in lm-sensors].
So here is another DTS snippet:
This is fairly straight forward: it defined a hwmon device, pointing the the ADC on channel 4.
And this is the result:
Not a "Battery", yet. But I can live with the battery voltage level for now.
Software#
No cyberdeck is complete without some cyber-eye-candy!