This is for anyone out there looking to use Netgear Nighthawk router with Sky broadband. I lost an entire day to this so you won't have to.
The first thing you need to know is unless you have a router in this list, it's likely your stock Nighthawk isn't compatible with Sky. Don't let that put you off - with a little tweaking, it can be.
The reason Sky doesn't work with third party routers is because they use something called DHCP Option 61, which is something to do with a unique client identifier. Sky use this as authentication rather than the usual PPPoE method used by other ISPs.
As above, most Nighthawks don't support this option out of the box, but DD-WRT, an open source firmware does - it also supports the IPv6 that Sky provide. From here on, the instructions will be how to install DD-WRT to your router.
Preface: THIS CAN BRICK YOUR DEVICE. You do this at your own risk, don't blame me if you do something stupid. I don't know what I'm doing.
Updating the Firmware
Firstly, you need to know the model of your device, for example, R7000, R8000 etc. What you'll need to do is check that DD-WRT is compatible with your device by searching for the model in their Router Database.
If your model is supported (see column with that name), you can click this to view more details and there may even be a list of versions. IGNORE THESE.
Now that you know your model is supported, it's time to get the firmware for it.
Click here to view the 2021 releases.
I went with the most recent at the time, which was 04-19-2021-r46395.
In this folder you'll find a whole bunch of router models, find your specific model in the list and browse to it, you should see two files.
factory-to-dd-wrt.chk is used to install DD-WRT on the standard firmware.
netgear-rxxxx-webflash.bin is used to update DD-WRT to a newer release.
You'll need the factory-to-dd-wrt.chk file for this. At this point, if you aren't connected to the router by an ethernet cable, I'd advise you do so as the first step is to go to the router admin area and perform a factory reset.
Before this, unplug all the cables for your WAN and LAN other than the cable connected to the device you'll be using for the update.
Once done, start by browsing to 192.168.1.1 in your browser, entering the username and password (default is admin, password).
From here you'll need to go to Advanced -> Administration -> Backup Settings
You'll see a wonderful button called "Erase". Press this and wait for the router to restart.
Once the router is back up and running, you'll need to log in again, back to Advanced -> Administration -> Router Upgrade
Give that the factory-to-dd-wrt.chk file and begin the upgrade. This can take a little while, it's important that you don't interrupt this process.
Once your router reboots and everything is up and running, browse to 192.168.1.1 again to be presented with the DD-WRT status page - this is going to be a lot different to the Nighthawk you're used to. At this point you should reconnect your modem to the WAN port.
Setting up Option 61
Now that DD-WRT is up and running, getting the internet back is the first thing to do - this guide won't go into any of the other configuration for DD-WRT, you can Google that easily.
Navigate to Administration -> Commands. You will be asked for a username and password, the default is root/admin.
Enter the below into the command shell box.
udhcpc -i vlan2 -p /var/run/udhcpc.pid -x 0x3d:37633463613565626665363440736b7964736c7c3261393065393930 -s /tmp/udhcpc -O routes &
This should be two lines, though the box may put some on a new line, do not add any spaces anywhere.
What this is doing is adding the identifier to the DHCP request,
-x the value there is in hex of some made up credentials I found during my search.
Once you've done this, press "Save Startup", this will cause the script to run when the router starts.
Before restarting, to set up IPv6, browse to the Setup -> IPv6 section, enable this option with DHCPv6 with Prefix Delegation as the type.
Prefix Length: 56
Static DNS 1: 2606:4700:4700::1111
Static DNS 2: 2606:4700:4700::1001
Press Apply changes at the bottom of the page.
The DNS servers here are the CloudFlare 22.214.171.124 IPv6 servers, but you can use others such as Google IPv6 DNS.
Now that this is all done, you can restart the router.
Once it's back, browse again to 192.168.1.1 and you should see your WAN IPv4 and IPv6 addresses in the top right.
You can check everything is working as expected for IPv6 and IPv4 by using an IPv6 test.