Skip to content

Design & Fabrication Process

The Nomad project was initially intended as a 3D printer project first. I acquired an A1 printer some time ago and never really sat down with it to learn about it. I figured what better way than a cyberdeck build. In the end this project became more than just a 3D printing project, but I wanted to highlight some of my experiences with the A1 below as well as my experience with FreeCAD.

The 3D Printer

I used a Bambu Lab A1 3D printer with a textured PEI plate to print this project using primarily PLA. This was my first go at a sizable project with this printer, most of the prints I had done up to this point were downloaded files that others had created or just basic designs by me produced in something like SketchUp. I've had a good experience with this printer overall up to this point, especially with smaller prints. In the end I am still not 100% happy with the final print, some areas are still rough around the edges but I came a long way from the first set of prints.

First Pass Print & Adhesion Problems

After I produced a first pass at an overall chassis body I ran a full chassis print with the baked in PLA + ExtraDraft preset in Bambu's slicer. I ended up with a bed adhesion problem for the part. The results are below:

IMG_20260806_094145106 IMG_20260806_094135640

It was apparent this was going to become something I would need to dial in as the project progressed towards a final product. I experimented with quite a few tweaks to mitigate the uplift:

  • Tested bed temps ranging from 60c to 70c
  • Tested increasing the initial layer bed temps to promote bedder adhesion
  • Tested "Brim Ears" within the slicer itself
  • Added my own brim ranging from 4-6mm around the part at 0.4mm tall
  • Prior to a large print I would clean the PEI plate with dish soap then wipe the plate with isopropyl
  • Tested spraying the bed with a layer of hairspray and letting dry
  • Killed the AC in the house and barricaded my printing area in cardboard to mitigate environmental factors
  • Experimented with sparse infill ranging from 10% to 20%
  • Experimented with a couple different infill patterns, crosshatch and rectilinear

In the end the final print still has a slight uplift/bow to the base itself that you need to squint to see. But it is there. The A1 is a pro-sumer printer, not some manufacturing grade printer but I still feel as if my final print should have had a cleaner outcome. My theory is that I was pushing the limits of the A1 a bit, the chassis is essentially at the 256x256mm bed size limit. I have read that the PEI plates can be upwards of 5c cooler at the bed edge which may have been part of the corner adhesion problem. Another theory is that as the center of the print cools during the printing process it will start to contract inward and pull the edges up, ultimately I think this was a big factor which resulted in me dropping the infill back to default and experimenting with a different infill patterns.

Rough Looking Walls

Another problem I ran into early was craggly looking perimeter walls as opposed to a nice smooth vertical surfaces. You can see below an early print vs my final print.

IMG_20260806_095151524 IMG_20260806_095218639

Not super happy with the result, but I came a long way from the older prototypes. I did a few things here to try to clean this up:

  • Applied new oil/grease to the rails
  • Ran a calibration (through the menus on the device itself)
  • Relocated my printer to the floor to mitigate shaking
  • Reduced print speed/acceleration at walls
  • Ensured the gantry of the printer was printing the walls instead of the bed by making the walls parallel with the X-axis (although I don't think I did this for my final print)

I think speed really played a big factor here. There are actually overall speed presets in the Bambu slicer. Some folks on the forums ran generic tests against all speed presets and just found slower prints = cleaner results. The obvious trade-off is time to print. Some of my early chassis prints were as low as six to seven hours to complete. The final print wound up being roughly 13 hours to finish.

Overhangs & Supports

The A1 handles overhangs fairly well. Even a completely flat overhang of ~4mm goes without much issue. The A1 has a cooling fan that can extrude and cool rapidly. Then for large overhangs at an angle I found that 40 degrees off zero mark was the limit and could be hit or miss. When I was designing these parts I needed to keep that in mind and I pushed that in some areas especially for the screen carrier part. On my final print the right side of the carrier is messy. Below is a picture of the current build on the bottom and above it is another print I made after I completed the project and adjusted that angle at the bottom of the carrier by only a couple of degrees:

IMG_20260821_103626760

It still doesn't look great, but it cleaned up that mushy looking edge. And for whatever reason this only happens on the right side, the left side looks fine. So I am still at a loss to get that screen carrier to look better. I think just the overall design of the screen carrier is just bad in conjunction with this 3D printer.


For these angled overhangs, print bed orientation of the part also played a factor. My top cover part has a similar overhang to the above screen carrier. When the overhang is parallel with the X-axis and the gantry does the printing along this axis it would result in some bubbly/blistery looking surfaces. I saw this both on the screen carrier and the top cover. The below is a comparison of two top cover prints and the only difference was bed orientation, all other settings were the same:

IMG_20260806_103018816

I did have luck sanding those bubbles down with a ton of passes with 80 grit up to 600 grit sandpaper. In the end though, after I discovered this orientation quirk, I did not end up sanding this part.


I only needed to add supports to one area which was the cutout for the trackpad carrier. I used the Supports Painting Tool, set it to Fill, and selected the underside of the opening. Then its just a matter of switching Supports -> Type to tree(manual) in the left side settings.

Screenshot_2026-08-21_11-04-33 Screenshot_2026-08-21_11-05-02

Screenshot_2026-08-21_11-12-13

The overall width of my chassis part is 239.50mm. I began to realize that the base width after a print was spot on 239.50mm but the width towards the top of the part was closer 242mm. The part would grow outward in width. So I started making experimental pieces and tested different speeds, orientations, wall widths, also tested this in PETG. Ultimately I couldn't fix this. Below are some of my test pieces:

test_widths

I found some people on the forums saying that this printer will only be accurate to about 1mm over the distance of about 120mm. Therefore the consistent ~2mm differences with a 240mm part was just an expected outcome after I had read that comment. If I had realized this really early I probably would have changed the approach a bit. I ended up having to consistently model 3D "shims" and make little adjustments across this project as I was battling these small inaccuracies with the final prints. For this particular problem, I left it as is and physically squeezed the walls closer together and let my top cover to train these walls into place. I even tested out taking a heat gun to these walls to correct the problems which actually worked on the test prints.

PLA vs PETG

I ended up doing my final print in PLA. For a project like this I read that PETG is a better option. It is more impact resistance and can withstand heat better. I prototyped with PLA the entire time and bought one roll of PETG to test it out. PETG is naturally shiny, which I did not like, this would require painting with matte clear or sourcing a matte finish PETG. PETG is less rigid than PLA and I had some areas where rigidity was important, for example at the front cover and top cover. I did however use PETG in some select areas simply for aesthetics for that dark brown color. A future rendition of this, if I plan to do another version, will likely be a mix of PETG (chassis) and PLA. PETG is also sort of "sticky" in nature, I always had a hell of a time getting it off my print bed which could assist in my earlier adhesion issues. I also used SUNLU brand filament just for consistency despite some of the rolls having tangles in them from the manufacturer.

Final Print Settings

PLA Filament Settings

Using the "Generic PLA" preset I made the following changes

{
    "close_fan_the_first_x_layers": [
        "4"
    ],
    "filament_extruder_variant": [
        "Direct Drive Standard"
    ],
    "filament_settings_id": [
        "Generic PLA @BBL A1 - PLA NOMAD"
    ],
    "from": "User",
    "hot_plate_temp": [
        "60"
    ],
    "inherits": "Generic PLA @BBL A1",
    "name": "Generic PLA @BBL A1 - NOMAD",
    "nozzle_temperature": [
        "215"
    ],
    "textured_plate_temp": [
        "60"
    ],
    "textured_plate_temp_initial_layer": [
        "60"
    ],
    "version": "2.7.0.8"
}

PETG Filament Settings

Using the "Generic PETG" preset I made the following changes

{
    "filament_extruder_variant": [
        "Direct Drive Standard"
    ],
    "filament_settings_id": [
        "Generic PETG @BBL A1 - NOMAD"
    ],
    "from": "User",
    "inherits": "Generic PETG @BBL A1",
    "name": "Generic PETG @BBL A1 - NOMAD",
    "nozzle_temperature": [
        "240"
    ],
    "nozzle_temperature_initial_layer": [
        "250"
    ],
    "version": "2.7.0.8"
}

Printer Settings

Using the "0.28mm Extra Draft" preset as a basis for these settings I went with the following changes

{
    "default_acceleration": [
        "3000"
    ],
    "enable_support": "1",
    "from": "User",
    "inherits": "0.28mm Extra Draft @BBL A1",
    "inner_wall_speed": [
        "100"
    ],
    "name": "0.28mm Extra Draft @BBL A1 - NOMAD",
    "outer_wall_acceleration": [
        "1500"
    ],
    "outer_wall_speed": [
        "100"
    ],
    "print_extruder_id": [
        "1"
    ],
    "print_extruder_variant": [
        "Direct Drive Standard"
    ],
    "print_settings_id": "0.28mm Extra Draft @BBL A1 - NOMAD",
    "sparse_infill_pattern": "crosshatch",
    "support_type": "tree(manual)",
    "version": "2.7.0.8",
    "wall_loops": "4"
}

These consist of mostly speed/acceleration changes as well as wall loops for strength and using a crosshatch infill. I didn't want to go with a finer print because I was prototyping in draft and I know it could have thrown all of my tolerances for a loop and I feared a finer print would exacerbate the rougher areas as well.

FreeCAD & 3D Modeling Experience

This section will be a quick one. For this particular project I liked the idea of making sure I was using open source products. RaspiOS is free, I did all of my work on Pop_OS (Debian Linux), all of my final files are available for download, etc. So I needed to settle on some 3D CAD software to model this device and I settled on FreeCAD.

My biggest issue with FreeCAD is going back into a model tree and deleting something that was previously modeled. There are all of these downstream dependencies that will break as a result, which makes sense, however there is nothing baked in to help me resolve and fix this easily. Early in the project I actually ended up restarting from scratch because my model was essentially bricked. As an example below, if I delete my trackpad cutout, I would expect the opening for the trackpad to fill back in leaving the model intact or giving me a way to clean up down stream dependencies. Instead I get errors I don't understand how to fix and the model is still rendered as if I never deleted it in the first place.

Screenshot_2026-08-21_13-14-31
Screenshot_2026-08-21_13-14-54

FreeCAD will highlight in the tree where issues are. You can drill-down into those items and attempt to fix them, but it usually resulted in breaking another dependency and would cause further issues. So how would I fix this? I would make another solid and just fill the void in and keep moving forward down my tree. This is a band-aid which resulted in some very messy models. If I felt obligated to go way up a tree to delete a previously modeled entity, I would simply not do that and add/delete solids to keep the dependencies intact. Fillet's and chamfer's would intensify this issue, so I usually waited until a model was in a good spot before using those tools. Maybe my modeling approach was not correct. This was my first time using FreeCAD at this capacity. I had experience with Inventor and Solidworks and I felt the modeling process in those were far more intuitive, even Revit will tell you exactly what happened to a host and list out the errors with more detail. After about a week of modeling I almost gave up and switched to Solidworks but it is not free and there is no native Linux build. So I stuck with it and made it work despite the growing pains.

I also attempted to make a fully constrained assembly and I found myself spending more time trying to figure out assembly tools that could have been used designing the device itself. I ended up giving up on the assembly tools and simply sliding pieces into place to eyeball the parts. Below is as far as I got.

Pasted Image

The fact that software like this exists and is free for use kind of blows my mind and I feel like I barely scratched the surface of it's capabilities. For future projects at home I will continue to use this software either way. There are plenty of YouTube videos out there on how to use it and the wiki is decent, albeit slightly behind I found in a few places.

Final Thoughts & Some Process Photos

There are so many factors and variables in 3D printing that can affect your overall result. It was as if I needed to understand the A1 limitations and print limitations before I could really even design parts. I found myself doing "cropped" section prints as a way to test out the part without waiting forever for the part to finish printing but some issues would only poke their head out after full prints were ran and full prints can take over 10 hours. Tweaking a ton of options at once in the slicer and then running a print could result in a better result without me knowing exactly which setting fixed or cleaned up the problem. Definitely requires a bit of patience. I still feel like there is something obvious I am missing for a better final result here, the A1 is not a cheap product and I expected more from it with less tinkering. Below is a fun picture of the graveyard of parts, prototypes, and test prints and there were more after this photo was taken:

IMG_20260723_143145330

Below is another image of where I started and where I ended up

IMG_20260821_125129007

Below is an image of the bench test when I had the majority of components selected, it is interesting now to see how little the backplane design changed over time. It was the first part I designed so I had something to mount the heart of the build to

IMG_20260623_090800910

And below is a mid-build prototype. I was essentially "done" at this point and decided to move the goal post on myself by attempting to make the front cover with more bells and whistles than intended. I didn't originally plan to do an OLED, speakers, front I/O, or serial. It was around this time I had a feeling I would need to learn to solder due to the mess of cables knowing I'd have more clutter once the GPIO pins were populated with my late adds. You can also see the modem configuration was different at this time which went through an exhaustive list of trial, error, and setback until I got one working.

IMG_20260709_184719861