WUBBSY / RGBDeck

RGB Lighting for the Valve Steam Deck
MIT License
14 stars 0 forks source link

RGBDeck

Warning!

We have encountered a problem with the power delivery of the internal USB-Interface of the Steam Deck, which can (and has) caused a catastrophic failure of a power IC! This causes the controller of the Steam Deck to no longer function!
CalcProgrammer1's Post

We highly recommend to not do this mod at the moment until we find a workaround!

RGB Lighting for the Valve Steam Deck

This Project uses a small microcontroller (Adafruit Trinket M0) and some WS2812B LEDs (aka. NeoPixels or ARGB) to add RGB lighting to the back of the Steam Deck. Best effect when using a translucent back.

Front

Huge thanks to Adam Honse for finding the I2C interface of the Steam Deck and implementing it into OpenRGB.

You can find the I2C sketch for the Adafruit Trinket M0 on his Github.
You can then use the Flatpack version from the Discover Store on the Steam Deck to control your LEDs.
You'll have to enable I2C on the Steam Deck first though.
I'll update this guide in the next days to include the setup for OpenRGB. I'll also updating some images and graphics to include easier soldering points since there seems to be SD revisions without the initially used probing points.

Disclaimer:

This Project includes modification of the Steam Deck hardware and soldering of thin wires and small pads. Please be careful as to not damage your hardware.
This Mod is finicky and should only be done if you're competent in soldering and working with electronics.
The Steam Deck contains a Lithium-Polymer battery cell which can be very dangerous if handled improbable.
I don't take any responsibility or liability for any damages to you, your hardware or anything else.
This mod may also interfere with your WiFi or Bluetooth. I haven't encountered any problems so far, but your mileage may vary.

Table of contents

What is needed

Preparing your microcontroller

For this example I'm using an Adafruit Trinket M0 which is a very small and low cost microcontroller.
I'm also using CircuitPython for the program for ease of use. (I might add a Arduino example in the future)

The Adafruit Trinket M0 comes preinstalled with CircuitPython but it is recommended to update it. Adafruit has a simple guide on how to update/install CircuitPython.
Additionally you'll need few libraries which can be downloaded from circuitpython.org (adafruit-circuitpython-bundle-7.x-mpy...)
After downloading the zip find these files inside the lib folder:

Copy these Files onto your micro into the lib folder.
Then Download the code.py and place it in the root directory of your micro. That's it.
(If you use more or less than 15 LEDs you should change the LED count in the code at line 12)

Connecting the Microcontroller to your Steam Deck

We fist must remove the back cover of the Steam Deck. A handy guide can be found on iFixit
It is then advisable to disconnect the battery to minimize the risk of damage to the components. (Small guide follow till step 7)

You now must solder 2 small leads to the left controller board. It's the one on the right with the large "L" and the buttons for the back buttons.
The negative connection is relatively simple since we can solder it onto the left pad of the lower button which is connected to the ground plane.
The positive connection is tricky. There is a small test pad a bit left and up from the lower button. This test pad is connected to the 5V rail of the controller. Carefully solder a thin wire to the pad.
After that you should fixate them with tape or glue them down.

BoardView

Now just solder the two cables onto your micro and it should be powered by the Steam Deck.
TrinketTop Din is where you connect your LEDs.
The large white connector is just for testing purposes and is not needed.

Adding the addressable LEDs

NeoPixels or ARGB LEDs contain a WS2812B chip which enables them to be individually controlled.
These LEDs have 4 contacts +5V, Din, Dout, GND.
+5V and GND are your power connections and need to be connected to the Gnd and Bat or 5V connections on your micro.
Din gets connected to Pin 4 or D4 on your micro.
Dout is the output of the last LED in array and you can connect more LEDs with Din onto it.

After connecting all your LEDs, you mount them in the back half of your Steam Deck.
You can follow my setup or experiment with your own placement.
BackView

Be careful when attaching the LEDs to the Steam Deck to not short out any connections of the pcbs or the LEDs!

After that put back the case, careful to use the correct screws and you're done!