1.56 bump - #3098
Open
rmuthiah wants to merge 50 commits into
Open
Conversation
Previously, outgoing buffer timestamps in emulated_camera_mplane and emulated_camera_splane were calculated directly from the frame sequence index: tv_sec = (sequence + 1) / 1000 tv_usec = (sequence + 1) % 1000 This formula caused severe clock drift due to two issues: 1. Incorrect Time Scaling: sequence increments by 1 per frame. Dividing by 1000 caused tv_sec to advance by 1 second only after 1,000 frames (~33.3 seconds of real wall-clock time at 30 FPS). 2. Microsecond Miscalculation: In timeval, tv_usec is measured in microseconds (10^-6 s). Doing % 1000 without scaling caused the timestamp to advance by only 1 microsecond per frame. This change replaces the sequence-based calculation with the host's actual monotonic clock, avoiding timestamp drift and buffer rejections in the guest. Bug: b/474406105
Bug: b/502639876 Test: cvd create --media="type=v4l2_emulated_camera_mplane,lens_facing=FRONT" && adb shell "su 0 v4l2-ctl -d /dev/video1 --list-ctrls"
- Avoid breaking existing virtio-media workflows for auto and XR targets. Bug: b/527931134
Interact with the control: ``` adb shell "su 0 v4l2-ctl -d /dev/video1 -l" adb shell "su 0 v4l2-ctl -d /dev/video1 --set-ctrl=gain=500" ``` Introduce CameraControls, to manage the state of control values. Bug: b/539617743 Assisted-by: Jetski:Gemini 3.5 Flash
std::string::compare > The overloads taking parameters named pos1 or pos2 > throws std::out_of_range if the argument is out of range. Bug: 509614113 Signed-off-by: Roman Kiryanov <rkir@google.com>
std::stoi: > std::invalid_argument if no conversion could be performed. > std::out_of_range if the converted value would fall out of the range Bug: 509614113 Signed-off-by: Roman Kiryanov <rkir@google.com>
…nated If the `Read` call fills the whole buffer, `commands.append(buffer.data())` with no zero characters will read past the buffer. If the `Read` produces data with zero characters in the middle, it will cause a loss of data. Bug: 509614113 Signed-off-by: Roman Kiryanov <rkir@google.com>
The `sms_pdu` is used in an async callback, potentially after the control leaves the scope. Bug: 509614113 Signed-off-by: Roman Kiryanov <rkir@google.com>
Implement custom AT commands AT+CEID and AT+CATR in the modem simulator to expose the EID and ATR values configured in the simulated SIM profile (XML). This allows the radio HAL to query these values dynamically instead of hardcoding them, supporting eSIM slot detection. BUG=532745689
…or dual-SIM support Add simulator profile for SIM 1 and CTS carrier API test profile to enable dual-SIM modem simulation support. These profiles are identical to their SIM 0 counterparts except for the ICCID (and its binary EF representation), IMSI, and EID. Also ignore SIGPIPE from clients in modem simulator. BUG=532745689 Test: http://go/forrest-run/L25500030157036716
Bug: b/534499070
Bug: b/534499070
Bug: b/534499070
Bug: b/534499070
Bug: b/534499070
Bug: b/542342091
Bug: b/542342091
Bug: b/542342091
Install kernel 6.18.15-1~bpo13+1 (validated for ARM64 nested virtualization on AmpereOne) and the matching NVIDIA driver 550.163.01-4~bpo13+1 from a snapshot.debian.org archive snapshot Bug: 537008147 Signed-off-by: Dmitrii Merkurev <dimorinny@google.com>
Install kernel 6.18.15-1~bpo13+1 and the matching NVIDIA driver 550.163.01-4~bpo13+1 from a snapshot.debian.org archive snapshot, matching the versions pinned by the preseed installer The Debian cloud image enables trixie-backports by default, so the pinned versions are installed unconditionally rather than gated on backports detection Bug: 537008147 Signed-off-by: Dmitrii Merkurev <dimorinny@google.com>
Append kvm-arm.mode=nested to GRUB command line so installed hosts boot with KVM nested virtualization (NV2) enabled if available Bug: 537008147 Signed-off-by: Dmitrii Merkurev <dimorinny@google.com>
…SON API The previous way to download the artifacts doesn't work. We fix it by using the latest JSON API. And also make the script more verbose on error. Signed-off-by: Ying-Chun Liu (PaulLiu) <liupa@google.com>
…he preseed check environment The check container installed linux-image-arm64 and linux-headers-arm64 from the live trixie/trixie-security archives. Real installer targets never have trixie headers, and their presence makes DKMS build the pinned NVIDIA driver against whatever kernel trixie-security shipped that day - an unpinned moving target. This broke on 2026-07-31 when Debian published 6.12.100, which the 550.163.01 driver fails to compile against, failing the nvidia matrix cell. With no stray kernels the block under test provides its own pinned kernel and DKMS builds only against the pinned, snapshot-frozen headers. Verified: the failing cell reproduced against 6.12.100 headers, and the same block passes with them absent (module builds and installs for 6.18.15). Bug: 537008147 Signed-off-by: Dmitrii Merkurev <dimorinny@google.com>
The workflow still referenced actions by tag, which the zizmor blanket policy rejects as soon as the file is touched. Pin them to the hashes the tags currently point at, keeping the same major versions so the artifact upload and download stay compatible. Bug: 537008147 Signed-off-by: Dmitrii Merkurev <dimorinny@google.com>
The qemu test jobs treat the serial console login prompt as "vm is ready" and ssh into the guest right away. The prompt only means getty started: the guest is still booting, so the ssh handshake gets reset (kex_exchange_identification: read: Connection reset by peer) and, once that is past, dns is not up yet for the first command needing it. The console is polled every 30s, so the ssh always lands at the same point after boot and whether it works is luck. Four of twelve job instances across six recent runs failed this way, on both jobs and regardless of which kernel the installer had put on the vm. Wait until systemd reports the boot finished before using the vm. Bug: 537008147 Signed-off-by: Dmitrii Merkurev <dimorinny@google.com>
….json The /builds/latest/ redirect the script followed is rate limited and returns 403 once the quota is exhausted, failing the download. Read the id from the target's status.json instead, which is not on that quota, and build the artifact URLs from it directly. Bug: 537008147 Signed-off-by: Dmitrii Merkurev <dimorinny@google.com>
Fix netsim vsock proxy parameters for vhost-user-vsock Cuttlefish host launcher run_cvd fails to pass --vhost_user_vsock=true to socket_vsock_proxy helper processes (hci_vsock_proxy and test_vsock_proxy). This results in the proxy processes binding to the host kernel vsock interface rather than the vhost-user Unix domain socket when vhost_user_vsock is enabled, causing guest vsock connections to hang. Bug: b/520342656 Test: Manual verification on CF target with vhost-user-vsock
Enables netsim to act as the cellular modem simulator for Cuttlefish by passing VSOCK connections directly to netsimd:
1. CLI & Instance Configuration:
- Adds '--netsim_modem' flag to launch_cvd to route cellular modem traffic to netsim.
- Disables the legacy standalone modem_simulator process when '--netsim_modem' or '--netsim' is active.
- Records modem simulator instance count and SIM type in CuttlefishConfig.
2. VSOCK Server Routing ('netsim_server.cpp'):
- Creates a VSOCK server socket ('SharedFD::VsockServer') listening on each guest modem simulator port.
- Configures the CELLULAR chip in netsimd's startup JSON ('-s'), passing the inherited listening file descriptor as 'vsockFd' and the SIM configuration as 'simType'.
Refactored netsim radio enabling to use per-instance config checks in netsim_server.cpp to support mixed-mode multi-instance clusters, and removed the global netsim_radio_enabled config.
Bug: 514348948
Bug: 530300761
Bug: 532125591
Test: launch_cvd --netsim_modem
Exposes `EnableNetsimNfc()` instead of netsim_radio_enabled to simplify netsim nfc checking, avoiding passing --grpc_uds_path unconditionally. Bug: 525044943 Test: bazel build //base/cvd/cuttlefish/... TAG=agy CONV=97998051-73aa-44c8-83ac-51de8d5fd83d
TAG=agy CONV=7e6b7c86-e570-4900-a8f4-683776c7dc60 Assisted-by: Jetski:GeminiNext
Remove deleted Go source files (fetchartifactsaction.go, createcvdaction_test.go, instancemanager_test.go) and unused dependencies from frontend/src/host_orchestrator/orchestrator/BUILD.bazel. Bug: b/519240653
The user-artifacts extractor (ExtractArtifact -> untar/unzip) joined attacker-controlled archive entry names onto the destination directory with no containment check and created symlink entries verbatim, allowing a crafted .tar.gz/.zip to write files outside the extraction directory Add isSafeToExtract() and use it in untar and unzip to verify each entry's resolved path stays within the destination, and reuse it to reject symlink entries whose resolved target escapes it. Add regression tests for the tar-traversal, tar-symlink and zip-traversal vectors.
There's a warning that Node 20 is being deprecated. To quiet it, apply the minimal update to the dep that's pulling in Node 20. In this case - that's github actions on v7. Just bumped it to v8 which updates to Node 24 under the hood.
Modify --media flag parsing logic to support the new pattern: "--media=[type]:[key1]=[val1]:[key2]=[val2]" e.g. "--media=v4l2_emulated_camera_mplane:lens_facing=BACK" This clearly separates the primary media type from its optional properties using `:`. Bug: b/541325033 Assisted-by: Jetski:Gemini 3.5 Flash
Adds optional string config = 11 to message Instance in load_config.proto. Updates cf_configs_instances.cpp to emit --config=<preset> per instance, allowing cvd load and cloud orchestrators to pass configuration presets natively in JSON.
Older guest host tools (e.g. Android T / tm-qpr-dev / SDK 32) do not support --helpxml and abort with SIGABRT when it is passed, resulting in empty output and ParseGflagsXmlHelp failure. Fall back to --help if ParseGflagsXmlHelp fails. Bug: b/546992730 Assisted-By: Antigravity:Gemini-Next
This was triggering too many baseimage respins when someone needed to release an image in a pinch.
- Handle tests result with "fail" value. Bug: b/533039176
Upstream is unmaintained, this fork has continued development. Bug: b/540519007 Test: bazel run @hedron_compile_commands//:refresh_all
Based on valentine.burley@collabora's arsp/4898478.
This introduces a couple of new guest config values to determine if
various vulkan apexes are supported in order to work around the fact
that Cuttlefish at HEAD currently has both gfxstream and swiftshader
in a single apex (aosp/2818460). After this change is released, the
lavapipe vulkan apex can be introduced and the pre-existing gfxstream
plus swiftshader apex can be split.
Bug: b/530070181
Bug: b/536966381
Test: bazel run //cuttlefish/package:cvd -- create \
(on main with pre-existing vulkan apex)
Test: bazel run //cuttlefish/package:cvd -- create \
--gpu_mode=guest_swiftshader
(on main with pre-existing vulkan apex)
Test: bazel run //cuttlefish/package:cvd -- create \
--gpu_mode=gfxstream_guest_angle
(on main with pre-existing vulkan apex)
Test: bazel run //cuttlefish/package:cvd -- create \
--gpu_mode=gfxstream_guest_angle
(on main with separated vulkan apexes from ag/41081278)
Test: bazel run //cuttlefish/package:cvd -- create \
(on main with separated vulkan apexes from ag/41081278)
Test: bazel run //cuttlefish/package:cvd -- create \
--gpu_mode=guest_lavapipe
(on main with separated vulkan apexes from ag/41081278)
Test: bazel run //cuttlefish/package:cvd -- create \
--config_file=spec.json
(where spec.json specifies older udc image)
The image comes from the Android build when available. Targets that don't build protected VM firmware are unaffected. Bug: 536088107 Signed-off-by: Dmitrii Merkurev <dimorinny@google.com>
When set, pass --nested=on to crosvm so the guest boots at virtual EL2, and append kvm-arm.mode=protected and kvm-arm.protected_modules=pkvm_iommu_temp to the guest kernel command line. Also disable virtio-pmem for pkvm guests (host writeback of the storage-backed pmem files invalidates the guest's nested stage-2, making the guest extremely slow) and keep pkvm_iommu_temp.ko in the first-stage ramdisk during module redistribution. Requires a nested-virt capable host, a crosvm with --nested support, and a guest image built for pKVM. Bug: 536088107 Signed-off-by: Dmitrii Merkurev <dimorinny@google.com>
In the OverlayFS, even if unlink() is succeeded, looks like there is a delay between unlink call and the file is actually disappears. Change to use rename call which ensures atomic operation for substitution.
…unners When `podman exec -it` was executed in CI scripts, pseudo-terminal allocation (-t) caused stdout lines to be emitted with CRLF (\r\n). In `runner-special`, capturing this into bash passed carriage returns to `bazel test`, which failed with: invalid target name '... \r': target names may not end with carriage returns This failure appeared intermittently / "flaky" across CI runs because: - The previous query used `sh -c "stty -onlcr && bazel query ..." 2>/dev/null`. - On runner instances where `stty -onlcr` returned non-zero (non-TTY subshell), the `&&` short-circuited and silently skipped `bazel query`. With `targets=""`, the loop ran 0 tests and falsely passed. - On runner instances where `stty` succeeded, `bazel query` executed, but the host-side PTY bridge still appended `\r\n`, causing Bazel to reject the target names on every retry. Remove `-it` from all `podman exec` calls in both `presubmit.yaml` and `run-cw-sharded-e2e-test/action.yaml`. TAG=agy CONV=cee1b9c6-d222-4154-8c11-924d01e88f39
…test
Now that `-it` has been removed and `podman exec` produces clean Unix
stdout lines without trailing carriage returns, remove the `t="${t::-1}"`
string slicing workaround.
TAG=agy
CONV=cee1b9c6-d222-4154-8c11-924d01e88f39
This has diverged enough from main that we are seeing some strangeness.
GitHub Actions runners have been failing with non-deterministic failures during e2e tests with the error "crun: unknown version specified". This can occur because newer versions of Podman on the `ubuntu-24.04` runner generate OCI configurations that are incompatible with the older version of `crun` pre-installed on the runner. BUG=b/540850996 Assisted-by: Jetski:Gemini 3.5 Flash
WriteAll(bootconfig_fd, bootconfig) was being called twice in BootConfigPartition::CreateIfNeeded -- once to capture bytesWritten, once inside the CF_EXPECT() comparison. The second call appended duplicate bytes to the partition file, corrupting it. Drop the second call and compare bytesWritten directly.
Databean
approved these changes
Aug 26, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Uh oh!
There was an error while loading. Please reload this page.