lørdag den 21. november 2015

Xbox 360 Slim RGH (X360Run, Trinity)

Denne tekst tager udgangspunkt i, hvordan jeg har udført et Reset Glitch Hack (RGH) på min Xbox 360 Slim (Trinity bundkort), ved hjælp af en X360Run chip, samt LPT metoden. Igennem hele forløbet, har jeg primært fulgt følgende guide, fra Se7enSins.


Brugtsalgsemballagen er fin hos GameStop!

Efter at min JTAG X360 igen meldte fejl (RRoD lignende), besluttede jeg mig for, at jeg ikke ville bruge mere tid på at rode med Phat X360 maskiner, så længe jeg ikke har mulighed for at reballe disse. Jeg savnede dog nu muligheden for, at kopiere spil over på harddisken, samt muligheden for en regionsfri 360´er. Ikke mindst, var der igen en god grund til, at finde loddekolben frem :D

Jeg besluttede mig derfor for, at købe en X360s i Gamestop, som solgte disse brugt for 399 kr, inkl. controller, PSU osv. Grunden til at valget faldt på en Slim, var primært, at denne model tilbyder trådløst netværk, er mere støjsvag, ikke i udbredt grad bøvler med RRoD problemer, mindre varme udvikling, har intern harddisk og ikke mindst et lækkert design!


Så skal der moddes!


De forskellige Xbox modeller har forskellige bundkort. X360s modellen, udkommer med 2 typer bundkort. Først findes der Trinity bundkortet, som man kan kende på HANA chippen, hvorefter der findes en række Corona bundkort, som ikke har denne chip.


HANA chippen ses lige under de gul/blå ledninger.


Samme dag jeg købte maskinen, fik jeg den åbnet op, hvor jeg hurtigt kunne konstatere, at der befandt sig en fin HANA chip på bundkortet. Herfra omhandlede næste del så, at sætte mig ind i alt omkring modding af en X360s (Trinity) modellen. Det viste sig at være en stor mundfuld og en jungle at finde rundt i.

I mellemtiden havde jeg bestilt nogle modchips hjem fra Ebay. Eftersom disse ikke koster mange håndører fra Kina og eftersom jeg på daværende tidspunkt ikke havde styr på hvad jeg konkret havde brug for, valgte jeg at bestille 3 forskellige modchips (X360Ace v3, Matrix Glitcher, X360Run). På den måde, havde jeg et par ekstra modchips, hvis en ikke skulle fungere. Ligeledes havde jeg nu spredt mine chancer ud, ift. leveringstid.

Først modtog jeg X360Ace v3 chippen. Jeg havde i mellemtiden læst mig frem til, at denne chip var for-programmeret med timingfiler, som kunne bruges på Corona bundkort. Eftersom jeg har et Trinity bundkort, ville dette dog kræve en korrekt "chip-programmer", hvis jeg skulle kunne ændre softwaren i chippen, så denne ville matche mit bundkortet. Da jeg ikke har en sådan chip-programmer og eftersom den koster cirka 3-400 kr., ville jeg hellere gå efter en chip, som i forvejen var for-programmeret.

Den næste chip som dumpede ind ad døren, var en X360Run chip. Databladet til denne, forklarede på et smukt Chinglish, hvordan chippen kunne indstilles til at køre med Trinity bundkort. Valget faldt derfor på denne chip!

Når det kommer til at forstå, hvordan Reset Glitch Hacket virker rent teknisk, så forstår jeg det kun i grove træk. Når X360´eren startes op, er der en latterlig snæver tidsperiode, hvor der er muligt at glitche systemet, med det formål at afvikle uautoriseret software. For at gøre dette, kræver det en glitchchip (som fx. én de nævnte), som er i stand til at sende et impuls på det helt rette tidspunkt. Bliver impulset ikke sendt i den korrekte og "åbne" tidsperiode, genstarter systemet og glitchchippen prøver igen. Timing er nøgleordet og hvis det skal overføres til noget som man kan forholde sig til, kunne det fx være, at udføre et "perfect reload" i Gears of War, bare med et meget smallere tidsvindue, hvor man samtidig har bind for øjnene og ikke selv er i stand til at styre hvornår reload sekvensen overhovedet sættes i gang.

For at forstå hvor præcis og hvor små tidsintervaller vi taler, skal det nævnes, at længden af ledningen som går fra chippen og ned til CPU´en (CPU_RST punktet) har stor betydninge på, om systemet glitcher korrekt. Her vil man opleve forskellige resultater, alt efter om den er 1 cm længere eller kortere, og om ledningen svæver i luften, eller ligger tæt på bundkortet, samt hvilke andre komponenter den befinder sig i nærheden af. En af de andre spændende ting, som synliggøre hvilken størrelsesorden vi taler, er den nødvendige værdi på kondensatoren. I mit tilfælde med Trinity bundkortet skiftede kravet til værdien på denne, til cirka 10% af den oprindelige værdi, hvis jeg i stedet for en monolitisk, gjorde brug af en keramisk kondensator.

Det hele blev endnu mere besværligt, eftersom jeg valgt at undlade hele "chip-programmer" delen. Fidusen ved at anvende en chip, hvor man individuelt programmerer denne med en "chip-programmer" (fx J-R Programmer eller Nand-X) med timing filer er, at man efter at man har modded hardware delen, kan finjustere timingen af impulserne, ved hjælp af software. I mit tilfælde, havde jeg softwaren på chippen "fabriksprogrammeret", som jeg nu skulle forsøge at justere til rette, ved hjælp af hardwaren. Dette blev gjort ved at følge instrukser vedrørende hvilke punkter på chippen som skulle åbnes og lukkes (fx ved hjælp af lodde klat, eller 0 Ohms modstand).



Proceduren i forbindelse med mit RGH mod var følgende:


1. Forbind LPT porten med xbox´en.

I forhold til at bruge LPT metoden, foregår aflæsning og skrivning af NAND filen via den gode gamle (lilla) printerport på en PC. Eftersom denne port for længst er blevet afløst af USB standarden, kræver det en halvgammel computer, for at denne port overhovedet er til stede.


LPT opsætningen, som diverse guider anbefaler, virkede ikke hos mig.


Jeg lå heldigvis inde med en gammel Pentium 4 bærbar med LPT port, samt en nyere bærbar, hvor jeg via dockingstationen ligeledes havde en sådan port.

LPT metoden, tager udgangspunkt i 7 ledninger, som bliver forbundet imellem bundkortet og printerporten (LPT porten) på en PC, hvorved der kan læses / skrives til xbox-bundkortet. Da jeg undersøgte hvordan ledningerne skulle placeres fra porten og ned til bundkortet, anviste diverse guides, at jeg skulle bruge en 100K Ohm modstand, i serie med 5 af de 7 ledninger, samt en diode på 1 af ledningerne. Denne opsætning resulterede dog i, at jeg ikke kunne skabe kontakt, PC og bundkort imellem.


Nu hænger modstandene kun til pynt.

Løsningen i mit tilfælde, var at fjerne de 5 modstande, så opsætningen i stedet betød 7 ledninger, hvor der var placeret 1 diode på den ene ledning. Nu var der hul igennem i forhold til den gamle Pentium 4 computer. Computeren med LPT port via docking, fik jeg aldrig til at kommunikere med bundkortet.



2. Aflæs NAND filen fra xbox´en.

Efter at hardware-delen af LPT-metoden var på plads, var det nu tid til at lege med softwaren. Her downloadede jeg programmet NandPro30, som efter installation, kan afvikles via CMD kommandoen på ens PC.


Det tog mig cirka 55 minutter pr. NAND dump.


Efter at bundkortet bliver tilsluttet PC´en og strømforsyningen (IKKE TÆND KONSOLLEN!), kan man så ved hjælp af en read-kommando, aflæse NAND filen.

Når denne er aflæst fra bundkortet (Ved Trinity bundkort når counteren til 04FF), står man tilbage med en Nand.bin fil. Nu gentages aflæsning proceduren, så man ligger inde med 2 NAND dumps. Herfra bruges programmet J-Runner til, at sammenligne disse NAND dumps, for at sikre at disse er identiske og dermed repræsenterer en korrekt kopi af den NAND, som befinder sig på maskinen. Hvis denne ikke matcher, foretages endnu en aflæsning (...og evt. flere endnu), indtil man ligger inde med 2 matchende NAND filer.



3. Fremstil og skriv .ecc-fil.

Når J-Runner er færdig med at sammenligne NAND dumps og 2 af disse er ens, kan en .ecc fil frembringes. Denne funktion er nemt tilgængelig i J-Runner, som efter at have sammensat denne .ecc fil (via info fra NAND dumpet), smider filen i output mappen i J-Runner. Nu er det så muligt, ved hjælp af NandPro30, at skrive denne .ecc fil retur til bundkortet, hvorved det bliver muligt at boote op i Xell Reloaded.



4. Installer glitch chippen.

Nu til den sjove del, nemlig at lodde glitch chippen i maskinen. X360Run chippen kræver 6 lodninger, hvoraf de 3 befinder sig i samme "connector gruppe" som LPC forbindelserne. Dernæst er der 2 forbindelser, som skal føres ned på undersiden af bundkortet, hvilket i praksis ikke er det store problem, eftersom der er et fint stort hul i bundkortet, som tilbyder nok plads til at føre ledningerne igennem. Loddepunkterne her er en del mindre, og minder om nogle af de små punkter, som man fx ser ved modding af Playstation 2 konsoller. Sidst men ikke mindst, er der GND ledningen, som fint kan forbindes til afskærmningen ved A/V udgangene, bagerst på bundkortet.


Glitchchip installeret - Der leges med kondensator værdier.


Selve installationen af chippen er forholdsvis simpel og klares nemt, hvis man har kendskab til at bruge en loddekolbe. Der hvor udfordringen opstår, er når det kommer til at få den til at glitche korrekt, hvilket hurtigt blev en meget tidskrævende affære, med en masse trial & error.
Ved dette mod, er der flere forskellige faktorer, som spiller afgørende roller for, om skidtet overhovedet formår at glitche. Først og fremmest, gjorde jeg brug af databladet til X360Run chippen, for at indstille chippen til mit Trinity bundkort. Måden hvorpå dette fungerer, er ved at der på chippen findes en række kontakter, som åbnes / lukkes, ved at man enten kortslutter 2 loddepunkter (med loddetin / 0 ohms modstand / lignende), eller lader disse være åbne.


3 ledninger går til samme "connector gruppe", som LPC ledningerne.


Dernæst udskiftes værdien på kondensatoren, så den matcher ens opsætning. I dette tilfælde anbefaler databladet, at man enten bruger en 150pF eller en 20pF, alt efter om det er en monolitisk eller keramisk kondensator. Ligeledes foreskriver databladet nogle længder på ledningerne til de 6 punkter, som man kan give sig til at justere på. I praksis betyder det, at man skal afstemme kondensator værdi og ledningslængde / placering med hinanden. Dette kan være en svær - og ikke mindst tidskrævende! - opgave, at få til at gå op i en højere enhed!


2 ledninger går til undersiden af bundkortet.


Set i bakspejlet, ville det havde givet god mening, at bruge 3-400 kr. på en glitchchip programmer så justeringerne kunne fin trimmes ved hjælp af softwaren, eller måske sågar en anden chip og evt. en CPU Reset Cleaner. Havde jeg på forhånd vidst hvor længe det ville tage at få et nogenlunde resultat ved hjælp af hardware justering, havde jeg nok brugt de ekstra penge.


Her set placering af chip, samt hvor GND-ledningen (den sorte) forbindes til.


Der bliver testet med forskellig ledningslængde på CPU_RST.


Her tæller - og dokumentere - jeg antal glitches.


Jeg endte op med et setup, hvor systemet i gennemsnit glitcher korrekt i 12 forsøg. Dette kan jeg fint leve med, eftersom konsollen jo kun skal starte op 1 gang, hvorefter der ikke er mere ventetid den pågældende gaming session.



5. Boot systemet i Xell Reloaded og aflæs CPU Key.

Når glitchchippen er installeret og justeret tilrette, så xbox´en kan boote op, er det på tide at få fat i maskinens CPU Key. Her tænder man ganske enkelt op i systemet, hvorefter .ecc filen som blev skrevet til systemet (i punkt 3) sørger for, at Xell Reloaded bliver afviklet. Når Xell Reloaded har kørt i lidt tid, fremkommer der en linie på skærmen, som indeholder CPU Key. Denne CPU Key valgte jeg at tage et billede af (man kunne lige så vel skrive den ned), hvorefter jeg igen slukkede ned for xbox´en.


Xbox´en booter op i Xell.



6. Fremstil XeBuild image (updflash.bin) og exploid xbox´en.

Tilbage i J-Runner, er det nu muligt at sammensætte den endelige opdateringsfil, som exploiter xbox´en. Til dette formål, indlæses den oprindelige / originale NAND fil (fra punkt 2), hvortil CPU Key´en indtastes i det dertilhørende felt. Nu er det så bare at vælge ønsket Dashboard og trykke "create XeBuild". Dette resulterer i en fil ved navn "updflash.bin" i J-Runner output mappen. Denne fil kan man nu kopiere over på en FAT32 formateret USB-stick, hvorefter den sættes i xbox´en. Når xbox´en igen startes op, vil Xell Reloaded igen boote op, hvorefter dette selv sørger for at opdatere systemet med den nye fil. Når Xell er færdig med dette, informerer den om, at man nu kan slukke for systemet. Ved næste opstart, booter systemet op i en exploited version, af det valgte dashboard.


Første opstart efter installation af exploit.

Sådan! Xbox modded er udført!



7. Installation af uautoriseret software.

Afslutningsvis er det så bare at installer den software, som man ønsker at køre med. I mit tilfælde, har jeg installeret følgende:

XeXMenu: Gør det muligt at navigere rundt i filer og mapper på maskinens harddisk. Dette er yderst brugbart, ift. at installere yderligere software.

FreeStyle Dashboard (FSD): Alternativt dashboard, til det officielle Microsoft. FSD tilbyder en lang række muligheder i forhold til funktionalitet. Dette spænder lige fra grafisk flot oversigt over installerede spil med korrekte virtuelle covers, temperatur styrrig / overvågning, afvikling af emulerering, m.m.

Dashlaunch: Med Dashlaunch er det blandt andet muligt, at få xbox´en til at boote direkte op i FreeStyle Dashboard, når systemet startes op.



Undervejs i forløbet, fik jeg både loddet ledninger og komponenter på bundkortet og fjernet disse igen. Dette var en nødvendig del af, at teste hvad der fungerede bedst, samt nå frem til det ønskede resultat. I sidste ende valgte jeg at gøre brug af en variabel kondensator på glitch chippen, samt lave direkte adgang til at læse / skrive NAND chippen udefra. Selvom det ikke er nødvendigt at kunne læse / skrive til denne, så snart .ecc filen er skrevet hertil, fandt jeg det alligevel hyggeligt at installere en DB25 port med korrekte ledninger - bare fordi jeg kunne :D

Her til sidst, vil jeg lige vise et par billeder, at det færdige resultat:


X360Run chip installeret med variabel kondensator. LPT forbindelse installeret.


LPT porten er let tilgængelig udefra.


LPT porten kan tilgås, hvis gitter klikkes af.


RGH modded Xbox står i FreeStyle Dashboard. Den anden X360 er til Live / Achievements :D


Jeg har fået en del hjælp fra Se7enSins forumet, til at komme igennem dette projekt. I den forbindelse har jeg lavet 3 tråde, som tager udgangspunkt i min kombination af bundkort, chip og metode. Disse tråde kan findes her:

Xbox 360 (Slim, Trinity) - Reset Glitch Hack
X360 LPT method (Trinity) diode or not?
Got the CPU key - What now :)?