Testing Connectivity of Multiple Devices

Background

Running multiple Cuttlefish virtual devices can be done by executing the following command:

launch_cvd --num_instances=n

When you are running two or more instances using --num_instances flag, instances share the connectivity medium for Wi-Fi and Bluetooth. This setting allows the Cuttlefish instances to discover and connect to each other via Bluetooth and Wi-Fi without additional action.

However, if you are executing multiple instances by using the --base_instance_num flag and multiple launch_cvd invocations, you need to specify wmediumd's vhost server path to share Wi-Fi medium, and also prevent launching multiple VM instances for AP.

Multi-Device Launch Example

The following commands show how to launch two Cuttlefish instances that share the Wi-Fi medium using serial execution of launch_cvd.

launch_cvd
launch_cvd --base_instance_num=2 \
  --vhost_user_mac80211_hwsim=$HOME/cuttlefish_runtime.1/internal/vhost_user_mac80211 \
  --ap_kernel_image="" --ap_rootfs_image="" #Prevent launching multiple VM instances for AP

Bluetooth

The Cuttlefish bluetooth implementation is supported by rootcanal and can be controlled with the Web UI command line console.

In the console, there are several commands that allow for the control of bluetooth on the guest device:

Command Description
list List current devices and phys
add DEVICE_TYPE [ARGS] Create new device of type DEVICE_TYPE
del DEVICE_INDEX Delete a device
add_phy PHY_TYPE Add new phy with PHY_TYPE
del_phy PHY_INDEX Delete a phy
add_device_to_phy DEVICE_INDEX PHY_INDEX Add a device to phy
del_device_from_phy DEVICE_INDEX PHY_INDEX Delete a `device from phy
add_remote HOSTNAME PORT PHY_TYPE Add a remote Rootcanal as device and register it to phy
Device type and args
beacon [MAC_ADDRESS] [ADVERTISE_INTERVAL]
scripted_beacon [MAC_ADDRESS] [CONFIG_PATH] [EVENTS_PATH]
keyboard [MAC_ADDRESS] [ADVERTISE_INTERVAL]
loopback [MAC_ADDRESS] [ADVERTISE_INTERVAL]
sniffer

Wi-Fi

wmediumd_control

wmediumd_control is a command-line tool that controls Wi-Fi connectivity medium. The tool has the following commands to manipulate Wi-Fi:

Command Description
set_snr MAC_ADDR1 MAC_ADDR2 SNR_VALUE Set SNR value (0~255) between two stations
start_pcap PCAP_FILE_PATH Start capturing all frames transmitted to air and stores it to .pcap file
stop_pcap Stop and finalize current packet capture
list_stations List all stations attached to wmediumd
reload_config [CONFIG_FILE_PATH] Reload wmediumd configuration with CONFIG_FILE_PATH, if CONFIG_FILE_PATH is omitted, reload currently loaded config file
set_position MAC_ADDR X_POSITION Y_POSITION Set position of the station in two-dimensional space

OpenWRT

If you want to connect to OpenWRT (Access Point), you can use either ssh or the admin webpage.

Connection Type Method
ssh
ssh root@192.168.96.2
Admin webpage https://192.168.96.2