Worklog Wundervolt - a programmable, undervoltable, Wii PSU

loopj

.
.
Joined
Feb 24, 2020
Messages
60
Likes
244
Location
Bay Area, CA
Wundervolt (/vʊndɐvo:lt/)

While waiting for my Short Stack boards to arrive, I’ve been working on the idea of building a teeny tiny power supply board with software programmable voltage rails to allow for software Wii undervolting.

Thus wundervolt (pronounced /vʊndɐvo:lt/) was born.

Screenshot 2024-03-07 at 9.08.33 PM.png


Before I dive into it, wanted to first give a big shout out to Wesk for pioneering and evangelizing Wii undervolting!

Features

This project is initially focused on non-portable builds and “test bench” builds, with the following deliverables:
  • Wundervolt PCB
  • Wundervolt firmware
  • Proof of concept Wii homebrew for undervolting directly from the Wii
  • Maybe: “bench testing” carrier board
For the main PCB, I’m targeting the following features:
  • 4-channel switching regulator with I2C programmable voltages
  • Onboard microcontroller configures default "safe" voltages via firmware
  • Voltages can be adjusted on the fly, and optionally persisted as defaults to EEPROM
  • Supports configuration via external I2C host (eg. Wii), with built-in logic shifting
  • Built-in power button, and support for external power button
  • Clear any persisted settings by pressing and holding power button
  • Mounting holes and castellated edges
  • As small as possible

Part selection

Voltage regulator

There are some really cool multi-output, programmable DC-DC converter ICs on the market, I made a quick summary of some candidates here.

For my first revision, I decided to go with the LP8758-E0 from TI because of how absolutely tiny it is (2.9 x 2.15mm!). This has 4 buck regulators, with up to 4A output per rail, and each rail has programmable voltages so it is ideal for my requirements. The main downside of this chip is that is is expensive at $5.83 per unit!

This chip also has some really cool features that will be helpful for undervolt testing, mainly a load current monitor feature that allows you to measure and read the load on each voltage rail over I2C.

Microcontroller

The regulator chip does not have any non-volatile memory, so we’ll need an external microcontroller to handle things like configuring voltages, persisting voltages, and setting current limits. Having an on-board MCU allows us to add additional features like button press handling (and debouncing) for turning on and off the rails, long-press detection to clear the internal memory and enter “failsafe” mode. It also allows for other future features like powering on when we detect the “power pulse” from the Wii bluetooth module, or controlling addressable LEDs.

I’m choosing the ATTiny1616 MCU for a few reasons
  • Very small QFN form factor
  • Cheap
  • Onboard hardware I2C
  • Supported by PlatformIO
  • Flashable with only 3 pins (GND, power, UPDI)

I2C level shifter

If we want to talk to external “host” devices, we need to be able to speak their language. Luckily the Wii has an I2C bus which we can access through homebrew. The Wii I2C bus operates at 1.8V, but I’m planning on operating the regulator IC and MCU at 5V so we need a way to adjust voltages for I2C.

The TXS0102 chip from TI is a cheap, simple level shifter IC for open-drain applications (like I2C) which is also available in a tiny QFN package.

The board

I’ve managed to fit all these components on a 20x20mm PCB. This is my first 4-layer PCB design, and my first time working with BGA chips. Huge thank you to Y2K, CrazyGadget, and YvetalGriffin for their feedback during the past few days as I worked on the board design.

Since this board has a 0.4mm pitch BGA chip on it, it requires precision vias (0.2mm hole, 0.3mm pad) to be placed on the BGA pads, and therefore to use a process called VIPPO (via in pad, plated over). The precision drills and plated via process adds a decent amount of cost to the project, especially on prototype runs.

If I’m going to be paying extra for plated vias, you can be damned sure I’m using them everywhere!

Here’s a nude of the top copper layer:
Screenshot 2024-03-07 at 9.11.34 PM.png


Next steps

I’ve sent the board to JLCPCB to be fabricated, and in the meantime it’s time to write some firmware!
 
Last edited:

loopj

.
.
Joined
Feb 24, 2020
Messages
60
Likes
244
Location
Bay Area, CA
Quick update, the boards arrived at the end of January and look great!

IMG_1046.jpg


I'm going to try to assemble one soon, but I forgot to order the inductors in my last DigiKey order - so have to wait for those.

In the mean time I've written some basic firmware and an I2C driver for the LP8758. Still lots to do!
 

loopj

.
.
Joined
Feb 24, 2020
Messages
60
Likes
244
Location
Bay Area, CA
TL;DR - assembled a wundervolt today, but a bug in the design means I need to make another revision.

---

Update time! My inductors arrived from DigiKey this week, and so I had everything I needed to assemble a board.

It was first time assembling a board with BGA components and it turned out to be much easier than I expected!

Managed to get a good paste application on my first try (that's never happened before!):
Screenshot_2024-04-25_at_9.53.57_AM.png


Component placement was fairly straightforward, apart from the TXS0102DXE logic translator, which seemingly has no pin-1 indicator on the top of the package.
Screenshot 2024-04-25 at 10.49.53 AM.png


Everything seemed to reflow just fine, including the BGA!
Screenshot_2024-04-25_at_11.17.21_AM.png


I knew there was at least one bodge required, I had the SDA/SCL pins on the MCU swapped in my schematic so I had to take care of that:
Screenshot 2024-04-25 at 12.47.05 PM.png


After powering it up, I was able to flash my firmware to the ATtiny1616 successfully, but... none of the regulators were outputting anything.

It turns out I had left one of the pins on the LP8758, the NRST pin, floating that I shouldn't have. This pin is internally pulled down, and must be set high to pull the LP8758 out of reset mode. Since this is an unconnected pin in the middle of the BGA it isn't possible for me to bodge this - so I'll need a new board revision.

While I wait for that, I am however able to use this board to test the firmware - especially the parts of the code that will talk to the Wii homebrew.
 
Joined
Sep 27, 2016
Messages
426
Likes
933
That paste job looks fantastic! I've never done BGA that way, was always nervous of shorts lol. I've always reballed the BGA and lightly tinned the BGA pads on the board itself, quick reflow and voilà!

What kind of vias are those?
 

StonedEdge

a.k.a. ClonedEdge
.
.
Joined
Nov 16, 2018
Messages
373
Likes
1,513
Location
Japan, Tokyo
Portables
2
Top