Post

Oculus2: Inside the Controller...

Controller overview

This time, I decided to dig into Oculus’s controller to see what interesting I could find there. I’m taking a closer look at the Oculus Quest 2 controller. I’ve always been curious about what makes this piece of tech tick, and now, I’m finally digging in to see what’s inside.

Without top cover

Test Pins

The first intriguing discovery can be found inside the battery compartment, concealed beneath the label:

That is very interesting. I’m now starting to take apart the controller to examine these pins. Fortunately, identifying the pins wasn’t difficult as they are clearly labeled: (yeah, in this photo, I already soldered wires to connect an external power source instead of a battery)

A quick examination revealed that the SWD lines are not connected to SoC pins. This leads to another finding: the SWD lines (SWDCLK and SWDIO) are physically disconnected but can be reconnected by soldering 0R resistors R2 and R1.

NamePin
R2SWDCLK
R1SWDIO

Mainboard

Bottom side

I pulled out all internal to do a better examination.

I traced down the TPs:

NamePin
TP1nrf52 P0.12 - Rx
TP2nrf52 P0.11 - Tx
TP3nrf52 SWDIO
TP4nrf52 SWCLK
TP6nrf52 P0.04
TP11VBAT
TP122.7V
TP133.3V
TP16GND

J1 connector is used for connecting the battery pcb.

NamePin
TP15J4 3rd pin
TP14???
TP17GND
TP10nrf52 P0.27
TP20J5 1st pin

J3 and J4 connectors are for LED rings. J5 is for 3D Analog Joystick

J2 is the antenna connector.

Top side

Switch NameButton Name
SW3Y
SW2X
SW1Oculus/Home

Individual ICs

Summary

The controller is built on the nRF52832 SoC, which, while lacking a verify/secure boot feature, includes read-out protection through the APPROTECT feature. Unfortunately, APPROTECT is activated in the firmware. Fortunately, there’s a known vulnerability that allows for the use of fault injection (voltage glitching) to circumvent the APPROTECT and extract the firmware. Nordic addressed this vulnerability in revision 3 (build code Gx0), but luckily, this controller utilizes an earlier version that still contains the vulnerability.

TODO

Dump the firmware using voltage glitching.

This post is licensed under CC BY 4.0 by the author.