Skip to content

Commit 5c53a1b

Browse files
committed
Initial commit
0 parents  commit 5c53a1b

104 files changed

Lines changed: 375026 additions & 0 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.gitignore

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
# For PCBs designed using KiCad: https://www.kicad.org/
2+
# Format documentation: https://kicad.org/help/file-formats/
3+
4+
# Temporary files
5+
*.000
6+
*.bak
7+
*.bck
8+
*.kicad_pcb-bak
9+
*.kicad_sch-bak
10+
*-backups
11+
*.kicad_prl
12+
*.sch-bak
13+
*~
14+
_autosave-*
15+
*.tmp
16+
*-save.pro
17+
*-save.kicad_pcb
18+
fp-info-cache
19+
20+
# Netlist files (exported from Eeschema)
21+
*.net
22+
23+
# Autorouter files (exported from Pcbnew)
24+
*.dsn
25+
*.ses
26+
27+
# Exported BOM files
28+
*.xml
29+
*.csv
30+
31+
# Generated files
32+
production/

LICENSE

Lines changed: 98 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,98 @@
1+
Solderpad Hardware License v2.1
2+
3+
This license operates as a wraparound license to the Apache License
4+
Version 2.0 (the “Apache License”) and incorporates the terms and
5+
conditions of the Apache License(which can be found here:
6+
http://apache.org/licenses/LICENSE-2.0), with the following additions
7+
and modifications. It must be read in conjunction with the Apache
8+
License. Section 1 below modifies definitions and terminology in the
9+
Apache License and Section 2 below replaces Section 2 of the Apache
10+
License. The Appendix replaces the Appendix in the Apache License. You
11+
may, at your option, choose to treat any Work released under this
12+
license as released under the Apache License (thus ignoring all
13+
sections written below entirely).
14+
15+
1. Terminology in the Apache License is supplemented or modified as
16+
follows:
17+
18+
“Authorship”: any reference to ‘authorship’ shall be taken to
19+
read “authorship or design”.
20+
21+
“Copyright owner”: any reference to ‘copyright owner’ shall be taken
22+
to read “Rights owner”.
23+
24+
“Copyright statement”: the reference to ‘copyright statement’ shall be
25+
taken to read ‘copyright or other statement pertaining to Rights’.
26+
27+
The following new definition shall be added to the Definitions section
28+
of the Apache License:
29+
30+
“Rights” means copyright and any similar right including design right
31+
(whether registered or unregistered), rights in semiconductor
32+
topographies (mask works) and database rights (but excluding Patents
33+
and Trademarks).
34+
35+
The following definitions shall replace the corresponding definitions
36+
in the Apache License:
37+
38+
“License” shall mean this Solderpad Hardware License version 2.1,
39+
being the terms and conditions for use, manufacture, instantiation,
40+
adaptation, reproduction, and distribution as defined by Sections 1
41+
through 9 of this document.
42+
43+
“Licensor” shall mean the owner of the Rights or entity authorized by
44+
the owner of the Rights that is granting the License.
45+
46+
“Derivative Works” shall mean any work, whether in Source or Object
47+
form, that is based on (or derived from) the Work and for which the
48+
editorial revisions, annotations, elaborations, or other
49+
modifications represent, as a whole, an original work of authorship
50+
or design. For the purposes of this License, Derivative Works shall
51+
not include works that remain reversibly separable from, or merely
52+
link (or bind by name) or physically connect to or interoperate with
53+
the Work and Derivative Works thereof.
54+
55+
“Object” form shall mean any form resulting from mechanical
56+
transformation or translation of a Source form or the application of
57+
a Source form to physical material, including but not limited to
58+
compiled object code, generated documentation, the instantiation of
59+
a hardware design or physical object or material and conversions to
60+
other media types, including intermediate forms such as bytecodes,
61+
FPGA bitstreams, moulds, artwork and semiconductor topographies
62+
(mask works).
63+
64+
“Source” form shall mean the preferred form for making modifications,
65+
including but not limited to source code, net lists, board layouts,
66+
CAD files, documentation source, and configuration files.
67+
68+
“Work” shall mean the work of authorship or design, whether in Source
69+
or Object form, made available under the License, as indicated by a
70+
notice relating to Rights that is included in or attached to the
71+
work (an example is provided in the Appendix below).
72+
73+
2. Grant of License. Subject to the terms and conditions of this
74+
License, each Contributor hereby grants to You a perpetual,
75+
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
76+
license under the Rights to reproduce, prepare Derivative Works of,
77+
make, adapt, repair, publicly display, publicly perform, sublicense,
78+
and distribute the Work and such Derivative Works in Source or Object
79+
form and do anything in relation to the Work as if the Rights did not
80+
exist.
81+
82+
APPENDIX
83+
84+
Copyright 2024 James Smith SPDX-License-Identifier: Apache-2.0
85+
WITH SHL-2.1
86+
87+
Licensed under the Solderpad Hardware License v 2.1
88+
(the “License”); you may not use this file except in compliance with
89+
the License, or, at your option, the Apache License version 2.0. You
90+
may obtain a copy of the License at
91+
92+
https://solderpad.org/licenses/SHL-2.1/
93+
94+
Unless required by applicable law or agreed to in writing, any work
95+
distributed under the License is distributed on an “AS IS” BASIS,
96+
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
97+
implied. See the License for the specific language governing
98+
permissions and limitations under the License.

README.md

Lines changed: 154 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,154 @@
1+
2+
<div align="center">
3+
<h1>
4+
<img src="images/logo-black.svg#gh-light-mode-only" alt="Short Stack" />
5+
<img src="images/logo-white.svg#gh-dark-mode-only" alt="Short Stack" />
6+
</h1>
7+
8+
<h4>World's Smallest Nintendo Wii, using a trimmed motherboard and custom stacked PCBs</h4>
9+
10+
<p>
11+
<a href="#features">Features</a> &middot;
12+
<a href="#size--scale">Size & Scale</a> &middot;
13+
<a href="#components">Components</a> &middot;
14+
<a href="#build-guide">Build Guide</a>
15+
</p>
16+
</div>
17+
18+
![Short Stack Render](images/render-blue.jpg)
19+
20+
## Features
21+
22+
- World's smallest "to scale" Wii console
23+
- Powered by USB-C
24+
- HDMI for lossless digital audio and video (powered by [GCVideo](https://github.com/ikorb/gcvideo))
25+
- Bluetooth for Wii remotes and accessories
26+
- MicroSD card stores games and saves, instead of disc drive & memory cards
27+
- 4 GameCube controller ports
28+
- Power, reset, and sync buttons
29+
- Power indicator LED and iconic blue glowing disc slot
30+
- Soft shutdown, power on/off via Wiimote
31+
32+
## Size & Scale
33+
34+
This is a **1:2.38 scale** model of an original Nintendo Wii console, but since that is hard to visualize here are some other stats:
35+
36+
- Same size as a typical deck of playing cards
37+
- **7.4% the volume** of an original Wii console
38+
- You could fit **13.5** of these inside an original Wii
39+
40+
![Size comparison](images/deck-of-cards.jpg)
41+
42+
I'm pretty sure this sets the record for the smallest functional scale-model Wii console, but let me know if I'm wrong!
43+
44+
### Could we go smaller?
45+
46+
Yes! It is definitely possible to go smaller than this. My [version of the Omega trim](images/trim.png) keeps all four main mounting holes, which makes it around 7mm wider than a classic Omega trim. Additionally [Wesk](https://twitter.com/Weskmods) has managed to get a Wii motherboard down to 52x52mm on his final destination trim, which is a a full 10mm narrower than my trim. I estimate you could reduce the volume by a further 25-30% without losing any functionality, but it would be an incredibly tight fit and tricky to assemble.
47+
48+
## Components
49+
50+
As the name implies, *Short Stack* is built from a stack of custom PCBs, and a custom heatsink, that are all designed to fit together in a compact and modular way.
51+
52+
### A modular motherboard
53+
54+
Making a tiny build like this is made possible by trimming the Wii motherboard down to the bare essentials. The result is a board which is just *62x62mm*, but still contains the CPU, GPU, RAM and flash memory.
55+
56+
<img src="images/motherboard-front.jpg" width="45%" /> <img src="images/motherboard-back.jpg" width="45%" />
57+
58+
Since we removed the original power circuitry and trimmed off the USB, Bluetooth, and GameCube connectors, we need to provide power and data to the board another way. I designed a couple of boards which solder directly to the front of a trimmed Wii motherboard to provide power and data, which help avoid a tangled mess of wires.
59+
60+
The [Wii Power Strip](https://github.com/loopj/wii-power-strip) supplies power to the Wii motherboards using a Molex Pico-Lock connector, and additionally has footprints to help relocate of a couple of capacitors which are typically removed when trimming a Wii.
61+
62+
[Periphlex](https://github.com/loopj/periphlex) is a flex PCB which breaks out the Bluetooth, USB and GameCube controller data lines, as well as the power, shutdown, and reset GPIOs. These are then made available via a 14-pin FFC connector. This approach replaces 11 magnet wires with a single, removable ribbon cable.
63+
64+
![Periphlex](images/periphlex-render.png)
65+
66+
On the back of the motherboard, I'm using two open-source boards designed by the very talented [YveltalGriffin](https://github.com/mackieks). [fujiflex](https://github.com/mackieks/fujiflex) provides digital A/V output using GCVideo, and [nandFlex](https://github.com/mackieks/nandFlex) relocates the Wii's NAND memory chip, to enable the tight trim.
67+
68+
### Custom PCBs
69+
70+
In addition to the modular boards on the motherboard, I designed two PCBs specific to Short Stack which provide the rest of the functionality for the console.
71+
72+
The *main board* PCB hosts the power regulators, USB to microSD logic, HDMI connector, GameCube ports, and a microcontroller for power management. A 14-pin ribbon cable connects this board to the Wii motherboard via *Periphlex*, and a power cable delivers power to the *Power Strip*.
73+
74+
![Main Board](images/main-board.jpg)
75+
76+
The *front panel* PCB hosts the power, reset, and sync buttons, as well as the power LED and disc slot LEDs. This board connects to the main board via a short 8-pin ribbon cable.
77+
78+
![Front Panel Board](images/front-panel.jpg)
79+
80+
### Cooling
81+
82+
The final part of the "stack" is a custom heatsink which is designed to be as low profile as possible, while still providing adequate cooling for the Wii's CPU and GPU. The heatsink is designed to be machined from aluminum or copper, and incorporates mounting holes which align with those on the Wii motherboard.
83+
84+
![Heatsink](images/heatsink.jpg)
85+
86+
I managed to find a tiny 5V blower fan ([Pelonis AGB208N](https://catalog.pelonistechnologies.com/item/air-g-series-micro-fans-and-micro-blowers/micro-fans-and-micro-blowers/agb208n)) which measures just 20x20x8mm and somehow puts out 0.84 CFM of air. This blows air through the heasink fins, out the side of the case.
87+
88+
### Case
89+
90+
The stack is housed in a custom 3D printed case, secured with four M2.5 screws and spacers. The rest of case is assembled using self-tapping M1.2 screws. The screw locations and fan vents are positioned to match the original Wii case as closely as possible, to minimize visible screws.
91+
92+
You can access files on the SD card by connecting the console to a computer via USB, but I also included an access panel on the front of the case where the original Wii SD card slot is found. This panel is held in place by magnets and can be removed to access the SD card without opening the case. Shout out to Wesk for the magnet idea!
93+
94+
To keep the clean aesthetic of the original Wii I wanted to hide the GameCube controller ports behind a panel. I always hated the hinged design of the original, and it is quite difficult to replicate at this scale, so I redesigned this panel to be a sliding panel.
95+
96+
![GameCube Ports](images/gamecube-ports.png)
97+
98+
The Wii's iconic disc slot lights are recreated using a 1.5mm thick custom cut acrylic light diffuser, which is illuminated by two side-mounted addressable LEDs on the front panel board. The power, reset, and sync buttons are all also 3D printed, and the power button hosts a tiny light pipe to allow the power LED to shine through.
99+
100+
![Front assembly](images/front-assembly.png)
101+
102+
I FDM printed the case on a Voron 2.4 in ABS using a 0.4mm nozzle at 0.1mm layer height, but it should print fine in PLA or PETG on a well-tuned printer. At this scale, dimensional accuracy is important. In theory it should be possible to print this on an SLA printer, but I haven't tried it.
103+
104+
## Build Guide
105+
106+
> [!CAUTION]
107+
> This is not a beginner project! This build requires performing a challenging motherboard trim, fine pitch soldering, and PCB assembly. If you are not comfortable with these tasks, I would recommend starting with a simpler project and working your way up - check out the [BitBuilt forums](https://bitbuilt.net) for some awesome project worklogs.
108+
109+
### What you'll need
110+
111+
- 4-layer Wii motherboard
112+
- [nandFlex](https://github.com/mackieks/nandFlex) board (or [4Layer Technologies RVL-NAND](https://4layertech.com/products/rvl-nand-flex-board-pack-of-2))
113+
- Assembled [fujiflex](https://github.com/mackieks/fujiflex) (or [ElectronAVE](https://electron-shepherd.com/products/electronave-kit))
114+
- Assembled [Wii Power Strip](https://github.com/loopj/wii-power-strip/tree/r1) - **must be revision 1!**
115+
- Assembled [Periphlex](https://github.com/loopj/periphlex)
116+
- [Short Stack main board](main-board/KiCad) - 1.2mm thickness, stencil recommended
117+
- [Short Stack front panel](front-panel/KiCad) - 0.8mm thickness, black soldermask, stencil recommended
118+
- [Heatsink](case/heatsink.step) - machined from aluminum or copper
119+
- [Light diffuser](case/disc-light-diffuser.dxf) - cut from 1.5mm thick acrylic
120+
- The components and hardware from the [bill of materials](full-bom.xlsx)
121+
122+
### Assembly
123+
124+
![Case Exploded](images/case-assembly.gif)
125+
126+
- Assemble main board and front panel PCBs
127+
- I recommend using a solder stencil and a hot plate or reflow oven
128+
- If using a hot plate, hand solder the headphone connectors after reflowing the rest of the components
129+
- Secure two 3 x 1mm magnets inside the holes on the front panel board using a dab of CA glue
130+
- Flash the [main board firmware](main-board/firmware)
131+
- Prepare and trim the Wii motherboard
132+
- Relocate the NAND, test it still boots
133+
- Perform a wireless U10 relocation, test it still boots - you may wish to wire a magnet wire to the [`SHUTDOWN` via](https://bitbuilt.net/forums/index.php?threads/soft-shutdown-power-on-via-bluetooth.6239/) first
134+
- Install fujiflex, and test digital A/V output works
135+
- Trim the motherboard (see [trim dimensions](images/trim.png))
136+
- Assemble and install *Power Strip* ([see instructions](https://github.com/loopj/wii-power-strip/tree/r1#installation))
137+
- Assemble and install *Periphlex* ([see instructions](https://github.com/loopj/periphlex#installation))
138+
- Connect the boards
139+
- Connect the main board to the motherboard via a 14-pin FFC cable to *Periphlex*
140+
- Connect the main board to the motherboard via a 5-pin Molex Pico-Lock cable to *Power Strip*
141+
- Connect the front panel board to the main board via an 8-pin FFC cable
142+
- Connect the fan to the main board
143+
- Apply thermal paste to the CPU and GPU
144+
- Stack the components: heatsink, motherboard, M2.5 x 3mm spacers, main board
145+
- Install the stack to the case bottom using M2.5 x 12mm wafer head screws
146+
- Secure the top of the case to the bottom using four M1.2 x 4mm screws
147+
- Secure the front panel PCB to the front of the case using two M1.2 x 3mm screws
148+
- Secure the front of the case to the bottom of the case using two M1.2 x 4mm screws
149+
- Press-fit two 3 x 1mm magnets into the holes on the sd card cover, make sure they match polarity with the magnets on the front panel PCB
150+
- Slide the side panel into the case
151+
152+
## License
153+
154+
Permissively released under the Solderpad Hardware License v2.1

0 commit comments

Comments
 (0)