Comment corriger l'erreur « Unable to locate valid DTB »
Ce qu'est le Directory Table Base et pourquoi le lecteur doit le trouver. Puis les corrections de l'erreur DTB dans l'ordre : memory map, virtualisation, stabilité USB, démarrage à froid, et Windows propre en dernier.
Réponse courte
L'erreur DTB signifie que le lecteur a lu de la mémoire via votre carte mais n'y a pas trouvé le Directory Table Base du noyau Windows. Procédez dans l'ordre : générez un memory map, désactivez VT-d/VT-x ou SVM/IOMMU dans le BIOS du PC de jeu, prouvez la stabilité de l'USB, puis démarrez les deux machines à froid.
Sur cette page11
- Qu'est-ce que le Directory Table Base ?
- Pourquoi le lecteur a-t-il besoin du DTB ?
- Une erreur DTB veut-elle dire que la carte est morte ?
- Comment savoir quelle cause est la vôtre
- Comment corriger l'erreur DTB, étape par étape
- Quels réglages de BIOS changer, et sur quel PC
- Les options en ligne de commande derrière votre launcher
- Pourquoi saisir le DTB à la main n'est pas une solution
- Pourquoi la réinstallation de Windows vient en dernier
- Questions fréquentes sur l'erreur DTB
- Sources
Qu'est-ce que le Directory Table Base ?
Chaque processus d'une machine Windows voit son propre espace d'adressage virtuel privé. Traduire une adresse virtuelle en adresse physique dans la RAM demande une hiérarchie de tables de pages, dont la racine est une adresse physique par processus. Sur x86-64, le processeur garde cette adresse dans le registre CR3, et Windows la stocke pour chaque processus sous le nom DirectoryTableBase, que tout le monde abrège en DTB.
Pourquoi le lecteur a-t-il besoin du DTB ?
Votre carte lit la mémoire physique par PCIe, pas la mémoire virtuelle : elle voit donc la RAM comme un tableau d'octets plat, sans savoir quel processus possède quoi. Une fois connecté, le premier travail du lecteur est de parcourir ce tableau à la recherche d'une structure qui ressemble aux tables de pages du noyau. Il en récupère le DTB, puis traduit les adresses comme le ferait le processeur. Rien de ce qui vient après cette étape ne peut tourner tant qu'elle n'a pas réussi. C'est pourquoi un échec DTB bloque tout et apparaît comme une erreur d'initialisation plutôt que comme une erreur propre à un jeu.
Info
Une erreur DTB veut-elle dire que la carte est morte ?
Non, elle veut dire que la recherche a échoué. Le message prouve que l'USB a fonctionné, que le PCIe a fonctionné et que des octets sont revenus. Le balayage a ensuite lu les mauvais octets, des octets incomplets, ou des octets réorganisés avant d'arriver jusqu'à la carte. Chacune de ces situations a ses propres causes, et vous pouvez les distinguer.
Comment savoir quelle cause est la vôtre
Déterminez votre cause avant de commencer à changer des choses, car c'est la colonne de test qui les sépare vraiment.
| Ce que vous observez | Cause la plus probable | Le test qui le confirme |
|---|---|---|
| Échoue systématiquement, tout de suite, sur une machine qui n'a jamais fonctionné | Aucun memory map, et le lecteur s'aventure dans des plages qu'il ne doit pas toucher | Générez un memory map et passez-le au logiciel. Si l'erreur disparaît, c'était ça |
| Échoue à chaque fois, et le PC de jeu est une plateforme AMD ou la liaison passe par du Thunderbolt | Lire des adresses physiques invalides tue le chemin de lecture sur ces plateformes, donc le balayage ne se termine jamais | Un memory map y est de fait obligatoire. Testez avec le map avant de tester autre chose |
| Échoue à chaque fois sur une machine où la virtualisation est restée activée | VT-d/VT-x chez Intel ou SVM/IOMMU chez AMD remappe ou restreint ce que la carte peut voir | Désactivez-les dans le BIOS du PC de jeu, démarrez à froid, réessayez avec le même map |
| Fonctionne parfois, échoue parfois, sans motif que vous puissiez nommer | Liaison USB instable : des lectures partielles donnent un balayage qui ne trouve rien | Lancez deux fois un test de débit de lecture. Des chiffres très différents, ou un chiffre bas, sont votre réponse |
| A commencé à échouer le jour du flash du firmware et n'a jamais fonctionné depuis | L'image de firmware elle-même | Tout le reste de cette page est ressorti propre. Retournez voir le fournisseur du firmware avec la chaîne exacte |
| Fonctionnait hier, échoue aujourd'hui, sans que vous ayez rien changé | Une mise à jour Windows sur l'une des deux machines, ou une carte restée bloquée | Démarrez d'abord les deux machines complètement à froid, puis revérifiez la version du pilote sur le second PC |
Deux causes en même temps sont fréquentes sur une première configuration : pas de map, et virtualisation restée activée. Corrigez les deux avant de conclure que l'un des deux changements n'a rien donné.
Comment corriger l'erreur DTB, étape par étape
Les étapes commencent par la correction la moins coûteuse et la plus probable. Faites une étape et réessayez avant de passer à la suivante, car changer quatre choses à la fois ne vous apprend rien sur celle qui comptait.
- Générez un memory map sur cette machine, avec ce firmware, et indiquez-le au logiciel. C'est à elle seule la correction la plus efficace, et la plupart des premières configurations n'ont besoin de rien d'autre
- Entrez dans le BIOS du PC DE JEU et désactivez la virtualisation : VT-d et VT-x chez Intel, SVM Mode et IOMMU chez AMD. Enregistrez, quittez et laissez la machine démarrer une fois jusqu'au bureau
- Prouvez la liaison USB avec un câble de données, le port de données de la carte et un port USB 3 arrière du second PC, sans hub ni dock. Le chiffre du débit de lecture doit rester stable sur deux essais
- Démarrez les deux machines complètement à froid : éteignez-les entièrement, puis attendez dix secondes avec le câble secteur débranché ou l'interrupteur de l'alimentation sur arrêt. Allumez le PC de jeu en premier et le second PC ensuite
- Régénérez le memory map après tout changement de matériel : nouvelle RAM, barrette DIMM déplacée, autre slot pour la carte ou mise à jour du BIOS. Un map périmé décrit une disposition qui n'existe plus
- Seulement si toutes les étapes ci-dessus sont ressorties propres et que l'erreur n'a pas bougé, faites une installation propre de Windows sur le PC de jeu. C'est un dernier recours, jamais la première étape
Quels réglages de BIOS changer, et sur quel PC
Les réglages qui comptent sont dans le BIOS du PC DE JEU, pas dans celui du second PC. Sur les plateformes Intel, ils s'appellent VT-x et VT-d, parfois sous une rubrique Intel Virtualization Technology ; chez AMD, ce sont SVM Mode et IOMMU. Sur certaines cartes mères, des entrées voisines comme un interrupteur DMA protection ou Kernel DMA Protection se trouvent dans la même zone. Changez-les une par une et notez ce que vous avez changé, car un jour vous voudrez remettre cette machine dans son état normal. Si vous ne trouvez pas un réglage, cherchez son nom exact dans le manuel de la carte mère plutôt que d'errer dans les menus au hasard.
Les options en ligne de commande derrière votre launcher
La plupart des produits enveloppent ces options dans un launcher, et les connaître vous dit ce que fait réellement une case à cocher de votre logiciel. Toutes ces commandes sont des opérations d'inspection et de configuration.
REM Probe which physical memory ranges are readable, to build a map from
pcileech.exe probe -device fpga
REM Let the tool derive the memory map itself
MemProcFS.exe -device fpga -memmap auto
REM Or pass a map file you generated on this machine
MemProcFS.exe -device fpga -memmap mmap.txt
REM Verbose output, so the failing line is visible instead of guessed at
MemProcFS.exe -device fpga -memmap mmap.txt -v -printf
REM Diagnostic only: supply a known DTB by hand. The value changes every boot
MemProcFS.exe -device fpga -memmap mmap.txt -dtb 0x1ad000Attention
Pourquoi saisir le DTB à la main n'est pas une solution
Si une valeur de DTB que vous fournissez à la main fait disparaître l'erreur, vous avez appris quelque chose d'utile : le problème était le balayage, pas le chemin de lecture. Ce n'est pas pour autant une solution, car Windows choisit cette valeur au démarrage et elle sera différente au prochain redémarrage de l'une ou l'autre machine. Une configuration qui en dépend casse donc tous les jours. Servez-vous-en pour confirmer une hypothèse, puis corrigez le memory map ou le réglage de BIOS qui a fait échouer le balayage.
Attention
Pourquoi la réinstallation de Windows vient en dernier
Une installation propre vient en dernier parce qu'elle prend des heures, change beaucoup de variables à la fois et ne corrige aucune des causes fréquentes. Après elle, un memory map absent est toujours absent, un réglage de BIOS est toujours réglé, et un câble limite est toujours limite. Ne réinstallez que si le texte de l'erreur n'a toujours pas changé après avoir testé le map, le BIOS, le chemin USB et un vrai démarrage à froid.
Questions fréquentes sur l'erreur DTB
Le nombre qui suit l'erreur signifie-t-il quelque chose ?
Oui, car il identifie laquelle des tentatives de l'outil a échoué et restreint donc les causes. Indiquez-le toujours quand vous signalez l'erreur, copié en texte et non en capture d'écran.
Puis-je copier le memory map de quelqu'un qui a la même carte mère ?
Non. Un map décrit la disposition de la mémoire physique d'une machine à un instant donné, y compris la façon dont ses barrettes de RAM sont installées. Le map de quelqu'un d'autre est au mieux inutile, et au pire c'est lui qui fait échouer vos lectures.
Faut-il aussi désactiver la virtualisation sur le second PC ?
Non. Le réglage compte sur la machine dont on lit la mémoire, donc laissez le second PC tranquille, sauf si la documentation de votre propre logiciel dit le contraire.
Une erreur DTB est-elle un signe de détection ?
Non. C'est un échec d'initialisation du lecteur sur votre second PC, et la même erreur apparaît sur une machine où aucun jeu n'est installé.
Tout marche jusqu'à ce que je redémarre le PC de jeu, puis ça échoue de nouveau. Pourquoi ?
Ce schéma indique un memory map périmé, ou un DTB fourni à la main et repris du démarrage précédent. Régénérez le map et arrêtez de passer un DTB figé.
Sources
La liste ordonnée des corrections vient du banc d'essai : c'est l'ordre dans lequel l'équipe traite les tickets DTB, en commençant par l'étape la moins coûteuse.
- 01MemProcFS (Ulf Frisk)
l'outil qui affiche l'erreur DTB et qui accepte les options memmap et dtb présentées sur cette page
github.com
- 02PCILeech (Ulf Frisk)
l'outil de lecture de mémoire derrière la commande probe de cette page
github.com
- 03LeechCore (Ulf Frisk)
la bibliothèque dont les commandes de cette page reprennent les noms d'options
github.com
- 04RAMMap (Sysinternals)
comment les plages de mémoire physique sont disposées sur une machine Windows, ce qu'un memory map décrit justement
learn.microsoft.com
À lire ensuite
Toujours bloqué ? Ouvrir un ticket sur Discord
Tous les guides