
BC-250 Fan Control¶
Shows the temperatures and fans of the AMD BC-250 on Bazzite, and runs a thermal guard: a system service that watches the GPU and the CPU, also when no app is open, and warns, cools and at a critical temperature shuts the board down cleanly.
While the guard is on, it can turn the fans to full speed, turn performance mode off and power the board off, so this app changes the board. It is software-only. Turn the guard off and everything is as before.
Using it¶
The top row shows the GPU temperature (amdgpu's edge), the CPU temperature (k10temp's Tctl), the
fan and the thermal guard. A temperature box turns orange at the warning limit and red at the cooling
limit.
- Warn at, cool at, shut down at, after: the guard's limits, in °C, and how many seconds the temperature must stay at the shutdown limit before the board shuts down.
- Turn on…: installs the guard as a system service with these limits. The app asks first, then asks for your password. The guard starts at once and at every boot.
- Apply…: once the guard is on, gives it new limits (or the guard of this version of the app).
- Turn off…: stops and removes the guard. The fans go back as they were.
- Defaults: puts 85, 90 and 95 °C and 10 seconds back in the fields.
Under Fans is every fan that reports its speed, with the header it is on and whether it follows the firmware's curve or a manual value. What the guard did lists the guard's recent warnings and actions, newest first.
The thermal guard¶
Every two seconds the guard takes the hotter of the GPU and the CPU temperature, and acts at three limits:
| Limit | Default | What the guard does |
|---|---|---|
| Warning | 85 °C | A desktop notification, and a line in the journal. |
| Cooling | 90 °C | Every fan to full speed, and the GPU governor's performance mode off. |
| Shutdown | 95 °C, held for 10 s | A clean shutdown (systemctl poweroff), to protect the board. |
- Back to normal: 5 °C below the warning (80 °C with the defaults) the warning re-arms and the fans go back to what they were: the firmware's curve, or the manual value they had. Performance mode stays off: turn it on again in the GPU Governor Manager when you want it.
- The shutdown waits. Only a temperature that stays at the shutdown limit for the whole time shuts the board down; one that drops below it in time stops the countdown. The guard says when the countdown starts.
- A broken sensor never shuts the board down. A reading below 1 °C or above 150 °C counts as no reading. With no GPU or CPU temperature at all, the guard says so and does nothing.
- A fan that stops is reported: one that turned and then reads 0 RPM for 10 seconds, while it should turn.
- When the guard stops (turned off, or the app uninstalled), it puts the fans back as they were.
AMD publishes no thermal limits for the BC-250. The defaults follow what is known from the boards: GPU throttling from about 85 °C, instability from 90 to 95 °C, and the GPU governor's own throttling default of 85 °C. Lower them if your board runs hotter than that in a closed case.
Fans¶
The board's fans are driven by its sensor chip, a Nuvoton NCT6686, through the nct6687 driver that Bazzite ships.
Bazzite Test (test 22) checks that the driver is loaded and says how to load it.
- CPU_FAN1 is the board's 4-pin PWM fan header, near the end of the board. The board can read a fan there and set its speed.
- J4003, the long two-row header beside it, carries the speed signal and the PWM control of four more fans, without power: a fan there takes its 12 V from the power supply. The app shows those channels as J4003 fan 2 to 5.
- A fan powered straight from the power supply runs on its own: it reports nothing, and the guard can neither see nor drive it. The temperatures still count, so the guard still warns and shuts down.
- A Y splitter on one header drives both fans, but only one of them reports its speed. The app cannot tell when the other one stops. For a second fan, use J4003.
On another board the app shows the fan channels with the driver's own labels.
Files¶
/etc/bc250-fan-control/guard.pyandguard.json: the guard and its limits, while it is on./etc/systemd/system/bc250-fan-control-guard.service: the service that starts it at boot./run/bc250-fan-control/state.json: what the guard saw last and did lately, which the app shows.~/.config/bc250-fan-control/bc250-fan-control.ini: the window's size and place.
The guard's log: journalctl -u bc250-fan-control-guard.
Install¶
Install it from the BC250 Bazzite Suite portal, or from a clone or release folder, as your own user:
./install.sh # app menu entry and Desktop icon
./install.sh --no-desktop-shortcut # app menu entry only
./install.sh --uninstall # remove the app and the thermal guard; keeps its settings
./install.sh --uninstall --purge # also remove its settings
Turning the guard on and off needs pkexec and the system python3; Bazzite has both. Uninstalling the app also
stops and removes the guard (with sudo).
License¶
GPL-3.0-or-later. See LICENSE. Where the fan headers are comes from mothenjoyer69/bc250-documentation.