# Connecting to WiFi networks

Since March 2022, gokrazy supports both encrypted and unencrypted WiFi networks! 🎉

## Step 1. Install the wifi package

To make gokrazy connect to a WiFi network, first add the `github.com/gokrazy/wifi` package to your gokrazy instance:

    gok add github.com/gokrazy/wifi

## Step 2. Configure the wifi package

Open your gokrazy instance’s `config.json` in your editor:

    gok edit

Then, configure the `wifi` program by creating the file `wifi.json` as extra file.

    {
        "Hostname": "wifi",
        "Packages": [
            "github.com/gokrazy/fbstatus",
            "github.com/gokrazy/hello",
            "github.com/gokrazy/serial-busybox",
            "github.com/gokrazy/breakglass",
            "github.com/gokrazy/wifi"
        ],
        "PackageConfig": {
            "github.com/gokrazy/wifi": {
                "ExtraFilePaths": {
                    "/etc/wifi.json": "wifi.json"
                }
            }
        }
    }

In the same directory, create `wifi.json` like so for an encrypted WiFi network:

    {
        "ssid": "Secure WiFi",
        "psk": "secret"
    }

If you need to connect to an unencrypted WiFi network, specify no psk, and use TLS:

    {
        "ssid": "My unencrypted WiFi"
    }

Alternatively, you can also create the `wifi.json` manually on the permanent data partition with path `/perm/wifi.json`.

After starting gokrazy, the `wifi` program will connect to the configured WiFi network:

## For debugging: known-working WiFi router setup

In case you have trouble getting your Raspberry Pi to connect to your network, this is how I set up my TP-LINK TL-WDR4300 with OpenWrt 19.07:

The MAC address filter isn’t a security measure, but prevents others from accidentally joining this open network.