aboutsummaryrefslogtreecommitdiff
path: root/README.md
blob: c53b643e964a6f1bc6f59088481d21285fa37731 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
# Cuttlefish Getting Started

## Try Cuttlefish

1. Make sure virtualization with KVM is available.

   ```bash
   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].

  [GCE guide]: https://cloud.google.com/compute/docs/instances/enable-nested-virtualization-vm-instances

*** promo
   ARM specific steps:
   - When running on an ARM machine, the most direct way is to check
   for the existence of `/dev/kvm`. Note that this method can also be used to
   confirm support of KVM on any environment.
***

2. Download, build, and install the host debian packages:

   ```bash
   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.

3. Go to http://ci.android.com/
4. Enter a branch name. Start with `aosp-main` if you don't know what you're
   looking for
5. Navigate to `aosp_cf_x86_64_phone` and click on `userdebug` for the latest build

*** promo
   For ARM, use branch `aosp-main-throttled` and device target `aosp_cf_arm64_only_phone-trunk_staging-userdebug`
***

6. Click on `Artifacts`
7. 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
8. Scroll down to `cvd-host_package.tar.gz`. You should always download a host
   package from the same build as your images.
9. On your local system, combine the packages:

   ```bash
   mkdir cf
   cd cf
   tar xvf /path/to/cvd-host_package.tar.gz
   unzip /path/to/aosp_cf_x86_64_phone-img-xxxxxx.zip
   ```

10. Launch cuttlefish with:

   `$ HOME=$PWD ./bin/launch_cvd`

## Debug Cuttlefish

You can use `adb` to debug it, just like a physical device:

   `$ ./bin/adb -e shell`

## Launch Viewer (WebRTC)

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](https://source.android.com/setup/create/cuttlefish-ref-webrtc).

## Stop Cuttlefish

You will need to stop the virtual device within the same directory as you used
to launch the device.

   `$ HOME=$PWD ./bin/stop_cvd`