Sensors and Monitoring¶
A comprehensive guide to monitoring temperatures, fan speeds, voltages, and performance metrics on the BC-250.
Overview¶
The BC-250 includes multiple hardware monitoring components:
- NCT6686/NCT6687 SuperIO chip - Motherboard sensors (temperatures, voltages, fan speeds)
- AMD GPU sensors - GPU temperature, voltage, power consumption
- k10temp - CPU temperature monitoring
- NVMe sensors - M.2 drive temperature
Proper monitoring is essential to ensure your BC-250 stays within safe operating temperatures (70-85°C under load) and to diagnose cooling or power issues.
NCT6686/NCT6687 SuperIO Setup¶
What is the NCT6686/NCT6687?¶
The Nuvoton NCT6686 or NCT6687 is a Super I/O chip on the BC-250 that provides hardware monitoring capabilities including:
- Multiple temperature sensors (thermistors, AMD TSI)
- Voltage rails monitoring
- Fan speed monitoring (up to 5 fan headers)
- Fan control capabilities
Loading the Sensor Module¶
By default, Linux may not automatically load the driver for this chip. You need to manually enable it.
Step 1: Load the Module Temporarily¶
Test if the module loads correctly:
Verify it loaded:
Step 2: Make it Permanent¶
Create a modprobe configuration file:
Add the following line:
Create a modules load file:
Add:
Step 3: Regenerate Initramfs¶
On Fedora/Bazzite:
On Arch/Manjaro:
On Debian/Ubuntu:
Reboot for changes to take effect:
Using lm-sensors¶
Installation¶
Fedora/Bazzite:
Arch/Manjaro:
Debian/Ubuntu:
Detecting Sensors¶
Run the detection utility (answer YES to all prompts):
This will scan for all available sensors and configure them automatically.
Reading Sensor Data¶
View all sensor readings:
Expected Output¶
Here's what you should see on a properly configured BC-250:
amdgpu-pci-0100
Adapter: PCI adapter
vddgfx: 906.00 mV
vddnb: 824.00 mV
edge: +63.0°C
PPT: 55.12 W (avg = 0.00 W)
nvme-pci-0300
Adapter: PCI adapter
Composite: +51.9°C (low = -0.1°C, high = +79.8°C)
(crit = +81.8°C)
Sensor 1: +51.9°C (low = -273.1°C, high = +65261.8°C)
k10temp-pci-00c3
Adapter: PCI adapter
Tctl: +51.5°C
nct6686-isa-0a20
Adapter: ISA adapter
VIN0: 832.00 mV (min = +0.00 V, max = +0.00 V)
VIN1: 1.02 V (min = +0.00 V, max = +0.00 V)
VIN2: 976.00 mV (min = +0.00 V, max = +0.00 V)
VIN6: 1.39 V (min = +0.00 V, max = +0.00 V)
VIN7: 928.00 mV (min = +0.00 V, max = +0.00 V)
VIN16: 896.00 mV (min = +0.00 V, max = +0.00 V)
fan1: 0 RPM (min = 0 RPM)
fan2: 1372 RPM (min = 0 RPM)
fan3: 0 RPM (min = 0 RPM)
fan4: 0 RPM (min = 0 RPM)
fan5: 0 RPM (min = 0 RPM)
AMD TSI Addr 98h: +63.0°C (low = +0.0°C)
(high = +0.0°C, hyst = +0.0°C)
(crit = +0.0°C) sensor = AMD AMDSI
Thermistor 14: +57.5°C (low = +0.0°C)
(high = +0.0°C, hyst = +0.0°C)
(crit = +0.0°C) sensor = thermistor
Thermistor 15: +57.0°C (low = +0.0°C)
(high = +0.0°C, hyst = +0.0°C)
(crit = +0.0°C) sensor = thermistor
intrusion0: OK
beep_enable: disabled
Understanding the Sensors¶
GPU Sensors (amdgpu-pci-0100):
- vddgfx - GPU core voltage
- vddnb - Northbridge/memory voltage
- edge - GPU edge temperature (primary GPU temp)
- PPT - Package Power Tracking (GPU power consumption in watts)
CPU Sensors (k10temp-pci-00c3):
- Tctl - CPU temperature (Zen 2 control temperature)
SuperIO Sensors (nct6686-isa-0a20):
- VIN0-VIN16 - Various voltage rails
- fan1-fan5 - Fan speed monitoring (RPM)
- AMD TSI Addr 98h - AMD Temperature Sensor Interface (alternative CPU temp reading)
- Thermistor 14/15 - Board temperature sensors
Watch Sensors in Real-Time¶
Monitor sensor changes continuously:
This updates every second. Press Ctrl+C to exit.
GPU Temperature Monitoring¶
Using AMDGPU Sysfs¶
Read GPU temperature directly:
This returns temperature in millidegrees Celsius (e.g., 63000 = 63°C)
Convert to Celsius:
GPU Power Consumption¶
Read current GPU power draw:
Returns power in microwatts. Convert to watts:
GPU Clock Speeds¶
Check current GPU frequency:
Example output:
The asterisk (*) indicates the current active clock speed.
Fan Speed Monitoring and Control¶
Viewing Fan Speeds¶
From sensors output, look for the nct6686-isa-0a20 section:
Fan Headers on BC-250¶
The board has 5 fan headers (shown as fan1-fan5 in sensors):
- Usually only fan2 is used for the main cooling fan
- Other headers may show 0 RPM if not connected
BIOS Fan Control Settings¶
The BC-250 BIOS has three fan control modes:
- Default - Tries to keep board at maximum safe temperature with minimum fan speed (NOT RECOMMENDED - runs too hot)
- Full Speed - Fans run at 100% constantly (recommended for testing and maximum cooling)
- Customize - Set custom temperature/fan speed curves in BIOS
Recommendation: Use "Full Speed" mode for initial testing and gaming. Once stable, you can use software fan control (CoolerControl) for quieter operation.
Manual Fan Control via PWM¶
Check available PWM controls:
Set fan speed manually (value 0-255, where 255 = 100%):
Enable manual PWM control:
CoolerControl - GUI for Sensor Monitoring and Fan Curves¶
CoolerControl is a GUI application that provides:
- Real-time sensor monitoring
- Custom fan curves based on any temperature sensor
- Historical temperature graphs
- Fan speed control
Installation on Bazzite¶
Bazzite has a built-in recipe for CoolerControl:
This will:
1. Enable the Terra repository
2. Install liquidctl and coolercontrol
3. Require a reboot to apply
After reboot, start CoolerControl:
Installation on Fedora¶
Enable the Terra repository:
Install CoolerControl:
Installation on Arch/Manjaro¶
Install from AUR:
Or:
Using CoolerControl¶
- Launch CoolerControl from your application menu or terminal
- You'll see all detected sensors and fans
- Click on a fan to create a custom curve
- Select a temperature sensor to base the curve on (e.g., GPU edge temp)
- Drag curve points to set fan speed at different temperatures
Example fan curve: - 40°C: 30% fan speed - 60°C: 50% fan speed - 70°C: 75% fan speed - 80°C: 100% fan speed
Checking Frequency and Temperature with Governor¶
From Discord community recommendations:
Desktop mode:
Game mode (Steam Deck UI): - Enable Steam overlay performance monitoring in Quick Settings
Other Monitoring Tools¶
nvtop - GPU Activity Monitor¶
nvtop is like htop but for GPUs. It shows GPU utilization, VRAM usage, temperature, and power consumption in a terminal UI.
Installation:
Fedora/Bazzite:
Arch/Manjaro:
Debian/Ubuntu:
Usage:
Press q to quit.
radeontop - AMD GPU Monitor¶
Alternative GPU monitoring tool specifically for AMD GPUs.
Installation:
Fedora/Bazzite:
Arch/Manjaro:
Debian/Ubuntu:
Usage:
Press q to quit.
MangoHud - In-Game Overlay¶
MangoHud provides an in-game overlay showing FPS, GPU/CPU temps, usage, and more.
Installation:
Fedora/Bazzite:
Arch/Manjaro:
Debian/Ubuntu:
Usage:
Launch games with MangoHud:
For Steam games, add to launch options:
Configuration:
Create ~/.config/MangoHud/MangoHud.conf:
fps_limit=60
vsync=0
gpu_temp
cpu_temp
gpu_power
cpu_power
ram
vram
fps
frametime=0
frame_timing=1
position=top-left
font_size=24
Temperature Thresholds and Safe Operating Ranges¶
Normal Operating Temperatures¶
Idle (Desktop/Light Use): - GPU: 45-55°C - CPU: 45-55°C - Power: 50-70W
Gaming/Heavy Load: - GPU: 70-85°C - CPU: 65-80°C - Power: 150-235W (235W max during Cyberpunk with ray tracing)
Maximum Safe Temperatures¶
- GPU edge temp: 85°C maximum recommended (can briefly spike to 90°C)
- CPU (Tctl): 90°C maximum
- NVMe SSD: 80°C maximum (critical at 81.8°C per spec)
Temperature Warning Signs¶
If you see these symptoms, your cooling is insufficient:
- GPU consistently above 85°C during gaming
- Sudden FPS drops or stuttering (thermal throttling)
- System crashes under load
- GPU governor reducing frequency to manage heat
Improving Cooling¶
If temperatures are too high:
- Check fan speeds - Ensure fans are running at adequate RPM
- Verify thermal paste - Reapply if paste is old or dried
- Increase fan speed - Use BIOS "Full Speed" mode or CoolerControl
- Improve airflow - Add more fans or cut heatsink fins for better air penetration
- Check dust - Clean dust from heatsink fins
- Verify thermal pads - Ensure good contact on GDDR6 memory chips
Community Cooling Data¶
From Discord testing:
- Arctic P12 Max with cut fins: 70-85°C gaming, 86°C benchmarks
- Noctua NF-A12x25 with cut fins: 65-80°C gaming
- Stock heatsink with fan shroud: 80-90°C gaming (thermal limits reached)
- Wraith Stealth coolers with thermal putty: ~70°C mining/LLM workloads at 180W
Troubleshooting Sensor Issues¶
Sensors Command Shows No Output¶
Problem: Running sensors shows nothing or very limited data.
Solutions:
-
Run sensor detection:
-
Ensure NCT6683 module is loaded:
-
Check if modules are loaded:
-
Verify lm-sensors is installed:
NCT6683 Module Won't Load¶
Problem: modprobe nct6683 force=true fails or doesn't work.
Solutions:
-
Check kernel version (needs 6.11+):
-
Verify chip detection:
-
Check dmesg for errors:
-
Some kernels may need
nct6687instead:
GPU Temperature Not Showing¶
Problem: No GPU temperature in sensors output.
Solutions:
-
Check if amdgpu driver is loaded:
-
Verify GPU is detected:
-
Check amdgpu sysfs directly:
-
Ensure Mesa 25.1+ is installed:
Fan Speeds Show 0 RPM¶
Problem: All fans show 0 RPM even though fans are spinning.
Possible causes:
- Fan not connected to monitored header - BC-250 usually only uses fan2 header
- 3-pin fan on PWM header - Some fans don't report speed
- Fan splitter - May not pass tachometer signal
- BIOS fan setting - Try changing fan mode in BIOS
Verification:
If you can hear/feel the fan spinning, it's working even if sensors show 0 RPM. Use GPU temperature as confirmation of cooling effectiveness.
Power Consumption Seems Wrong¶
Problem: sensors shows very low or zero power consumption.
Solution:
- Power readings update slowly - wait 10-30 seconds
- Use a Kill-A-Watt or smart plug for accurate wall power measurement
- GPU power from
sensorsonly shows GPU chip power, not total system power - Total system power = GPU + CPU + RAM + board + PSU inefficiency
Example: - GPU PPT: 150W - Total system power at wall: 180-200W
Advanced: Monitoring Scripts¶
Temperature Logging Script¶
Save as ~/monitor-temps.sh:
#!/bin/bash
# BC-250 Temperature Monitor
# Logs GPU temp, CPU temp, and power to file
LOGFILE="$HOME/bc250-temps.log"
echo "Timestamp,GPU_Temp,CPU_Temp,GPU_Power" > "$LOGFILE"
while true; do
TIMESTAMP=$(date +%s)
GPU_TEMP=$(cat /sys/class/drm/card0/device/hwmon/hwmon*/temp1_input 2>/dev/null | awk '{print $1/1000}')
CPU_TEMP=$(sensors k10temp-pci-00c3 -u 2>/dev/null | grep temp1_input | awk '{print $2}')
GPU_POWER=$(cat /sys/class/drm/card0/device/hwmon/hwmon*/power1_average 2>/dev/null | awk '{print $1/1000000}')
echo "$TIMESTAMP,$GPU_TEMP,$CPU_TEMP,$GPU_POWER" >> "$LOGFILE"
sleep 5
done
Make executable:
Run:
Temperature Alert Script¶
Save as ~/temp-alert.sh:
#!/bin/bash
# Alert if GPU temp exceeds threshold
THRESHOLD=85
while true; do
GPU_TEMP=$(cat /sys/class/drm/card0/device/hwmon/hwmon*/temp1_input 2>/dev/null | awk '{print $1/1000}')
if (( $(echo "$GPU_TEMP > $THRESHOLD" | bc -l) )); then
notify-send -u critical "BC-250 Temperature Alert" "GPU temp: ${GPU_TEMP}°C (threshold: ${THRESHOLD}°C)"
fi
sleep 10
done
Quick Reference¶
Essential Commands¶
# View all sensors
sensors
# Watch sensors in real-time
watch -n 1 sensors
# GPU temperature only
cat /sys/class/drm/card0/device/hwmon/hwmon*/temp1_input | awk '{print $1/1000 "°C"}'
# GPU power consumption
cat /sys/class/drm/card0/device/hwmon/hwmon*/power1_average | awk '{print $1/1000000 "W"}'
# GPU clock speed
cat /sys/class/drm/card0/device/pp_dpm_sclk
# Launch nvtop
nvtop
# Launch radeontop
radeontop
Temperature Targets¶
| Condition | GPU Temp | CPU Temp | Power Draw |
|---|---|---|---|
| Idle | 45-55°C | 45-55°C | 50-70W |
| Light Gaming | 60-75°C | 55-70°C | 100-150W |
| Heavy Gaming | 70-85°C | 65-80°C | 150-200W |
| Stress Test | 80-86°C | 75-85°C | 200-235W |
Cooling Solutions Performance¶
| Setup | Idle Temp | Load Temp | Notes |
|---|---|---|---|
| Arctic P12 Max (cut fins) | 49°C | 70-86°C | Best performance |
| Noctua NF-A12x25 (cut fins) | 47-52°C | 65-80°C | Quieter, excellent cooling |
| Single 120mm (cut fins) | 55°C | 80-90°C | Adequate for most games |
| Stock with shroud | 60°C | 85-90°C | Borderline, may throttle |
Related Documentation¶
- GPU Governor - Configure GPU frequency scaling and power management
- Performance Tuning - Optimize system performance
- Hardware Overview - BC-250 specifications and cooling requirements
- Troubleshooting - Solve thermal and stability issues
Last Updated: November 21, 2025