| # screen-capture-utils |
| |
| Utilities for screen capturing for dev/test images for working with screen |
| capture. |
| |
| [TOC] |
| |
| ## screenshot |
| |
| Provides a screenshot of the current display. Useful for capturing what's on the |
| display when test has failed, for example. Not all devices are supported yet, so |
| your mileage may vary. |
| |
| ## kmsvnc |
| |
| VNC server using the same infrastructure as screenshot for grabbing display. |
| |
| Here’s a quick rundown of how to use kmsvnc. |
| |
|  |
| |
| ```shell |
| (DUT)# kmsvnc |
| ``` |
| |
| VNC server will start listening on port 5900. |
| |
| ### Using a VNC viewer. |
| |
| Forward the port 5900 with SSH from your client, and connect through the port. |
| Example: |
| |
| ```shell |
| (workstation)$ ssh -L 5900:localhost:5900 DUT # Keep this running to forward port. |
| ``` |
| |
| Then connect using a VNC client. It could be any client but tigervnc-viewer |
| Debian package worked well from crostini on fizz. Make the client connect to |
| `localhost` port 5900 (which is display number 0, the parameter for |
| xtigervncviewer becomes `localhost:0`) |
| |
| ```shell |
| (workstation)$ sudo apt install tigervnc-viewer # to install on Debian. |
| (workstation)$ xtigervncviewer localhost:0 |
| ``` |
| |
| ### Using novnc. |
| |
| novnc is a VNC client on the web. On test images novnc is available. It will |
| start listening to port 6080, open browser to point to the page. |
| |
| ``` |
| (workstation)$ ssh -L 6080:localhost:6080 DUT |
| (DUT)# kmsvnc & |
| (DUT)# novnc & |
| Navigate to this URL: |
| |
| http://localhost:6080/vnc.html?host=localhost&port=6080 |
| |
| Press Ctrl-C to exit |
| |
| ``` |
| |
| If you're in a local network such as a home network, this might be an option to |
| open the port directly so you can connect directly, specifying the DUT IP |
| address directly like: `http://${DUT}:6080/vnc.html?host=${DUT}&port=6080` |
| |
| ``` |
| (DUT)# iptables -I INPUT -p tcp --dport 6080 -j ACCEPT |
| ``` |
| |
| ### Reporting bugs |
| |
| TODO(uekawa): set up component for crbug. |
| |
| For Googlers please use http://go/kmsvnc-bug to file a bug. Current known issues |
| are available at http://b/hotlistid:2869886 |
| |
| ## Development notes |
| |
| ### Building and testing |
| |
| For development I typically deploy to /usr/local/ because tests expect them |
| there. |
| |
| ``` |
| $ BOARD=rammus |
| $ DUT=localhost:2229 |
| $ setup_board --board=${BOARD} # required only once per board. |
| $ cros_workon --board=${BOARD} start screen-capture-utils |
| $ emerge-${BOARD} -j 100 chromeos-base/screen-capture-utils |
| $ cros deploy --root=/usr/local/ "${DUT}" chromeos-base/screen-capture-utils |
| $ tast run "${DUT}" graphics.KmsvncConnect |
| $ tast run "${DUT}" graphics.Smoke.platform |
| ``` |
| |
| For debugging I typically need to deploy to /usr/sbin, from inside chroot |
| |
| ``` |
| $ cros deploy "${DUT}" chromeos-base/screen-capture-utils |
| $ gdb-${BOARD} --remote="${DUT}" /usr/sbin/kmsvnc |
| ``` |
| |
| To run unit-tests |
| |
| ``` |
| $ FEATURES=test emerge-$BOARD screen-capture-utils |
| ``` |
| |
| ### Running with more logs |
| |
| With extra verbosity kmsvnc outputs things like fps logs. Use vmodule flag to |
| enable such extra logging. |
| |
| ``` |
| kmsvnc --vmodule=kmsvnc=2 |
| ``` |