From 0daa328a3c8b6c09d98d946c6ae955f56f6f7824 Mon Sep 17 00:00:00 2001 From: fstat13 Date: Thu, 15 Oct 2026 15:12:13 +0200 Subject: [PATCH] docs: fool-proof guide + complete build walkthrough (md and html) - docs/GUIDE.md: step-by-step usage (what you see at every step), tuning, symptom-by-symptom troubleshooting, uninstall - docs/BUILD.md: complete build chain (payload via docker, PC toolchain install, exact commands, verification, gotchas) - docs/index.html: rebuilt with quick-start detail, log-line table, troubleshooting, build section, anchors - README: detailed quick start, corrected build commands (static dll, luxtheme, embed order) and links --- README.md | 67 ++++++++++------ docs/BUILD.md | 160 ++++++++++++++++++++++++++++++++++++++ docs/GUIDE.md | 112 ++++++++++++++++++++++++++ docs/index.html | 203 +++++++++++++++++++++++++++++++++++++++++------- 4 files changed, 492 insertions(+), 50 deletions(-) create mode 100644 docs/BUILD.md create mode 100644 docs/GUIDE.md diff --git a/README.md b/README.md index 19ae8ad..e31423d 100644 --- a/README.md +++ b/README.md @@ -31,50 +31,69 @@ No capture card. No Remote Play. No cloud. Just your console and your network. make +docker run --rm -v "$PWD/payload:/payload" -w /payload ps5sdk:18 make ``` -**Driver + single-file app** (mingw-w64, no dependencies β€” build order matters, -the `.res` embeds the driver and the payload): +**PC side** β†’ `pscapture.exe` + `pscapture.dll` (needs MinGW-w64 with `gcc` + +`windres`): ```bash -# 1) the capture-card driver -gcc -O2 -shared -o pc/pscapture.dll pc/ps5cam.c -lole32 -loleaut32 -luser32 -ladvapi32 -lws2_32 +cd pc +cp ../payload/pscapture.elf . # gets embedded as-is +# 1) the capture-card driver (-static is mandatory, see BUILD.md) +gcc -O2 -shared -static -static-libgcc -o pscapture.dll ps5cam.c \ + -lole32 -loleaut32 -luser32 -ladvapi32 -lws2_32 # 2) resources = icon + payload + driver -windres pc/pscapture.rc -O coff -o pc/pscapture.res +windres pscapture.rc -O coff -o pscapture.res # 3) the app (one self-contained executable) -gcc -O2 -mwindows -o pc/pscapture.exe pc/pscapture.c pc/pscapture.res -lws2_32 -lshell32 -ladvapi32 +gcc -O2 -mwindows -o pscapture.exe pscapture.c pscapture.res \ + -lws2_32 -lshell32 -ladvapi32 -luxtheme ``` +Rebuild rule: **DLL β†’ windres β†’ exe, every time** β€” rebuilding only the exe +ships the old driver inside it. + ## ❓ FAQ **Does it work on firmwares older than 13.60?** diff --git a/docs/BUILD.md b/docs/BUILD.md new file mode 100644 index 0000000..6388da0 --- /dev/null +++ b/docs/BUILD.md @@ -0,0 +1,160 @@ +# PSCapture β€” build from source, step by step + +Everything needed to go from these sources to a working `PSCapture.exe` and a +`pscapture.elf` for the console. Every command is written exactly as it is +run, in order. Nothing here is optional magic β€” the order matters and each +step is explained. + +There are two halves, built in different places: + +| Half | Output | Where it builds | Toolchain | +|---|---|---|---| +| Console payload | `payload/pscapture.elf` | Docker (Linux container) | PS5 payload SDK (prospero-clang) | +| PC side | `pc/pscapture.exe` + `pc/pscapture.dll` | Windows | MinGW-w64 (`gcc` + `windres`) | + +--- + +## Part 1 β€” The console payload + +### 1.1 What you need + +- **Docker** (Docker Desktop on Windows, or plain Docker on Linux/macOS). +- **The PS5 payload SDK container image.** This is the community PS5 payload + SDK (`prospero-clang`, `make`, `PS5_PAYLOAD_SDK` set in the environment) + baked into an image. On the development machine the image is tagged + `ps5sdk:18` β€” any name works, adjust the commands below to match yours. + +Check the image is there: + +```bash +docker images | grep ps5sdk +``` + +### 1.2 Build + +From the repository root: + +```bash +docker run --rm -v "$PWD/payload:/payload" -w /payload ps5sdk:18 make +``` + +On Windows PowerShell/cmd, give the full path instead of `"$PWD/payload"`, +e.g. `-v "C:\Users\you\PSCapture\payload:/payload"`. + +Result: **`payload/pscapture.elf`** (~175 KB). + +The `Makefile` does the only thing that matters: compile `main.c` with the +Prospero clang from the SDK and link the final ELF. No other inputs. + +### 1.3 Optional β€” send it to the console + +With the console jailbroken (payload loader on port 9021): + +```bash +docker run --rm -v "$PWD/payload:/payload" -w /payload ps5sdk:18 \ + make deploy PS5_HOST=192.168.0.36 +``` + +(or just push `pscapture.elf` with whatever loader you normally use). + +What a healthy run looks like on the console: + +- `/data/pscapture.log` appears and logs the startup, +- `/data/pscapture.port` appears containing the TCP port of the stream, +- the console pops the notification *PSCapture is streaming on:PORT*. + +--- + +## Part 2 β€” The PC side + +### 2.1 What you need (Windows) + +**MinGW-w64 64-bit** with `gcc` and `windres`. On the development machine: + +```powershell +winget install BrechtSanders.WinLibs.POSIX.UCRT +``` + +(or any MSYS2 `mingw-w64-x86_64-gcc` install β€” `pacman -S mingw-w64-x86_64-gcc`). + +Check both tools are on PATH: + +```bash +gcc --version +windres --version +``` + +### 2.2 Build β€” the order is mandatory + +`pscapture.res` is a bundle that **embeds files as they are on disk**: the +icon, the console payload and the capture-card driver. So the DLL must be +built *before* the resource step, and the payload must be sitting in `pc/` +when `windres` runs. Build the EXE last. + +```bash +cd pc + +# 0) bring the freshly built payload next to the .rc (it gets embedded as-is) +cp ../payload/pscapture.elf . + +# 1) the capture-card driver (DirectShow source filter) +gcc -O2 -shared -static -static-libgcc -o pscapture.dll ps5cam.c \ + -lole32 -loleaut32 -luser32 -ladvapi32 -lws2_32 + +# 2) bundle icon + payload + driver into one resource object +# (pscapture.rc => 1 ICON pscapture.ico / 2 RCDATA pscapture.elf +# / 3 RCDATA pscapture.dll) +windres pscapture.rc -O coff -o pscapture.res + +# 3) the app β€” one self-contained executable +gcc -O2 -mwindows -o pscapture.exe pscapture.c pscapture.res \ + -lws2_32 -lshell32 -ladvapi32 -luxtheme +``` + +### 2.3 Verify the build + +```bash +# the driver must depend on system DLLs ONLY (no libgcc/libwinpthread): +objdump -p pscapture.dll | grep "DLL Name" + +# sizes look right: exe ~500 KB, dll ~220 KB +ls -la pscapture.exe pscapture.dll + +# both the payload and the driver are really inside the exe: +strings pscapture.exe | grep -c PSCapture +``` + +Run `pscapture.exe`: the window opens (UAC prompt β†’ Yes), the log pane walks +through driver check β†’ payload extraction β†’ deploy attempt. That is the same +sequence described in `docs/INSTALLER.md`. + +### 2.4 Gotchas (learned the hard way) + +- **`-static -static-libgcc` on the DLL is not cosmetic.** Without it the + driver can end up needing mingw runtime DLLs that are *not* on the system + PATH when Windows (or another app) loads it β€” the classic + *"the specified module could not be found"*. +- **Build order.** `windres` reads `pscapture.dll` and `pscapture.elf` from + `pc/` at compile time. Rebuild the DLL β†’ re-run `windres` β†’ rebuild the + EXE, every time. Forgetting the middle step ships an old driver inside the + new exe. +- **ASCII only** in strings passed to the `*A` Win32 APIs (window titles, + buttons, logs). UTF-8 bytes in an ANSI string render as mojibake. +- The **manifest** (`pc/pscapture.manifest`) is kept for reference only; + the current build does **not** embed it β€” self-elevation is done in code + (`ShellExecuteEx … "runas"`), which avoids mingw's `.rsrc merge failure` + with multiple manifests. + +### 2.5 Package a release + +```bash +mkdir -p dist +cp pc/pscapture.exe pc/pscapture.dll dist/ +``` + +`pscapture.exe` alone is enough for users (the DLL and the payload travel +inside it). The bare `pscapture.dll` is attached for manual installs: + +```bash +rundll32 "pscapture.dll",DllRegisterServer +``` diff --git a/docs/GUIDE.md b/docs/GUIDE.md new file mode 100644 index 0000000..c52018c --- /dev/null +++ b/docs/GUIDE.md @@ -0,0 +1,112 @@ +# PSCapture β€” the fool-proof guide + +From zero to your PS5 inside Discord. Every step says exactly what you should +see on screen. If something doesn't match, jump to the troubleshooting table +at the bottom. + +--- + +## 0. What you need + +**On the console** β€” all standard in current jailbreak setups: + +| Thing | Port | Why | +|---|---|---| +| Payload loader (`elfldr`-style) | TCP **9021** | runs the payload we send | +| Anonymous FTP | TCP **2121** | the app reads/writes files on the console | +| `pldmgr` autoloader (optional) | β€” | makes the payload start at every boot | + +**On the PC**: Windows 10/11 64-bit, wired network recommended. + +**The app**: `PSCapture.exe` β€” **one single file**. Download it from the +repository's Releases page. That's the whole package: the console payload and +the Windows capture-card driver are inside it. + +--- + +## 1. First run on the PC + +1. Put `PSCapture.exe` anywhere (the Desktop is fine) and **double-click it**. + +2. Windows asks *"Do you want to allow this app to make changes to your + device?"* β†’ click **Yes**. + *Why:* registering the virtual camera for every app on the machine needs + administrator rights, once. The app elevates itself β€” no right-click needed. + +3. The window opens (dark, with a big blue **START STREAMING** button). + If your PS5 is not at `192.168.0.36`: type its address in the **PS5 IP** + field and press **Apply**. + +4. From here the app does everything alone. Watch the dark log pane: + + | You should read | Meaning | + |---|---| + | `driver gia' installato` | camera already registered β€” fine | + | `driver estratto dall'eseguibile (… byte)` + `driver registrato - la webcam 'PS5 Capture' e' pronta` | first run: driver installed | + | `payload dall'eseguibile (… byte)` + `payload avviato - la PS5 deve mostrare la notifica PSCapture` | the payload is now running on the console | + | `porta stream: 9xxx` then `collegato a 192.168.0.36:9xxx` | stream connected | + | status pill turns **green**: `STREAMING - scegli 'PS5 Capture' in Discord` | you're live | + +5. The PS5 shows a system notification: **PSCapture is streaming on:PORT**. + (That toast is the console telling you the payload is alive.) + +> If the pill stays on *"IN ATTESA DELLA PS5 β€” accesa e col jailbreak avviato?"* +> the console is off, not jailbroken, or the IP is wrong. See section 5. + +## 2. Use it + +**Discord (in a call)** β€” *Settings β†’ Voice & Video β†’ Camera* β†’ **PS5 Capture**. +The in-call image is 720p: that's Discord's engine, it asks *every* camera +(capture cards included) for 1280x720. + +**OBS** β€” *Sources β†’ **+** β†’ Video Capture Device* β†’ **PS5 Capture**. +This runs at the full **1920x1080**. + +**ffmpeg** β€” `ffmpeg -f dshow -i video="PS5 Capture" capture.mkv` + +## 3. Daily use + +- Open `PSCapture.exe` β†’ **Yes** to the admin prompt. The app reconnects by + itself: if the payload is already on the console (autoloader) the stream + starts by itself; if the console is off the pill says + *"IN ATTESA DELLA PS5"* and connects the moment the console is ready. +- Press **Stop** (or close the app) to stop streaming. The camera goes black / + freezes on the last frame; consumers keep the device listed. +- **Deploy payload** re-sends the payload by hand (useful after a console + reboot without autoloader). **Install driver** re-registers the camera by + hand (useful if the log shows a driver error). + +## 4. The two knobs + +| Knob | What it does | Rules | +|---|---|---| +| `gain` | chroma (color) strength | `1.0` = raw, the correct default. Only touch it if colors look wrong. | +| `shift px` | moves the image left/right | **even numbers only** (an odd number inverts the colors). Tune until the picture is centered; the console's title text is a good anchor. | + +Both apply live (about a second) and are saved in `pscapture.ini` next to the +exe, so they survive restarts. + +## 5. Troubleshooting β€” symptom by symptom + +| Symptom | Cause | Fix | +|---|---|---| +| Pill stays `AVVIO...` / `IN ATTESA DELLA PS5` | console off, **not jailbroken**, or wrong IP | turn the console on, run the jailbreak (ports 9021/2121 must be up), check the IP field | +| Log repeats `PS5 non raggiungibile (...)`, riprova | same as above | same | +| No `PS5 Capture` camera appears in Discord/OBS | driver never registered (install failed) | press **Install driver**; read the log line after it β€” it now reports the *real* error | +| Log: `ERRORE: driver non scrivibile in C:\Program Files\PSCapture (serve admin?)` | app not elevated | close it, restart `PSCapture.exe` and accept the UAC prompt | +| Log: `ERRORE caricando la dll (err=126)` | antivirus quarantined the extracted dll | check the antivirus quarantine for `pscapture.dll`, allow it, press **Install driver** again | +| Camera listed but the image is black | stream not running | check the pill; press **Deploy payload** and/or **START STREAMING** | +| Colors look wrong (skin reddish, sky orange) | `gain` was changed | set `gain` back to `1.0` β†’ Apply | +| Image has a black bar / is off-center | alignment | tune `shift px` (even values) until centered | +| Discord keeps showing 720p | Discord's engine caps every camera at 720p | use OBS for 1080p, or Discord screen-share (1080p60 with Nitro) | +| OBS shows the camera, Discord doesn't | Discord was already open when the driver was installed | fully quit Discord (also from the tray) and reopen it | +| Everything else | β€” | read `pscapture-app.log` (next to the exe, or in `%TEMP%`) and the console log `/data/pscapture.log` (FTP) | + +## 6. Uninstall + +1. Close the app. +2. `rundll32 "%ProgramFiles%\PSCapture\pscapture.dll",DllUnregisterServer` + (removes the camera registration). +3. Delete `C:\Program Files\PSCapture`. +4. Optional, on the console: delete `/data/pldmgr/payloads/pscapture/` so the + autoloader stops starting it. diff --git a/docs/index.html b/docs/index.html index b4888d5..774b0c6 100644 --- a/docs/index.html +++ b/docs/index.html @@ -30,6 +30,7 @@ padding:5px 12px;border-radius:999px;font-size:13px;color:var(--dim)} .badge b{color:var(--fg)} h2{margin:52px 0 14px;font-size:26px} + h3{margin:26px 0 10px;font-size:19px} .cards{display:grid;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:14px} .card{background:var(--card);border:1px solid var(--line);border-radius:14px;padding:18px 20px} .card h3{margin:0 0 8px;font-size:17px} @@ -47,22 +48,35 @@ color:#fff;font-weight:600;display:flex;align-items:center;justify-content:center} ol.steps b{color:var(--fg)} ol.steps span{color:var(--dim)} + ul.plain{color:var(--dim);padding-left:22px} + ul.plain b{color:var(--fg)} table{width:100%;border-collapse:collapse;margin-top:14px;font-size:14.5px} - th,td{text-align:left;padding:10px 12px;border-bottom:1px solid var(--line)} + th,td{text-align:left;padding:10px 12px;border-bottom:1px solid var(--line); + vertical-align:top} th{color:var(--dim);font-weight:500} + td code,th code{white-space:nowrap} code,kbd{background:#0a0d12;border:1px solid var(--line);border-radius:6px; padding:1px 7px;font:13.5px/1.5 Consolas,monospace;color:#cfe3ff} + pre{background:#0a0d12;border:1px solid var(--line);border-radius:12px; + padding:14px 16px;overflow-x:auto;font:13.5px/1.6 Consolas,monospace; + color:#cfe3ff} + pre .c{color:#5f7186} details{background:var(--card);border:1px solid var(--line);border-radius:12px; padding:14px 18px;margin:10px 0} summary{cursor:pointer;font-weight:600} details p{color:var(--dim);margin:10px 0 0} .note{background:linear-gradient(0deg,rgba(0,112,209,.08),rgba(0,112,209,.08)), var(--card);border:1px solid #23405f;border-radius:12px;padding:14px 18px;color:#cfe3ff} + .warn{background:linear-gradient(0deg,rgba(226,34,54,.07),rgba(226,34,54,.07)), + var(--card);border:1px solid #5f2330;border-radius:12px;padding:14px 18px;color:#f3cdd3} footer{color:var(--dim);border-top:1px solid var(--line);margin-top:70px; padding:26px 0 40px;font-size:13.5px} .dot{display:inline-block;width:9px;height:9px;border-radius:50%; background:var(--rec);margin-right:8px;vertical-align:1px} .ok{color:var(--ok);font-weight:600} + .toc{display:flex;gap:8px;flex-wrap:wrap;margin-top:18px} + .toc a{border:1px solid var(--line);background:var(--card);border-radius:999px; + padding:4px 12px;font-size:13px} @@ -83,6 +97,13 @@ No Remote Play 1080p · ~30 fps + @@ -121,30 +142,154 @@
DirectShow filter exposes the ring as a camera every app can use.
-

Quick start

+

Quick start β€” step by step

+ +
+ What you need first. A jailbroken PS5 with the standard setup: + a payload loader on TCP 9021 (elfldr-style), + anonymous FTP on TCP 2121, and optionally the + pldmgr autoloader so the payload starts on every boot. + PC and console on the same LAN. Download PSCapture.exe from the + Releases page β€” it's one single file: the console payload and the + Windows driver are inside it. +
+
    -
  1. Jailbreak your PS5
    - Any kernel-capable jailbreak that gives you payloads - (elfldr on port 9021, anonymous FTP on 2121 and the - pldmgr autoloader).
  2. -
  3. Run PSCapture.exe
    - Windows asks for administrator once. Type the PS5 IP address if it - is not the default 192.168.0.36.
  4. -
  5. Press Start
    - The app installs the virtual capture driver (first run), sends the - payload to the console, registers it in the autoloader and starts the - stream. The PS5 shows the streaming notification.
  6. -
  7. Discord / OBS / anything
    - Choose the camera PS5 Capture. Done β€” that is your PS5 on - the other side.
  8. +
  9. Jailbreak the console
    + Any kernel-capable jailbreak that gives you the payload loader + (:9021), anonymous FTP (:2121) and β€” optionally β€” the + pldmgr autoloader.
  10. +
  11. Double-click PSCapture.exe
    + Windows asks β€œDo you want to allow this app to make changes?” + β†’ Yes. The app elevates itself; admin is needed once, to register + the virtual camera for every program on the machine.
  12. +
  13. Check the IP
    + If your PS5 is not at 192.168.0.36, type its address + in the PS5 IP field and press Apply.
  14. +
  15. Watch it work β€” press nothing
    + The app does everything alone, and narrates it in the dark log pane + (see the table below). On the console you will also see the system + notification β€œPSCapture is streaming on:PORT”.
  16. +
  17. Use it in any app
    + Discord (call): Settings β†’ Voice & Video β†’ Camera β†’ + PS5 Capture (720p β€” Discord asks every camera for 720p, capture + cards included). OBS: add a Video Capture Device β†’ full + 1920x1080. ffmpeg: + -f dshow -i video="PS5 Capture".
-
- Tuning: the gain field adjusts chroma intensity and - shift px fine-aligns the image horizontally (both live, - saved in pscapture.ini next to the exe). +

What you should see in the app log

+ + + + + + + + + + + + +
LineMeaning
driver gia' installatocamera already registered β€” nothing to do
driver estratto dall'eseguibile (… byte)
+ driver registrato - la webcam 'PS5 Capture' e' pronta
first run: the driver was unpacked from the exe and registered
payload dall'eseguibile (… byte)the console payload is on its way to the PS5
payload avviato - la PS5 deve mostrare la notifica PSCapturethe payload is running on the console
porta stream: 9xxx β†’ collegato a …:9xxxstream connected β€” the pill turns green: STREAMING
+ +
+ Pill stuck on β€œIN ATTESA DELLA PS5 β€” accesa e col jailbreak avviato?”
+ The console is off, not jailbroken yet, or the IP is wrong. The app keeps + retrying every 2 seconds: the moment the console is ready it connects by + itself. Ports to check on the console: 9021 and + 2121 must be open.
+

Daily use & tuning

+
    +
  • Open PSCapture.exe (UAC β†’ Yes). If the payload is already on the + console (autoloader), the stream starts by itself; otherwise press + Deploy payload once.
  • +
  • Stop / closing the app stops the stream β€” the camera freezes on + the last frame and consumers keep the device listed.
  • +
  • gain β€” chroma strength. Leave it at 1.0 (raw) unless + colors look off.
  • +
  • shift px β€” horizontal alignment. Even numbers only (an + odd value inverts the colors). Applies live, saved in + pscapture.ini next to the exe.
  • +
+ +

Troubleshooting β€” symptom β†’ fix

+ + + + + + + + + + + + + + + + + + + + + + + + +
SymptomCause β†’ fix
Pill stays AVVIO… / IN ATTESA DELLA PS5Console off or not jailbroken, or wrong IP β†’ turn it on, run the + jailbreak, check the IP field
Log repeats PS5 non raggiungibileSame as above β€” the app retries by itself
No PS5 Capture camera in Discord/OBSDriver never registered β†’ press Install driver; the log now + reports the real error
ERRORE: driver non scrivibile in C:\Program Files\PSCapture (serve admin?)App not elevated β†’ restart PSCapture.exe and accept the UAC prompt
ERRORE caricando la dll (err=126)Antivirus quarantined the extracted dll β†’ allow + pscapture.dll in the antivirus, then press + Install driver again
Camera listed but image is blackStream not started β†’ check the pill, press Deploy payload + and/or START STREAMING
Colors look wronggain was moved β†’ set it back to 1.0 and Apply
Image off-center / black barAlignment β†’ tune shift px with even numbers
Discord shows 720pDiscord's engine caps every camera at 720p β†’ use OBS for 1080p
OBS sees the camera, Discord doesn'tDiscord was open before the driver install β†’ fully quit Discord + (tray included) and reopen
Anything elseRead pscapture-app.log (next to the exe or in + %TEMP%) and the console log + /data/pscapture.log over FTP
+ +

Build from source

+ +

Sources only β€” the repo contains no binaries. + Two halves, two toolchains. The full walk-through (toolchain install, + verification, gotchas) is in docs/BUILD.md.

+ +

1 Β· Console payload β†’ pscapture.elf

+
# needs Docker + the PS5 payload SDK image (prospero-clang; here tagged ps5sdk:18)
+docker run --rm -v "<repo>/payload:/payload" -w /payload ps5sdk:18 make
+ +

2 Β· PC side β†’ pscapture.exe + pscapture.dll

+

Needs MinGW-w64 (gcc + + windres). The order is mandatory: the + .res embeds the driver and the payload as they are on disk.

+
# from the repo root
+cp payload/pscapture.elf pc/        # it gets embedded as-is
+cd pc
+
+# 1) the capture-card driver (DirectShow source filter)
+gcc -O2 -shared -static -static-libgcc -o pscapture.dll ps5cam.c \
+    -lole32 -loleaut32 -luser32 -ladvapi32 -lws2_32
+
+# 2) bundle icon + payload + driver into the resource object
+windres pscapture.rc -O coff -o pscapture.res
+
+# 3) the single-file app
+gcc -O2 -mwindows -o pscapture.exe pscapture.c pscapture.res \
+    -lws2_32 -lshell32 -ladvapi32 -luxtheme
+ +
+ Why the order? (and the two classic build mistakes) +

windres embeds files as they are on disk: if the DLL or the + payload is rebuilt after step 2, the exe still carries the old ones. + Rebuild = DLL β†’ windres β†’ exe, every time.
+ -static -static-libgcc on the DLL is mandatory: + without it Windows can fail to load the driver with the cryptic + β€œthe specified module could not be found” (missing mingw runtime).

+
+

Requirements

@@ -154,7 +299,7 @@
WhereWhat
NetworkBoth on the same LAN (gigabit is plenty for 1080p30)
-

FAQ

+

FAQ

Does it work on firmware versions older than 13.60? @@ -182,16 +327,22 @@
- The camera lists but stays black / spinner -

Open the app: the status line shows what is happening β€” not reachable - IP, payload not running, or feeder reconnecting. Everything is logged - in the window; the console side logs to /data/pscapture.log - over FTP.

+ How do I uninstall it? +

Close the app, then rundll32 "%ProgramFiles%\PSCapture\pscapture.dll",DllUnregisterServer, + delete C:\Program Files\PSCapture, and optionally delete + /data/pldmgr/payloads/pscapture/ on the console so the + autoloader stops starting the payload.