The hardware

Everything here runs on one laptop: a 2019 ThinkPad with a small NVIDIA GPU. It is enough for small local models, speech-to-text and light vision work, and not for much more. This page records what the machine has, where it runs out, and what we could do about it, from free settings to soldering-iron territory. It is a proposal; nothing below has been applied.

What's in the box

Read from the machine itself on 2026-10-09 with read-only tools (lscpu, free, nvidia-smi, lsblk, lspci, DMI and sysfs).

ModelLenovo ThinkPad X1 Extreme Gen 2 (type 20QV)
CPUIntel Core i9-9880H, 8 cores / 16 threads, 2.3–4.8 GHz, 16 MB L3, AVX2 and FMA (no AVX-512)
Memory32 GB DDR4-2666 in two SO-DIMM slots; 8 GB swap
GPUNVIDIA GeForce GTX 1650 with Max-Q (TU117, Turing), 4 GB GDDR5, 35 W power cap, PCIe 3.0 x16; driver 595.99, CUDA 13.2. Intel UHD 630 alongside.
Storage1 TB Samsung PM981 NVMe (PCIe 3.0 x4), 851 GB free; one of two M.2 slots used
PortsTwo Thunderbolt 3 ports (Intel Titan Ridge, 40 Gbit/s), Wi-Fi 6 (AX200)
FirmwareUEFI BIOS N2OET57W (1.44, 2022-08-08); Secure Boot off; GPU vBIOS 90.17.31.00.26
PowerBattery at 97% of design (77.6 of 80.4 Wh, 20 cycles). This model normally ships with a 135 W slim-tip adapter; the brick's rating can't be read from software, so check the label.
OSUbuntu 26.04.1 LTS, kernel 7.0

At the time of reading, Ollama held 2.6 GB of the GPU's 4 GB, with small models installed: qwen3:4b, qwen3-vl:2b, qwen2.5vl:3b and moondream.

Where it runs out

Video memory is the wall

4 GB of VRAM holds a 3–4B model at 4-bit quantization with a modest context, or a small vision model, and not much else at the same time. A 7–8B model at Q4 (about 4.5–5 GB with its cache) doesn't fit, so Ollama splits it between GPU and CPU, and speed drops to roughly CPU speed. Running a chat model and Whisper together means they take turns.

Bandwidth sets the speed

Generating text is mostly reading weights from memory. The GPU reads at about 112 GB/s (inferred from the 3501 MHz memory clock nvidia-smi reports) and system RAM at about 43 GB/s (dual-channel DDR4-2666). So a model that fits on the GPU runs roughly 2–3× faster than the same model on the CPU, and larger models get slower in proportion to their size.

Turing without tensor cores

The TU117 chip has no tensor cores, so it gets none of the speedups newer cards get for FP16, INT8 or FP8 math. Prompt processing and Whisper encoding are slower than the card's age suggests. Turing is still supported by CUDA 13, but older generations were dropped in that release; Turing is plausibly next, which would freeze us on an old driver branch.

Heat and a 35 W cap

The GPU is a Max-Q part capped at 35 W and shares one cooling system with a 45 W CPU in a thin chassis. Long jobs (a batch of transcriptions, an overnight eval) heat-soak it and clocks fall. This laptop is also known for firmware throttling that works poorly on Linux (see the ArchWiki page).

Nothing on the board can be upgraded except RAM and SSD

The CPU and GPU are soldered. The only internal upgrades are the two RAM slots and the second M.2 slot.

Proposals

Ordered from free and safe to expensive or dangerous. Each is labelled: safe no risk to the hardware; care reversible, but can cause instability or void a warranty; risky can brick the machine or damage parts.

safe Squeeze more out of 4 GB

Settings, not hardware. These are the first thing to try.

# in the Ollama service environment
OLLAMA_FLASH_ATTENTION=1      # less memory for attention
OLLAMA_KV_CACHE_TYPE=q8_0     # halves the context cache, small quality cost
OLLAMA_MAX_LOADED_MODELS=1    # don't keep two models fighting for VRAM
OLLAMA_KEEP_ALIVE=10m         # free VRAM when idle

Use Q4_K_M quantizations, keep context windows only as long as the task needs, and pick models sized for the card: 3–4B for chat and tools, 2–3B for vision. For speech, run whisper.cpp with CUDA or faster-whisper with INT8 weights; large-v3-turbo or small fit alongside nothing else, base fits alongside a small model. Keep the desktop on the Intel GPU (it already is; GNOME uses 1 MB of the NVIDIA card) so all 4 GB stay free for models.

For anything bigger, route to a hosted provider through the model adapter (see Own your stack) rather than forcing it onto this card.

safe Update the BIOS through LVFS

We're on 1.44 from 2022. Check for a newer release with fwupdmgr get-updates and apply it with fwupd, on AC power. Lenovo's own BIOS updates have changed this model's thermal behaviour before; a reviewer found BIOS 1.26 made it noticeably faster. Read the release notes first: some Lenovo updates also lock undervolting.

safe RAM to 64 GB (about $100–150)

Two 32 GB DDR4-2666 (or 3200, which runs at 2666) SO-DIMMs. Lenovo lists 64 GB as the maximum (PSREF). It won't make anything faster, but it lets the CPU run models the GPU can't hold at all (a 30B mixture-of-experts model at Q4, or a 14B dense one), slowly, and keeps several services resident without swapping.

safe A second NVMe drive (about $60–120)

The empty M.2 2280 slot takes a PCIe 3.0 x4 drive. Put model weights and datasets there so the system disk stays clean. Low priority with 851 GB free; useful once we keep many model sizes around.

care Cooling and power

Raise the laptop for airflow or use a cooling pad, clean the fans, and keep the 135 W adapter plugged in for long jobs (USB-C chargers top out at 100 W and the machine throttles on them). Re-pasting the CPU and GPU with fresh thermal paste or a phase-change pad (such as Honeywell PTM7950) often cuts sustained temperatures by several degrees; it means opening the heatsink, which is reversible but fiddly.

care Linux throttling fixes

The throttled daemon resets the power limits the firmware lowers on Linux, and thermald with the right DPTF profile can help. Run only one power manager at a time. Writing CPU model-specific registers works here because Secure Boot is off; turning Secure Boot back on will block it. If the machine overheats or behaves oddly, stop the service and it returns to stock on reboot.

care Mild GPU memory overclock

With Coolbits enabled in the X11 NVIDIA settings, the memory clock can be raised a little, which helps token generation since that is bandwidth-bound. Gains are a few percent and Max-Q parts have little headroom. It resets on reboot; artefacts or crashes mean back off. Laptop power limits can't be raised with nvidia-smi -pl.

care External GPU over Thunderbolt 3 (about $500–1,100)

The biggest real upgrade available. An enclosure (Razer Core X class, around $250–350 used) with a 16 GB card (RTX 5060 Ti or 4060 Ti 16 GB) or a used 24 GB RTX 3090 would let us run 14–32B models and Whisper together. The link is PCIe 3.0 x4 (about 4 GB/s), which slows model loading but barely affects generation once weights are in VRAM. On Linux it needs the Thunderbolt device authorized (boltctl) and Ollama pointed at the right card with CUDA_VISIBLE_DEVICES. The ArchWiki lists this laptop's Thunderbolt controller as untested on Linux, so try it with a borrowed enclosure or a returnable one first, on the latest BIOS. A 3090 also needs a 650 W+ enclosure supply.

safe A second machine instead (about $600–2,000)

Worth weighing against the eGPU: a small desktop or used workstation with a 16–24 GB card, or a mini PC with a large shared-memory APU, added as another host in the observability registry. It frees the laptop to be a laptop, scales by adding processes rather than squeezing one box, and our adapters already let an app point at a model server by URL.

safe 5G as a backup uplink (about $150–400)

This model has no cellular option: Lenovo lists WWAN as "No support" and there is no SIM tray, slot or antenna inside (PSREF). Add it outside the case instead. Best is a small 5G router plugged in over Ethernet: its antennas can sit by a window, it fails over automatically, and anything else on the desk can share it. Simpler is a USB 5G modem, or an M.2 5G module (such as a Quectel RM520N) in a USB enclosure, which Linux drives through ModemManager. Either keeps ngrok and the site reachable when home broadband drops. Putting a 5G module in the spare SSD slot with an M-key to B-key adapter is a risky hack: no SIM or antennas, poor fit, and it gives up the second drive.

Firmware mods we don't recommend

These come up in forums. They are listed so we know why we're not doing them. None should be tried on the only machine that runs the site.

risky Unlocking undervolting in BIOS variables

Lenovo locked CPU undervolting in later BIOS releases as a fix for the Plundervolt security issue. People re-enable it by changing hidden UEFI setup variables (the "overclocking lock" or CFG lock) from an EFI shell. A wrong offset or variable can leave the machine unable to boot, recovery may need an SPI flash programmer, and it reopens the vulnerability the lock closed. Owners of this model also report unstable power limits after undervolting. The gain for AI work is small since the GPU does the heavy lifting.

risky Flashing a modified BIOS

ThinkPads of this generation use Intel Boot Guard, so a BIOS image that isn't Lenovo-signed won't boot. Writing one with an external programmer is the usual way to brick the board. Don't.

risky Cross-flashing the GPU vBIOS for a higher power limit

Mobile NVIDIA vBIOSes are signed and tied to the laptop's power delivery and cooling. Flashing a higher-wattage GTX 1650 vBIOS either fails the signature check or runs the GPU past what the shared heatsink and the 135 W adapter were built for. A failed flash leaves the soldered GPU dead.

risky VRAM chip swap

Repair shops have doubled VRAM on some NVIDIA cards by soldering larger memory chips and changing straps. TU117 mobile parts have no known working 8 GB configuration, it needs BGA rework equipment, and a mistake kills the mainboard. Listed only because it gets asked.

Recommendation

Apply the free Ollama settings and the BIOS update now. Add 64 GB of RAM if CPU-side models become useful. For real headroom, choose between an eGPU (cheaper, tied to this laptop) and a second machine (more money, cleaner long term); the second machine fits twelve-factor and own your stack better. Leave the firmware alone.


Provided as is, for information only, with no warranty and no liability. Not legal or professional advice. Security and radio material is for authorized, lawful use only. Full disclaimer.

Visits are logged on our own server: IP address, browser and device details, and pages viewed. We use them to understand traffic and spot attacks, and never share or sell them.