Windows GPU-P + Apollo / Artemis Headless

Windows GPU-P + Apollo / Artemis Headless

Nicolas Schmid Lv3

Virtualisation GPU-P sous Hyper-V avec Streaming Moonlight / Artemis

Bonjour !
Ce blog documente la procédure à suivre pour créer une machine virtuelle Windows 11 sous Hyper-V utilisant une partition de la carte graphique de l’hôte et accessible à distance via Moonlight (son fork, Artemis).


Setup physique

Mon ordinateur a ces composants qui seront partagés dans les différentes machines virtuelles :

  • Intel Core i7-7700 Overclocké
  • 64 GB RAM DDR4 + XMP
  • NVIDIA GeForce RTX 5060 Ti OC 16 G
  • NVIDIA GeForce GTX 1660 SUPER OC 6 G
  • 5 TB NVMe

Liens utiles


Prérequis

  • Une carte graphique (dans mon cas NVIDIA) supportant le hardware encoding.

    Je recommande une GPU au moins des séries 1000 de NVIDIA.
    NVIDIA limite le nombre de sessions concurrentes sur leurs GPU.
    Cette matrice indique toutes les compatibilités d’encodage et de décodage NVIDIA.

  • Un ISO d’installation de Windows 11 (aussi compatible avec Windows 10).

  • Une machine hôte Windows 10 / 11.

    Windows 11 est recommandé, car il permet de choisir quelle GPU sera partitionnée dans un setup multi-GPU, contrairement à Windows 10.
    Hyper-V doit être activé complètement.

  • Droits d’administrateur sur la machine hôte.


Création de la VM

Étapes à suivre pour créer une VM avec GPU partitionnée.
Ces scripts doivent être ouverts dans PowerShell ISE (en administrateur).


Script de vérification

Le script PreChecks.ps1 permet de vérifier que la machine est compatible GPU-P.
Il devrait retourner la liste des GPU compatibles (copier les noms pour plus tard) :

1
2
3
4
5
6
System Compatible
Printing a list of compatible GPUs...May take a second
Copy the name of the GPU you want to share...
NVIDIA GeForce GTX 1660 SUPER
NVIDIA GeForce RTX 5060 Ti
Press Enter to Exit:

Script de création de VM et partitionnement

Le script CopyFilesToVM.ps1 automatise :

  • la création de la VM,
  • le partitionnement GPU,
  • et l’installation des pilotes NVIDIA dans la VM.

Avant l’exécution, modifier la section $params selon vos besoins :

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
$params = @{
VMName = "VMGAME01" # Nom de la VM
SourcePath = "D:\Programm\VM\Windows11_22h2_English_x64.iso" # Fichier d'installation valide
Edition = 6 # 6 = Windows 11 Pro
VhdFormat = "VHDX"
DiskLayout = "UEFI"
SizeBytes = 40GB
MemoryAmount = 8GB
CPUCores = 4
NetworkSwitch = "Default Switch"
VHDPath = "D:\Programm\VM\VM_GAME_DISK\" # Emplacement du disque de la VM
UnattendPath = "$PSScriptRoot"+"\autounattend.xml"
GPUName = "NVIDIA GeForce GTX 1660 SUPER" # Windows 11 : nom de la GPU | Windows 10 : AUTO
GPUResourceAllocationPercentage = 50
Team_ID = ""
Key = ""
Username = "User" # Identifiants Windows
Password = "Pa$$w0rd"
Autologon = "true"
}

Une fois le script exécuté, il suffit de se connecter à la VM via Hyper-V,
puis de vérifier dans le Gestionnaire des tâches ou le Gestionnaire de périphériques que la GPU apparaît bien :

GPU-P Nvidia GTX 1660 SUPER dans la VM


Mise à jour des pilotes

Les pilotes NVIDIA de l’hôte et de la VM doivent correspondre exactement.
Le script Update-VMGpuPartitionDriver.ps1 permet de synchroniser les pilotes de la machine physique avec ceux de la VM.

À exécuter obligatoirement lors de chaque mise à jour des pilotes sur le host.


Connexion à distance via Apollo / Artemis

Ces deux logiciels demandent une configuration spécifique, mais permettent une connexion à distance à très faible latence.
Mis à part un léger ping, la différence avec un bureau local est minime.

L’objectif final est de désactiver totalement les affichages Hyper-V et RDP, pour n’utiliser qu’Artemis comme interface distante principale.


Autologon

L’outil Autologon (lien plus haut) permet de configurer l’ouverture automatique d’une session utilisateur au démarrage de Windows.
Cela évite d’avoir à se connecter manuellement via Hyper-V.

Lors de l’exécution d’Autologon, entrer les identifiants de l’utilisateur de la VM :

Autologin

Cliquer sur Enable, puis redémarrer la machine.
La session s’ouvrira automatiquement au prochain démarrage.


Configuration d’Apollo

Télécharger le dernier installateur depuis le dépôt GitHub.
Apollo est le serveur de streaming pour Artemis.
Lors de l’installation, cocher toutes les options proposées.

Une fois installé, ouvrir le dossier suivant :

1
C:\Program Files\Apollo\scripts

Exécuter en administrateur les scripts suivants, dans cet ordre :

  • add-firewall-rule.bat

Ensuite, désactiver le service Apollo car il s’exécute sous un mauvais utilisateur et au mauvais moment.
Dans le Service Manager, mettre le service en mode Manual et le stopper.


Tâche planifiée pour Apollo

Créer une tâche planifiée dans le Task Scheduler pour démarrer Apollo automatiquement à l’ouverture de session :

  • Name : Start Apollo Server

  • Description : Démarrage interactif du serveur Apollo pour la connexion via Artemis

  • User : User (le compte Windows de la VM)

  • Run only when user is logged on : coché

  • Run with highest privilege : coché

  • Configure for : Windows 10 (ou version la plus récente)

  • Trigger : At log on of Any User

  • Action : Start a program → "C:\Program Files\Apollo\sunshine.exe"

  • Condition : décocher Start only if the computer is on AC power

  • Settings :

    • Cocher Allow task to be run on demand
    • Cocher Run task as soon as possible after a scheduled start is missed
    • Cocher If the task fails, restart every 1 minute (attempt 100 times)
    • Décocher Stop the task if it runs longer than…

Configuration dans l’interface web Apollo

Depuis le navigateur, accéder à :
https://localhost:47990

  1. Connecter le client Artemis en sélectionnant le bon serveur.
  2. Entrer le PIN affiché dans Apollo pour appairer les deux.
  3. La machine devrait apparaître comme ceci :

Artemis Paired


Paramètres essentiels

Activer impérativement l’option Always Create Virtual Display, sinon Apollo risque d’utiliser l’écran virtuel Hyper-V de mauvaise qualité :

Paramètres Apollo

Paramètres recommandés :

  • General → Server Name : GPU01
  • Audio / Video → Headless Mode : coché (important)

Dupliquer la VM

Si la machine virtuelle contenant le serveur Apollo est dupliquée, il faut regénérer les fichiers cryptographiques et de status d’application pour regénérer une nouvelle identité. Simplement effacer les fichiers:

  • Apollo\config\credentials\*
  • Apollo\config\sunshine_state.json

Ensuite redémarrer la VM et l’identité sera toute neuve !


Note sur les écrans physiques

J’ai constaté certains problèmes lorsque aucun écran n’était connecté à la carte graphique physique, même si elle est utilisée dans une VM.
Pour cette raison, je garde un écran branché sur la GPU, ce qui permet au décodeur NVIDIA de fonctionner correctement.

Redémarrer ensuite la machine : la connexion à Apollo via Artemis devrait se faire sans aucun problème.

  • Title: Windows GPU-P + Apollo / Artemis Headless
  • Author: Nicolas Schmid
  • Created at : 27.10.2025 22:34:00
  • Updated at : 28.10.2025 11:13:56
  • Link: https://doc.spacesdata.net/2025/10/27/Windows-GPU-P/
  • License: This work is licensed under CC BY-NC-SA 4.0.