any1 / wayvnc

A VNC server for wlroots based Wayland compositors
ISC License
1.13k stars 69 forks source link

Doesn't work correctly under Labwc on older models of Raspberry Pi #318

Closed lurch closed 1 month ago

lurch commented 3 months ago

Useful information:

Please, try to gather as much of useful information as possible and follow these instructions:

Write the latest version of Raspberry Pi OS Bookworm (either 32-bit or 64-bit) from https://www.raspberrypi.com/software/operating-systems/ onto a microSD card. For 32-bit, you can reproduce this bug on a Pi 1B, a Pi 2B, a Pi 3B or a Pi 3B+. For 64-bit, you can only reproduce this bug on a Pi 3B or a Pi 3B+. Connect an HDMI monitor, USB mouse and USB keyboard to the Pi. Boot up the OS by connecting power to the Pi and run through the initial first-boot wizard. Once the OS has fully loaded, open a Terminal window, run sudo raspi-config, navigate to "Advanced Options" -> "Wayland" and select "Labwc", then select "Finish" and reboot as prompted. Once the OS has loaded again, run sudo raspi-config in a Terminal again, navigate to "Interface Options" -> "VNC" and choose "Yes" to enable it, select "Finish".

The Pi has now been configured to use the Labwc compositor, and running WayVNC. See https://www.raspberrypi.com/documentation/computers/remote-access.html#ip-address for various ways of determining the Pi's IP address. Attempt to connect to the WayVNC server on the Pi from another computer (I'm using TigerVNC Viewer v1.13.1 on a Linux laptop), and after authenticating the client appears to have connected to the Pi, but TigerVNC just displays a solid grey window! If you wiggle the laptop's mouse-cursor about inside this grey window, then the mouse-cursor also moves on the HDMI monitor attached to the Pi.

If you repeat the above test with the same microSD card on either a Raspberry Pi 4B or a Raspberry Pi 5, then TigerVNC displays the Pi's desktop totally fine, so this appears to be isolated to Pis older than a Pi 4.

any1 commented 3 months ago

Does it work with Wayfire or do those older devices require software rendering?

lurch commented 3 months ago

I'm now going on holiday for a week, so pinging @spl237 and @cillian64 in case they'd like to reply to this whilst I'm away :slightly_smiling_face:

any1 commented 3 months ago

I'm sure I have a raspberry pi 3 somewhere, but I'm not sure into which box I packed it.

Anyhow, mouse movement tells us that the wayvnc is attached to the compositor and the grey screen tells us that it has not been able to capture a single frame.

Running with the environment variable WL_DEBUG=1 would be useful to see get a trace of the communication with the compositor. It might also be interesting to run without the -g/--gpu flag to see if it has anything to do with dmabufs.

jswolf19 commented 1 month ago

I'm observing this behavior on a 3B with a DSI touch screen updated to the most recent bookworm packages.

$ wayvnc -V
wayvnc: 0.9-dev
neatvnc: 0.9-dev
aml: 0.3.0

The resolution of the gray screen and the resolution of the monitor are also out of sync, so when I mouse below (or to the right of) a certain point, the cursor wraps to the very top (left).

@any1 I'm willing to get a trace, etc, if you give me a little more detail on how to do so.

any1 commented 1 month ago

@jswolf19 What is the output from the command sudo groups vnc?

It the vnc user is not in the video group, please try adding it: sudo usermod vnc -aG video.

behackett commented 1 month ago

Adding the vnc user to the video group, then rebooting the Raspberry Pi (Raspberry Pi 3 Model B Plus Rev 1.3) fixed this problem for me. Thanks @any1.

jswolf19 commented 1 month ago

@any1 Adding vnc to group video followed by a restart worked for me as well. Without the reboot, the resolution was able to sync, and the initial login screen was displayed, but after logging in, the video was still grayed out.

lurch commented 1 month ago

Sorry for forgetting to follow-up here. We've been discussing this problem over email, and fixing the group-permissions also fixes the problem as described in the initial report. :+1:

jswolf19 commented 1 month ago

@lurch Is it ok to assume that the raspberry pi package providing wayvnc also takes care of providing permissions (or is planned to)? Is there an issue or PR somewhere for that that could be linked here, or a version number to look for?

cillian64 commented 1 month ago

@lurch Is it ok to assume that the raspberry pi package providing wayvnc also takes care of providing permissions (or is planned to)? Is there an issue or PR somewhere for that that could be linked here, or a version number to look for?

This change is made in the wayvnc package version 0.9.0~dev-1+rpt1 which should be available after an apt update. (apt policy wayvnc is a simple way to check what's installed and what the latest available is)

jswolf19 commented 1 month ago

I had had wayvnc package version 0.9.0~dev-1+rpt1 installed before but the video group wasn't added. However, I reinitialized my SD card with Pi Imager and performed an update and the vnc user was successfully added to the video group.

cillian64 commented 1 month ago

Bear in mind that vnc was added to the video group in 0.9.0~dev-1+rpt1, it wasn't in 0.9.0~dev-1.

I've just upgraded wayvnc to 0.9.0~dev-1+rpt1 on my Pi and it has added the vnc user to the video group. Did you reboot after upgrading wayvnc the first time?

jswolf19 commented 1 month ago

I think I did reboot, but I honestly don't remember. I also probably did some other stuff that might've contributed to the issue.