If you have an FTTC (Fibre-To-The-Cabinet) line, the BT Home Hub 5a and Plusnet Hub One all-in-one routers are great candidates for the fantastic custom firmware OpenWrt. This is because they have the following combination of features:

  • 5x 1Gb RJ45 Ethernet ports – with properly managed VLAN support
  • 2.4 and 5GHz radios with open drivers
  • 128MB NAND flash — more than enough for OpenWrt and lots of plugins
  • 128MB RAM – usually under half of this is used, even with many plugins
  • A VDSL2 modem on an RJ11 port

OpenWrt effectively will transform your router into a small Linux computer with total control over the managed network switch, the WiFi, and the ADSL2+/VDSL2 modem. You get access to everything the hardware can offer — something ISPs usually don’t want you to have!

If you want a list of other reasons on why you should use OpenWrt, and why your ISP’s firmware will almost certainly never be as good, just visit this link: https://openwrt.org/reasons_to_use_openwrt

Here are pictures of a BT Home Hub 5a and a Plusnet Hub One, running OpenWrt 19.07:

BT Home Hub 5a
BT Home Hub 5a

I have altered the tri-colour LED functionality on this Plusnet Hub One, to show it is running OpenWrt:

Plusnet Hub One / OpenWrt Custom LEDs
Plusnet Hub One / OpenWrt Custom LEDs

 

Setting Up

Warning!You do this at your own risk! I accept no responsibility for any damage or loss whatsoever. Don’t perform any part of the process if you have any doubts, and always follow the OpenWrt manual: https://openwrt.org/toh/bt/homehub_v5a

The case is very strongly clipped together using hooks and one-way notches, so you have to use multiple tools to ‘work’ the two halves apart. The BT Home Hub 5a seems to have stronger clips, whereas the Plusnet Hub One has more fragile ones.

Here is my setup:

Reprogramming setup (BT Home Hub 5a)
Reprogramming setup (BT Home Hub 5a)

Reprogramming setup (Plusnet Hub One)
Reprogramming setup (Plusnet Hub One)

 

Essential Purchases

You will, at the very least, need to buy a small USB-to-TTL interface if you don’t own one. This will be used to transfer over the initial OpenWrt Bootloader via the router’s UART interface. One of these, along with a small set of Dupont connectors and cables, complete with an antistatic bag, can be little as £4 delivered, and may be all you need. I recommend the CH340G, since you can switch the voltage between 3.3V and 5V, and you have power, transmit and receive LEDs which blink on activity:

CH340G USB-to-TTL interface
CH340G USB-to-TTL interface

Note the CH340G has a temporary jumper across TX and RX. This will make the terminal echo every key which is pressed, and is used to test the TTL dongle. Normally the remote device echos back keypresses and responses. The 3V3 and 5V power supply pins will not be used.

Warning!Never use the serial port on a computer instead of a TTL device! PC serial ports produce a 12-volt signal. The HH5a can only accept a 3.3-volt signal!

 

Equipment

Some routers, like the NetGear DGN3500, let you switch to OpenWrt by uploading firmware using the web interface or a terminal. The BT Home Hub 5a (a Sagemcom device) does not. The only way to do it is to make pressurised contact or to solder to the UART low-power serial interface pads, whilst shorting another pad to ground to put the device into CFG 04 programming mode at startup. You also have to connect a low-power memory stick to the USB port to do the backup and upgrade.

The UART pads are tiny — only about 0.5mm across! Many of the guides online suggest using perilous ways of attaching to these pins, such as:

  • Soldering. This may lift the solder pads from the PCB unless you have a very specialist solder station, a very precise hand, and do the task quickly and gently.
  • Covering the board with tape, leaving holes, and taping the wires to the board. This leaves the possibility of poor contact and corrupt data during the serial transfer of the replacement Bootloader, and/or missing data when interacting with the console.
  • Using metallic nails to press against the solder points. This is one of the better solutions, but it is difficult to produce an equal, gentle, amount of pressure on those solder points with a pair of nails, especially considering the proximity.

One alternative to solve the accurate pressure issue is ‘Pogo Pins’. These are metal rods with a springy end, designed precisely for this purpose, but they are usually overpriced for even a single pin, and you may in fact have something better in a drawer somewhere.

Watch strap spring bars can be ideal. They produce very good continuity, even when being pressed. Note that the gauge of the wire is just enough to fit firmly into Dupont sockets without damaging them:

Spring bar assembly
Spring bar assembly

Here they are attached to the board. A ballpoint pen cap was used to finely adjust the spacing:

Spring bars pressing against PCB solder pads
Spring bars pressing against PCB solder pads

This is probably a little too complex for a simple task, but I wanted to be able to flash multiple different devices, not just this one box. As with other guides for the HH5a, what you use may depend on what you have handy.

 

Flashing the Firmware

To clear up some points in the OpenWrt article:

  • The pad linked to R77 on the HH5a is the TX pin, and so must be connected to the RX pin on the TTL device. On a device I was given, the R77 label looked like R73 due to where a hole was punched in the PCB.
  • The pad linked to R78 is the RX pin, and so must be connected to the TX pin on the TTL device.
  • The pad linked to R45 –- to the right of where you see C94′s label — must not be connected to anything, but it must be accessible. Grounding this pad upon powering up will put the device in CFG 04 mode. If CFG 06 appears, then the pad is likely not grounded properly.
  • A crocodile clip with a cable should be connected to Ground on the HH5a. One of the large solder joints on the USB port is ideal. This end of the cable should be ready to touch against the boot_sel2 pad.
  • The TTL device’s GND must be connected to the HH5a’s Ground, otherwise the signal will be garbage. You can connect this wire to the same crocodile clip on the USB port.
  • If the TTL has any voltage (power supply) pins, do not connect them to anything! There should only be 3 cables connected to the TTL device – RX, TX and GND.
  • The TTL interface’s voltage selector should be set to 3.3V. If it does not have one, then it must output 3.3V by default.
  • Attach a USB extension to the HH5a’s USB port, ready to plug a device. This will prevent the device from being moved when powering it up.
  • Don’t power the device up with the push-button on the back. Instead, switch it on with the mains plug. This once again helps prevent risky movement of the device.

 

Important notes

Just in case:

  • Always keep a backup of your device’s firmware. There is WiFi calibration data inside which OpenWrt needs, and you may it lose forever if the upgrade goes wrong.
  • I highly recommend copying the firmware into the /tmp folder and upgrading the firmware from there. This stops the chance of the flash disk causing issues during the upgrade.

The lower crocodile clip here indicates where a good Ground is:

Plusnet Hub One (Ground attached)
Plusnet Hub One (Ground attached)

 

First Boot

This is what the serial interface looks like when OpenWrt boots for the first time:

OpenWrt Serial Terminal on HH5a
OpenWrt Serial Terminal on HH5a

 

Alternative VDSL2 Modem Firmware

OpenWrt’s default VDSL2 firmware for this router usually works fine, but if you want features such as vectoring (line noise cancellation), it is possible to extract compatible firmware from other Lantiq-chipset based devices. This assumes your local fibre cabinet supports vectoring too. Many cabinets don’t support vectoring, however I have found that switching out the firmware images can also result in improved sync speeds and fewer line errors.