QUAC 100 Quick Start Guide
Get your QUAC 100 accelerator operational in approximately 15 minutes. This guide covers hardware installation, driver setup, and executing your first post-quantum cryptographic operation.
Prerequisites: A server or workstation with an available PCIe Gen3 x16 or Gen4 x16 slot (Gen5 x8x8 recommended), two 8-pin auxiliary power connectors (190W TDP), and Linux (kernel 5.10+) or Windows 10/11/Server 2019+.
Step 1: Hardware Installation #
Power down the host system and disconnect all power cables. Follow proper ESD procedures — use a grounded wrist strap when handling the card.
| Action | Details |
|---|---|
| Open the chassis | Remove the side panel and locate an available PCIe x16 slot. The QUAC 100 requires a dual-width slot (two slot widths for heatsink clearance). |
| Remove the slot bracket | Remove the blank bracket(s) from the chosen slot position. |
| Insert the card | Align the QUAC 100 edge connector with the PCIe x16 slot. Press firmly and evenly until the retention clip engages. Card dimensions: 267mm × 111mm, weight ~500g. |
| Connect auxiliary power | Connect two 8-pin PCIe auxiliary power cables from the PSU to the card's power connectors. Required for 190W TDP operation. |
| Secure the bracket | Fasten the PCIe bracket screw to secure the card in the chassis. |
Warning: The QUAC 100 draws up to 200W (170W typical). Ensure your PSU provides sufficient 12V rail capacity. Minimum PSU recommendation: 750W for single-card, 1200W for dual-card configurations.
Step 2: Driver Installation #
Linux
# Extract and install the kernel module
tar xzf quac100-driver-1.0.0-linux.tar.gz
cd quac100-driver-1.0.0/
sudo ./install.sh
# Verify the device is detected
lspci | grep -i dyber
# Expected: XX:00.0 Processing accelerator: Dyber Inc. QUAC 100
# Check driver loaded
lsmod | grep quac100
# Expected: quac100 524288 0
# Verify device node
ls -la /dev/quac*
# Expected: /dev/quac0
Windows
# Run the installer (requires Administrator)
quac100-driver-1.0.0-win64.msi
# Verify in Device Manager:
# → Processing accelerators → Dyber QUAC 100
# Or via PowerShell:
Get-PnpDevice -FriendlyName "*QUAC*"
# Status: OK
Step 3: Install the QuantaCore SDK #
# Linux
tar xzf quantacore-sdk-1.0.0-linux-x86_64.tar.gz
cd quantacore-sdk-1.0.0/
sudo ./install.sh # Installs to /opt/dyber/quantacore/
source /opt/dyber/quantacore/env.sh
# Verify installation
quac-info
# â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•
# Dyber QUAC 100 — Device Information
# â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•
# Device: /dev/quac0
# Serial: QUAC-2026-00001
# Firmware: 1.2.0 (Build 12345)
# Driver: 1.0.0
# PCIe Link: Gen4 x16 (252.0 GT/s aggregate)
# Temperature: 42°C
# Power: 85W (idle)
# Status: OPERATIONAL
Step 4: Your First ML-KEM Key Exchange #
C Example
#include <quac100.h>
#include <stdio.h>
int main() {
/* Initialize the SDK */
quac_result_t rc = quac_init();
if (rc != QUAC_SUCCESS) { fprintf(stderr, "Init failed: %d\n", rc); return 1; }
/* Open the first device */
quac_device_t dev;
rc = quac_open(0, &dev);
if (rc != QUAC_SUCCESS) { fprintf(stderr, "Open failed: %d\n", rc); return 1; }
/* Generate ML-KEM-768 keypair */
quac_key_t keypair;
rc = quac_kem_keygen(dev, QUAC_ALG_KYBER_768, &keypair);
printf("KeyGen: %s\n", rc == QUAC_SUCCESS ? "OK" : "FAILED");
/* Encapsulate — produces ciphertext + shared secret */
uint8_t ciphertext[1088], shared_secret_a[32];
size_t ct_len = sizeof(ciphertext), ss_len = sizeof(shared_secret_a);
rc = quac_kem_encaps(keypair, ciphertext, &ct_len, shared_secret_a, &ss_len);
printf("Encaps: %s (ct=%zu bytes, ss=%zu bytes)\n",
rc == QUAC_SUCCESS ? "OK" : "FAILED", ct_len, ss_len);
/* Decapsulate — recovers the same shared secret */
uint8_t shared_secret_b[32];
size_t ss_b_len = sizeof(shared_secret_b);
rc = quac_kem_decaps(keypair, ciphertext, ct_len, shared_secret_b, &ss_b_len);
printf("Decaps: %s\n", rc == QUAC_SUCCESS ? "OK" : "FAILED");
/* Verify shared secrets match */
if (memcmp(shared_secret_a, shared_secret_b, 32) == 0)
printf("✓ Shared secrets match — quantum-resistant key exchange complete!\n");
quac_destroy_key(keypair);
quac_close(dev);
quac_shutdown();
return 0;
}
# Compile and run
gcc -o kem_test kem_test.c -lquac100 -I/opt/dyber/quantacore/include -L/opt/dyber/quantacore/lib
./kem_test
Python Example
import quantacore
# Initialize and open device
quantacore.init()
dev = quantacore.open(0)
# Generate ML-KEM-768 keypair
keypair = dev.kem_keygen(quantacore.ALG_KYBER_768)
# Encapsulate
ciphertext, shared_secret_a = dev.kem_encaps(keypair)
# Decapsulate
shared_secret_b = dev.kem_decaps(keypair, ciphertext)
assert shared_secret_a == shared_secret_b
print("✓ Quantum-resistant key exchange complete!")
print(f" Shared secret: {shared_secret_a[:8].hex()}...")
dev.close()
quantacore.shutdown()
Step 5: Verify Performance #
Run the built-in benchmark tool to confirm your card is performing within specification:
$ quac-bench --all
Dyber QUAC 100 Performance Benchmark v1.0.0
â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•
Device: /dev/quac0 (FW 1.2.0)
PCIe Link: Gen4 x16
ML-KEM-768:
KeyGen: 523,000 ops/sec (1.91 μs avg)
Encaps: 814,000 ops/sec (1.23 μs avg)
Decaps: 798,000 ops/sec (1.25 μs avg)
ML-DSA-65 (Dilithium-3):
Sign: 215,000 ops/sec (4.65 μs avg)
Verify: 512,000 ops/sec (1.95 μs avg)
QRNG:
Throughput: 112 MB/sec
Entropy: PASS (NIST SP 800-90B)
Self-Test: PASS (all algorithms)
â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•
Status: ALL BENCHMARKS WITHIN SPECIFICATION
Next Steps #
Installation Guide
Detailed installation with advanced configuration options
Developer Guide
OpenSSL provider, PKCS#11, multi-tenant deployment
API Reference
Full function reference for all language bindings
Hardware Architecture
Detailed hardware specs and block diagrams
Was this page helpful? Send feedback to docs@dyber.org