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.
What works now
- Voltage and current-limit adjustment, plus main OUTPUT ON/OFF, from one browser card.
- APPLY preserves the previous output state: OFF → verified settings → ON when initially ON.
- Main voltage, signed current and power measurements, with optional Live polling at approximately one-second intervals.
- USB-C controller identification, measurements and tested USB OFF/AUTO commands.
- Operation from a separate 12 V / 5 A source, without requiring RIDEN to power or enable P200.
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
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.
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.
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:
- Measure all labelled test-point voltages relative to ground.
- Capture the suspected clock/data pair with sigrok/PulseView.
- Record separate traces for boot, output on/off, voltage changes and current-limit changes.
- Verify SWD pin continuity before connecting the debugger.
- Keep all first SWD operations read-only; no unlock or erase operations.
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.