Oh man this took me a while to figure out.
Format micro SD card the normal way.
Put an operating system on there using the Raspberry Pi Imager for Ubuntu.
Change directory into the
boot
partition of the micro SD card:cd /media/johnny/boot
Create a blank
ssh
file:touch ssh
Add
dtoverlay=dwc2
to the end ofconfig.txt
:echo "dtoverlay=dwc2" >> config.txt
Add
modules-load=dwc2,g_ether
directly afterrootwait
withincmdline.txt
:sed -i 's/rootwait/rootwait modules-load=dwc2,g_ether /g' input.txt
Plug a micro-usb cable into the port closest to the HDMI port on the Raspberry Pi Zero. Plug the other end of the cable into your computer.
Wait two minutes for the Raspberry Pi Zero to finish doing it’s thing.
Open the Network panel in Settings and click the gear icon to open the settings for the Wired connection. In some Linux distributions, this is called Netchip Ethernet.
Go to the IPv6 tab and set the IPv6 Method to Disable.
Go to the IPv4 tab and set the IPv4 Method to Link-Local Only.
Click Apply.
Toggle the Wired connection off and then on again.
Ping the Raspberry Pi Zero:
ping raspberrypi.local > PING raspberrypi.local (169.254.194.96) 56(84) bytes of data. > 64 bytes from raspberrypi.local (169.254.194.96): icmp_seq=1 ttl=64 time=0.952 ms > 64 bytes from raspberrypi.local (169.254.194.96): icmp_seq=2 ttl=64 time=0.536 ms
If you got a response to the
ping
, you should be able to connect to your Raspberry Pi Zero over USB. If you didn’t get a response, you might need to reboot your computer.If, after rebooting, you still can’t connect to your Raspberry Pi Zero, try using a different micro USB cable. Some cables are designed to only transfer power and not data.