Overclock your
uConsole.
Squeeze 15–30% more performance out of your CM4 or A06 module. Faster compiles, smoother desktops, better emulation — with tested profiles, thermal guidance, and battery tradeoffs explained.
What overclocking does on the uConsole.
Your uConsole's CPU and GPU run at conservative clock speeds out of the box. The CM4's BCM2711 defaults to 1.5 GHz on the CPU and 500 MHz on the GPU. The A06's Allwinner H616 runs at similar conservative frequencies. These are safe for passive cooling — but they leave performance on the table.
Overclocking raises these clock frequencies, giving the CPU and GPU more cycles per second. The result: faster compilation, snappier UI rendering, smoother retro emulation, and less waiting during heavy workloads. The tradeoff is more heat and higher power draw.
Real-world gains you can expect:
- ▸15–20% faster compile times (GCC, Rust, Go)
- ▸10–15% smoother desktop and window management
- ▸20–30% better retro emulation frame rates (N64, PSX, PSP)
- ▸~25% faster file compression and decompression
| Metric | Stock | Safe OC | Aggressive |
|---|---|---|---|
| CPU events/sec | 847 | 1,018 | 1,197 |
| Events per thread | 211.7 | 254.5 | 299.3 |
| Latency avg (ms) | 4.72 | 3.93 | 3.34 |
| sysbench score | 3,388 | 4,072 | 4,788 |
| Δ vs stock | — | +20% | +41% |
⚠ Note: Results vary by silicon lottery and thermal conditions. Not every CM4 will hit the same clocks stably. Test your own unit carefully.
CM4 overclocking.
Editing /boot/config.txt — the Raspberry Pi way
The CM4 uses the same BCM2711 SoC as the Raspberry Pi 4. Overclocking is done entirely through /boot/config.txt — the firmware reads this file at boot time and sets your clock speeds before Linux even starts.
Step 1: Open the config file
sudo nano /boot/config.txt
Scroll to the bottom of the file. You'll add your overclock parameters in the [all] section, or create one if it doesn't exist.
Step 2: Understand the parameters
| Parameter | Default | Description |
|---|---|---|
| arm_freq | 1500 | CPU frequency in MHz. Max safe ~2000. |
| gpu_freq | 500 | GPU core frequency in MHz. Max safe ~750. |
| over_voltage | 0 | CPU/GPU voltage offset. Range 0-6 (+0.025V each step). |
| force_turbo | 0 | Set 1 to disable dynamic clocking. Runs at max freq always. |
| temp_soft_limit | 60 | Start throttling at this temp. Max 70 (°C). |
| arm_freq_min | 600 | Minimum CPU freq when idle (power saving). |
Step 3: Add a safe overclock profile
This is the community-recommended starting point. It gives a solid ~20% performance boost while remaining stable on most CM4 units with basic thermal management.
[all] # ─── Pocket Forge Safe OC Profile ─── # +20% CPU, +20% GPU, moderate voltage bump arm_freq=1800 gpu_freq=600 over_voltage=2 # Thermal protection temp_soft_limit=70 # Keep dynamic clocking for battery life # (CPU drops to arm_freq_min when idle) arm_freq_min=600
Save with Ctrl+O, exit with Ctrl+X, then reboot:
sudo reboot
Recovery: if it won't boot
If your uConsole fails to boot after overclocking, don't panic. You have two options:
Hold SHIFT during boot to enter recovery mode on Raspberry Pi OS. From there you can edit config.txt and remove your overclock settings.
Remove the SD card and plug it into another computer. Mount the boot partition and edit config.txt directly. Comment out or delete the overclock lines.
⚠ Warning: Overclocking may void your warranty and can cause instability, data corruption, or reduced component lifespan if pushed too far. Always back up your data before changing overclock settings.
A06 (Allwinner) overclocking.
Device tree overlays and sysfs frequency control
The A06 module uses an Allwinner H616 quad-core Cortex-A53 SoC. Unlike the CM4, there's no simple config.txt — the A06 uses device tree overlays and Linux kernel frequency scaling to control clock speeds.
The A06 has less overclocking headroom than the CM4. The H616 already runs close to its thermal limits at stock frequencies, and the Cortex-A53 cores don't scale as aggressively with higher clocks.
Check current frequency range
# See available frequencies cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_available_frequencies # Check current frequency cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_cur_freq # Check current governor cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor
Temporary frequency override
You can temporarily push the max frequency via sysfs. This resets on reboot — useful for testing before committing.
# Set performance governor (locks at max freq) echo performance | sudo tee /sys/devices/system/cpu/cpu*/cpufreq/scaling_governor # Check that it took effect cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_cur_freq
Permanent changes (advanced)
To permanently change the A06's frequency limits, you need to modify the device tree source (.dts) and recompile it, or apply a device tree overlay. This typically involves:
⚠ Recommendation: Unless you're comfortable recompiling kernels, stick to the governor-based approach. The performance gains on A06 from overclocking are modest (~10%) compared to the CM4 (~20-40%). The CM4 is the better module for performance tuning.
Thermal management.
How hot does it get, and what to do about it
The uConsole has no active cooling out of the box. The aluminum shell acts as a partial heatsink, but there's no fan or dedicated thermal solution. This makes thermal management critical when overclocking.
⚠ Throttle point: The CM4 begins thermal throttling at 80°C. Above this, the firmware automatically reduces clock speeds to prevent damage. At 85°C, more aggressive throttling kicks in.
Cooling modifications
The most effective single mod. A small 14×14mm copper heatsink with thermal adhesive directly on the CM4's BCM2711. Drops temps 8-12°C under load. Look for heatsinks designed for the Raspberry Pi CM4.
A 1mm thermal pad bridging the SoC heatsink to the aluminum back panel. Uses the entire shell as a heatsink. Drops another 3-5°C. Make sure the pad makes solid contact.
Some community members have fitted tiny 20mm 5V fans inside the case, powered from the GPIO header. Drops temps 10-15°C but adds noise and complexity. Not recommended unless you're pushing aggressive clocks regularly.
💡 Tip: Don't block the ventilation slots on the uConsole case. The case was designed with passive airflow in mind — even small gaps matter. If adding a thermal pad, make sure it doesn't prevent the case from closing properly.
Monitoring temps & throttling.
vcgencmd, lm-sensors, and reading throttle flags
After overclocking, you need to monitor your temps to make sure you're not constantly throttling. Here are the key tools.
Quick temp check (CM4)
# Current SoC temperature vcgencmd measure_temp # Output: temp=52.0'C # Current clock speeds (verify OC is active) vcgencmd measure_clock arm vcgencmd measure_clock core
Throttle flag decoder (CM4)
vcgencmd get_throttled # Output: throttled=0x0 (means: all clear)
The hex value is a bitmask. Here's what each bit means:
| Bit | Hex | Meaning |
|---|---|---|
| 0 | 0x1 | Under-voltage detected (now) |
| 1 | 0x2 | ARM frequency capped (now) |
| 2 | 0x4 | Currently throttled |
| 3 | 0x8 | Soft temperature limit active |
| 16 | 0x10000 | Under-voltage has occurred (since boot) |
| 17 | 0x20000 | ARM frequency capping has occurred |
| 18 | 0x40000 | Throttling has occurred |
| 19 | 0x80000 | Soft temperature limit has occurred |
Universal temp check (CM4 & A06)
# Works on both CM4 and A06 cat /sys/class/thermal/thermal_zone0/temp # Output: 52000 (divide by 1000 = 52.0°C)
Install lm-sensors
sudo apt install lm-sensors sudo sensors-detect # say YES to all prompts sensors # Output shows all detected temperature sensors
Live monitoring script
Run this while stress testing to watch temps in real time:
# Simple watch loop — updates every 2 seconds
watch -n 2 ' echo "=== uConsole Thermal Monitor ==="; echo ""; echo "CPU Temp: $(cat /sys/class/thermal/thermal_zone0/temp | awk "{printf \"%.1f°C\", \$1/1000}")"; echo "CPU Freq: $(cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_cur_freq | awk "{printf \"%.0f MHz\", \$1/1000}")"; echo "Governor: $(cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor)"; echo ""; vcgencmd get_throttled 2>/dev/null || echo "vcgencmd not available"; 'Stability testing.
stress-ng, sysbench, and proving your overclock is solid
An overclock that boots doesn't mean it's stable. You need to run stress tests for at least 10 minutes (ideally 30+) to verify thermal stability under sustained load.
Install test tools
sudo apt update sudo apt install stress-ng sysbench
CPU stress test with stress-ng
# Hammer all 4 CPU cores for 10 minutes stress-ng --cpu 4 --cpu-method matrixprod --timeout 600s --metrics # More aggressive — also stress memory and cache stress-ng --cpu 4 --vm 2 --vm-bytes 256M --timeout 600s --metrics
While this runs, open a second terminal and run the monitoring script from Section 5. Watch for temps above 80°C or throttle flags appearing.
Benchmark with sysbench
Run this before and after overclocking to measure your actual gains:
# CPU benchmark — run this at stock AND overclocked sysbench cpu --threads=4 --time=30 run # Memory benchmark sysbench memory --threads=4 --time=30 run # Full test script — saves results for comparison echo "=== STOCK BENCHMARK ===" > ~/oc-bench.txt echo "Date: $(date)" >> ~/oc-bench.txt sysbench cpu --threads=4 --time=30 run >> ~/oc-bench.txt echo "" >> ~/oc-bench.txt echo "Temp: $(cat /sys/class/thermal/thermal_zone0/temp)" >> ~/oc-bench.txt cat ~/oc-bench.txt
If it crashes or freezes
✓ Stable OC checklist: 30 minutes of stress-ng without crash, temps staying below 80°C, no throttle flags (0x0), and sysbench scores consistent across multiple runs.
Battery life impact.
More MHz = more watts = less runtime
Overclocking increases power consumption. Higher clock speeds need more voltage, and power scales roughly with the square of voltage — so each voltage step costs more battery than the last. Here's the real-world impact on the uConsole's dual 18650 battery pack:
The key insight: force_turbo=1 is the biggest battery killer. It disables dynamic frequency scaling, so the CPU runs at max clocks even when idle. Without it, the CPU drops to 600 MHz when idle — saving significant power.
Best of both worlds: on-demand governor
Keep your overclock settings but use the ondemand governor (the default). This gives you full OC speeds under load and minimum power at idle. Avoid performance governor unless you're benchmarking.
# Check current governor cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor # Switch to ondemand (balanced — recommended) echo ondemand | sudo tee /sys/devices/system/cpu/cpu*/cpufreq/scaling_governor # Switch to performance (max speed, max power) echo performance | sudo tee /sys/devices/system/cpu/cpu*/cpufreq/scaling_governor # Switch to powersave (battery saver, ignores OC) echo powersave | sudo tee /sys/devices/system/cpu/cpu*/cpufreq/scaling_governor # Make ondemand persist across reboots (add to rc.local) echo 'echo ondemand | tee /sys/devices/system/cpu/cpu*/cpufreq/scaling_governor' | sudo tee -a /etc/rc.local
💡 Pro tip: For the best balance, use the safe OC profile with ondemand governor. You get ~80% of the performance boost with only ~20% battery penalty. Our Toolkit includes an automatic governor switcher that toggles based on AC/battery state.
Safe vs aggressive profiles.
Copy-paste configs for both approaches
Here are the two profiles we recommend. Start with Safe, run it for 24 hours of normal use, then consider Aggressive only if you have a heatsink installed.
[all] # ─── Pocket Forge SAFE Overclock ─── # Tested stable on 90%+ of CM4 units # ~20% performance gain, minimal risk arm_freq=1800 gpu_freq=600 over_voltage=2 # Thermal guardrails temp_soft_limit=70 # Dynamic clocking (saves battery when idle) arm_freq_min=600 # force_turbo=0 (default, don't set to 1)
[all] # ─── Pocket Forge AGGRESSIVE Overclock ─── # ⚠ Requires heatsink! Test thoroughly! # ~40% performance gain, higher risk arm_freq=2100 gpu_freq=750 over_voltage=6 # Higher thermal ceiling temp_soft_limit=80 # Lock at max frequency (kills battery life) force_turbo=1 # GPU memory split (more for GPU-heavy tasks) gpu_mem=256
| Metric | Stock | Safe | Aggressive |
|---|---|---|---|
| CPU Frequency | 1500 MHz | 1800 MHz | 2100 MHz |
| GPU Frequency | 500 MHz | 600 MHz | 750 MHz |
| Voltage Offset | +0.000V | +0.050V | +0.150V |
| Performance Δ | Baseline | +20% | +41% |
| Idle Temp | ~45°C | ~50°C | ~55°C |
| Load Temp | ~60°C | ~72°C | ~82°C |
| Battery Life | ~3.5h | ~2.8h | ~2.0h |
| Heatsink Required? | No | Recommended | Yes |
| Stability Risk | None | Low | Moderate |
Community recommendation: Start with the Safe profile. Run it for 24 hours of normal use. If it's stable and temps are acceptable, test the Aggressive profile with a heatsink installed. Never jump straight to Aggressive without a heatsink.
Get the Toolkit with optimized overclock
profiles pre-configured.
The Pocket Forge Toolkit includes pre-tested overclock profiles for both Safe and Aggressive modes, automatic thermal monitoring with throttle alerts, a governor auto-switcher for AC/battery, and every optimization from all our guides. Flash and go in 15 minutes.
More guides are coming.
We're writing guides on i3 desktop setup, QMK keyboard firmware, GPIO projects, and more. Join the waitlist to get notified when they drop — plus early access to new tools.
Also check out our WiFi Fix Guide and Battery Life Guide
Your email is stored securely and used only for Pocket Forge updates. Unsubscribe anytime.