Home Homebrew Rilasciato XbDiag v1.0.7 Beta: La suite diagnostica definitiva per Xbox Originale

Rilasciato XbDiag v1.0.7 Beta: La suite diagnostica definitiva per Xbox Originale

114
0

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

#ModuloDescrizione
01Informazioni di sistemaPanoramica 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.
02Test della memoriaTest 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.
03Scansione SMBusScansione 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.
04Monitor temperatureMonitoraggio 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.
05Visualizzatore EEPROMDecodifica completa dei 256 byte dell’EEPROM con visualizzazione esadecimale, editor dei campi modificabili, riparazione del checksum e funzioni di backup e ripristino.
06Informazioni videoRilevamento 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.
07Informazioni HDDAnalisi 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.
08Test controllerVisualizzazione 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.
09Stress testTest 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.
10File ExplorerGestore file completo con server FTP integrato, funzioni di copia, spostamento ed eliminazione file, selezione multipla e possibilità di avviare direttamente file XBE.
11InformazioniSezione 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 HalReadSMBusValue non 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() in DiagCommon.cpp. Scrive 0xFF nel registro Global Status del SMBus nForce all’I/O 0xC000 (W1C — azzera bit pending/error/busy), poi attende 2 ms per stabilizzare il bus. Viene chiamata all’inizio di ReadSysData() prima di qualsiasi accesso SMBus. È sicura e non produce effetti su hardware già in stato idle.
  • KeStallExecutionProcessor è stato consolidato nel blocco condiviso extern "C" in DiagCommon.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 a 0xFD101000 (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 scriveva bios.bin nella root del drive corrente invece che su D:.
  • CreateFileA("\\bios.bin", ...) usava il drive di avvio dell’XBE, che non sempre coincide con D:. 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 da 300 a 310 per dare più spazio al pannello sinistro.
  • GRID_LM è stato ridotto da +30 a +24 per 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=N e GPU_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.txt il 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.xba invece 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.ver viene 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.xba sul 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 da 93LC56 (SPI) a compatibile 24LC (I2C). Offset MAC corretti da 0xEA–0xEF a 0x40–0x45. Aggiunti 0xA8–0xAB=HDD key. Conteggio aggiornato da 5 a 8.
  • Descrittori registri PIC16L (0x10): Estesi da 3 a 7 voci. Aggiunti 0x09 temperatura CPU, 0x0A temperatura scheda madre, 0x10 lettura velocità ventola, 0x06 modalità ventola.
  • Descrittori registri ADM1032 (0x4C): Corretti i registri di limite superiore, aggiunto il byte frazionario 0x10 e il limite THERM 0x19. Conteggio aggiornato da 4 a 8.
  • Rimosso codice inutilizzato: s_regs_smc era 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 azzera s_path, s_xyclopsNoTemp e 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: 0x70 all’offset +0x00 e 0x0E all’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 = 112 corrisponde 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.

🔥 Prodotti in promozione e articoli più venduti: Xbox Series

Vedi altri prodotti Xbox Series

Questo articolo contiene link affiliati a Amazon. Se acquisti tramite questi link, potrei guadagnare una commissione senza costi aggiuntivi per te.

Ultimo aggiornamento 2026-05-21 / Link di affiliazione / Immagini da Amazon Product Advertising API

LASCIA UN COMMENTO

Per favore inserisci il tuo commento!
Per favore inserisci il tuo nome qui
Captcha verification failed!
Punteggio utente captcha non riuscito. Ci contatti per favore!

Questo sito utilizza Akismet per ridurre lo spam. Scopri come vengono elaborati i dati derivati dai commenti.