[SDK 0.24.12112 / VVD] gwsi-tool-screenshooter writes a 0-byte PNG or hangs

1. Summary

On the Vega Virtual Device from SDK 0.24.12112, gwsi-tool-screenshooter never produced an image. Amazon staff recommend it for screenshots in topic 27750, and as the VVD workaround in topic 20196. In two sessions it either returned after about 3 s with a 0-byte PNG, or hung until killed, again leaving a 0-byte PNG. Only the launcher was running.

App Name: none; the bug is in a device tool (we build Dice Chess TV)
App Link on Amazon Appstore: not published yet

Bug Severity
Select one that applies

  • Impacts operation of app
  • Blocks current development
  • Improvement suggestion
  • Issue with documentation (If selected, please share the doc link and describe the issue)
  • Other: the screenshot tool recommended here does not work on the Virtual Device

2. Steps to Reproduce

  1. vega virtual-device start --no-gui, and wait for the launcher. Launch no app.
  2. vega exec vda shell gwsi-tool-screenshooter /tmp/shot.png
  3. vega exec vda shell ls -la /tmp/shot.png
  4. Repeat step 2 with another file name.

3. Observed Behavior

Session 1, first run: step 2 returned after 2.7 s with no output, and /tmp/shot.png was 0 bytes.
Session 1, later runs: step 2 did not return. One process was still running after more than
2 minutes, until we killed it. Each run left a 0-byte file, in /tmp and in /data alike.
Session 2, first run after a fresh boot: step 2 was still running after 15 s, with a 0-byte file.

gwsi-tool-screenshooter -h prints usage: gwsi-tool-screenshooter [-h] [FILENAME], so the tool is present.

4. Expected Behavior

A PNG of the screen, as in the staff answer in topic 27750.

4.a Possible Root Cause & Temporary Workaround

Root cause: unknown. The device log has one line from the tool, as it starts, and nothing after it.

Workaround, on the VVD only: the Android emulator underneath the VVD returns the screen through its
own gRPC API (EmulatorController.getScreenshot) once its console has been sent `grpc <port>`.
On the same VVD, at the same time, that returned a 1920x1080 PNG. We call it through
vega-vvd-driver, an unofficial open-source tool: https://github.com/fortemate/vega-vvd-driver
(`vvd enable-grpc`, then `vvd screenshot shot.png`).

5. Logs or crash report

The tool’s only line in the device log (vega exec vda shell loggingctl log -f --since now, session 2), with the device name removed:

Sep 28 20:40:57.115057 <device> daemon.info gwsi-tool-screenshooter[2620]: 20 I Inputd-client:requestPriority:431: Client Requesting Priority 12: WRITE_TO_UDEV

We can send the full log of that run (about 3,000 lines) by PM.

6. Environment

  • SDK Version: 0.24.12112 (Vega CLI 1.3.4)
  • React Native Version: not applicable; no app was running
  • App State: no app; the launcher in the foreground
  • Host: macOS on Apple silicon; the VVD started with --no-gui
  • OS Information:
NAME="OS"
OE_VERSION="4.0.0"
OS_MAJOR_VERSION="1"
OS_MINOR_VERSION="2"
RELEASE_ID="21"
OS_VERSION="1.2"
BRANCH_CODE="TV Ship"
BUILD_DESC="OS 1.2 (TV Ship/102282480)"
BUILD_FINGERPRINT="1.0.228248.0(9a1d8dfa7da5d600)/102282480N:user/dev-keys"
BUILD_VARIANT="user"
BUILD_TAGS="dev-keys"
BUILD_DATE="Fri Sep 18 21:35:23 UTC 2026"
BUILD_TIMESTAMP="1789767323"
VERSION_NUMBER="2111248248030"

7. Example Code Snippet / Screenshots / Screengrabs

Not applicable: no app code is involved.

Hi @Fortemate,

Thanks for the detailed report.

The behavior you’re seeing is expected: gwsi-tool-screenshooter is not supported on the Vega Virtual Device. This is documented in the VDA Reference ( VDA Reference - Amazon Vega Docs ): “Vega Virtual Device doesn’t support gwsi-tool-screenshooter tool.” The tool reads from the device graphics subsystem (gwsi), which it can’t access on the VVD, so it produces a 0-byte file or stalls.

Here’s the correct approach for each target:

  • Physical Fire TV Stick - gwsi-tool-screenshooter is the supported tool and works as documented:
vega exec vda shell gwsi-tool-screenshooter /tmp/test.png
vega exec vda pull /tmp/test.png
screenshot_base64 = driver.get_screenshot_as_base64()
(Per the docs, don't capture DRM content with this command.)

Thanks for helping us improve the Vega platform.

Warm regards,
Aishwarya

Thanks, that clears it up. We had followed older replies here (topics 20196 and 27750) that suggested the tool for the VVD. Two small suggestions: could the tool exit with an error on the VVD instead of writing a 0-byte file or hanging? And could the note in the VDA reference link to the Appium screenshot docs?

Hi @Fortemate,

Glad that cleared things up! Both suggestions make sense - failing fast with a clear error on the VVD instead of writing a 0-byte file or hanging, and cross-linking the Appium screenshot docs from the VDA reference. I’ll pass them both on to the team as feedback.

Thanks again for the detailed repro and the thoughtful suggestions - they genuinely help us improve the platform.

Warm regards,
Aishwarya