Reverse engineering the ToolkitRC P200

We can now set voltage and current limit, switch the main output and read measurements from a browser. A Pico USB bridge and a custom firmware extension connect a working P200 V1 to Labrax Bench Control, alongside USB-C OFF/AUTO controls.

Verified on the bench. The main output delivered 5 V and 6 V, APPLY changed settings while preserving ON, and USB OFF/AUTO removed and restored power to a TC64 tester and its receiver. The detailed integration tests below were completed on 10 October 2026.

What works now

The firmware accepts main setpoints of 1–30 V and 1–10 A within a 200 W limit. These are command bounds, not a claim that the full range has been load-tested. The current 60 W input source has a conservative 54 W shared budget; measured USB power is reserved before allowing a main-output setpoint.

APPLY without the manual OFF/ON sequence

The original firmware extension required the main output to be OFF before changing settings. The panel now performs that sequence automatically. It reads the live state, checks the source budget, switches OFF when necessary, writes and verifies both setpoints, then restores ON only after successful checks. A failed command or readback does not trigger an automatic ON retry. The output is briefly interrupted during APPLY; this is not uninterrupted adjustment under load.

Bench evidence

Main output5 V / 1 A ON verified by multimeter
APPLY while ON5 → 6 V; P200 readback 6.034 V, no fault
USB OFFTC64 dark; independent status 0 V / 0 A
USB AUTOTC64 restored: 5.1 V / 1.4 A

The integration validation also passed 40 adapter tests, six API tests, 18 frontend cases and ten ARM firmware tests. The firmware update was checked by full direct readback after each written page. Factory regulation, protection code, calibration and device-specific settings were retained.

Labrax P200 card showing main output OFF, adjustable voltage/current, APPLY and USB-C OFF/AUTO controls
Actual Labrax panel after the 10 October tests: main OUTPUT OFF, USB AUTO. Measurements shown here are a saved snapshot.

One Pico per P200

The working control path is browser → local Labrax service → USB Pico bridge → custom GPIO link on the existing clock/data connection → P200 firmware extension. One Pico is sufficient for each modified P200; the extra Pico used for early bus investigation is not required for routine control. USB mass storage remains the firmware-update path rather than the runtime control link.

Current limits and next steps

USB AUTO restores factory negotiation; it does not manually select a PD voltage or current limit. The current custom USB command profile requires main OUTPUT OFF and covers 5 V receivers up to 2 A. Full device POWER control and operation with the LCD removed have not been implemented or validated. OUTPUT OFF switches the main terminals, not the entire supply.

The first unit had intermittent shutdowns, including during idle tests, and was set aside. The working implementation was validated on the second unit, including a reported 30-minute stable run. This suggests a unit-specific problem in the first supply; its exact cause has not been established. Additional P200 channels remain a separate integration step.

Read the GitHub engineering record for the tested scope, architecture and validation results. This is a prototype record, not a universal firmware image for every P200 revision.

Initial investigation · September 2026

The following notes describe the early findings and investigation plan.

Why this supply?

The P200 is small, can be powered from a 24 V DC bus, provides a programmable main output, and also contains a useful USB-C fast-charging output. Three units could cover most everyday low-current bench work while a larger RIDEN supply remains available for occasional high-power loads.

Identifying the hardware

The unit under test is the original P200 rather than the later P200 V2. The enclosure is approximately 84 mm long, matching the V1 mechanical dimensions. This mattered immediately: V1 and V2 use different firmware packages.

Model ToolkitRC P200 V1
Main MCU GD32F103CBT6 observed on PCB
Update interface USB Mass Storage
Firmware file ToolkitRC P200 V1.05-STN · app.upg

USB: useful, but not remote control

Connecting the P200 to Linux exposed a single USB interface: STMicroelectronics 0483:5820, class 8 Mass Storage, SCSI Bulk-Only. Linux mounted a tiny FAT12 volume labelled Toolkit. No CDC serial, HID or secondary vendor interface was exposed.

The volume is therefore useful for firmware update work, but it does not provide an obvious documented path for normal PC control.

Firmware package

The official V1.05-STN package contains an app.upg image of 86,548 bytes. Linux identifies a Cortex-M vector table at the beginning, including an initial stack pointer of 0x200013F0 and a reset vector of 0x08009101.

Useful plaintext strings are present in the image, including output voltage/current labels, USB charging protocol names and a START OUTPUT message. However, a first-pass assumption that file offsets mapped directly to executable flash addresses did not survive testing: data at the apparent reset location did not disassemble as sensible Thumb code. At that stage it was recorded as an unresolved firmware-format question rather than forcing an interpretation.

PCB access changes the plan

Opening the unit revealed labelled test points and a debug header. The board exposes signals labelled for 3.3 V, reset, clock/data and several control points. The GD32F103 supports SWD, so a read-only debug connection was identified as an investigation path.

Another group of test points appeared to expose a low-voltage serial control bus near the power-control section. The investigation plan was to measure the idle voltages first, then capture traffic while changing voltage, current limit and output state.

Original measurement plan

The initial plan focused on collecting evidence before modification:

The wider laboratory plan

The wider lab plan is a shared 24 V source feeding an independent RIDEN channel and two P200 channels, each with its own Pico bridge. The current validated setup uses one P200 with a separate 12 V / 5 A source. Completing the next channel does not require changing this working unit's calibration.

Planned lab: shared 24 V DC source → RIDEN + two P200 channels → one Pico per P200 → Labrax Bench Control. The shared-source power budget must cover all active channels.