Griz Sextant Cyberdeck Build

a laptop of my own


Update 2022-07-31: I ordered the Adafruit display and it does not fit. So don't use it even if the BOM lists it.


I've been interested in a more self-reliant computer for some time. By that I mean, if you have a laptop from a typical company and the case or screen cracks, it's basically trash. The battery will eventually not hold a charge and usually the battery is specifically for that laptop so eventually they'll stop making them.

I want a computer that if something goes, I could fix on my own. There's been some computers coming out lately that fit that.

Probably one of the most popular and closest to what I was interested in was the MNT Reform. This is a custom laptop that's completely open. Other's can use their design files so you could get new parts from third parties possibly. It uses 18650 batteries so replacing those is not an issue.

However, there wasn't much of an ecosystem around the MNT yet in terms of software or hardware. Also the price was too high, but it's understandable for a completely custom laptop.

(Edit: there's since been the Framework Laptop that has come out. This is more along the lines of a traditional laptop, but very repairable, so this would be a serious one to consider.)

There's also the idea of a cyberdeck, the computer used by hackers in cyberpunk stories. They come in all shapes, but the typical form is just a keyboard and a screen at the top. I'm not talking about a clam shell like a typical laptop, you just carry around the thing with a keyboard exposed.

That makes a great visual but I wanted a clam shell. There are also simple builds that are just a screen, bluetooth keyboard, and a Raspberry Pi. That's pretty DIY, but I wanted something less slapped together.

That's when I saw the Griz Sextant, and I knew that's what I wanted to build. It's repairable, modifiable, has a good form. And has a retro look which is even better.

The designer put a lot of work in to it, and did a great job. He released the files here.

This page will document my work on my own build. My hope is that I can contribute by recreating the build and see how it is for someone other than the designer to build it.

My first step was ordering everything from the BOM. That was straight forward, there were links for just what to buy with some alternatives. I noticed the switches for the keyboard were no longer available, but Amazon showed I could buy the same switches but in a different quantity so I went with that.

(As updated below, I mention the Adafruit PowerBoost could be an option to power it, which could have better power usage than the original UPS that doesn't seem to really be able to power off.)

This will also be my first build of a custom keyboard, something else I've been interested in doing. That's why I'm going with the same switches, I'm not familiar enough yet with building keyboards to know that a different switch would work.

I also saw some of the HDMI cable parts weren't available at Adafruit. I'd prefer to support them over Amazon, but I want my parts soon. Also, it looked like I'd have to build the HDMI cable from seperate parts if I ordered from Adafruit which I don't see why I'd want to build my own cable.

This is also a good excuse to get my 3D printer operable again. I'm using a PowerSpec 3D printer from Micro Center. [NOTE: In the update below, I found I couldn't use my PowerSpec printer.] I found out you can get a really good deal on this if you buy refurbished. There would be nothing wrong with the printer itself, but it seems many people returned these so Micro Center would sell them refurbished at a big discount.

It turns out all that was wrong was the instructions missed a step to plug in a cable. That cable was labeled something like "D" and the only port it dangled right next to was also labeled "D". Some people missed that and returned it.

The biggest pain of this printer is calibrating the bed so it's the right length away from the print head around the entire bed. It's at least 8x8 which the Griz parts are for so it should work, but being that big it's even more important that it's calibrated correctly.

It will be annoying for all the parts to be delivered at different times, but I'll have printing the parts to keep me busy for the time being.

I did recieve my screws already which was impressively fast. But then I realized McMaster has a distribution center in Aurora, Ohio, about 30 minutes away from me.

I'll update this post with more as I go along. I'll post the updates to the RSS feed.

Update 2021-06-23

Waiting for the ordered parts to be delivered, I went to print the printable parts. I loaded the models in Cura setup for my PowerSpec only to find that, while it was 8x8, it wasn't tall enough.

I used that as an excuse to upgrade. I found that Microcenter has a Creality Ender 3 V2 which according to its specs it was large enough, including height. Also with test prints, it was higher quality. So I can now print D&D minis that don't look like layers of noodles like with the last printer.

I ran into a few issues setting up my Creality Ender 3 V2 that I'll document here in case someone runs into the same issues.

YouTube videos were important for putting together the printer as the instructions weren't that helpful. One issue that people ran into that videos mentioned is if the z-axis stepper motor is tightened too much to the frame it will tilt inward and not be straight up. A solution they said was to put a shim between where the motor screws into the side of the frame. However I found if you just loosen the screws some it straightens and isn't too lose to move around.

You can tell if the z-axis stepper is too tight by the obvious fact that it binds and the motor skips when you try to go up (or down if it's different for you). If you're smarter than me and want to verify you have the z-axis right before binding it up, you can look to see if the bottom of the stepper motor is flush with the frame. If you have it too tight, as you look from the side, the bottom left will be lifted up while the right nearest the frame will be touching the bottom.

Back off the screws into the side of the frame a little until it just becomes flush. You want it to look like this:

z-axis of the 3d printer stepper motor flush with the frame

I found another issue I haven't seen mentioned before, since I had the z-axis bind up. On the printer carriage where it connects the the spiral screw rod thing for the z-axis, where the rod threads through for the carriage, the binding must have tilted that. I found that was shifted and probably a little bent now and even after making the stepper motor flush with the frame it was still binding. I backed off those screws a little, the ones on the carriage where the z-axis rod threads through. The carriage was able to go up and down easily.

z-axis rod through carriage

Another thing you can also see from that picture is globs of lubricant on the z-axis rod. The rod came in a sleeve and it was totally covered with it. When I threaded it through, more globs bunched up and came off. I curled a piece of paper up and slid it down the filament so no lubricant got on the filament because I imagine that can't be good to go through the extruder. I'm still wiping that greasy crap up. I saved the sleeve it came in though in case I want to re-lubricate it because there's more than enough left over.

With those issues resolved, I could get to getting the bed leveled. My last printer just had a textured mat, and I thought it was a pain to level but never really had a problem.

This new printer had a glass bed with a carbon and silicon textured surface which is supposed to be the best. However, I found the glass bed is warped so the center dips down which is common. Some people suggested put some aluminum foil pieces in the center under the glass bed. This may have helped a little, but it still dipped in the center. Maybe after repeated heating and use it'll warp back. I leveled the bed to the outside of it so the extruder wouldn't gouge the bed. With the dip in the center I found if a raft is used that will give enough tolerance that the dip wasn't an issue.

But adhesian to the bed was still an issue. Asking my local maker space email list gave me the solution of hair spray. With that solved I make the largest print I've ever tried.

I picked the first model from the BOM and it turned out to be the base which was the largest piece. It's not just wide but when printed upright it's very tall. That's the part that wouldn't fit on my old printer.

The piece had to be rotated 45 degrees so it sits on the bed at an angle. Then it had to be rotated so the front face was on the bottom instead of the top where it was when first loaded. This way it wouldn't need supports all over.

I did however add supports because I didn't think the top of that window for the SD card would print well. But that added supports to parts that were designed to not need them which added to the print time. So next time I'll try without supports.

After 22 hours of anxiety, the printing of the base finished. There was some messed up printing of supports, but the base itself printed just fine.

the finished print of the base

With supports added, one issue was supports on one side got attached to a screw hole support, and I couldn't just pull it through so I had to try and cut and pry without damaging the base. Even more of a reason to just not use supports.

Another thing I noted with this printer, when the extruder gets high enough, there's a zip tie on the extruder tube and cables that brushes against the top frame. This causes some tension on the tube and cables. I snipped that tie, the one in the middle, not at either end of the cables, and now the tube and cables slide easily against the top of the frame.

With the base printed, I then soldered the keys on the keyboard PCB. This was also my first keyboard like this I made so I'm glad about that. I noted that the double wide space key would use a switch in the center, so I had to be sure to not have two switches for the space bar and instead put one switch in the center.

The original build videos mention getting the keyboard to work. I notice the key mapping isn't how I want, so installing/updating firmware and mapping keys how I want may be something I'll need to play with next.

With the keyboard assembled, I screwed it into the freshly printed base. I have that together, and it looks really good! I'm just using all black filament, so I guess this is going to be a "dark mode" Griz Sextant.

the finished print of the base

Update 2021-06-24

I'm continueing to print more parts. While that's running, I'm looking at flashing QMK keyboard firmware onto the keyboard, which is opensource customizable keyboard software. I'm doing this because this looks like the most used, and because I have no idea how to use whatever firmware was already on the keyboard.

I'm following their instructions for Linux, so I ran this, made sure I had git and python3-pip and some libraries I'll need to run qmk:

sudo apt install -y git python3-pip libhidapi-dev avr-libc gcc-avr

Then installed qmk

python3 -m pip install --user qmk

Change directory into qmk to use it

cd /home/eric/qmk_firmware

Setup qmk, just hitting 'y' for everything for the defaults works fine.

qmk setup

On Ubuntu I had to put it into the path

echo 'PATH="$HOME/.local/bin:$PATH"' >> $HOME/.bashrc && source $HOME/.bashrc

(Update 2021-06-26) It seems jj50 has some issues on Raspberry Pi. Disable the LED stuff on the keyboard by making these edits in keyboards/jj50/rules.mk:

BACKLIGHT_ENABLE = no  # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no   # Enable keyboard underlight functionality
EXTRAKEY_ENABLE = no   # Audio control and System control

The firmware for the keyboard with the default key map can then be compiled

qmk compile -kb jj50 -km default

Or compile with make

make jj50:default

The keyboard then needs to be put into bootloader mode. With the keyboard unplugged, press and hold down the key below the top right key, plug in the keyboard, then wait a few seconds and it will be in bootloader mode and you can release the key.

This part is also described here. To flash the board, a utility needs to be downloaded and compiled.

wget https://www.obdev.at/downloads/vusb/bootloadHID.2012-12-08.tar.gz -O - | tar -xz -C /tmp
cd /tmp/bootloadHID.2012-12-08/commandline/
sudo cp bootloadHID /usr/local/bin

Then can try flashing the board. (may need to do with sudo, because the make command needed it)

qmk flash -kb jj50 -km default

Or with make.

sudo make jj50:default:flash

It seems this does similar, maybe :flash does the same it's just this is more explicitly using bootloadHID:

sudo make jj50:default:bootloadHID

I suggest doing this make command with bootloadHID. It may have needed to try flashing several times, but it was only after running the bootloadHID make command that it seems the keyboard finally works

If at any point things don't seem to be working, may need to run qmk setup again, at least I did at one point possibly after I installed other libraries that allowed setup to progress further.

The default keymap was at /home/eric/qmk_firmware/keyboards/jj50/keymaps/default, you see it in the README there.

And with that, the keyboard is programmed! I still need to find out how to use this key map, and then maybe make my own.

Update 2021-06-26

I updated instructions for the keyboard firmware inline so for those reading along they don't do incomplete instructions only to come here to learn they should have done differently.

Basically there's an issue with jj50 firmware on the Raspberry Pi that needed LED stuff disabled. Also, it only seemed to work with the one make command for flashing.

I printed the frame for the screen. I was overly cautious again and printed with supports. You could see where supports were used on that angled part at the bottom of the front face of the screen frame. The holes were also filled with supports which I'd have to drill out a little. So I tried printing again without supports, but that bottom angled piece was too much of an overhang and failed.

So I need to drill out the frame holes. I also discovered you really do need to tap the holes. I never knew about tapping holes so didn't know if that was a nice to do thing but turns out really do need to do that. So now I'm waiting on delivery of tapping drill bits.

While waiting I went to see if I could assemble anything without the case and frame. I looked at the internal USB modification. It requires soldering a male 4 pin header to the bottom of the Raspberry Pi. The BOM didn't mention a male header from what I could tell. I had a straight one but I don't see how that would work, I think the one the original video shows would be bent but I can't tell.

I'm also scared of soldering directly on the Raspberry Pi, so I'll skip the internal USB connection for the keyboard for now and will figure out a cable going outside then plug back in into the back.

Also, trying to hook up the display, the pre-built HDMI ribbon cable with the connectors already attached is most likely too short. This one was listed as an alternative to the individual parts. I'm going to then buy just the longer ribbon cable. Plus, the one I got was pretty creased and with my luck with ribbon cables, it's probably not going to work any way.

I got Manjaro Xfce for Raspberry Pi installed and running. I wanted something that looks a little different than the default Raspbian. But that doesn't seem to accomadate keyboard-only with no mouse too well.

I found the keycombo ctrl-escape brings up a menu where the mouse would be. I could then press the arrow keys to select something. From there I could maybe change some things.

I also printed the top of the case. It fits well on the bottom covering the keyboard. Progress!

the cover for the griz covering the keyboard

Update 2021-07-13

And done! the completed Griz Sextant computer with lid open the completed Griz Sextant computer from the side with lid open the completed Griz Sextant computer with lid closed

Printing the case was finished up. When printing the back piece, it had to be angled 45 degrees like the front bottom and top. However, since it's both the top and bottom, the footprint was larger. It didn't at first fit in Cura, but I increased the bedsize in Cura by 10mm. This only decreased the margin. This only seemed an issue for printing the raft. It acted like it was printing the full raft edge that was off the bed but it just printed over the same space on the edge, it kinda just gooped up. But it's the edge of the raft so it made no difference. It seems that margin is just for the raft, the part was fine.

The face for the screen needed a bunch of supports and made the bottom look a bit messy, and the bigger holes had supports inside which were a pain to remove.

I found my local makerspace had a tap set so I didn't have to go out and buy one, which for the 6-32 that I needed for just two holes, that saved me some money.

I actually tried just plugging the screen USB for power into the Pi, but found that dropped the current for the Pi.

I found a short power-only USB cord for the screen, I stripped what I needed on the end and fed that through the hole at the bottom of the back of the screen face.

I also attached the power switch. I noticed the only thing that the switch powered off was the Pi, so I spliced the wires for the power to the Pi into the USB power wires for the screen so now when switched off both the screen and Pi turn off.

I didn't add the internal USB to the bottom like the original design has, so I actually just looped a USB extension cable for the keyboard out the back out the hole that is just the right size for it that I think was for that microSD card reader extension. If I store the Griz in a bag I'd unplug the keyboard USB so it don't get bent. So that means I have to use the hole on the bottom for the SD card, which is a bit awkward but I make happen with some pliers.

The USB-c breakout board was a bit of an issue. It has to be screwed in because we're plugging a cord into it, but the holes don't fit a regular M3 screw that we've been using. I was able to force one in one hole, but stripped the other. I ended up just forcing a wood screw into it and it seems holding, but I'd suggest finding the real screws you're supposed to use.

Everything powers up and I can boot the Pi just fine now. I occasionally get a low power warning, and usually when I plug in external power. The screen resolution was set too large, when I set that lower that seemed to help. It's not terrible but I'll have to figure that out.

One of the screws for the friction hinge block looks like it got stripped. That's fine, the screen still goes and stays when opened and leaned back. Also, it's one of the smaller parts so no big issue if I do want to reprint it. Really, all of these parts were made with the lowest quality settings just to see how it prints so I might reprint any number of them.

And with that, I'm done! What I'm working on now with it is installing the OS. I'm trying Arch and the i3 window manager, these are both new to me. But those are out of scope for this post.

Update 2021-07-13

Revisiting this, and I just can't get the hang of managers like i3. I've since come across this console desktop guide, and so just installed Raspian Lite that's just console. From that guide I use fbterm to have a console desktop with a background picture, and tmux for multiple windows.

I've also come across the Adafruit PowerBoost charger. This seems like it could work. It wouldn't be the 18650 batteries, but those lithium batteries are common and replacable enough. Also, the UPS from the original design seems to draw a good amount of current even when the Raspberry Pi is off (there's no physical switch to the batteries, they always power the UPS).