Frostbyte-USB-hub

Public

@osnwy

Download board files

Files for version 1. Pick what you came for.

Share Frostbyte-USB-hub

Check access before sharing the link.

Who can open this board

Anyone can open this board. No sign-in is required.

This link opens the latest version. Copying it does not grant additional access.

Loading…

README

Frostbyte USB Hub

A custom icy-themed USB 2.0 hub with USB-C and USB-A ports, built around the SL2.1A hub controller and packaged in a custom 3D-printed case.

The name "Frostbyte" started as a play on byte and my username, and how winter themed things are pretty cool. No pun intended hehe. The case itself is intentionally simple: a compact rectangular enclosure with rounded edges, designed to look clean on a desk instead of drawing too much attention. The "frost" part is less about making the case look like ice and more about the clean, minimal, cool-toned design direction I wanted for the project, and keeps it compact and easy to print, as well as matches the naming scheme of some of my other projects.

Design Goals

  • Keep the hub compact enough for a desk setup
  • Support both USB-C and USB-A devices
  • Use a more stable external clock source
  • Make the case feel like a finished product, not just a project box
  • Keep the PCB easy to assemble and debug

What is this?

Frostbyte was my introductory project into more complicated PCB design. I wanted to make a USB hub that felt more like a finished desk accessory than a bare PCB, while also reducing cable clutter on my desk. The goal was to make one compact dock where I could plug in my everyday accessories instead of having wires spread everywhere.

Although Frostbyte is based on the Macondo USB hub tutorial, I wanted to make the design my own instead of blindly copying the guide. I changed the port layout, added an external 12 MHz crystal for more stable USB timing, used parallel 0.1 uF and 10 uF decoupling capacitors for cleaner power, and designed a custom 3D-printed case around the PCB.

The hub has one upstream USB-C port, two downstream USB-C ports, and two downstream USB-A ports, all fit into a custom case designed to match the "Frostbyte" theme.

Engineering Choices

Some of the design choices I made were less about adding flashy features and more about making the hub stable and manufacturable. I used an external 12 MHz crystal for the SL2.1A, added local decoupling capacitors near the power rails, and designed the case around actual PCB mounting points instead of making the enclosure as an afterthought. The case, designed to be minimalist, was also designed to be easily printed in two parts without overhangs or needs for supports, as well as easily assebmled with minimal effort.

Challenges

One of the hardest parts was balancing the electronics and the enclosure. The USB ports had to line up with the case openings, the PCB needed enough clearance inside the shell, and the case still had to be printable. I also had to learn more about USB 2.0 routing, especially keeping the differential pairs clean and making sure the crystal and capacitors were placed properly. I also needed to make sure the routing was clean and without mistakes, with each DN and DP pair containing traces close together.

Features:

  • 1 upstream USB-C port
  • 2 downstream USB-C ports
  • 2 downstream USB-A ports
  • SL2.1A USB 2.0 hub controller
  • External 12 MHz crystal for more reliable USB timing
  • Parallel 0.1 uF and 10 uF decoupling capacitors for cleaner power
  • Custom PCB designed for the Macondo project
  • Custom 3D-printed case with a press-fit design
  • PCB mounts into the bottom case using M2 screws

What I Changed From the Tutorial

  • Used a custom port layout with both USB-C and USB-A downstream ports
  • Added an external 12 MHz crystal for the SL2.1A
  • Used parallel 0.1 uF and 10 uF decoupling capacitors on the power rails
  • Designed a custom case instead of leaving the PCB exposed
  • Planned the PCB mounting around M2 screws and a press-fit enclosure

Notes / Limitations

This is a USB 2.0 hub, not a USB 3.0 hub. It is designed for normal peripherals like keyboards, mice, flash drives, and small USB accessories, not high-power charging. DO NOT USE for alternate purposes (I'm not responsible if you blow up your laptop!!).

Future Improvements

If I made another version, I would increase the number of ports, as the two USB-A and USB-C ports may not be enough for future accessories. Additionally, I would add a power delivery port, allowing high-speed charging through the USB hub for other applicances. Lastly, I would add a couple of features such as a rotary encoder or macro keys to the hub in order for it to be more than just a USB hub, which may need the addition of a microcontroller.

What did I learn?

While making Frostbyte, I learned more about USB 2.0 routing, differential pairs, decoupling capacitors, crystal placement, and how much the mechanical design affects the final feel of a hardware project. I also improved my skills in different software/tools such as KiCad schematics, PCBs, as well as CAD softwares such as FreeCad and TinkerCad although the final design was done in OnShape.

Assembly Notes

The PCB mounts into the bottom half of the case using M2 screws. The top and bottom case halves are designed to press-fit together, so the hub can stay closed without glue while still being possible to open for debugging or repairs.

ONSHAPE LINK: OnShape

Quick Specs

SpecDetails
Hub controllerSL2.1A
USB versionUSB 2.0
Upstream ports1x USB-C
Downstream ports2x USB-C, 2x USB-A
Clock sourceExternal 12 MHz crystal
CaseCustom 3D-printed press-fit enclosure
MountingM2 screws

What if I want this?

If you want this exact USB hub, just download the Frostbyte-USB-Hub.zip from the Gerber Files folder, as well as the bom.csv and positions.csv from the JLCPCB files folder. Simply upload the files to JLCPCB's Order Now, and add these parts below to each footprint or use the links in the BOM below:

After that, all you need to do is add it to the cart!

If you'd like to make your own, all the resources I used are linked below! These are some helpful links that can get you started. Alternatively, you can follow my process documented in the journals below!

PCB AND SCHEMATIC

RESOURCES USED:

UseWebsite Link
Macondo TutorialMacondo
Crystal ExampleGithub
Crystal Example 2Oshwlab
Crystal Example 3Github
Data SheetLCSC
Footprint and Symbol DownloadSnapEDA

TOTAL COST

Total cost, including assembly, comes to around $52.94 CAD from JLCPCB, or $37.32 USD. Attempting to order the PCB without assembly is not recommended due to the difficulty of soldering the crystal and capacitors.

BOM for PCB

PARTQTYLINK
USB-C Receptacle3LINK
USB-A Receptacle2LINK
12 MHz Crystal1LINK
SL2.1A1LINK
4.7R Resistor1LINK
5.1K Resistor1LINK
56K Resistor1LINK
10uF Capacitor5LINK
4.7uF Capacitor3LINK
0.1uF Capacitor7LINK

JOURNALS

JOURNAL #1

I created the schematic for my USB hub, using 1 USB-C port for upstream, and 2 USB-C ports and 2 USB-A ports for downstream, loosely following the Macondo tutorial and other sources. On top of the tutorial, I added a 12 mHz crystal, tweaked the capacitor and resistor values, and added capacitors in parallel for reliability. In order to figure out the resistor values, I used the original data sheet example, as well as other examples of USB hubs also using the SL2.1A, as the Macondo tutorial used a similar but different SL2.1S. Although they could be wired the same, I wanted to improve upon the tutorial, rather than blindly following it, requiring me to understand each part of the schematic.

I also assigned the footprints for the schematic, allowing me to move on to the next step of making the PCB. These parts were found through examples online, as well as the most common parts used.

JOURNAL #2

  • July 9th 2026: 3:10 hours LAPSE LINK: https://lapse.hackclub.com/timelapse/BneAj1DRkeYR I started on the creation of the PCB. Despite minor setbacks, such as accidentally assigning the sl2.1a footprint to the capacitor, accidentally using a 4-pin crystal instead of a 2-pin crystal, forgot 0.1uF needs to be close to the pins to make it more effective, putting the usb a ports backwards, needing to put the d+ and d- traces closer and having to move traces away from 12 MHz crystal, majority of the pcb was eventually wired. I had to wire it multiple times to make it both neat and efficient.

I also created a BOM and CPL for the pieces and positions of the PCB. However, the 12 MHz crystals in the JLCPCB stock didn't match the footprint and needs of my crystal. The next step is to change the footprint of the 12 MHz crystal in order to match a crystal in stock at JLCPCB, as soldering one can be extremely challenging and requires specific tools.

JOURNAL #3

LAPSE LINK: https://lapse.hackclub.com/timelapse/NV_NpuBsBBrh

UPDATED PCB:

It's done! Despite using the wrong 12 mHz Crystal three times, I finally managed to get the correct footprint and match a correct part onto the board in JLCPCB. I had to edit the PCB a few times and reupload the Gerber files in order for it to work, but it worked out in the end.

Empty PCB:

BOM parts:

3d Render:

Final Price:

JOURNAL #4

LAPSE LINK: https://lapse.hackclub.com/timelapse/RwhSkVn_50UR

I created the case for my USB hub. This was created in two parts that snap fit together, with M2 screw standoffs for the PCB to attach to. The PCB is sandwiched between the two parts of the case. This case was designed in TinkerCAD.

JOURNAL #5

LAPSE LINK: https://lapse.hackclub.com/timelapse/sdaK7IJP7WCH

After checking the shipping requirements, it turns out that TinkerCad is not allowed because it doesn't provide the required source files. However, the time spent on TinkerCad was not wasted, as it became an extremely useful reference for 3d modelling on OnShape, as I could use the TinkerCad model for the dimensions, which ended up saving a lot of time. I probably should've read the shipping requirements, but I think using Tinkercad first still saved a little time.

Journal #6

I updated the README for GitHub, adding more unique aspects to the design process and build choices, as well as more information specific to the project. I updated the features list, added design goals, added more to the what is this?, added engineering choices and challenges, and listed what I changed from the tutorial. I also added notes and limitations, what I would change if I did it again, as well as the things I learned.
Comments

No comments yet. Be the first to ask about this board.

Ask about this board

Sign in to BoardRepo

New here? Signing in creates your account; there is no separate sign-up.