commit | 91e9fe3facc438a35a45aa959dd865df2cef640f | [log] [tgz] |
---|---|---|
author | Jesus Sanchez-Palencia <jesussanp@google.com> | Thu Sep 14 13:26:17 2023 -0700 |
committer | Jesus Sanchez-Palencia <jesussanp@google.com> | Fri Oct 06 10:28:22 2023 -0700 |
tree | d729a16110633b54e4bb82a184404c9d0bf3c2ac | |
parent | 8289011c6fa65632b76931d0ff5c8edfc3c28668 [diff] |
lights: Send light updates to frontend Add a way to register data channels with the lights client and connect it to the frontend through javascript. Now the Lights client on the host will send light updates any to the frontend on all connected instances whenever a light state change happens and is communicated by the guest. LightsObserver caches the latest light state so we can support more than one webrtc connection. The LightsObserver is started from main and registered with the Observer Factory. Whenever a new data channel is created we register it with the LightsObserver so we can make sure to send updates through all registered callbacks. The data channel is unregistered when it's closed. Note that we have named the API following a Subscribe / Unsubscribe semantics to keep the implementation consistent with the code base (e.g. sensor handler). We were able to validate this with log messages on the javascript console. We will eventually add a battery led to the Cuttlefish UI for the configurations where this makes sense and reflect the updates there. Bug: 286106270 Tested: Ran emulator and checked the javascript console to see the color Tested: changes when changing the battery levels with adb. Tested: adb shell cmd battery set level 10 (received #ffff0000, red) Tested: adb shell cmd battery set level 50 (received #ffffff00, yellow) Tested: adb shell cmd battery set level 100 (received #ff00ff00, green) Change-Id: Iae305d71914f29fde99ce2d284e73ae3e012edc3
Make sure virtualization with KVM is available.
grep -c -w "vmx\|svm" /proc/cpuinfo
This should return a non-zero value. If running on a cloud machine, this may take cloud-vendor-specific steps to enable. For Google Compute Engine specifically, see the GCE guide.
ARM specific steps:
/dev/kvm
. Note that this method can also be used to confirm support of KVM on any environment.Download, build, and install the host debian packages:
sudo apt install -y git devscripts config-package-dev debhelper-compat golang curl git clone https://github.com/google/android-cuttlefish cd android-cuttlefish for dir in base frontend; do cd $dir debuild -i -us -uc -b -d cd .. done sudo dpkg -i ./cuttlefish-base_*_*64.deb || sudo apt-get install -f sudo dpkg -i ./cuttlefish-user_*_*64.deb || sudo apt-get install -f sudo usermod -aG kvm,cvdnetwork,render $USER sudo reboot
The reboot will trigger installing additional kernel modules and applying udev rules.
Go to http://ci.android.com/
Enter a branch name. Start with aosp-master
if you don‘t know what you’re looking for
Navigate to aosp_cf_x86_64_phone
and click on userdebug
for the latest build
aosp-master-throttled-copped
and device target aosp_cf_arm64_only_phone-userdebug
Click on Artifacts
Scroll down to the OTA images. These packages look like aosp_cf_x86_64_phone-img-xxxxxx.zip
-- it will always have img
in the name. Download this file
Scroll down to cvd-host_package.tar.gz
. You should always download a host package from the same build as your images.
On your local system, combine the packages:
mkdir cf cd cf tar xvf /path/to/cvd-host_package.tar.gz unzip /path/to/aosp_cf_x86_64_phone-img-xxxxxx.zip
Launch cuttlefish with:
$ HOME=$PWD ./bin/launch_cvd
You can use adb
to debug it, just like a physical device:
$ ./bin/adb -e shell
When launching with ---start_webrtc
(the default), you can see a list of all available devices at https://localhost:8443
. For more information, see the WebRTC on Cuttlefish documentation.
You will need to stop the virtual device within the same directory as you used to launch the device.
$ HOME=$PWD ./bin/stop_cvd