Skip to content

The Build Up

This section is a follow-along of the build process for the final device configuration. Check out Full BOM for a list of all the off the shelf components that went into this build. Head over to v1.0 3D Files to check out all the individual printed pieces. The Design & Fabrication section contains prototyping process pictures and additional information on the 3D printing and build process. The Block Diagram section contains some additional specifics on the wiring and hardware config.


Chassis

Below is an image of the 3D printed chassis part with some of the key areas labeled. Early printing prototyping resulted in uplift of the corners of the chassis. To achieve the flattest underside possible, the final model below has a brim baked directly into the part. I opted into modeling a brim manually vs. having my slicer produce one so I could be more selective of brim spacing and location. The size of the part was constrained by the print bed size, and I designed it to maximize utilization of the full print bed. There are a few unlabeled areas not shown you will see later during the build process.

chassis_diagram

Standoffs & Some Cleanup

The below image is the full printed chassis with its brim removed and partway through setting of standoffs with Loctite UltraGel. The most critical standoffs, for example at the hinge locations, were scuffed with 120 grit sandpaper and cleaned with isopropyl alcohol. As for the UltraGel Glue, it was my intent to use a JB Weld 2-part epoxy or something similar, but during prototyping I had been using this Loctite product with no failures. Time will tell if the bonds hold out. I did opt in for some M2.5-6 nylon standoffs at the SSD location, simply because the mounting holes in the SSD were M2.5 and nylon was what I had on hand at the time. Nylon can struggle to bond with UltraGel, but so far I have had no issues with the SSD standoffs.

IMG_20260726_171406884 IMG_20260723_075538420

After the chassis was printed, there was also some filing done at the trackpad tray opening. I used tree supports in the slicer for this area and the final run-to-run outcome of this area was hit or miss. Below is a test print, but you can see how the tree supports can result in a messy opening. In the slicer image on the right, you can see the brim and how tight the piece was on the print bed. I designed a 0.4mm tall brim anywhere from 4-6mm off the edge of the chassis. The brim cut away fairly easy with a hobby blade.

IMG_20260727_100350401 Pasted Image

Foam Support & Antenna Mounting

After the chassis standoffs were set and left to cure for 24 hours, I got started on some of the early install components. During prototyping, I was noting the order of operations on assembly and best practice for a smooth assembly. I started by placing a piece of 1mm rectangular hobby foam1 at the approximate location of the Raspi4/UPS PCB edge. These two devices float roughly 1mm above the base of the chassis, but I know over time they could droop or sag. I did not want them scraping up against the base of the chassis. This was just a precaution to protect the devices. I then mounted the antennas with a very small amount of Loctite Blue 242.

IMG_20260729_102909124 IMG_20260729_104131227
IMG_20260729_104522406 IMG_20260729_104137118

Modem Mounting & HDMI Carrier

I moved onto mounting the modem and M.2 to USB adapter for this device using 2x M3-10 stainless screws and nuts. I taped the antennas down temporarily; you'll see this eventually got buried and became a permanent fixture. After the modem was mounted, I turned the device around and mounted the HDMI cable holder enclosure1 behind the modem with 2x M3-6 screws. This enclosure part keeps the HDMI wire stack tightly in place; it is filled with 1mm foam to allow for some give without being too stiff. This enclosure also has a cover that will get mounted after the HDMI cable stack is set in place.

IMG_20260729_105138297 IMG_20260729_110602894

Fan Installation

My next step was mounting the fan. This consists of the fan grill, 4x M3-15 nylon screws, nuts, 1mm washers, and the 40mm fan. I soldered the dupont connectors the fan. These will eventually get connected to the header/pigtails on the Pi4. The green wire in the image below was abandoned; it is the fan tac, which was not used. There is a vent on the the opposite side near the Pi itself to create crossflow. The case does not have a tight seal so the standard positive/negative pressure concepts of case cooling here felt unrealistic. The goal was simply to get a breeze over the components. The crossflow is hindered by the clump of wires/cables that develop in this part of the chassis, but thermals have been more than adequate.

IMG_20260729_111554355


The Backplane

The concept behind the backplane was to have the heart of the device (SBC, UPS, and hub) all attached to one plane that could freely slide in and out of the chassis. It was a great idea, and worked on early renditions of this build, but in the end it did not work exactly as planned. Below is the 3D model of this part which consists of the following features:

  1. Standoffs and bend relief for the powered hub
  2. Holes for the Pi's/UPS standoffs that get mounted directly to the back of the plane
  3. A "tombstone" with holes in it at the USB cable side of the hub as a method to zip tie the cable in place as a stop gap to circumvent the concerns I had over the glue/soldering joints that came from the manufacturer
  4. A shelf for the RS232 module
backplane_diagram

RS232 Mounting

I started by mounting the RS232 module to the shelf with with a mix of M3 nylon screws, nuts, and washers1. On the rear of the backplane, I mounted a cover around the edge of the port shown in the right image2. I decided to solder pigtails directly to the pins on this module3. You will also see in the first image that I had already set the 4x M3-6 female standoffs for the USB hub and applied 1mm foam4 to the hub supports provide some support to the PCB while plugging in and disconnecting components.

IMG_20260729_095836102 IMG_20260728_193506157

Pi4 Mounted & Pigtail/Pin Layout

After the RS232 module was in place, I moved onto the Pi/UPS mount. This is screwed directly into the backplane and into the brass UPS standoffs with 4x M2.5-10 screws. I temporarily taped the pigtails serving the rear components to the Pi and left the pigtails that needed to pass through to the front panel in open air for now. Below the image is a diagram of how I configured the Pi4 pins and what they are wired to. I used female to male pigtails to eventually marry them to their components on the other end.

IMG_20260729_114849095
pinout2

USB Hub Mounting & Modifications to the Hub

Lastly to finish the backplane I needed to get the powered USB hub mounted and get the USB cable tightly zip tied into place to the rear "tombstone" towards the edge of the backplane. This is intended for some strain relief for this cable. While writing this, it looks like I mounted this hub with 4x M3-6 nylon screws, they should have been steel screws, I am not entirely sure why I made the decision to use nylon. Below is an image of the final backplane assembled.

IMG_20260729_115757315

I made some modifications to the hub itself. The power input on this model expected a 5V barrel connector to provide power via a USB Typa-A plug (from the UPS). I decided to solder some pigtails directly to the bottom of the PCB to try to save myself some space and avoid even more awkward connectors. Additionally, as this was a USB 3.0 device, I went ahead and cut the cable to size and abandoned the SSRX and SSTX wires as well as the drain wire fundamentally converting this to a USB 2.0 hub. It was apparent in early prototyping that cable clutter was going to be a problem. I made my best efforts to cut and solder as many cables as possible to size. Below is a before and after of this device as well as my best efforts at soldering (first time doing this).

IMG_20260723_145644277 USB3-rear

Sliding the Backplane Into Place

The bottom left image is after the backplane was slid into place and the cables passed through to the front of the chassis1 to serve the front cover components. I was solo when I was taking images of this build, so it is a little tough to show the physical process. I do not want to gloss over how challenging this was. In a future iteration of this project, I would reconfigure this component to be physically easier to construct. The main challenge was passing the pigtails from the Pi through the front cable cutout. With the backplane propped up, I individually fed each pigtail through the small cable cutout from the back. Furthermore, the HDMI cable holder is simply too close to the Pi header pins for my liking which you will see in the next section. I was concerned about excess heat and potentially damaging the pins on the Pi. I could have changed my assembly approach to make it easier, but I wanted the backplane assembly to be removable as one single piece. These design challenges have provided food for thought for future projects as this concept was not as successful as intended.

backplane_cropped IMG_20260729_120619142

HDMI Carrier Assembly Cover & Internals

Next up I wanted to get the HDMI carrier assembly closed up and put the cover over this part. This part is a holder for all of the funky HDMI cable conversions and adapters I used that happened to fit this project. The full stack from the Pi's Micro HDMI port to the display is a 90 degree Micro HDMI to HDMI (male) cable1 -> HDMI (female) to Micro HDMI (female)2 adapter sandwiched inside of this enclosure, and lastly Micro HDMI -> 90 Degree HDMI cable into the side of the display (not currently shown in these images - gets installed in a later section). This configuration seems odd and thats because it is. I went through a lot of adapters and cable types, including ribbon cables. This was the configuration I settled on after a lot tinkering. The top of the Micro HDMI connector coming out of the Pi was filed down ~2mm or so just to give me some more space. In the right image, the HDMI enclosure cover is in place fastened with 2x M3-10 screws and nuts3. As mentioned in the previous section, you can see how tight the fit is for the Pi and its header pigtails.

IMG_20260729_122716387 IMG_20260729_123333979

Buttoning Up Some Final Items

The below image is where I wound up at the end of this portion of the build. I attached a 90 degree USB Type-A adapter to the 5V output of the UPS1. I connected one of my USB Type-A power only cables to that fitting2 which has male dupont connectors3 on it to connect to the pigtails coming off the back of the USB hub. I also connected all of the rear components and their pigtails (RS232 and fan), and attached the 90 degree USB Type-A to USB Type-A female4 to the modem from the hub. That modem connector also needed some filing and sanding at its rubber enclosure to clear the HDMI carrier.

IMG_20260729_125109302-1787079664872-45


Front of Chassis Components

Trackpad Preparation & Magnet Installation

This build includes a sliding trackpad tray that is magnetically held in place. I designed a simple tray to insert the USB trackpad into1. It is a basic square that is tight to the outer dimensions of the device itself and outfitted with some 1mm foam2 seen in the top left image. There is also a single magnet cutout in the side3 that will align with two magnet locations in the chassis (open and closed positions)4. I used 10mm magnets set with Ultra Gel. The bottom right image is the final setup. You'll notice a "gutter" space5 for the trackpad cable to sit in and I held the cable in place with a cutout in the chassis print and wrapped it in silicone tape6 for some added friction hold. The gutter itself was going to get a cover (notice the two standoffs) but it fell to the wayside. Yes, I am a lefty.

IMG_20260729_130941338 IMG_20260729_130214427
IMG_20260729_130150402 IMG_20260729_131456374

SSD Mounting & Front Cable Lock Part

Next I got the SSD mounted to the standoffs with 4x M2.5-6 nylon screws1. In the first image, I'm showing the front cable lock part2. This is was an attempt to keep the front panel wires somewhat organized. It is a simple sliding bracket mounted with an M3-6 screw and to the chassis standoff in that location. It has a small layer of 1mm foam on the inside to keep the cables tight. I went ahead and wired up the SSD with the USB 3.0 to SATA cable3. You might also notice a cable tie-down bracket below the modem4. This was a last minute haphazard add that was never tested, it works, but it is very tight.

IMG_20260729_132200775 IMG_20260729_133800412

The Front Panel Assembly & Install

Below are all of the components that make up the front panel.

IMG_20260730_102931270

  1. Front cover
  2. Front cover fascia piece
  3. OLED holder and lined with 1mm foam with 2x M3-15 nylon screws and nuts (screws were cut to length)
  4. USB 2.0 front I/O holder w/ 2x M3-6 female standoffs mounted with 2x M3-10 screws and nuts
  5. USB 2.0 front I/O cover fastened w/ 2x M3-6 screws
  6. Amp carrier lined with 1mm foam
  7. Amp carrier cover held in place with 2x M3-15 nylon screws, nuts, and 1mm spacers
  8. Speakers (M3-10 stainless black screws and nuts to mount)
  9. Speaker grills (M3-10 stainless black screws and nuts to mount)
  10. OLED display
  11. Momentary switch
  12. USB 2.0 hub (this was actually cut in half to make it a 2-port hub in lieu of 4-port)
  13. Amplifier

The bottom left image is the rear of the front panel all wired up and bolted together. You'll notice the edge of the USB I/O holder was filed down1, this was due to a clearance issue. The OLED is actually mounted upside down due to pin clearance problems, I rotated the display output in code. The brown fascia piece is functional to pull the speakers closer to the user, they act as a pseudo spacer, once again clearance issues within the chassis. The brown fascia piece is printed in PETG and was coated with Rustoleum 2x Matte Clear for aesthetic purposes. I applied this matte spray to all of these dark brown pieces in this build to tone-down the shininess of the the PETG prints.

IMG_20260730_104934961 IMG_20260730_104913275

The below left image shows the front panel after it is all wired and ready to be installed. The right image shows this panel in place. There are a few things I'd like to address in these images. The keyboard is dropped in place and wired to the internal USB hub. It sits in a small cutout in the chassis, and is later held in place by the installation of the front cover (not shown in this step). You'll also notice two cables coming out of the top of the chassis and draped over the backplane2. These are the power and HDMI cables for the display. The HDMI cables are twist-tied to some holes to the right of the left hinge location3. It was my intention to design a bracket to fit into these holes, but these ties felt fine for this v1.0 build. After some color design deliberations, I decided to go with a green color for this part. The front cover will sit loose while I put some other components in place.

IMG_20260803_103333778 IMG_20260803_103445888

Finally, I screwed the top two holes of the front panel into the chassis1. This was an incredibly tight and awkward portion of the build. I used 4x M3-10 black stainless screws and nuts to fix the front panel to the chassis. I needed to use needle-nose pliers to hold the nuts into place while screwing this in as the side by the Pi was exceptionally tight. I don't have a great picture of the Pi side screws from the rear, but the right image shows just how tight of a game I was playing and why I needed to file off edges2 of the USB front I/O holder. Any lower it hits the modem and any higher it hits the Pi's USB ports.

IMG_20260803_104018990 IMG_20260803_104013469

Keyboard Locks

The keyboard locking mechanisms are simply friction holds against the edge of the keyboards chassis. They also press down slightly on the keyboard. I lined these two components in 2mm foam on the inside and 1mm foam on the top side. They are held in place with 2x M3-6 screws.

IMG_20260803_104122592 IMG_20260803_104315066

Setting the Hinges

The entire hinge assembly is made of multiple components. This section covers just getting the hinges attached to the chassis standoffs. You will notice 4x standoffs in the chassis at each hinge location in some earlier photos. Early designs had a four hole adapter. I decided on a two hole adapter after some testing. These torque hinges sit snug into a cutout in the adapter and are then screwed into the chassis standoffs with 2x M3-10 stainless screws.

IMG_20260803_104400611 IMG_20260803_104536419

Front Panel Final Screws & Hinge Covers

These left and right parts do couple of things. They cover the hinge adapter and hold the lower portion of the front panel to the chassis. They are held in place with M3-10 black stainless screws.

IMG_20260803_104651679 IMG_20260803_104814406

Finalizing the Hinge Assembly

Below on the top left are the final pieces of the hinge assembly. It consists of two sandwiched parts that slide over the top part of the hinge1 and get screwed in place (I referenced these as "hinge extenders" when I was prototyping). They are held in place with 2x M3-10 stainless screws and nuts. Then there is a rear cover2 and front cover3 that encapsulate them to marry up to the chassis when closed. The rear cover has a single M2.5-6 nylon standoff to hold everything in place. These cover components were a late add to this project, but the hinge extenders looked odd without some form of cover.

IMG_20260803_110632839 IMG_20260806_145614731
IMG_20260806_145653415 IMG_20260803_115650120

Screen & Screen Cover

The screen assembly is just two parts. The screen carrier (top left) which attaches to the hinge extenders and a cover (top right) to go around the screen. There's a large rectangular cutout on the left of the cover1 to allow for access the OSD and screen poweroff buttons. The carrier uses M3-6 female standoffs set throughout, and M3-6 screws to attach the cover as well as the Waveshare screen itself to the carrier. You'll also notice oblong shapes in the hinge extenders2, these allow me to make micro adjustments to marry the screen carrier to the chassis cleaner. Bottom left picture is a detail of the 8mm magnet to hold the lid closed. I meant to set these earlier and forgot during the build, which burnt me pretty bad and as a result I needed to pause around this time and make adjustments. During prototyping I did not want to waste magnets so I used poster putty as a temporary hold, and I didn't realize that that substance acted as a natural spacer. The chassis magnets are only slightly too deep, so I re-printed the screen with the magnets surpassing the surface ~1mm. The bottom right image was the final configuration. The screen carrier was attached using 4x M6-10 stainless screws.

IMG_20260803_115719602 IMG_20260803_115723243
IMG_20260803_120344320 IMG_20260806_150148031

Installing the Display

The display connects to the USB Type-A to Micro-USB power only cable coming off the hub as well as the Micro HDMI to HDMI cable coming out of our HDMI carrier. These cables slide it through the front cover channel, come up through the cable slot in the screen carrier, and loop it into the back of the screen carrier, shown on the top left image. Then it is just a matter of plugging the cables in, screwing the screen in, and screwing the cover down all with M3-6 screws.

IMG_20260806_150338516 IMG_20260806_150802295
IMG_20260806_151127721 IMG_20260806_151138073

Top Cover & Some Final Touches

The top cover is made up of five pieces. The cover itself1, a blank green color backing for the name/logo2, the lower switch mechanism3, and the switch top itself4. Then there is the USB-C extender not shown below to bring the charging port closer to the top elevation of this back top cover, a bit more on that piece later.

IMG_20260806_131851158

Logo & Color Backing

I started out by using Ultra Gel to glue the color backing in place, shown below:

IMG_20260806_132014104 IMG_20260806_132134047
IMG_20260806_132242060 IMG_20260806_132250641

Upper & Lower Switch Assembly

Then on to the switch assembly. I applied some grease to the channel that this part slides into (it was totally unnecessary in the final build, the print decided to be a bit looser than my prototypes). The lower part of the switch has an M2.5-6 brass female standoff set in place and the top part of the switch gets single M2.5-6 stainless screw to fasten it down. I have included a cutaway prototype picture on the bottom right so you can see whats actually happening here; the feet of the lower portion are simply sliding the UPS main switch. I spent a lot of time to get this correct. Over-actuation risks damaging the UPS switch. Under-actuation risks the switch not being seated fully in an open/closed position.

IMG_20260806_132455984 IMG_20260806_132518899
IMG_20260806_132647921 IMG_20260804_150102749

USB-C Charging Extender & Top Cover Installation

This is the final piece. I have mixed feelings about this component. It is a USB-C extender, which was great because it means the UPS port wont get any wear and tear from use cycles and it brings the charging port closer to the top plane of the back cover for accessibility. But, it is a rigid attachment to one body (top cover) independent of what its attaching to (the Pi and backplane) which can technically slide on a plane independent of the top cover. There is a condition where , if the backplane moves and the top cover does not, that this configuration could damage the UPS charging port on the device itself due to it's rigid nature. A cable connection for relief or some form of expansion fitting would be ideal, but my original idea for this did not pan out. So when I designed this USB-C extender, I over-sized the top mounting holes so it can slide a bit. I seated 2x M2.5-6 brass standoffs deeper into the part itself which exposes a considerable distance of the nylon screws and they can have some flexibility, and I left the screws that fastened the part down fairly loose. The assembly is essentially lightly held in place. Additionally, I made sure there was a small gap between the bottom of the top cover plane and the top of the USB-C extension port so there was not constant pressure internally on the UPS port. All that said, if everything is screwed into place and nothing can independently shift, we are good. Below are two images of the assembly. The USB-C extender was permanently glued into place and the standoffs were set.

IMG_20260806_133915311 IMG_20260806_134647332

As stated before, I sanded the top of this down to confirm a small gap was present between the underside of the top cover and the top of the USB port and we put it into place.

IMG_20260806_154551781 IMG_20260806_151306890

Final Pieces

My last step was placing the top cover on and screwing everything down using with 9x M3-10 black stainless screws. I believe I used 2x M2.5-10 nylon for the USB-C extender with 1mm spacers.

IMG_20260806_151357813 IMG_20260806_151909552

The finishing touch was some rubber feet to avoid slippage and scratching the bottom of the build.

IMG_20260806_152113048 IMG_20260806_152033032
IMG_20260806_152305627 IMG_20260806_152311148