Pubblicato un nuovo aggiornamento beta per XbDiag, lo strumento diagnostico open-source dedicato alla Xbox, sviluppato da Darkone83, che con la versione 1.0.7 punta a rendere l’analisi hardware molto più stabile, precisa e adatta anche alle configurazioni più delicate come le console softmoddate e le revisioni 1.6.

Uno dei problemi più critici risolti in questa release riguardava i blocchi completi durante la lettura dei dati di sistema su console modificate via software.

In queste situazioni, il controller SMBus poteva rimanere in uno stato instabile dopo alcune interruzioni dell’esecuzione, causando un ciclo infinito di attese senza timeout e portando di fatto al freeze dell’interfaccia.

La correzione introdotta è intervenuta direttamente a livello di gestione del bus, aggiungendo una routine di reset che ripulisce lo stato del controller prima di qualsiasi operazione di lettura, evitando così condizioni di stallo e rendendo il processo di diagnostica molto più affidabile.

Un’altra correzione importante riguarda i crash immediati che si verificavano sulle schede madri revisione 1.6. Il problema era legato a una lettura diretta di registri hardware della GPU NV2A, eseguita in un momento in cui il contesto grafico era già stato smantellato dal sistema.
Questa condizione portava a errori critici di tipo machine check. La soluzione è stata quella di rimuovere completamente quella lettura e semplificare la logica di identificazione della revisione hardware, trattando tutte le board 1.6 in modo uniforme e stabile.

Sistemato inoltre il comportamento del dump del BIOS, che in precedenza veniva salvato in percorsi non coerenti a seconda del punto di esecuzione dell’applicazione.
Ora l’esportazione avviene sempre in una posizione fissa, migliorando l’organizzazione dei file e riducendo possibili confusione durante l’analisi. Anche il layout del modulo di stress test RAM è stato corretto per evitare problemi di visualizzazione su televisori e schermi standard.

Accanto alle correzioni, l’aggiornamento introduce nuove funzionalità diagnostiche di livello avanzato. Il pannello Hardware Registers ora consente di monitorare in tempo reale diversi sottosistemi della console, tra cui bus IDE, interfacce di rete e controller SMBus, offrendo una visione molto più profonda dello stato interno della macchina.

Anche il pannello dedicato allo stato del bus SMBus è stato ampliato, permettendo di leggere e interpretare segnali di errore, stati attivi e anomalie con maggiore precisione.

Particolarmente rilevante è anche il nuovo stress test GPU, che mette sotto forte pressione il sistema attraverso una scena complessa e altamente pesante dal punto di vista computazionale.
Questo test serve a verificare stabilità e prestazioni della GPU NV2A in condizioni estreme, monitorando in tempo reale frame rate, temperatura, ventole e comportamento generale del sistema.

Il sistema ora include anche strumenti di automazione per l’esecuzione headless dei test, con la possibilità di generare report completi salvati direttamente su disco, oltre a un sistema di aggiornamento più sicuro basato su archivi verificati e processi di estrazione controllati.

Moduli presenti
| # | Modulo | Descrizione |
|---|---|---|
| 01 | Informazioni di sistema | Panoramica completa dell’hardware: identificazione della CPU, revisione della scheda madre, configurazione della RAM, modalità video attiva, dispositivi di archiviazione, indirizzo IP della rete, eventuale modchip rilevato e possibilità di eseguire il dump del BIOS. |
| 02 | Test della memoria | Test rapido della RAM basato su blocchi (4 pattern su chunk da 2 MB) e test approfondito con metodo moving-inversions della durata di 15 o 30 minuti, con griglia visiva per individuare eventuali problemi su specifici banchi di memoria. |
| 03 | Scansione SMBus | Scansione completa degli indirizzi da 0x00 a 0x7F con griglia in tempo reale delle risposte ACK/NAK, riconoscimento dei dispositivi noti, pannello per la lettura dei registri e database dei dispositivi estendibile dall’utente. |
| 04 | Monitor temperature | Monitoraggio in tempo reale delle temperature di CPU e scheda madre tramite sensore ADM1032 (revisioni 1.0–1.5) oppure PIC/Xcalibur (revisione 1.6), con lettura della velocità della ventola e grafico storico scorrevole. |
| 05 | Visualizzatore EEPROM | Decodifica completa dei 256 byte dell’EEPROM con visualizzazione esadecimale, editor dei campi modificabili, riparazione del checksum e funzioni di backup e ripristino. |
| 06 | Informazioni video | Rilevamento del tipo di encoder e dell’ID del chip, tipo di AV pack collegato, clock della GPU NV2A (core, memoria e pixel), dimensione della VRAM, rilevamento di eventuali mod HD, pattern colore NTSC/PAL e test di cambio modalità video in tempo reale. |
| 07 | Informazioni HDD | Analisi tramite comando ATA IDENTIFY con dettagli su modello, numero di serie, firmware, capacità, presenza di HDD o SSD, modalità UDMA, dimensioni delle partizioni, dati SMART, benchmark dell’hard disk e rilevamento del lettore DVD. |
| 08 | Test controller | Visualizzazione dello stato delle connessioni delle quattro porte controller, monitoraggio dei pulsanti digitali, stick analogici e trigger, pulsanti Black/White, con visualizzatore in tempo reale, sotto-test dedicati agli stick e scheda per il test dei motori di vibrazione. |
| 09 | Stress test | Test di stress per CPU e RAM con monitoraggio in tempo reale delle temperature, lettura della velocità della ventola e funzione di interruzione automatica configurabile in caso di surriscaldamento. |
| 10 | File Explorer | Gestore file completo con server FTP integrato, funzioni di copia, spostamento ed eliminazione file, selezione multipla e possibilità di avviare direttamente file XBE. |
| 11 | Informazioni | Sezione con dati sulla versione del software, crediti del progetto e ticker con curiosità e informazioni sull’hardware della Xbox. |
Changelog
Correzioni
SysInfo — Freeze hardware su console softmod all’avvio (DiagCommon.cpp)
- Risolto un blocco riproducibile al 100% su “Reading data…” su console modificate via softmod.
- Causa principale: Gli exploit softmod interrompono l’esecuzione durante il gioco e possono lasciare il controller SMBus nForce con una transazione bloccata in corso. Il loop interno di
HalReadSMBusValuenon ha un timeout reale e continua a riprovare all’infinito se il controller non si sblocca, causando un freeze permanente prima della lettura dei dati hardware. - Fix: Aggiunta la funzione
SMBusControllerReset()inDiagCommon.cpp. Scrive0xFFnel registro Global Status del SMBus nForce all’I/O0xC000(W1C — azzera bit pending/error/busy), poi attende 2 ms per stabilizzare il bus. Viene chiamata all’inizio diReadSysData()prima di qualsiasi accesso SMBus. È sicura e non produce effetti su hardware già in stato idle. KeStallExecutionProcessorè stato consolidato nel blocco condivisoextern "C"inDiagCommon.cpp.
SysInfo — Crash su hardware 1.6 all’avvio (SysInfo.cpp)
- Risolto un crash critico su “Reading hardware…” che colpiva tutte le schede 1.6 indipendentemente dal metodo di boot.
- Causa principale:
DetectBoardRevision()eseguiva una lettura MMIO diretta a0xFD101000(blocco PFB NV2A) per leggere i bit DRAM strap che distinguono 1.6 da 1.6b. Dopo il teardown del contesto D3D dal dashboard, il blocco PFB può trovarsi in uno stato instabile e questa lettura provoca un machine check con reset immediato. - Fix: rimossa completamente la lettura EMRS. Tutte le schede P2L ora vengono identificate come
“1.6”. La distinzione 1.6 vs 1.6b (Samsung vs Hynix DRAM) è solo estetica e non rilevante ai fini diagnostici.
SysInfo — Dump BIOS su percorso errato (SysInfo.cpp)
- Risolto
DumpBios()che scrivevabios.binnella root del drive corrente invece che suD:. CreateFileA("\\bios.bin", ...)usava il drive di avvio dell’XBE, che non sempre coincide conD:. Ora è stato corretto con percorso esplicito"D:\\bios.bin", coerente con gli altri export di XbDiag.
StressTestRAM — Problemi di layout overscan (StressTestRAM.cpp)
- Le etichette delle fasi uscivano dal bordo sinistro su TV standard. Tutte le 11 stringhe sono state accorciate per rientrare nella colonna.
COL_SPLITè stato aumentato da300a310per dare più spazio al pannello sinistro.GRID_LMè stato ridotto da+30a+24per riequilibrare la griglia destra.- La stringa di aiuto in idle è stata accorciata per ridurre il sovraffollamento della barra inferiore.
Nuove funzionalità
SysInfo — Pannello registri hardware (SysInfo.cpp)
- Nuovo pannello overlay
[BLACK]: Registri hardware. Si apre su richiesta, il tasto[A]aggiorna i dati in tempo reale e[BLACK]lo chiude. - Sinistra — IDE Bus Master (BAR4 @
0xFF60): Lettura del BM Command (0xFF60), BM Status (0xFF62) e indirizzo della tabella PRD (0xFF64). Decodifica dei bit di capacità ACTIVE, INTR e D0/D1 singolarmente. Il riepilogo utilizza INTR e PRD come evidenze di attività DMA, poiché MCPX programma il DMA senza usare ATA SET FEATURES e quindi i bit di capacità 5/6 non sono affidabili. - Destra — NVNet NIC I/O (
0xE000–0xE007): Lettura grezza di 8 byte. È normale che siano tutti zero senza inizializzazione completa del driver. Viene mostrato con una nota contestuale. - Destra — SMBus BAR2 (
0xC200–0xC21F): Dump di ricerca grezzo da 32 byte della finestra I/O secondaria SMBus non documentata. I valori rappresentano configurazioni statiche in fase di inizializzazione. Include una nota di confronto tra revisioni della scheda.
SmBusScan — Pannello di stato del controller (SmBusScan.cpp)
- Nuovo pannello overlay
[White]: Stato del controller SMBus + dump di ricerca BAR2. Si apre su richiesta, il tasto[A]aggiorna i dati e[White]lo chiude. - Sezione BAR1: Lettura del Global Status (
0xC000) e Global Enable (0xC002). Decodifica e colorazione dei singoli bit INTER, DEV_ERR, BUS_ERR e FAILED. - Sezione BAR2: Dump esadecimale grezzo di 32 byte dell’area
0xC200–0xC21F, visualizzato su due righe da 16 byte. I byte non zero vengono evidenziati in bianco.
Stress Test — scheda stress GPU (StressTestGPU.cpp / StressTestGPU.h)
- Aggiunta una terza scheda di stress test: GPU. La navigazione avviene con
[Left]/[Right], insieme alle schede CPU e RAM già presenti. - Esegue la scena Crystalline Grotto (CrystalScene) come carico continuo sulla GPU NV2A: circa 344.000 triangoli di cristalli per frame distribuiti su 16 pass DOT3/cubemap, circa 110.000 triangoli della caverna (renderizzati 3 volte) e 120 quad per effetti nebbia in modalità billboard. Il test spinge contemporaneamente fill-rate, banda delle texture e throughput dei vertici.
- La scena viene ripetuta ogni 20 secondi. Sullo schermo vengono mostrati tempo totale trascorso, numero di loop, FPS live, FPS massimo, FPS minimo, temperatura CPU e velocità della ventola, all’interno di un overlay a due righe nella parte inferiore dello schermo.
- L’interruzione avviene tenendo premuti
[Back]+[A]per 5 secondi, con la stessa interfaccia utente delle schede CPU e RAM. Il blocco di conferma LT+RT è richiesto prima dell’avvio. - Le texture vengono caricate da
D:\tex\(crystal_n.dds,crystal_cube.dds,rock.dds) con fallback procedurali se i file non sono presenti. - Il codice della scena CrystalScene è completamente autonomo all’interno di
StressTestGPU.cpp, senza dipendenze esterne.
XbSet — automazione stress GPU (XbSet.cpp / XbSet.h)
- Il test di stress GPU è stato aggiunto all’automazione XbSet con le impostazioni
GPUSTRESS=0/1,GPU_HRS=NeGPU_MIN=N. - Lo stress GPU viene eseguito in modalità headless per la durata configurata, ripetendo in loop la scena e registrando nel file
D:\XbDiag.txtil valore di FPS massimo, FPS minimo, numero di loop della scena e il risultato finale (superato/fallito). - L’interfaccia delle impostazioni è stata aggiornata con un toggle GPU STRESS e le voci GPU HOURS e GPU MINS. La lista delle impostazioni ora è scorrevole, rendendo accessibili tutte le opzioni indipendentemente dall’altezza dello schermo.
Aggiornamento — distribuzione update basata su archivio XBA (Update.cpp)
- Il processo di aggiornamento ora scarica un singolo archivio
update.xbainvece dei singoli file separati. - L’archivio viene estratto in
D:\tramite il motore XBA integrato, che gestisce la creazione delle directory, la verifica CRC e la decompressione multi-codec. Tutte le risorse (XBE, texture e futuri contenuti) vengono distribuite in un’unica operazione atomica. - L’archivio temporaneo (
D:\update.xba) viene sempre eliminato dopo l’estrazione, sia in caso di successo che di errore. XbDiag.verviene comunque scaricato per ultimo come marker di commit e viene scritto solo dopo un’estrazione completata con successo.- L’aggiunta di nuovi asset negli aggiornamenti futuri richiede solo la ricompilazione dell’archivio
update.xbasul server, senza modifiche al codice client. - Il progresso di estrazione viene mostrato tramite la barra esistente, mentre l’etichetta di stato distingue chiaramente la fase di download da quella di estrazione.
Miglioramenti
SmBusScan — Correzioni tabella dispositivi (SmBusScan.cpp)
- EEPROM (
0x54): Tipo di chip corretto da93LC56(SPI) acompatibile 24LC(I2C). Offset MAC corretti da0xEA–0xEFa0x40–0x45. Aggiunti0xA8–0xAB=HDD key. Conteggio aggiornato da 5 a 8. - Descrittori registri PIC16L (
0x10): Estesi da 3 a 7 voci. Aggiunti0x09temperatura CPU,0x0Atemperatura scheda madre,0x10lettura velocità ventola,0x06modalità ventola. - Descrittori registri ADM1032 (
0x4C): Corretti i registri di limite superiore, aggiunto il byte frazionario0x10e il limite THERM0x19. Conteggio aggiornato da 4 a 8. - Rimosso codice inutilizzato:
s_regs_smcera definito ma non collegato a nessuna funzione — eliminato.
TempMonitor — Gestione Xyclops 1.6 (TempMonitor.cpp)
- Il controller SMC sull’hardware 1.6 è Xyclops (core 8051), non PIC16LC63A. Xyclops non implementa i registri di temperatura agli indirizzi
0x09/0x0A— confermato NAK su tutto l’hardware 1.6 testato. - In precedenza veniva mostrato un errore generico rosso
“PIC NON RISPONDE”. Ora viene invece visualizzato un overlay informativo grigio“N/A — Xyclops SMC rilevato”con relativa spiegazione. L’etichetta del sensore viene aggiornata in“XYCLOPS”. La barra inferiore mostra“Xyclops 1.6 SMC — temp N/A”. OnEnter()ora azzeras_path,s_xyclopsNoTempe tutti i campi accumulatori PIC: lo stato residuo proveniente da AutoRun o da una sessione precedente non viene più mantenuto.
StressTest — Layout overlay GPU (StressTestGPU.cpp)
- L’overlay dello stress test GPU è stato ampliato su due righe per eliminare la sovrapposizione del testo a tutte le risoluzioni.
- Riga 1: ELAPSED / LOOPS / FPS / PEAK / MIN — ancorata a sinistra con spaziatura dinamica basata su
TW(), indipendente dalla risoluzione. - Riga 2: temperatura CPU / velocità ventola ancorate a sinistra, con il suggerimento di arresto allineato a destra.
- L’altezza della barra è stata aumentata da 26px a 38px; la barra di arresto tramite pressione prolungata è stata riposizionata di conseguenza.
Risultati di ricerca
SMBus BAR2 (0xC200–0xC21F) — prima lettura pubblica
- Confermati dati statici non banali su una scheda 1.3:
0x70all’offset+0x00e0x0Eall’offset+0x10. Tutti gli altri byte risultano zero. - I valori non cambiano con l’attività SMBus, il che esclude che si tratti di un log di transazioni.
- L’ipotesi più probabile è una configurazione statica di clock/timing inizializzata in fase di avvio dalla 2BL. Il valore
0x70 = 112corrisponde a circa 297 kHz con clock PCI a 33 MHz, compatibile con un possibile prescaler SMBus. - La validazione tra diverse schede è ancora in corso. La community è invitata a riportare i valori BAR2 in base alla revisione hardware.
IDE Bus Master (BAR4 0xFF62) — Comportamento DMA MCPX confermato
- I bit di capacità 5/6 del BM Status non vengono impostati dal MCPX anche quando il DMA è attivo — questo conferma che il MCPX programma il DMA senza utilizzare ATA SET FEATURES.
- Il bit INTR (2) e un indirizzo PRD non nullo sono gli indicatori affidabili dell’utilizzo del DMA sull’hardware Xbox.
Download: XbDiag v1.0.7 Beta (ISO)
Download: XbDiag v1.0.7 Beta (RAR)
Download: Source code XbDiag v1.0.7 Beta
Alcune parti di questo articolo sono state generate con l’aiuto dell’intelligenza artificiale. Questo articolo contiene link affiliati a Amazon. Se acquisti tramite questi link, potrei guadagnare una commissione senza costi aggiuntivi per te.🔥 Prodotti in promozione e articoli più venduti: Xbox Series
Vedi altri prodotti Xbox Series
Ultimo aggiornamento 2026-05-21 / Link di affiliazione / Immagini da Amazon Product Advertising API

![[Scena PS5] PS5 exFAT Image Builder si aggiorna alla versione 3.1.0: override per singolo gioco, auto-updater più stabile e fix per errori exFAT](https://www.biteyourconsole.net/wp-content/uploads/exFATImage-1-238x178.webp)
![[Scena PS Vita] Rilasciato OpenMW v1.4.0 ora con prestazioni migliorate, memoria più sicura, texture migliori, bug fix e nuove impostazioni ottimizzate](https://www.biteyourconsole.net/wp-content/uploads/Morrowind-238x178.webp)

![[Scena PS5] PS5 exFAT Image Builder si aggiorna alla versione 3.1.0: override per singolo gioco, auto-updater più stabile e fix per errori exFAT](https://www.biteyourconsole.net/wp-content/uploads/exFATImage-1-100x75.webp)
![[Scena PS Vita] Rilasciato OpenMW v1.4.0 ora con prestazioni migliorate, memoria più sicura, texture migliori, bug fix e nuove impostazioni ottimizzate](https://www.biteyourconsole.net/wp-content/uploads/Morrowind-100x75.webp)