Il noto developer e Hacker Bigboss ci parla del proprio studio sulla Playstation 4 Camera condividendo con l’intera comunità tutte le proprie conoscenze in materia.
Uno studio portato avanti sin dal suo rilascio nel 2013 e con il reverse engineering dello stesso, l’apertura della Camera è servito nella ricerca di informazioni sui vari chipset.
La Playstation 4 Camera fa uso di un proprio connettore proprietario chiamato AUX che altri non è che un cavo USB 3.0, Bigboss ha dunque sostituito il connettore riuscendo a collegare la Camera al PC.
Successivamente attraverso un’applicazione di tipo Sniffer come per esempio USBlyzer (utilizzato per analizzare il traffico dati da un apparecchio USB) e un dispositivo BeagleBoard (micro-computer a bassa potenza) si è riusciti ad estrapolare tutte le informazioni necessarie per realizzare i driver.
Descrizione chip
- OV580 Si tratta di un ASIC della Omnivision una tipica soluzione Bridge (a ponte) personalizzata per gestire tutti gli altri chip. Non ci sono ulteriori informazioni o schede. Altre aziende che lo utilizzano sono Mantis Vision e LeapMotion.
- OV9713 Due sensori CMOS ben documentate con piena scheda disponibile in google.
- AK5703 Un convertitore analogico digitale collegato con un array microfono. La scheda che si può trovare in rete è stata molto utile per ottenere correttamente l’audio dalla PlayStation 4 Camera.
- 4g51A Un chip EEPROM contenente la configurazione iniziale della PlayStation 4 Camera.
Quando si va a collegare la Camera all’ingresso USB 3.0, il dispositivo entrerà in una sorta di modalità di avvio in attesa per il caricamento del firmware. Analizzando i dati ottenuti attraverso l’applicazione USBlyzer l’hacker è riuscito ad estrapolare tale firmware arrivando così a scoprire le diverse modalità di streaming.
Modalità 0 fps 60 (default), 30, 15, 8 video di sinistra e il video a destra fotogrammi 1280×800.
Modalità 1 fps a 120 (default), 60, 30, 15, 8 video di sinistra e il video a destra cornici 640×400.
Modalità 2 fps 240 (default), 120, 60, 30 video di sinistra e il video a destra cornici 320×192.
OV580 sta fornendo in ogni modalità.
- mode 0 3448x2x808 bytes inquadra ogni riga con:
- header 32 bytes
- audio 64 bytes
- video left 1280×2 bytes
- video right 1280×2 bytes
- video interleave 840×2 bytes
- mode 1 1748x2x408 bytes inquadra ogni riga con:
- header 32 bytes
- audio 64 bytes
- video left 640×2 bytes
- video right 640×2 bytes
- video interleave 420×2 bytes
- mode 2 898x2x200 bytes inquadrare ogni riga con:
- header 32 bytes
- audio 64 bytes
- video left 320×2 bytes
- video right 320×2 bytes
- video interleave 210×2 bytes
Parte degli header vengono mostrati nella schermata successiva:
Parte dell’audio viene mostrato nella schermata successiva.
Il file Audio ha 4 canali, Bigboss ha fatto uso dello strumento Audicity per il caricamento di un file audio catturato della durata di 10 secondi e riproducendolo con successo nei 4 canali audio, di seguito una schermata dello strumento audicity:
Il video a sinistra e destra possono essere convertiti in RGB con la conversione CV_YUV2RGB_YUY2:
- cv :: Mat YUV (size_y, size_x, CV_8UC2, in);
- cv :: Mat rgb (size_y, size_x, CV_8UC3, out);
- cv :: cvtColor (YUV, rgb, CV_YUV2RGB_YUY2);
Video interleave è anche lo stesso formato video ma sta facendo un mix dei due sensori.
Un esempio applicativo realizzato usando dei driver di base per la PS4EYECam mostra una modalità a 640×400 da due telecamere PlayStation allo stesso tempo:
Tutta le funzioni di basso livello sono state implementate e sono disponibili nella repository di Bigboss. EyeLab è un POC di un’applicazione multi fotocamera che utilizza il driver PS4EYECam ma non si trova nella repository.
PlayStation 4 Camera ora ha una piena documentazione e può essere supportato su tutte le altre piattaforme.
Collegamento: Repository Bigboss
[…] developer e hacker Bigboss che nel mese di febbraio ha pubblicato un’ampia documentazione sul reverse della Playstation Camera? Bene oggi è tornato con un nuovo post dove ci spiega di essere riuscito a “riversare” […]