pure-python-adb icon indicating copy to clipboard operation
pure-python-adb copied to clipboard

screencap not working on waydroid

Open GordonGuenther opened this issue 1 year ago • 3 comments

Hi,

when using waydroid with hardware acceleration screencap doesn't create readable files anymore.

The issue with waydroid and hardware acceleration is that, the native screencap in adb shell is writing out an error /vendor/etc/hwdata/amdgpu.ids: No such file or directory but still creates a valid image file. If called via ppadb there is no error thrown, just the file that has been written is not a valid image anymore. The error message is written at the start of the file instead.

I slightly adapted the example code to test this:

client = AdbClient(host='127.0.0.1', port=5037)
devices = client.devices()
device = devices[0]

response = device.shell('wm size')
print(response)

result = device.screencap()
with open("screen.png", "wb") as fp:
    fp.write(result)

GordonGuenther avatar May 02 '24 12:05 GordonGuenther

As a workaround changing the cmd in the screencap method of command/transport/init.py from cmd = "shell:/system/bin/screencap -p" to cmd = "shell:/system/bin/screencap 2>/dev/null -p" works for me

GordonGuenther avatar May 02 '24 12:05 GordonGuenther

Do you feel this will be all devices, or just waydroid? May be best to fix with a feature toggle?

 2>/dev/null

CloCkWeRX avatar Feb 09 '25 01:02 CloCkWeRX

Did you want to trial https://github.com/spm5065/pure-python-adb/pull/4 and see if passing the extra arguments works, with BC breaks?

CloCkWeRX avatar Feb 09 '25 01:02 CloCkWeRX