Complete Technical Guide: Flashing CMP 170HX & Unlocking 64 GB HBM2e on Ubuntu 22.04 LTS

Kompletny przewodnik techniczny: flashowanie CMP 170HX i odblokowanie 64 GB HBM2e na Ubuntu 22.04 LTS

# Kompletny przewodnik techniczny: flashowanie CMP 170HX & odblokowanie 64 GB HBM2e w Ubuntu 22.04 LTS

Ten przewodnik przeprowadza przez pełną procedurę obejścia fabrycznych ograniczeń OTP w karcie **NVIDIA CMP 170HX** (architektura GA100, Device ID `10de:20c2` / `10de:20b0`) przy użyciu **`CMPUnlocker`**. Przywraca ona wyłączone multiprocesory strumieniowe (SM) i odblokowuje uśpioną geometrię pamięci HBM2e (rozszerzając modele 8 GB do 64 GB VRAM).

---

## Wymagania techniczne i systemowe

Przed rozpoczęciem należy upewnić się, że serwer hosta spełnia następujące kryteria:

* **System operacyjny:** Ubuntu 22.04 LTS lub 24.04 LTS (x86_64).
* **Docelowy sterownik:** pakiet sterowników NVIDIA Open GPU Kernel Modules (gałąź v580.x).
* **Uprawnienia systemowe:** dostęp root / `sudo`.
* **Chłodzenie sprzętu:** wymuszony przepływ powietrza o wysokim ciśnieniu statycznym (wentylatory 4 000+ RPM w obudowie rack 4U), aby zapobiec wyłączeniu termicznemu na pasywnych radiatorach.

---

### Krok 1: audyt systemu i instalacja zależności
Najpierw należy potwierdzić, że karta jest wykrywana na magistrali PCIe, oraz zainstalować środowisko deweloperskie Pythona 3 i parser YAML wymagane przez skrypt odblokowujący.

```bash
# 1. Sprawdzenie obecności GA100 / CMP 170HX na magistrali PCI
lspci -nn | grep -i nvidia
# Oczekiwany wynik powinien pokazać Device ID 10de:20c2 lub 10de:20b0

# 2. Aktualizacja indeksów repozytoriów i instalacja zależności systemowych
sudo apt update && sudo apt install -y \
build-essential \
python3 \
python3-pip \
python3-yaml \
git \
pciutils \
wget

3. Weryfikacja instalacji PyYAML
python3 -c "import yaml; print(yaml.__version__)"


Krok 2: instalacja otwartoźródłowych sterowników jądra NVIDIA (gałąź 580.x)

CMPUnlocker opiera się na konkretnych nadpisaniach rejestrów w firmware NVIDIA GSP (GPU System Processor) ładowanym przez serię sterowników nvidia-open 580.

# 1. Dodanie oficjalnego PPA Graphics Drivers
sudo add-apt-repository ppa:graphics-drivers/ppa -y
sudo apt update

# 2. Instalacja sterownika GPU z otwartym jądrem i narzędzi CUDA
sudo apt install -y nvidia-driver-580-open nvidia-utils-580

# 3. Zablokowanie automatycznych aktualizacji, które psują moduły jądra
sudo apt-mark hold nvidia-driver-580-open

4. Weryfikacja obecności firmware GSP
ls -la /lib/firmware/nvidia/580.*/gsp_tu10x.bin

Krok 3: kopia zapasowa fabrycznego firmware GSP

Przed uruchomieniem łatki odblokowującej należy zawsze wykonać kopię zapasową niezmodyfikowanego pliku binarnego firmware (gsp_tu10x.bin).

# Ustalenie dokładnej ścieżki katalogu sterownika
GSP_DIR=$(dirname$(ls /lib/firmware/nvidia/580.*/gsp_tu10x.bin | head -n1))

Utworzenie trwałej kopii fabrycznej
sudo cp "${GSP_DIR}/gsp_tu10x.bin" "${GSP_DIR}/gsp_tu10x.bin.stock"
echo "Backup saved to ${GSP_DIR}/gsp_tu10x.bin.stock"

Krok 4: klonowanie CMPUnlocker i wybór profilu VRAM

Należy sklonować repozytorium źródłowe i ustawić docelową geometrię pamięci na unlocked_64gb dla wariantów z 8 GB fizycznej pamięci.

# 1. Klonowanie repozytorium do lokalnego katalogu roboczego
cd /opt
sudo git clone [https://github.com/amoghmunikote/cmpunlocker.git](https://github.com/amoghmunikote/cmpunlocker.git)
cd cmpunlocker

# 2. Sprawdzenie ustawień profilu w konfiguracji constants
# Dla kart z 8 GB fizycznej pamięci celujących w 64 GB VRAM:
sudo ./install.sh --profile=8gb

# (Uwaga: dla rzadkich rewizji 10 GB celujących w 40 GB/80 GB należy użyć --profile=10gb)

Krok 5: wykonanie zimnego restartu zasilania

W odróżnieniu od zwykłego przeładowania sterownika, pierwsze odblokowanie rejestru WPR2 i wyczyszczenie stanu kondensatorów SEC2 wymagają pełnego zimnego startu. Ciepłe, programowe restarty spowodują, że ładunek odblokowujący zawiedzie przy pierwszym uruchomieniu.

# 1. Całkowite wyłączenie systemu
sudo poweroff

Uwaga eksploatacyjna: po wyłączeniu serwera należy fizycznie odłączyć kable zasilania AC na 60 sekund, aby całkowicie rozładować napięcie standby z kondensatorów płyty głównej i karty GPU. Następnie podłączyć zasilanie ponownie i uruchomić Ubuntu.

Krok 6: uruchomienie procesu odblokowania i włączenie demona systemd

Ponieważ modyfikacje rejestrów nie przetrwają natywnie głębokich cykli zasilania, usługa działająca w tle CMPUnlocker monitoruje rejestry i automatycznie ponownie nakłada łatkę przy starcie oraz po przeładowaniu sterownika.

cd /opt/cmpunlocker

# 1. Uruchomienie skryptu instalacyjnego odblokowania z uprawnieniami roota
sudo ./install.sh

# 2. Sprawdzenie statusu usługi systemd
sudo systemctl status cmpunlocker.service

# 3. Podgląd logów demona w celu potwierdzenia nałożenia łatki
journalctl -u cmpunlocker -f -n 20

Krok 7: weryfikacja odblokowanej pamięci i stanu obliczeniowego

Należy odpytać nvidia-smi i uruchomić krótki skrypt inicjalizujący CUDA, aby potwierdzić pełną przepustowość obliczeniową i rozpoznanie VRAM.

# 1. Weryfikacja zdjęcia limitu zegara SM i raportowania VRAM
nvidia-smi --query-gpu=name,memory.total,clocks.max.sm --format=csv

# Oczekiwany wynik:
# name, memory.total [MiB], clocks.max.sm [MHz]
# NVIDIA Graphics Device, 65536 MiB, 1410 MHz

# 2. Uruchomienie testowego skryptu CUDA C-types w Pythonie
python3 -c "
import ctypes
cuda = ctypes.CDLL('libcuda.so.1')
init_res = cuda.cuInit(0)
print(f'CUDA Init Status: {init_res} (0 = SUCCESS)')
"

Rozwiązywanie problemów i tryby awarii

Problem / objaw Prawdopodobna przyczyna Działanie naprawcze
nvidia-smi nadal raportuje 8 GB VRAM Nadpisanie rejestru GSP-RM lub pominięty zimny restart. Należy wykonać rygorystyczne 60-sekundowe fizyczne rozładowanie zasilania. Trzeba też upewnić się, że gsp_patch.py poprawnie zaktualizował sh_size podczas konfiguracji.
GPU znika z magistrali PCIe / throttling termiczny Niewystarczający przepływ powietrza przez pasywny radiator. Należy zapewnić, aby wentylatory obudowy o wysokim CFM tłoczyły powietrze bezpośrednio wzdłuż żeber radiatora GPU. Przepływ powietrza w zwykłym desktopie jest niewystarczający.
Awaria jądra przy dużym obciążeniu LLM Defekt krzemu w odblokowanym stosie HBM2e. Należy ponownie uruchomić ./install.sh --profile=40gb (lub edytować constants.yaml), aby ograniczyć alokację VRAM do stabilnych 32 GB/40 GB.
Powrót do blogu