How webMAN MOD Performs Temperature Monitoring Using the /cpursx.ps3 Web Interface

webMAN MOD reads CPU and RSX temperatures through the /cpursx.ps3 HTTP endpoint by calling the get_cpursx() function, which queries the PS3's thermal sensors directly and returns formatted HTML without requiring external services.

The open-source project aldostools/webman-mod provides PlayStation 3 users with a lightweight web interface for system management. One of its core features is real-time webMAN MOD temperature monitoring, exposed through the dedicated /cpursx.ps3 endpoint that reports CPU and RSX thermal data directly from the hardware sensors.

Reading Hardware Sensors

The get_cpursx Function in cpursx.h

The foundation of temperature monitoring resides in include/cpursx.h. The get_cpursx(char *cpursx) function queries the PS3's thermal subsystem using low-level system calls implemented at lines 25-33.

It invokes get_temperature(0, &t1) to retrieve the CPU temperature and get_temperature(1, &t2) for the RSX (GPU) temperature, then formats the output as a printable string:

static void get_cpursx(char *cpursx)
{
    u8 t1 = 0, t2 = 0;
    get_temperature(0, &t1);          // CPU temperature
    get_temperature(1, &t2);          // RSX temperature
    sprintf(cpursx, "CPU: %i°C | RSX: %i°C", t1, t2);
}

This implementation performs direct hardware register access without kernel extensions or background daemons.

Serving Data via HTTP

The cpursx_tempc Handler

When a browser or client requests /cpursx.ps3 or /cpursx_ps3, the handler defined in include/cmd/cpursx_tempc.h executes. This function calls get_cpursx(), embeds the temperature string into an HTML response, and transmits it with a 200 OK status header at lines 5-22.

The handler also injects JavaScript to update the parent document's temperature label dynamically:

static void cpursx_tempc()
{
    char *cpursx = header, *buffer = param;
    get_cpursx(cpursx);
    _concat2(&sbuffer,
        HTML_REFRESH, "/cpursx_ps3",
        "<script>parent.document.getElementById('lbl_cpursx').innerHTML = \"%s\";</script>",
        cpursx);
    // send HTTP 200 with the generated HTML
}

This creates the complete request-response cycle for webMAN MOD temperature monitoring.

Web Interface Integration

UI Generation with cpu_rsx_stats

The main status page embeds this endpoint through markup generated by cpu_rsx_stats() in include/cpursx.h (lines 607-618). This creates clickable temperature displays linking back to /cpursx.ps3 with optional Fahrenheit conversions:

sprintf(html,
    "<hr><font size=\"42px\">"
    "<b><a class=\"s\" href=\"/cpursx.ps3?up\">"
    "CPU: %i°C %s<br>"
    "RSX: %i°C</a><hr>"
    "<a class=\"s\" href=\"/cpursx.ps3?dn\">"
    "CPU: %i°F %s<br>"
    "RSX: %i°F</a><hr>",
    t1, max_temp1, t2, t1f, max_temp2, t2f);
concat(buffer, html);

Page Embedding via www_page.h

Additionally, include/www/www_page.h (lines 16-19) injects the endpoint via iframe elements for persistent dashboard visibility across the web interface.

Dynamic Fan Control

The /cpursx.ps3 endpoint accepts query strings for real-time thermal management. Appending ?up increases fan speed, ?dn decreases it, ?mode toggles control policies, and ?fan= sets specific percentage values.

The cpu_rsx_stats() function parses these parameters in include/cpursx.h and adjusts the hardware thermal policy before refreshing the temperature display. This allows users to manage cooling directly from the temperature readout page without accessing separate configuration menus.

Summary

  • webMAN MOD queries hardware sensors directly using get_temperature() syscalls in include/cpursx.h
  • The /cpursx.ps3 endpoint serves formatted temperature data via the HTTP handler in include/cmd/cpursx_tempc.h
  • UI integration occurs through cpu_rsx_stats() in the main interface and iframe embeddings in include/www/www_page.h
  • Query parameters enable on-the-fly fan speed adjustments without external tools

Frequently Asked Questions

What hardware sensors does /cpursx.ps3 monitor?

The endpoint monitors the Cell Broadband Engine (CPU) and RSX Reality Synthesizer (GPU) temperatures. The system queries these using get_temperature(0, ...) for the CPU and get_temperature(1, ...) for the RSX, as implemented in the get_cpursx() function at lines 25-33 of include/cpursx.h.

Can I adjust fan speed through the /cpursx.ps3 interface?

Yes. The endpoint accepts query parameters including ?up to increase speed, ?dn to decrease, ?mode to toggle between automatic and manual policies, and ?fan= followed by a numeric value to set specific speeds. The cpu_rsx_stats() function processes these commands immediately.

Where is the temperature data formatted in the source code?

The get_cpursx() function in include/cpursx.h (lines 25-33) formats the raw unsigned integer sensor values into the human-readable "CPU: X°C | RSX: Y°C" string displayed in browsers.

Does webMAN MOD require external services for temperature monitoring?

No. The implementation is entirely self-contained in C, reading hardware registers directly through system calls and serving HTTP responses without external dependencies, background services, or network APIs.

Have a question about this repo?

These articles cover the highlights, but your codebase questions are specific. Give your agent direct access to the source. Share this with your agent to get started:

Share the following with your agent to get started:
curl -s "https://instagit.com/install.md"

Works with
Claude Codex Cursor VS Code OpenClaw Any MCP Client

Maintain an open-source project? Get it listed too →