Home Homebrew Ghostpad: il nuovo controller virtuale per PS4 e PS5 jailbroken porta il...

Ghostpad: il nuovo controller virtuale per PS4 e PS5 jailbroken porta il controllo remoto a un livello superiore

439
0

La scena homebrew PlayStation continua a evolversi e tra i progetti più interessanti emersi negli ultimi mesi spicca Ghostpad, una nuova soluzione open source sviluppata dal team AssPayload in collaborazione con seregonwar.

Il progetto introduce un sistema completo composto da payload, bridge hardware e applicazioni client che consente di creare un controller DualSense virtuale direttamente all’interno di una PS4 o PS5 modificata.

A differenza di molte soluzioni precedenti basate sull’emulazione degli input o sulla simulazione dei tasti tramite rete, Ghostpad opera a un livello molto più profondo.

Il payload installato sulla console utilizza infatti le API VDA e VDI per registrare un controller virtuale che viene riconosciuto dal sistema operativo PlayStation esattamente come un vero DualSense collegato fisicamente alla console.

Dal punto di vista della console e dei giochi non esiste alcuna differenza tra il controller virtuale creato da Ghostpad e un controller ufficiale Sony.

Questo approccio garantisce una compatibilità elevata e apre la strada a numerosi scenari d’utilizzo che vanno ben oltre il semplice controllo remoto.

Il cuore del progetto è costituito dal payload ELF compatibile sia con PS4 sia con PS5 jailbroken. Una volta caricato sulla console, il payload apre un canale di comunicazione dedicato sulla porta 9021 e rimane in attesa degli input provenienti dai client esterni.

Tutti i comandi ricevuti vengono convertiti in eventi controller e inoltrati direttamente al sistema.

La parte client può assumere diverse forme. Gli utenti possono utilizzare una moderna applicazione desktop sviluppata in C++ e basata su ImGui, un browser web collegato a un bridge ESP32 oppure persino controller Bluetooth reali come DualSense, DualShock 4, controller Xbox e numerosi dispositivi compatibili con lo standard HID.

L’applicazione desktop rappresenta probabilmente la modalità d’uso più avanzata. Oltre a fungere da controller remoto consente di monitorare in tempo reale lo stato della connessione, visualizzare i dati provenienti dalla console, gestire profili multipli e creare macro complesse.

Questa componente trasforma Ghostpad in uno strumento particolarmente interessante per sviluppatori, tester e utenti avanzati che desiderano automatizzare determinate operazioni.

Uno degli aspetti più interessanti del progetto è il supporto integrato alle macro. Gli input possono essere registrati, modificati e riprodotti automaticamente con tempistiche estremamente precise.

Questo permette di automatizzare sequenze ripetitive, effettuare test di stabilità, verificare comportamenti specifici dei giochi oppure eseguire operazioni di debugging senza dover intervenire manualmente ogni volta.

Sul fronte hardware, Ghostpad introduce anche un bridge basato su ESP32-WROOM-32U. Una volta programmato con il firmware fornito dagli sviluppatori, il microcontrollore diventa una sorta di ponte intelligente tra controller Bluetooth, browser web e console PlayStation.

In pratica l’ESP32 riceve gli input tramite Wi-Fi o Bluetooth e li inoltra alla console attraverso la rete locale.

Questa configurazione risulta particolarmente interessante perché consente di controllare la console senza dover mantenere acceso un PC.

Basta collegarsi all’interfaccia web ospitata dall’ESP32 tramite smartphone, tablet o computer per accedere immediatamente ai controlli remoti.

Il supporto BLE permette inoltre di associare controller fisici e utilizzarli a distanza come se fossero collegati direttamente alla console.

Per gli sviluppatori della scena homebrew, Ghostpad offre anche funzionalità di diagnostica avanzata. Tra queste spicca lo streaming in tempo reale dei messaggi klog, utile per monitorare il comportamento del payload e individuare eventuali problemi durante lo sviluppo.

Il supporto al runtime patching amplia ulteriormente le possibilità di sperimentazione consentendo modifiche dinamiche durante l’esecuzione.

Dal punto di vista tecnico, Ghostpad può essere considerato una naturale evoluzione del concetto introdotto da Virtual Controller.

Entrambi i progetti permettono di creare controller virtuali sulla console, ma l’approccio adottato da Ghostpad è decisamente più moderno e strutturato. Virtual Controller era nato principalmente come strumento per simulare input e automatizzare alcune operazioni basilari.

Ghostpad, invece, si presenta come una piattaforma completa che integra gestione di controller Bluetooth, bridge hardware dedicato, interfaccia grafica avanzata, sistema di macro, streaming diagnostico e supporto multipiattaforma.

La differenza principale risiede proprio nell’architettura. Virtual Controller si concentrava quasi esclusivamente sull’emulazione degli input, mentre Ghostpad costruisce un ecosistema completo attorno al controller virtuale.

L’aggiunta dell’ESP32 Bridge, ad esempio, introduce scenari d’uso completamente nuovi che non erano previsti nelle implementazioni tradizionali.

L’utilizzo pratico del payload è relativamente semplice. Dopo aver eseguito il jailbreak della console è sufficiente caricare il file ghostpad.elf attraverso il metodo preferito dall’utente.

Una volta avviato, il payload inizia a creare il dispositivo virtuale e ad ascoltare le connessioni provenienti dai client. Da quel momento qualsiasi input inviato tramite Desktop GUI, ESP32 o controller Bluetooth verrà trasformato in comandi validi per la console.

Le applicazioni potenziali sono numerose. Gli sviluppatori possono utilizzare Ghostpad per test automatizzati, gli streamer possono controllare la console direttamente dal PC, gli utenti con controller difettosi possono utilizzare dispositivi alternativi e chi si occupa di accessibilità può sperimentare configurazioni personalizzate difficili da ottenere con l’hardware tradizionale.

Caratteristiche

Payload per console

  • Crea un controller DualSense virtuale tramite le API dei dispositivi virtuali della console.
  • Riceve pacchetti di input GPAD a dimensione fissa tramite connessione TCP.
  • Inserisce i report del controller direttamente nel flusso del dispositivo virtuale.
  • Supporta il patching VDA a runtime sia per il payload stesso sia per SceShellCore.
  • Offre la cattura opzionale dei log di sistema tramite /dev/klog e il relativo streaming via TCP.
  • Supporta l’associazione tra dispositivi virtuali e fisici basata su MBus.

Bridge ESP32

  • Funziona su ESP32-WROOM-32U utilizzando il framework ESP-IDF.
  • Supporta la modalità Wi-Fi Station (STA) con fallback automatico ad Access Point (AP).
  • Include un’interfaccia web integrata per il controllo remoto.
  • Effettua la scansione della rete locale alla ricerca di servizi PS4 e PS5.
  • Inoltra gli input GPAD alla console tramite connessione TCP.
  • Scansiona, identifica e collega controller BLE compatibili con lo standard HID.
  • Supporta l’output HID tramite TinyUSB per scenari che richiedono l’uso diretto di dispositivi USB HID.
  • Trasmette i dati klog ai client della dashboard tramite WebSocket.

Interfaccia Desktop

  • Client nativo multipiattaforma sviluppato in C++17 con GLFW, OpenGL e Dear ImGui.
  • Interfaccia controller virtuale con visualizzatore del gamepad in tempo reale.
  • Supporto per mappature personalizzate di tastiera e controller nativi.
  • Motore avanzato per macro con registrazione, riproduzione e personalizzazione delle sequenze.
  • Gestore integrato delle console con scansione della rete e distribuzione automatica del payload.
  • Azioni di sistema della console come riavvio, spegnimento, modalità riposo ed espulsione del disco.
  • Sezioni dedicate alla diagnostica e ai test, inclusi il controllo del buzzer (Beeper) e la gestione di progetti e profili.
  • Prestazioni elevate, bassa latenza e consumo ridotto delle risorse di sistema.

Componenti

Componente Percorso Descrizione
Payload per console payload/ Payload ELF per PS4 e PS5. Si occupa di creare il controller virtuale, ricevere gli input GPAD, gestire le API VDA/VDI e, opzionalmente, lo streaming dei log klog.
Bridge ESP32 esp32-ghostpad/ Firmware per ESP32 che gestisce Wi-Fi, interfaccia web, host BLE HID, USB HID, scansione della rete locale, API e streaming WebSocket.
Desktop GUI Ghostpad-native/ Client multipiattaforma nativo sviluppato in C++17 con GLFW e ImGui. Include funzionalità avanzate per il controllo dei gamepad, gestione delle macro, distribuzione automatica del payload e amministrazione delle console.
VDA Probe tools/vda_probe/ Payload diagnostico utilizzato per identificare le firme (byte pattern) delle API VDA e dei simboli MBus presenti nel firmware della console.
Note di ricerca docs/virtualDS5research.md Documento tecnico che descrive il lavoro di ricerca e l’implementazione del controller virtuale DualSense utilizzato da Ghostpad.

Avvio rapido

1. Compilazione del payload per la console

PS4

bash

cd payload
make PS4_PAYLOAD_SDK=/path/to/ps4-payload-sdk

PS5

bash

cd payload
make PS5_PAYLOAD_SDK=/path/to/ps5-payload-sdk

Caricare il file ghostpad.elf generato sulla console tramite un ELF loader, generalmente sulla porta 9021.

Flag di compilazione del payload

Flag Default Descrizione
GHOSTPAD_ENABLE_INTERNAL_KLOG 1 Abilita il lettore interno /dev/klog nel payload e il relativo bridge TCP.
GHOSTPAD_KLOG_PORT 3434 Porta TCP utilizzata per lo streaming dei log klog.
GHOSTPAD_ENABLE_RUNTIME_VDA_PATCH 1 Abilita il patching runtime dei percorsi VDA di libScePad sia in self che in SceShellCore.
GHOSTPAD_ENABLE_KLOG_AUTOBIND 0 Abilita il binding automatico del dispositivo virtuale tramite eventi DEVICE_ADDED provenienti dal klog.

2. Compilazione e installazione del bridge ESP32

bash

cd esp32-ghostpad

cp sdkconfig.private.example sdkconfig.private.defaults
# Modifica sdkconfig.private.defaults inserendo SSID e password della tua rete Wi-Fi.

source ~/esp/esp-idf/export.sh

idf.py set-target esp32
idf.py build
idf.py -p /dev/cu.usbmodemXXXX flash

Dopo l’avvio del dispositivo, il bridge ESP32 sarà accessibile all’indirizzo: http://ghostpad.local

Se il servizio mDNS non è disponibile sulla rete, utilizzare l’indirizzo IP del dispositivo visualizzato dal router oppure dal monitor seriale durante il processo di avvio.

3. Compilazione della Desktop GUI nativa

Compilazione su macOS / Linux

bash

cd Ghostpad-native
cmake -B build -DCMAKE_BUILD_TYPE=Release
cmake --build build --config Release

Su macOS verrà generato il bundle dell’applicazione ghostpad-native.app. Su Linux e macOS è possibile avviare l’eseguibile direttamente dalla cartella di compilazione: ./build/ghostpad-native

Compilazione su Windows

Utilizzando il Prompt dei comandi o PowerShell, eseguire:

bash

cd Ghostpad-native
cmake -B build -DCMAKE_BUILD_TYPE=Release
cmake --build build --config Release

Al termine verrà generato il file ghostpad-native.exe nella cartella build/ (oppure build/Release/ a seconda della configurazione utilizzata).

Procedura iniziale di utilizzo della versione desktop:

  • Avviare l’ELF Loader sulla console.
  • Eseguire la GUI nativa di Ghostpad.
  • Aggiungere l’indirizzo IP della console nella schermata Consoles o Settings.
  • Fare clic su Deploy per caricare il payload sulla console.
  • Fare clic su Connect per stabilire la connessione.

Modalità di utilizzo

Modalità Sorgente input Trasporto Destinazione output Ideale per
Desktop GUI → Console Tastiera, gamepad, controller virtuale TCP 6967 DualSense virtuale Controllo completo multipiattaforma
Browser → ESP32 → Console Interfaccia web WebSocket + TCP 6967 DualSense virtuale Controllo leggero in rete locale (LAN)
BLE gamepad → ESP32 → Console DualSense, DualShock 4, dispositivi BLE HID compatibili BLE + TCP 6967 DualSense virtuale Trasferimento wireless del controller
Browser → ESP32 → USB Interfaccia web WebSocket + USB HID USB HID PS5 Esperimenti di controllo cablato diretto
Payload → Client klog della console TCP 3434 / WebSocket Dashboard GUI Diagnostica e analisi del binding

Bridge ESP32

Web UI

La dashboard integrata include:

  • Device Browser — scansiona la subnet e rileva porte aperte correlate a Ghostpad.
  • Virtual Controller — controller basato su browser con supporto per tastiera e touch.
  • Klog Viewer — stream live dei log klog tramite WebSocket.
  • BLE Scanner — rileva e classifica i controller nelle vicinanze.
  • Settings — configurazione WiFi, deploy del payload e informazioni firmware.

Host BLE HID

Il bridge può scansionare e classificare controller comuni, tra cui:

  • DualSense 0x054C:0x0CE6
  • DualShock 4 0x054C:0x09CC / 0x054C:0x05C4
  • Controller Xbox, Nintendo e dispositivi HID compatibili 8BitDo.

Supporto BLE

  • finestra di scansione attiva di 30 secondi.
  • sistema di scoring per classificazione (modello, aspetto e flag HID).
  • decoding dei report DualSense 0x01
  • decoding dei report DualShock 4 0x11
  • replay della cronologia klog per client con connessione tardiva.

Networking

  • modalità WiFi station.
  • fallback in modalità AP: Ghostpad-ESP32 / ghostpad123
  • hostname mDNS: ghostpad.local
  • scanner di subnet con probing delle porte 6967, 3434, 9021 e 9090.
  • broadcast klog multi-client.
  • credenziali WiFi private salvate in sdkconfig.private.defaults ed escluse dal repository Git.

Riferimento protocollo

TCP 6967 — Stream input GPAD

Ogni report di input è un pacchetto a dimensione fissa di 16 byte.

Offset Tipo Campo
0..3 char[4] Valore magic: GPAD
4..7 uint32 BE Bitmask dei pulsanti
8 uint8 Stick sinistro X (0–255, centro 128)
9 uint8 Stick sinistro Y
10 uint8 Stick destro X
11 uint8 Stick destro Y
12 uint8 Valore analogico L2 (0–255)
13 uint8 Valore analogico R2 (0–255)
14–15 uint16 Riservato

TCP 6970 — Controllo e diagnostica

Magic Payload Effetto
GBND uint32 userId + uint64 virtualDeviceId + uint64 physicalDeviceId Disconnette il dispositivo fisico e associa il dispositivo virtuale all’utente.
HVDI uint32 padHandle Invia una pressione diagnostica del tasto Cross tramite VDI.
TYPE uint32 type (0 = DS4, 3 = DualSense) Riconfigura il tipo di dispositivo virtuale.
DISC vuoto Disconnette il dispositivo virtuale.

WebSocket /ws — Stream del controller

I client browser inviano frame JSON a circa 30 Hz:

json

{
  "buttons": 0,
  "lx": 128,
  "ly": 128,
  "rx": 128,
  "ry": 128,
  "l2": 0,
  "r2": 0,
  "target_ip": "192.168.1.x",
  "seq": 1,
  "ts": 1717430000000
}

Il bridge ESP32 restituisce periodicamente frame di stato:

json

{
  "event": "state",
  "connected": true,
  "tx": 1500,
  "err": 0
}

HTTP API

Endpoint Metodo Descrizione
/api/status GET Restituisce lo stato del sistema, stato WiFi, stato controller e risultati delle scansioni.
/api/scan GET Avvia una scansione della subnet per rilevare console.
/api/ble/scan GET Avvia una scansione BLE per i controller.
/api/ble/status GET Restituisce lo stato della connessione BLE.
/api/ble/connect POST Connette un controller BLE usando {"addr":"xx:xx:xx:xx:xx:xx"}.
/api/ble/disconnect POST Disconnette il controller BLE attivo.
/api/controller/pulse GET Invia un test diagnostico di pressione del tasto Cross a ?ip=192.168.1.x.
/api/settings/deploy POST Distribuisce il payload ELF alla console selezionata.
/ws WS Stream WebSocket per input del controller.
/ws/klog WS Stream WebSocket per output dei log klog.

Compilazione da sorgente

Requisiti

Payload per console

  • ps4-payload-sdk oppure ps5-payload-sdk
  • toolchain LLVM.
  • variabile LLVM_CONFIG puntata a una versione compatibile di llvm-config (se richiesta dalla configurazione SDK).

Bridge ESP32

  • ESP-IDF v5.3 o superiore.
  • scheda ESP32-WROOM-32U.
  • adattatore USB seriale oppure supporto di flashing USB nativo della scheda.

Desktop GUI

  • CMake 3.20 o superiore.
  • compilatore C++17 (GCC, Clang o MSVC).
  • Python 3 (necessario per l’embedding automatico degli asset).
  • librerie GLFW/OpenGL (su Linux/Ubuntu: libx11-dev, libxrandr-dev, libxinerama-dev, libxcursor-dev, libxi-dev, libgl1-mesa-dev).

Esempio build payload PS4

bash

cd payload

LLVM_CONFIG=/opt/homebrew/opt/llvm/bin/llvm-config \
PS4_PAYLOAD_SDK=../external/ps4-payload-sdk \
make

Output: payload/ghostpad.elf

Esempio build payload PS5

ini

cd payload

PS5_PAYLOAD_SDK=/opt/ps5-payload-sdk make

Output: payload/ghostpad.elf

Esempio bridge ESP32

bash

cd esp32-ghostpad

cp sdkconfig.private.example sdkconfig.private.defaults
# Modifica sdkconfig.private.defaults

source ~/esp/esp-idf/export.sh

idf.py set-target esp32
idf.py build
idf.py -p /dev/cu.usbmodemXXXX flash

Esempio Desktop GUI

bash

cd Ghostpad-native
cmake -B build -DCMAKE_BUILD_TYPE=Release
cmake --build build --config Release

VDA Probe

tools/vda_probe è un payload diagnostico usato per verificare le assunzioni specifiche del firmware riguardo VDA.

Può:

  • Enumerare gli export di libScePad
  • Identificare la funzione di dispatch VDA.
  • Analizzare i simboli MBus usati nel processo di binding.
  • Riportare byte di istruzioni per pattern matching in shellui_pad.c

Build:

bash

cd tools/vda_probe

make PS4_PAYLOAD_SDK=/path/to/sdk

Dopo la compilazione, caricare vda_probe.elf e controllare l’output nei log klog della console.

Mappatura tastiera

Tasto Azione Tasto Azione
W / A / S / D D-pad I / J / K / L Triangolo / Quadrato / Cross / Cerchio
U / O L1 / R1 Q / E L2 / R2
Enter Options Backspace Share / Create
Space PS Button T Touchpad

Limitazioni note

  • Pattern VDA specifici per firmware: build non supportate possono richiedere nuovi scan tramite vda_probe
  • Un solo dispositivo virtuale alla volta.
  • Nessun supporto haptics o vibrazione (feedback PS4/PS5 → client non inoltrato).
  • Relay controller su ESP32 solo BLE (Bluetooth Classic / BR/EDR non supportato).
  • Finestra di pairing DualSense limitata (richiede sequenza manuale PS + Create + breve advertising).

Download: Source code Ghostpad

Alcune parti di questo articolo sono state generate con l’aiuto dell’intelligenza artificiale.

🔥 Prodotti in promozione e articoli più venduti: PS4

Vedi altri prodotti PS4

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

Ultimo aggiornamento 2026-07-15 / 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.