Google Wifi (AC-1304) is a 2x2 802.11ac access point with a Qualcomm IPQ4019 SoC, 512 MB RAM, and 4 GB eMMC storage. It runs a ChromeOS-based firmware called Gale and can be configured to boot unsigned firmware like OpenWrt by enabling Developer Mode.
- Google Wifi AC-1304
- USB-C hub with power delivery (PD)
- USB-C power supply
- USB-C cable
- Two USB drives (one for the official firmware, one for OpenWrt)
- Phillips PH0 screwdriver
- Plastic spudger or flat-head screwdriver
A USB drive with an activity LED is recommended to indicate when the device is reading from it.
- Install the OnHub Recovery Utility in Chrome.
- Select "Google" as the manufacturer and "Google Wifi" as the model.
- Write the latest official Google Wifi firmware to a USB drive.
- Connect the USB-C hub to power but do not plug it into the puck yet.
- Insert the firmware USB drive into the hub.
- Hold the external reset button on the puck.
- Plug in the USB-C hub while continuing to hold the button.
- After ~10 seconds, the LED will turn amber.
- Release the button and wait ~5 minutes for the process to complete.
- When the LED glows solid blue, the firmware has been installed.
- Download the latest OpenWrt "factory" image for Google Wifi from the OpenWrt website.
- Use the OnHub Recovery Utility to write this image to a second USB drive.
- Open the utility, click the gear icon, select "Use local image," and choose the OpenWrt factory image.
- Disconnect power from the puck.
- Remove the bottom cover by unscrewing the Phillips screw and prying it off.
- Locate the internal switch labeled "SW7."
- Insert the OpenWrt USB drive into the powered USB-C hub.
- Hold the external reset button while plugging in the USB-C hub.
- After ~10 seconds, the LED will turn amber.
- Press SW7 inside the device. The LED will blink purple, then reboot.
- When the LED blinks purple again, press SW7 once more to trigger USB boot.
- If the device successfully boots OpenWrt, you should be able to ping
192.168.1.1
from a computer connected via Ethernet.
If the puck continues blinking purple, try pressing SW7 again or check the USB drive.
- Transfer the OpenWrt factory image to
/tmp
on the puck using SCP:scp -O openwrt-23.05.5-ipq40xx-chromium-google_wifi-squashfs-factory.bin [email protected]:/tmp/
- SSH into the puck:
- Write the firmware to eMMC:
dd if=/dev/zero bs=512 seek=7634911 of=/dev/mmcblk0 count=33 dd if=/tmp/openwrt-23.05.5-ipq40xx-chromium-google_wifi-squashfs-factory.bin of=/dev/mmcblk0
- Reboot the device:
reboot
- Remove the USB drive. The puck will now boot OpenWrt from eMMC.
- Download the latest OpenWrt "sysupgrade" image from the OpenWrt website.
- Access the puck's web interface at
http://192.168.1.1
. - Navigate to
System > Backup/Flash Firmware > Flash new firmware image
. - Upload the sysupgrade image and confirm.
- The puck will reboot automatically.
- SSH into the puck and install required utilities:
opkg update && opkg install cfdisk resize2fs
- Run
cfdisk
:cfdisk /dev/mmcblk0
- Resize the last partition:
- Select the last partition before the empty space.
- Choose "Resize."
- Accept the default size.
- Write the partition table and exit.
- Reboot the device.
- Resize the filesystem:
resize2fs /dev/loop0
- If OpenWrt fails to boot from USB, try a different flash drive.
- If the puck remains in a purple-blink loop, ensure SW7 is pressed at the correct moment.
- The default OpenWrt user is
root
with no password. Set a password usingpasswd
or in the web interface. - If installation repeatedly fails, consider re-flashing the official firmware before retrying OpenWrt.
Once completed, the puck will boot directly into OpenWrt and function as a standalone router or mesh node.