Intro: Flash OpenWrt / LEDE to a BT Homehub 5 With a Chopstick
This is a guide showing an easy new no-solder method for connecting to the UART interface on a BT Home Hub 5, Type A. This is necessary if you want to install the amazing "OpenWrt" aftermarket firmware to it (OpenWrt was formerly known as LEDE).
The BT Homehub 5 (Type A) is a very capable wireless router with an integrated ADSL/VDSL modem. Because BT (one of the largest UK ISPs) has been giving it out to its subscribers for free for a long time, the Homehub 5 (Type A!!) can typically be found for under £10 on eBay. Once flashed with the wonderful OpenWrt aftermarket firmware, it becomes an extremely capable, highly secure router. (Don't get the Type B though - it uses different hardware that isn't OpenWrt-compatible)
Flashing a "Hh5a", however, isn't straightforward. You will need to open it up, connect a few pads and a Ground connection on the router's circuit board (the PCB) to a USB serial-to-TTY adaptor, and also temporarily link another pad on the PCB to the Ground connection just as you hit the power switch.
Historically, this meant soldering wires onto the PCB pads (the other ends of the wires were connected to the serial-to-TTY adaptor plugged into your PC's USB port). Unfortunately, my soldering skills just aren't good enough to reliably get wires soldered to these tiny PCB pads. Also, once you're done flashing OpenWRT, you might not want those wires still soldered up to your PCB. I prefer to get in and out with no lasting effects, no wires floating around in the case, etc.
A "tinfoil and matchstick" solderless method appeared a little while ago, but this required laying down quite a lot of tape and Blu-tack all over the PCB's quite fragile components. This worried people that either (i) the tape could rip off components when it's removed, or (ii) the adhesive on the tape could affect capacitors, preventing them form holding a charge. Also, you need to redo this from scratch for every Homehub you flash (I'd like to think that once you get the hang of this technique, you'll be making them for friends and family with ease!)
I therefore wanted to share a quite simple alternative solder-free method that doesn't have those shortcomings. I hope it helps / provides inspiration for further innovation!
Step 1: Opening the Case
Step 2: Materials
To talk to your Homehub, you will need:
- a USB to TTL RS232 serial adapter; I use a CH340G. (The Prolific PL2303 range usually gets a shoutout, but as a reaction to counterfeits, the manufacturer "poisoned" the drivers to disable the fakes. This makes getting them running a real problem. The CH340G was plug & play under both Linux and Windows 10.)
- a chopstick. (Or, any other piece of relatively stiff, narrow wood or other material you can drive nails or screws through.)
- two small nails. (The slimmer the better, as they'll need to touch two PCB pads that are quite close together, without the nails touching one another. Slim nails are also more likely to go through the chopstick without splitting it. The length of the nails doesn't really matter, so long as they're long enough to go through the chopstick, touch the PCB, and leave enough of their length poking up through the chopstick to be able to connect a crocodile clip to them.)
- a piece of cork, cardboard, or folded up paper. (You might need this as a wedge, in order to angle the tips of the nails together (or apart) if they didn't space out perfectly when hammered through the chopstick.)
- three crocodile clips (or three leads with crocodile clips on at least one end.)
- four wires. I used male-to-female Dupont jumper leads. (These will connect the USB serial adapter to your three crocodile clips, and the last one will short the R45 PCB pin to ground.)
- some glue.
- possibly/probably, some insulating tape. (Useful for keeping any improvised connections - e.g. between jumper cables and crocodile leads - from touching each other, the PCB, your PC case, etc.)
In the picture, you can see how I've connected croc leads (which clip on to the nails in the chopstick) to the male ends of the Dupont jumper leads (the female end of which connects to the USB serial adaptor) - and then wrapped tape around the connection. I've done that to one pair in the photo (black and white wires), and am about to do the same to the other (yellow and green wires). You could also just solder croc clips directly to the Dupont jumper leads, or a Dupont female connector directly onto a croc lead, but I like the way I did it - It allows me to reuse the leads later one; also, the extra length is helpful here.
You can also see my common ground connection setup: a croc clip, which I soldered to the end of two Dupont jumper leads. As described in a later step, the croc clip connects to a ground point on the PCB, and one lead connects to the Grnd pin on the USB serial adaptor, while the other (the pointy one) is used to touch the R45 pad on the PCB when booting up the device for the first time.
Step 3: The Chopstick
This is the key part of this Instructable, and it's pretty self-explanatory, really.
1. Figure out where the chopstick should line up over the board, and how you're going to fix it in place
- The chopstick is going to be a suspended "bridge" over the PCB, resting on two opposite sides of the case, above pads 77 and 78 of the board (these are the "Transmit" and "Receive" pins, respectively, of the PCB's serial interface).
- Find a way to hold the chopstick in place against the device's edge. You can see my solution here (a big pincer clip), but others might work just as well - perhaps elastic bands, clothes pins and/or binder clips would do. It needs to be a strong and stable method, though - as part of the flashing process, you'll be trying to touch another pin (R45) with one hand while turning on the power with the other; and later, you'll be inserting a USB flash drive into the back. It's important that you don't lose contact with pads 77 and 78 while doing these things - the chopstick must not move relative to the Homehub.
2. Take the chopstick off the device, put it over a workbench, into a vice, etc., then hammer the nails through the chopstick
- The nails are driven through the chopstick, so that when the chopstick is positioned over the Homehub, the tips of the nails touch pads 77 and 78 on the PCB - establishing contact with the Homehub.
- Using a ruler, or just guesstimating by eye, figure out where the nails need to go through the chopstick, and how far apart from one another, in order to touch pads 77 and 78 on the other side. The nails will only be a couple of mm apart.
- Use a metal file or whetstone to make the tips of the nails a bit less sharp - you only need blunt contact, you shouldn't risk scratching off the pads with pointy tips. Also, when lining up the tips of the nails with the pads, don't actually touch the pads - touch the bare PCB next to them. This, too, will avoid damaging the pads before you're ready to flash.
- You can use a wedge (in this photo, a little bit of cork) to push the nail tips closer or further apart (depending on whether you place the wedge between them either above, or below, the chopstick).
- Push the nails just a bit too far down through the chopstick, then fix the chopstick on the device as described above (but above a bare bit of PCB) - that should cause the nails to be pushed back up through the chopstick to just the right height for PCB contact.
- At that point, if the tips of the nails line up with pads 77 and 78, you're ready to glue the nails, wedge and chopstick together. That'll keep things nice and stable. It'll also allow you to just reuse the chopstick again and again, when you (hopefully) flash other Homehubs for friends and family!
3. Connect leads to the nails using crocodile clips
- I had leads with croc clips on either end; one end connects to a nail (on the opposite side to the other nail, to avoid shorting the nails), and the other end connects to the male end of a DuPont jumper lead. The female end of the jumper lead connects to my CH340G USB serial adaptor. The Tx pin on the serial adaptor must be connected to the nail that will touch pad 78; the Rx pin on the serial adaptor must be connected to the nail that will touch pad 77.
And there you go! That's the hard part done. In the next step, I'll talk briefly about getting the Ground connections set up.
Pro tip: If your serial adapter is a CH340G, you'll know you have a good connection (when you properly position the finished chopstick assembly over pads 77 and 78) if a red LED on the adaptor comes on when everything is wired up (including the ground connection - see next step) and the adaptor is plugged in and powered up from your USB port.
Step 4: Stay Grounded!
You also need to establish two ground connections to the PCB: one goes between the USB serial adapter and the PCB ground, and will complete the adapter's connection to the board. The other is used to short pin R45 to ground for a short moment during power-up, which the Homehub will interpret as a signal to switch into "CFG 04" mode - ready to talk to your PC over the USB serial adapter.
I found it easiest to have two wires from the same crocodile clip that connects to a USB port ground pin on the PCB itself (that's the connection to Ground). One wire goes to the USB serial adapter, and the other wire is used to briefly touch the R45 pin during power-up.
I'm sure there could be other solutions (there are other ground points on the PCB, for example the one shown on this photo - so you could connect the USB serial adaptor to one, and the lead for shorting R45 to the other). But this worked nicely for me.
To keep the loose end of the R45 shorting lead (the brown wire in the photo) safely tucked away when it's not in use (rather than risk shorting anything else on the board, or having it touch the metal of my PC's case, which this is sitting on), I poked it into a spare bit of cork when not in use.
(My R45 shorting lead was a female-to-female Dupont lead, with a tiny pogo pin stuck into the end that will touch pad R45; but a female-to-male Dupont lead would probably be just as good. you just need something with a pointy metal tip that can briefly touch pad R45 when powering on the Homehub).
Step 5: You're Done! Time to Start Flashing
When everything's wired up (final photo attached), plugged in to the USB port on your computer, and (as mentioned in step 3) you can see a red light on the USB serial adaptor showing that you've got a connection (assuming your adaptor has such an LED), then you're ready to go.
Plug the Homehub's power lead into the back of the device, but don't turn it on yet. Once you've brought up the terminal on your PC (the guides I've linked to below will talk you through that part), you will then hold the R45 grounding lead (my brown wire) in one hand (touching the R45 pad with it), and with the other hand, power on the unit (I prefer to turn on the power using the switch at the wall socket - if instead you use the on/off button behind the device, you'll find that causes the device to wobble just as you're trying to touch the R45 pad - which is not helpful!).
Less than a second after flicking the power on, you then take the grounding lead off the R45 pad, breaking the connection.When doing this, you should see a very brief blue flash of an LED, and then all LEDs should be off (with no sign that the unit is actually powered on) - and the terminal on your screen should say "CFG 04". If so, success!
If instead, right after turning the power on, you see the LEDs flash green, etc, and/or your screen says "CFG 06" followed by a few lines of text about booting up, it's because the unit didn't detect you grounding the R45 pad when powering on the device. Check your grounding connection to the R45 pad, and try again.
Bill's excellent guide, here, will walk you through the commands you have to send once you're in CFG 04 mode; and if you're using a Windows PC to do this, you should have a read of this companion guide, too.
The OpenWrt Wiki is also a great resource to get some general background on what you're doing, and provides some quick, no-fluff instructions for flashing the device. I prefer Bill's guide for sntructions, though - there's more background, and a troubleshooter.
The point of my Instructable was just to show you a solderless method for connecting the serial adapter to the board. The rest is usually plain sailing - good luck!