Adventures in BIOS hacking

I’m a complete gadget nut, and love playing with shiny new toys, but I’m also a hacker,  and take great joy in fixing up something that was broken, repurposing old kit, or modding something to do something it wasn’t designed for. Like, for example, modding the BIOS of an ageing gaming PC to support TRIM on a RAID 0 array of SSDs.

Because why not?

My gaming rig is getting quite long in the tooth – I’ve had it for almost six years, which is the longest I’ve ever had a PC, and it’s still going strong, able to play any game with the settings pretty much maxed out (albeit with a graphics card transplant since I first built it).

I put its longevity (that is, my lack of desire to replace it) down to the excellent Nehalem i7 920, which has some of the best overclocking characteristics of any processor I’ve come across, and the Asus P6T Deluxe V2 mobo in which it sits. Using air cooling, the CPU will happily run north of 3.8GHz – 50% faster than its rated clock speed – and remain cool, idling at 35°C and only hitting 70°C under extreme torture tests on a hot day (yes, whilst everyone else was enjoying the sunshine six years ago, I was inside, hunched under a desk, overclocking my CPU).

With the CPU happily overclocked, the perf bottleneck moved to the disk. The P6T-D V2 only has two SATA 2.0 controllers, one of which supports RAID. I decided to RAID 0 two SSDs to get the 6GBps throughput of the newer SATA 3.0 controllers, which worked better than expected. Taking into account IO overheads, the RAID array actually runs slightly faster than a single SATA 3.0 SSD. The problem is maintenance. Intel never back-applied their TRIM command support to their older SATA controllers, so over time the disks would slow down. I decided to take the hit and just do a low-level format every six months or so, but of course that habit didn’t last for more than a few years.

After a particularly slow boot, I decided to fix the problem once and for all. After a bit of Googling, I stumbled upon this post on the win-raid forums. Some enterprising users had managed to enable TRIM on older chipsets by modifying the BIOS’s RST RAID ROM module (with a bit of hex editing) and re-injecting the modified ROM into the BIOS.

Excitedly, I set to work, and an hour later I was the proud owner of a freshly flashed BIOS. Sadly the PC wouldn’t boot after that, and to add insult to injury alarmed loudly every time i powered it on, as if announcing to the world what a numpty I’d been.

Fearing a long evening of reinstalling and restoring from backups (yes, I do have them. I’m a bit paranoid about backups after a hard drive died on me whilst I was at uni), I used my laptop to check the instructions again, and realized that the RST ROM i’d flashed was too new for my ancient BIOS. Sigh.

Rinse and repeat (with the correct ROM version this time) and not only did the system boot, but Windows immediately detected the TRIM support and set about doing its thing on the SSDs. CrystalDiskMark seemed to confirm that the perf was back to that of my factory fresh SSDs. Success!

Then the noises started.

The magnetic drives seemed to be periodically spinning down hard, emitting a horrible “weeee-chk” noise every 5 minutes or so. The SSDs were running faster than ever, but my magnetic drives were definitely not happy.

Coincidence? This is a 6 year old PC, remember, and drives die. That said, both magnetic drives seemed making the same noise, at the same intervals, and they weren’t doing that before I started hex-editing the firmware of the chip they’re attached to.

More Googling, a different forum (this post on Intel’s forums this time), and it turns out that the BIOS mod was now interfering with the drives’ acoustic and power management algortihms. Fortunately that can be fixed in software, by modifying the SMART properties of the disks.

Unfortunately, the SMART hack doesn’t persist over power state changes, such as hibernation. Even more fun, the only reliable way to detect a wake from hibernation in software is to monitor the system logs in the Windows Management Console’s Event Viewer.

So now I have a scheduled task which triggers when the power service drops a log, and modifies the SMART settings of the disks plugged into the hacked RAID controller of a PC which should by rights be long since retired. It’s hacks all the way down.

But i’m not going to pretend that I don’t get a kick out of that.

Advertisements

FPV Part II – Modding the Quad

The FPV conversion continues. After finishing the ground station, I’ve been adding camera and transmitter gear to the tricopter and quadcopter. The tricopter is, in theory, ready, but I’ve not had a chance to test it as the weather continues to be rubbish, so I’ve been playing with micro FPV gear for the quadcopter instead.

I originally tried converting a micro security camera into an FPV camera, but rather embarrassingly let the blue smoke out as I was attacking it with a soldering iron, so opted for a simpler dedicated FPV camera and transmitter instead. I soldered them directly to the LiPo plug in the first instance, but although I got a decent picture when the quadcopter was off, I got a lot of interference from the motors as soon as I armed it (I’m using a single LiPo to power both). I solved that with the use of a Pololu 5V switching regulator, and now get crystal clear video even at full throttle. The whole FPV setup, including regulator, weighs 4g. I’ve also added a Walkera-style plug so that I can run the quad off of Hubsan X4 compatible batteries, which are not only cheap and readily available, but much more responsive that the stock cells; the higher C rating really improves the throttle response.

To make room for the video gubbins on the top of the quad, I moved the DSM2 receiver to the bottom. I desoldered the cable plugs and instead soldered the Rx directly to the board, saving a little over a gram in weight. I also added landing gear in the form of zip ties. They’re light (0.1g per leg) and flexible, and since I’ve wrapped the motor wire out of the way around the arms, they provide good protection for all the components.

All in all, it flies really well. I’ve only added about 3g in weight from stock and only lost about 20s from my flight times as a result, but ended up with a much more responsive craft WITH FPV! It’s serious fun to fly, even if it is a bit tricky as the camera has a narrow FoV. I might swap the lens for a wider angled one in the future, depending on how much better I (don’t) get with practice.

FPV Part I – The ground station

ground_station_front

I’m in the process of adding FPV cameras to the ‘copters (yes, even the little one), and have just finished building a portable ground station onto my transmitter.

ground_station_back

It’s based around Boscam 5.8GHz VRx gear, and runs off of 3S LiPos (the same as the tricopter):

  • Boscam RC305 Video Receiver. I added a home made LC filter to the DC barrel plug.
  • Skew-Planar 5.8GHz antenna.
  • Feelworld 7 inch FPV monitor with Sun hood.
  • Glass fibre monitor mount. Dirt cheap, but seems to do the job. I added a metal washer to the 1/4″ tripod mount so that it doesn’t flex when I tighten the screw.
  • Aluminium transmitter stand. This lets me charge and program the transmitter without having to worry about it falling over and damaging the cables, and also gives me more mounting points for gear; I use a battery strap to hold a LiPo on the stand’s struts. I’ve zip-tied the stand in place, to stop it folding back and damaging the antenna on my transmitter module, and to keep a constant centre of gravity on the whole unit.
  • LM2596 DC-DC voltage regulator. Whilst the RC305 and monitor can in theory run directly off a 3S LiPo, the RC305 uses a linear regulator to step the input voltage down to 5V. This can get quite toasty, so I use the LM2596 to first step the voltage down to 8V, a little over the total of the RC305’s internal voltage and the regulator’s dropout. The particular converter I chose has the added advantage of having an inbuilt voltmeter, so I can keep an eye on the LiPo’s voltage. I covered the regulator in clear heatshrink, and zip-tied it to the monitor mount.
  • HobbyKing Cell Key LiPo Checker. This is just Velcroed to the back of the monitor so that it’s within easy reach.

The transmitter is a FrSky Taranis, which I’ve modded a little.

  • I’ve turned the strap balancer upside-down to adjust for the shifted centre of gravity.
  • I’ve replaced the sliders, as the stock sliders felt a little flimsy.
  • I’ve swapped the battery for a 2Ah NiMH one.
  • I use an OrangeRx DSM2 module in the module bay.
  • As the monitor mount just fits behind the main antenna, I’ve wrapped the antenna in insulating tape to stop it getting scratched/damaged.

The quad’s camera hasn’t arrived yet, but I have added a camera and VTx gear to the tricopter (details to follow in another post), so all I need now is for it to STOP RAINING so that I can get out and test it. I’ve definitely chosen the wrong time of year to do this…

 

At what point does it become a fleet?

fleet

The tricopter now has a baby brother. Meet the Pocket Quad!

Now that winter is upon us, days on which it isn’t raining, foggy or blowing a gale are few and far between, so I wanted something inexpensive to practice with that I could fly indoors.

It’s a Hobbyking Pocket Ultra Micro Quad v1.1, which is essentially an Arduino running the MultiWii flight controller software. It’s a lot of fun to fly, seems to be pretty crash resistant, and as I’m learning about programming Arduinos in my spare time anyway, should be a good candidate for some hacking and tinkering further down the line.

Nothing in the flat or office is safe any more!

Tricopter sheds a motor mid flight.

I was happily flying around, when one of the motors decided to embark on an ill-advised solo career as a helicopter. The rest of the band didn’t fare so well without it, and, like this analogy, flailed clumsily before crashing to the ground.

Fortunately I managed to retrieve the escaped motor, and the tricopter crashed into some nice soft mud, so no damage was done, though I did have to spend quite a bit of time cleaning everything.

Squidgy has been spotted. On the other side of the world!

After years of torment, finally an update on the Squidygate scandal, from across the pond.

In short, IT WAS STEVE!

steve_ted
The perpeTRAITORS and their hapless victim; Steve, Ted and Super-Squidgy

The curly-haired blighter kidnapped Squidgy (or, at least, Super-Squidgy) to take on a jolly across the States, and he’s had the audacity to blog about it. (Warning: this post contains lies!)

There are some great pictures over on Steve and Ted’s blog.

I will be having some strong words when Steve returns next week.

Landing gear

My tricopter is based on David Windestål’s most recent designs on RCExplorer, with a few tweaks and modifications of my own. I considered doing a build log, but there are already loads of those out there for this particular design, and I’d only have ended up doing something daft like getting epoxy resin on my camera lens.

Instead I’m going to write about the tweaks I made, and what worked (and didn’t) during the build and testing, starting with landing gear. I realise that it’s not the most exciting subject in the world, but several people have commented on the tricopter’s landing gear, so I figure that that counts as popular demand for a blog post.

To be honest, I didn’t expect that landing gear was going to be one of the trickier things to get right, but it turns out that it’s not completely trivial to find something that’s light and rigid, but with enough flex that it doesn’t just shatter on the rougher landings.

The solution I came up with is to use plastic coat hangers. They’ve worked really well, are easy to replace if they do break, are very light (each leg of the finished gear weighs 10g) and (I think) look quite good. Here’s a very simple parts/tools list and how-to:

landing_gear_parts

 

  1. Two plastic coat hangers. I got a pack of 10 from the local 99p store.
  2. 12 zip ties (4 for each arm). Use the small 2.5mm x 100mm type.
  3. RC fuel tubing  or surgical tubing. You’ll need 6 20mm lengths.
  4. A sharp knife.

Each coat hanger will make two bits of landing gear. Cut the coat hangers either side of the curved hook section, and again on the long straight edge. The easiest way I found to cut the coat hangers is to score them with a sharp knife, and use both hands to snap them away from you. If you’ve scored hard enough, that will give a nice clean edge. I also trimmed the little plastic hooks off the ends.

landing_gear_cut

 

Push lengths of fuel tubing over the ends of the coat hanger sections. You’ll probably have to twist them on, as it’s a very tight fit. The idea behind the tubing is to give the zip ties something to bite into; without them, the landing gear can slide up into your prop discs if you land too hard, and ruin your propellers (trust me on this!).

landing_gear

Attach the landing gear on to your tricopter’s arms using two zip ties at every point. Position the zip ties diagonally, so that they form an X on either side of the arm. Pull them fairly tight, so that they grip into the tubing, and trim off the ends. In a crash, the zip ties should break, saving the landing gear and tricopter arms.

landing_gear_attached

That’s it!