Neamerjell

Cyberdeck

I build my own custom battery powered Raspberry Pi cyberdeck. I was inspired by many posts on r/cyberDeck. Nearphuture's Minimalist Cyberdeck was especially interesting due to the screen mount, which uses the official Raspberry Pi screen. (Yay! No custom bezel necessary!)

I wanted my cyberdeck to mimic the Commodore 64's computer inside the keyboard design, so after lots of searching, I found this. I wanted the whole thing to run from a battery, so I gutted a USB phone backup battery, added a smaller, more robust charger circuit, a 3.7 volt to 5 volt booster, and a 3.3 volt converter to run the keyboard. The Vilros case is actually a wireless keyboard mounted in an injection molded case and normally requires 2 AAA batteries, which are 1.5 volts each. I thought simply connecting the 3.7 volt battery pack to the keyboard was a bit too much power and I didn't want to burn up the only keyboard that fit this case. So that is why I have both the 5 volt and 3.3 volt converters.

Mounting the screen to the case was tricky. There was barely enough space to drill the holes in the case. Then there was the problem of mounting the nuts for the bolts to screw into. Home Depot doesn't sell thermo-set threaded inserts, however one of their employees had an awesome idea: use a barbecue skewer wrapped in tape to align the nut to the hole I drilled while the epoxy sets. It worked wonders!

I added a panel mount USB extension to go between the case and the circuit board and a button activated voltage readout for the battery pack.

It turns out the Raspberry Pi is power hungry! It kept flashing the lightning bolt meaning under voltage, but when I tested the circuit, it was putting out a constant 5 volts just like it should, so I disabled the lightning bolt icon in the software (firmware?). For all its appetite for power, the Raspberry Pi delivers lackluster performance. It still struggles to play YouTube videos on a good day. So sadly, this project is no daily driver, but it functions well as a minimal coding platform and proof of concept.

Modifications to System Files

Installed figlet

figlet -f cybermedium Cyberdeck >> /etc/issue

** Also found that all backslashes "\" needed to be doubled because the script that runs motd.sh uses them for special functions

Explanation: Displays custom ASCII art at login prompt

Modifications to /etc/update-motd.d/10-uname

#uname -snrvm

Explanation: Supresses kernel name, network node hostname, kernel release, kernel version, machine hardware name at startup

Modifications to /boot/cmdline.txt

... console=tty3 loglevel=3 ... quiet logo.nologo

Explanation: console=tty3 = redirects boot text to tty3 instead of the default visible tty1
loglevel=3 = disable non-critical kernel log messages
quiet = sets the default kernel log level to KERN_WARNING which supresses all but very serious log messages during boot
logo.nologo = removes raspberries from top of screen

Disabled text based low voltage warnings:

Added logging.conf to /etc/sysctl.d

kernel.printk= 2 4 1 7

Explanation: The numbers indicate the severity of the messages displayed based on context in this order: Current, Default, Minimum, Boot Time
The numbers represennt the severity of the message displayed:
0 - emergency
1 - alert
2 - critical
3 - error
4 - warning
5 - notice
6 - informational
7 - debug

The temperature warning text message was 4: warning and I set the message notification level one lower to supress it.

Modifications to /etc/motd:

Explanation: Removed all text

Modifications to /etc/pam.d/login:

# session optional pam_lastlog.so

Explanation: Clean up the login prompts

Changed the default username from pi to neamerjell:

Enable root password:

sudo passwd root

Login as root then:

usermod -l neamerjell pi
usermod -m -d /home/neamerjell neamerjell

Logout of root, login to neamerjell and change the password:

passwd

Changed the terminal font size:

sudo dpkg-reconfigure console-setup

Selected the 12x24 font sie and Terminus font.

Modificaitons to /boot/config.txt:

# Actual text of config.txt:
############################

# See /boot/overlays/README for all available options

gpu_mem=64
initramfs initramfs-linux.img followkernel

# SOUND
dtparam=audio=on

# Disable rainbow splash screen
disable_splash=1

# Disable bluetooth to save power
dtoverlay=pi3-disable-bt

# Under-clock CPU to save power
arm_freq_min=250
core_freq_min=100
sdram_freq_min150
over_voltage_min=0
dtparam=act_led_trigger=none
dtparam=act_led_activelow=on

# Overclock SD Card from 50 to 100 Mhz
# dtoverlay=sdtweak,overclock_50=100 #--disabled to save power

# Avoid low power warnings
avoid_warnings=1

# Remove boot delay
boot_delay=0