Adapters 72-60 PINs NES-Famicom
December 23, 2022CONSOLES: SIZE MATTERS !
7 January 2023Breve Storia
Questo piccolo cabinato contenente 40 giochi (espandibili) rilasciato nell’estate del 2022 rappresenta una versione miniaturizzata dell’originale cabinato da sala Taito EGRET II datato 1996:
Tra le cose più interessanti di questo aggeggino c’è la possibilità di ruotare di 90 gradi lo schermo per poter utilizzare in modalità “TATE” (verticale) i giochi che in originale avevano questo tipo di layout come ad esempio Space Invaders, Lunar Rescue o Tatsujin (Truxton).
Il dispositivo ha la possibilità di aggiungere opzionalmente 3 diverse tipologie di controllers tra cui anche un bel paddle+trackball ! Acquistando quest’ultimo si avrà anche una estensione, tramite SD, di altri 10 giochi dedicati studiati appositamente per questa periferica. Da notare che con l’update ufficiale v1.1.0-171 tali 10 giochi verranno automaticamente inclusi nel firmware interno, liberando dunque lo slot SD, e saranno visibili solamente se verrà collegato il pad. Questo è probabilmente dovuto al rilascio di una SD chiamata “Arcade Memories Vol.1” che aggiunge altri 10 titoli !
Le Protezioni
Questo minicabinato porta in grembo diversi sistemi di protezione.
Per quanto riguarda il cercare di evitare di clonare l’hardware, Il chip di sicurezza Zuiki comunica con il SoC Zuiki (che è un Allwinner) ed esegue una operazione di crittografia AES su alcuni dati trasmessigli da un’applicazione e l’applicazione fa altrettanto. Se i risultati corrispondono, è autenticato. In pratica c’è un registro di sicurezza nel SoC che puo’essere letto; Zuiki lo ha personalizzato solo per l’azienda produttrice, quindi se si utilizza un SoC Allwinner standard (non-Zuiki), non corrisponderà (avrebbero potuto usare il chip di sicurezza per decifrare le cose all’interno della mini, ma non l’hanno fatto).
Per quanto riguarda le schede SD, queste hanno un lock basato sul CID della SDCard che non ne permette la lettura sotto sistema operativo “classico” a meno che non vengano sbloccate, operazione (unlock) fattibile inviando comandi specifici (ed una password generata utilizzando il CID) ed effettuabile solamente attraverso host USB che vengono visti dal sistema come mmc (e non come USB) come ad esempio alcuni di quelli integrati nelle schede madri di laptops (quindi non fattibile con i comuni host che si collegano via USB).
Inoltre le schede SD hanno una partizione FAT32 creata in modo particolare (riconosciuta comunque da Windows) che non viene accettata dal sistema qualora fosse “normale” FAT32 (se si inserisce una scheda con partizione FAT32 “normale” si ottiene l’errore “004 – please shut down”).
Infine i dati all’interno della scheda sono contenuti all’interno di files zip protetti da una lunghissima password (sempre basata sul CID della SDCard).
Queste protezioni possono essere bypassate patchando il game_launcher interno (situato nella partizione rootfs, che corrisponde a /dev/nandd, all’interno della cartella /usr/bin/) ed estraendo i dati protetti da password (rizippando l’eseguibile egret2 senza password).
Quindi, se volete far accettare alla macchina “copie” delle SDCard originali, dovete necessariamente patchare il launcher ed estrarre gli archivi protetti da password, l’unlock è necessario solamente per dumpare i dati delle schedine.
Una ulteriore protezione si trova all’interno degli updates: questi sono infatti firmati con una chiave asimmetrica RSA (probabilmente di 2048 bytes) quindi non si possono modificare per farli accettare alla console poichè ogni modifica altererebbe la firma digitale e dunque la console non la riconoscerebbe.
Come ultima “chicca” abbiamo una modalità FEL che per essere “triggerata” ha bisogno, oltre che dell’accricco di cavetti USB di cui avrete contezza più avanti, dell’invio di specifici bytes attraverso l’USB per far letteralmente saltare il codice del bootloader al FEL mode (questa informazione è ottenibile dal source code del bootloader, che è sotto licenza GPL). Questa non è una vera e propria protezione; di solito infatti questo sistema viene utilizzato nei dispositivi che non hanno un tasto fisico che permetta l’accesso alla modalità FEL.
BATOCERA
Se non avete interesse nello sproteggere il sistema ufficiale potete sempre installare BATOCERA ! Per chi non sapesse cosa sia, non si tratta della famiglia di bacarozzi, bensi di una distribuzione linux dedicata al retrogame avviabile da SD o da chiavetta USB.
L’interfaccia grafica (frontend) è rappresentata dal famoso Emulation Station (ES).
Siete curiosi di sapere come fare ? Armatevi di un po’di pazienza e seguite tutti gli steps 🙂
NECESSARIO
Per effettuare la modifica installando BATOCERA vi servirà il seguente materiale:
– 1 Egret II Mini (ma dai !)
– 1 scheda SD da almeno 8GBs
– 1 cavetto USB A-TypeC (quello della confezione originale va bene, serve solo per alimentare la console)
– 1 cavetto USB A-A DATI (non va bene un cavetto che fornisce la sola alimentazione senza i pins dati)
– l’immagine di BATOCERA per Egret II Mini
– il programma egret2-install ufficiale scaricabile dal link di cui sopra (questo software permette l’avvio di BATOCERA permettendo il boot da SD; rimuovendo la SD il boot avverrà nel firmware originale; applicando questa modifica il firmware originale subirà delle piccole modifiche comunque reversibili)
Se avete problemi nel far andare la console in modalità FEL (la console si connette e pochissimo dopo si disconnette rimanendo sconnessa) provate questa versione dello script modificata per avere un controllo più rapido (utilizza un altro eseguibile per agganciare il FEL mode) > RetroScript
– i drivers Zadig per il FEL mode (se avete già installato i drivers di altre consoles “mini” potrebbero non essere necessari)
METHOD
0 – Flashare l’immagine di BATOCERA per Egret II Mini nella SD con WIn32DiskImager (o altro software come balenaEtcher) ed inserirla nel minicabinato;
1 – Mandare il minicabinato in FEL mode; tale modalità rappresenta una specie di recovery inserita nella bootROM dei dispositivi basati su Allwinner e per avviarla ogni aggeggio ha il suo sistema. Nel nostro caso dobbiamo prima avviare un programma che ascolterà le porte USB in attesa che si colleghi per brevissimo tempo un dispositivo AllWinner e, mentre il programma è in ascolto, dobbiamo accendere la console collegandola in un modo particolare per farla avviare in modalità programmazione (tale modalità dura un brevissimo lasso di tempo nel quale la console si aspetta di ricevere sulla porta USB del Player 2 una serie di bytes per mantenersi la modalità di programmazione altrimenti uscirà subito dalla stessa); in sostanza dovete fare come segue (se qualcosa non dovesse funzionare provare ad utilizzare il nostro RetroScript e/o leggere le NOTE a fondo articolo per provare a risolvere):
A – (1) mettere lo switch di accensione su ON;
B – (2) collegare il cavo USB A-A al PC ed alla porta Player 2 della mini (quella più vicina alla porta HDMI);
C – collegare il cavo typeC SOLO all’alimentatore e non alla console;
D – (3) eseguire e2m-backup-and-install.bat e VELOCEMENTE (4) collegare il cavo typeC alla mini per alimentarla; la console si riavvierà rimanendo con schermo acceso ma nero (non vi preoccupate, per tornare alla modalità normale basta togliere l’alimentazione e riaccendere) e nella finestra della shell verranno visualizzati i bytes di payload inviati e le risposte ricevute terminando con un “USB read error: IoTimeOut”:
Tranquilli, E’NORMALE ! La console è adesso in modalità programmazione. A questo punto Windows troverà il dispositivo e proverà ad installare i drivers. Se non dovesse riuscirci fatelo manualmente con i drivers Zadig e scegliete quello chiamato “winusb”, il VID:PID del dispositivo è 1F3A:EFE8 come nella foto sottostante:
Se non lo trovate andate in alto su Options -> List All Devices .
2 – Ok, ora avete installato i drivers ed è chiaro come avviare in FEL mode ! Scollegate tutto e RIPETETE il punto 1 fino alla lettera D; adesso, invece di chiudere tutto (i drivers sono già installati!) premete invio per continuare l’installazione della modifica che avverrà in 5 passaggi.
Il dispositivo si riavvierà sempre con schermo nero dovendo solamente aspettare in teoria 2 minuti; voi lasciatene passare almeno 10 per essere sicuri e, se la console non si riavvierà da sola, togliete l’alimentazione e riavviatela. Partirà un logo diverso da quello TAITO e partirà l’installazione iniziale di BATOCERA che durerà qualche minuto (i riavvii successivi dureranno meno).
Come già detto, per tornare al firmware originale basta togliere la SD.
Lo spazio non partizionato sulla SD puo’essere formattato FAT32, le ROMs posizionate sotto \roms\ e con sottocartelle specifiche per dispositivo da emulare nominate come segue:
GAME LAUNCHER PATCH
Come dicevamo in precedenza, se volete che la console sia anche in grado di accettare tutte le SD Card (consigliate le SDHC) va necessariamente modificato l’eseguibile chiamato game_launcher.
NECESSARIO
– un programma per la connessione SSH (es. PuTTy)
– un programma per il facile browsing del contenuto della console sempre via SSH (es. filezilla)
– il tool (membooter) per avviare la console con un server SSH abilitato (link al file caricato sul sito)
– le locazioni da patchare ed i bytes da modificare in tali locazioni.
METHOD
1 – Preparare la console per triggerare la modalità FEL e, una volta collegata l’alimentazione, avviare rapidamente lo script FELMODE.bat.
2 – Se abbiamo eseguito correttamente il punto 1 la console sarà accesa e con schermo nero; a questo punto avviamo memboot-initrd.bat per caricare nella memoria della mini il software necessario a poterci collegare.
3 – A questo punto apriamo Putty ed inseriamo come IP 169.254.215.100, come prota impostiamo la 22 e premiamo su “Open” per avviare la connessione; se otteniamo un errore “rosso” riapriamo PuTTy e riproviamo (a volte capita che il primo tentativo di connessione non vada a buon fine); se riceviamo un messaggio di warning con punto esclamativo “giallo” possiamo proseguire tranquillamente.
4 – Una volta dentro ci verrà chiesto il nome utente, inseriamo root e premiamo invio, questo utente in questa configurazione non ha bisogno di password !
5 – Ci troveremo dentro la cartella \root. Inseriamo quindi in sequenza questi comandi seguiti da invio (occhio agli spazi !!):
cd ..
cd mnt
mkdir temptfs
mount /dev/nandd /mnt/tempfs
Minispegazione dei comandi
il primo comando (cd ..) va indietro di una cartella per andare alla radice del dispositivo; il secondo comando (cd mnt) entra nella cartella con permessi di scrittura chiamata /mnt; il terzo comando (mkdir tempfs) crea la cartella /tempfs (il nome è stato scelto in modo arbitrario) all’interno della cartella /mnt); l’ultimo comando (mount /dev/nandd /mnt/tempfs) monta la partizione /dev/nandd nella cartella /mnt/tempfs: questo ci permette di accedere fisicamente in lettura e scrittura alla partizione nannd (che corrisponde al rootfs del dispositivo) nella quale è contenuto il file che ci serve.
6 – A questo punto, MANTENENDO la connessione con PuTTy attiva, apriamo Filezilla, inseriamo come IP sempre 169.254.215.100, nome utente root, nessuna password, porta sempre 22 e connettiamoci. Saremo dentro la cartella \root.
7 – Da qui andiamo indietro di 1 cartella con i .. ed andiamo in \mnt\tempfs. Qui troveremo il bramato game_launcher.
Copiamolo sul nostro PC (con drag&drop) in una cartella a piacere. ATTENZIONE ! NON ANDATE A TOCCARE NULL’ALTRO DENTRO QUESTA CARTELLA ALTRIMENTI RISCHIATE IL BRICK ! Sarebbe potenzialmente comunque rimediabile con la stessa procedura ma… perchè andarsi a complicare la vita ??
8 – Apriamo game_launcher con il nostro hex-editor di testo preferito ed andiamo a modificare le seguenti locazioni:
0x40B0 -> 18 B1 (from 78 B3)
0x40C8 -> 23 D1 (from 38 D1)
9 – Salviamo game_launcher modificato, ricopiamolo con Filezilla nella console (sempre con drag&drop nella stessa cartella \mnt\tempfs) e quando ci verrà chiesto di sovrascrivere il file facciamolo !
10 – FINITO ! Potete chiuder sia PuTTy che Filezilla. Le modifiche di mount verranno “dimenticate” al prossimo riavvio ma la modifica al file game_launcher sarà permanente.
Ricordate che per ottenere una copia funzionante di una SD originale (si consiglia di utilizzare schede SDHC) vanno estratte le cartelle dai files roms.zip e wallpaper.zip (entrambi protetti da password) e va decompresso il file egret2 (non è altro che un altro file zip protetto sempre dalla stessa password) e quest’ultimo va ricompresso senza password e rinominato sempre in egret2 (senza l’estensione .zip).
Purtroppo non possiamo condividere nè le password nè il metodo per ottenerle quindi l’unico sistema è quello di trovare dei pacchetti già pronti con i dati già decompressi.
NOTE
Purtroppo alcuni host USB hanno difficoltà a rilevare la periferica come dispositivi Allwinner (il programma che “sente” se un dispositivo Allwinner in FEL mode rimane in ricerca perpetua nonostante il dispositivo sia entrato in FEL mode); se cio’dovesse accadere cambiate porta USB; meglio utilizzare quelle saldate direttamente sulla scheda madre (non quelle frontali) senza usare hubs.
A volte invece potrebbe capitare che il dispositivo entri in FEL mode ma ne esca pochi secondi dopo, anche in loop; questo indica un problema di alimentazione della porta USB: di nuovo, utilizzate quelle saldate sulla scheda madre, utilizzate cavetti USB corti, scollegate tutte le periferiche USB non necessarie e riprovate.
Come ultima risorsa… usate linux con gli scripts .sh presenti nei vari pacchetti.
Qualora uscisse un aggiornamento del firmware, per installarlo va prima RIMOSSA la modifica tramite e2m-restore.bat, va poi installato l’update ed infine va riapplicata la modifica.
6 Comments
Manca la parte relativa alla preparazione della SD e fa sembrare l’operazione di Flash una cosa difficile che non lo è.
Hai ragione, l’ho proprio dimenticato. Aggiunto passaggio all’inizio, grazie 🙂
Nel caso in cui si aggiorna il firmware del Mini, continua a funzionare?
Se si aggiorna il firmware non dovrebbe più funzionare la chiavetta, da provare a rifare la procedura da capo.
Thanks for this very useful information.
Do you know the brand and type of the 5″ screen?
It would be cool if i could swap the allwinner SOC PCB with a rasberry pi 4 and still could use the orignal 5″screen (extra drivers screen could be added)
Hi, I heard from Andrea who has the Egret II, unfortunately he has never opened it and can’t tell me anything about the LCD.