We need to ensure the host is correctly enumerating the connected Fuchsia CDC device, and that it is configured correctly.
Does the host see the device?
The first thing to determine is if the host’s USB stack is aware of the Fuchsia device. If not,
there’s no network interface to configure. Google’s public USB vendor identifier (VID) is 0x18d1
,
which is used by all Fuchsia USB devices (CDC or otherwise).
Fuchsia devices have a product identifier (PID) in the range of0xa000-0xafff
. Use the lsusb
command to determine if the host sees any USB-attached Fuchsia device(s), which reports a VID:PID
tuple for any attached device.
Look for an entry in the output mentioning Google Inc. CDC Ethernet. E.g.
You may see other results corresponding to other Google products whose PID is outside the range of Fuchsia PIDs.
Caveat: PID=0xa025
Some product configurations do not expose a CDC interface in the enumerated Fuchsia USB device.
An adb
-only configuration will have a PID of 0xa025
. If you see a Fuchsia device whose PID is
0xa025
, it intentionally contains no CDC interface, and thus there’s no corresponding network
interface to configure.
Is the CDC interface named correctly?
Fuchsia CDC network interfaces should be named similar to zx-XXXXXXXXXXXX
,
with the actual interface name representing the interface’s MAC address.
You must have a setup that will detect and name the Fuchsia CDC interfaces properly. Currently the
fuchsia source tree contains a Puppet script that can be run for machines that support it
here.
This setup requires that you are using NetworkManager
, are using Puppet, and are running a
Debian-like Linux distribution. If all of this applies to you, you can run the above script using
the following command:
curl -s 'https://fuchsia.googlesource.com/fuchsia/+/refs/heads/main/scripts/puppet/networkmanager-cfg.pp?format=TEXT' | base64 -d | sudo puppet apply
You can the interfaces exists using:
ip -6 --oneline addr | grep 'zx-'
This looks for IPv6 interfaces named with a prefix of "zx-", and should render results similar to:
bash$ ip -6 --oneline addr | grep 'zx-'
7: zx-c863147051da inet6 fe80::ca63:14ff:fe70:51da/64 <snip>
Was the interface assigned the Fuchsia CDC profile?
In a nutshell, the local NetworkManager service should configure the interface with a link-local
IPv6 address and not attempt DHCP lease acquisition. The configuration exists in the Fuchsia CDC
NetworkManager connection profile. Ensure the CDC interface is being applied the profile. Use the
nmcli conn show
command to verify the correct profile was assigned.
nmcli conn show
In the Fuchsia-CDC profile row, you should see the CDC interface. The UUID is an unimportant opaque identifier.
bash$ nmcli conn show
NAME UUID TYPE DEVICE
...
Fuchsia CDC 25b512f5-70e0-4fd3-9bc2-34432a01bc80 ethernet zx-c863147051da
...
The Fuchsia CDC profile configures the host-side interface with an IPv6 link-local address, which
are addresses are on the fe80::/10
network. Verify with the ip command.
bash$ ip -6 --oneline addr | grep 'zx-'
7: zx-c863147051da inet6 fe80::ca63:14ff:fe70:51da/64 <snip>
Here, the address fe80::ca63:14ff:fe70:51da
is the link-local address of the host-side network
interface. Notably, it is not the address of the connected Fuchsia CDC device.