QUAC 100 Quick Start Guide

QUAC100-QSG-001 Rev 1.0 — January 2026

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.

ActionDetails
Open the chassisRemove 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 bracketRemove the blank bracket(s) from the chosen slot position.
Insert the cardAlign 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 powerConnect two 8-pin PCIe auxiliary power cables from the PSU to the card's power connectors. Required for 190W TDP operation.
Secure the bracketFasten 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