Posted on — Leave a comment

HP 8xSFF SAS Backplane Reverse Engineering, and the Pico Bay Controller Behind It

The whole backplane: eight drive connectors in two banks of four, with the HP logo in the middle.
The whole backplane: eight drive connectors in two banks of four, with the HP logo in the middle.

I’m building a 2U NAS around two HP DL380 G7 eight-bay small form factor drive cages, and each cage comes with an HP 496074-001 SAS backplane. The drives sit happily on it, but the three little LEDs in each bay (blue, green and amber) are controlled by two tiny microcontrollers speaking a proprietary protocol, and I wanted to drive them myself. So this turned into a reverse engineering project: work out how the backplane really works, replace its firmware with something I understand, and draw the schematic, because I couldn’t find a published one.

This is a long post because it covers a few days of poking. Everything here was measured on my own boards. Where I’m guessing, I say so.

What’s on the board

Each backplane has two PIC18F24K20 microcontrollers (28 pins, no crystal, running from their internal oscillator). PIC A looks after bays 1 to 4 and PIC B looks after bays 5 to 8. The 3.3 V rail comes from a small linear regulator, a TC1264-3.3 (800 mA, SOT-223, marked 1264-33 / VDB1006) fed from the 5 V pins of the power connector.

There is a 10-pin Mini-Fit Jr power connector (J13, the only Molex part on the board) that carries more than power: two of its pins are an I2C bus and another is an “address strap” analogue input. There are also a 3-pin I2C header (J44), two plain 0.1 inch 2-pin headers (J14 beside PIC A, and an unpopulated J43 beside PIC B), and two ICSP programming headers (J11 for PIC A and J12 for PIC B). The two SAS connectors are SFF-8087 types, J1 (silkscreen IPASS1) feeding PIC A and bays 1 to 4, and J6 (IPASS2) feeding PIC B and bays 5 to 8.

The top of the board, with the power connector, regulator and the two PICs.
The top of the board, with the power connector, regulator and the two PICs.
PIC A (U1 on the silkscreen) with its ICSP header J11 and the small J14 header, next to the power connector.
PIC A (U1 on the silkscreen) with its ICSP header J11 and the small J14 header, next to the power connector.
The second PIC (U2) and the small resistors around it.
The second PIC (U2) and the small resistors around it.
A PIC beside one of the SFF-8087 connectors (the silkscreen reads IPASS), with the sideband traces running to the chip.
A PIC beside one of the SFF-8087 connectors (the silkscreen reads IPASS), with the sideband traces running to the chip.
The silkscreen: 'SAS Backplane', copyright 2007-2008 Hewlett-Packard, with the PCB part number and the HDD1 and HDD2 connectors.
The silkscreen: ‘SAS Backplane’, copyright 2007-2008 Hewlett-Packard, with the PCB part number and the HDD1 and HDD2 connectors.
Block diagram of the backplane
The block diagram. Green lines are verified on the board, amber dashed lines are inferred, grey dotted lines are not traced yet.

Reading the chips

I used a Microchip ICD 4 with MPLAB X’s command-line programmer. A few practical notes, since they cost me time:

  • The ICD 4 does not power the target, so the backplane needs its own bench supply, and I ended up needing the 12 V rail connected as well.
  • Pin 1 orientation on the ICSP header matters, and I got it wrong the first time.
  • While the ICD 4 is attached it holds the PIC in reset. Unplug the lead to let it run.
  • The programming lines are the same pins the PICs use to detect whether a drive is fitted in two of the bays, so pull any drives out of those bays before you programme.

The first good news was that neither chip is read protected. Before doing anything else I took a full backup of both chips (program memory, configuration bits, user ID and the little data EEPROM) and kept it somewhere safe. I’m not publishing the dumps, because it’s HP’s firmware, but I did compare them: the program code on the two chips is identical, and only the EEPROM differs, in a handful of bytes that tell each chip which half of the backplane it is.

Finding out what the firmware does

There’s no source, so I wrote a small PIC18 disassembler and read the start-up code. That gave me the list of which pins are outputs and which are inputs, and the rest followed from watching the board:

  • Thirteen outputs: the LED pins, plus one that toggles constantly (I’ll come back to that).
  • An I2C slave on the usual hardware pins.
  • Two analogue inputs, and a handful of digital inputs.

The oddest discovery was how the chip decides its I2C address. It doesn’t use a fixed address or a jumper. It measures a voltage on one pin, averages four ADC readings, and uses the result to pick an address from a table. That voltage comes from pin 9 of the power connector. It goes straight to PIC A, and through a 750 Ω resistor to PIC B, with 5.6 kΩ to ground on each chip’s input. PIC B also reads a voltage with pin 9 grounded, which that network can’t produce on its own, so I think there is a pull-up on it that I haven’t found yet. With pin 9 floating, both chips answered at the same address and collided. Grounding pin 9 live, with the board running, moved them to two separate addresses and I could talk to each chip individually.

The protocol itself is a simple framed command set: a type byte, a length, a command and a checksum that is the two’s complement of the sum. Replies start with a status byte. The documented behaviour I found was a firmware version query, an LED self-test that chases through every LED in each bay, a command that lights the blue “locate” LEDs, and some housekeeping queries.

The mistake

One command in the stock firmware writes to the chip’s EEPROM. I sent it a few times with junk while trying to work out what it did, and the chip’s behaviour changed afterwards. I’d corrupted its configuration area. It was recoverable only because I had backed everything up first.

The restore itself taught me something worth passing on: with Microchip’s ipecmd, the option that programs only the EEPROM (-ME) also erases the flash and resets the configuration bits. The safe way to restore is to programme the whole original hex file with the plain programme option and then read everything back and compare. I did that, and the round trip came back byte-for-byte identical.

The lesson is the usual one: back up first, and don’t send commands you don’t understand to firmware you can’t easily reflash.

Mapping the LEDs and the presence pins

Each bay has three LEDs and one “is a drive fitted” input. I found them by lighting one pin at a time and watching, and by hot-swapping drives while reading the port registers. All of the LED pins are active low (pulling the pin low lights the LED), and the drive-detect pins are active low too.

Bay (PIC A / PIC B) Blue (locate) Green (activity) Amber (error) Drive detect
1 / 5 RA2 (pin 4) RA4 (pin 6) RC2 (pin 13) RA7 (pin 9)
2 / 6 RA3 (pin 5) RA5 (pin 7) RB3 (pin 24) RA6 (pin 10)
3 / 7 RB5 (pin 26) RC0 (pin 11) RC7 (pin 18) RB7 (pin 28)
4 / 8 RB4 (pin 25) RC1 (pin 12) RC6 (pin 17) RB6 (pin 27)

Drive detect turned out to be neat. Pin 5 of each drive’s power connector (a ground pin on the drive side) goes through a 330 Ω resistor to the PIC’s detect pin, and the pin sits at about 7.5 to 10 kΩ to ground with no drive fitted, so a pull-up is implied. Fit a drive and its ground pulls the pin low. All eight bays are the same.

One thing I want to be clear about: drive activity is not wired to any input on the PICs. A drive with no data link never changed any pin apart from insert and remove. Early on I wrongly concluded that the PICs couldn’t see drives at all, from a run where I hadn’t actually moved the drive, and I invented a theory to explain it. I retracted both when I realised. Bad science on my part, and I’m glad I caught it.

Replacing the firmware

I wrote a replacement in C for the XC8 compiler. It is an I2C slave with a pointer-and-auto-increment register map, so a host can set a colour mask for each LED group, read the raw port pins (which tells you which bays have drives fitted), read the two ADC channels, and, for debugging, take direct control of the port latches. The two chips of one backplane get consecutive addresses (0x30 and 0x31 on the first, 0x32 and 0x33 on the second), set at build time. I flashed all four chips across the two backplanes, verified each byte for byte, and ran a slow colour twinkle across both as a test. The original images remain restorable.

The host side started life as an ESP32 acting as an I2C master. It has since been replaced by a Raspberry Pi Pico 2, which also runs the fans and the front panel; that is the second half of this post. On the first cage the register interface works end to end (colour masks, drive-detect and the ADC channels). The chips on the second cage are flashed and verified, but I haven’t exercised their registers yet.

The side channel: SGPIO

The weird output that toggles constantly bothered me. In the stock firmware, one interrupt handler on a single input pin runs a long state machine that alternates between sampling one input and driving that output. Four pins, one clock, one load strobe, one data in and one data out. That is exactly the shape of SGPIO (SFF-8485), the serial bus a SAS controller uses to tell a backplane which LEDs to light.

The decoded behaviour per bay is three bits each way. From the controller, the three bits drive the green activity, blue locate and amber error LEDs. Back to the controller, the chip reports drive presence. That also explains why the stock I2C interface only exposes the blue LED: green and amber were meant to come from the HBA.

The pin mapping, which I confirmed with a meter:

PIC pin Role SFF-8087 pin on J1 / J6 Verified how
23 (RB2) SClock A8 (SB0) matched-length trace pair seen, not buzzed (the row is hidden under the connector)
21 (RB0) SLoad A9 (SB1) same matched pair
22 (RB1) SDataOut B10 (SB4) buzzed
16 (RC5) SDataIn B11 (SB5) buzzed

The standard sideband assignment for these connectors comes from a 2007 T10 document, and the pins I could reach (B row) matched it exactly: B7, B9 and B12 are ground, B10 goes to pin 22 and B11 goes to pin 16. The A row sits underneath the surface-mount connector body where I couldn’t get a probe in, but the two lines that I couldn’t reach arrive as a length-matched pair at PIC pins 23 and 21, which fits a clock and a strobe.

Does it work with my HBAs? I don’t know. The cards are LSI 9211-8i (SAS2008), and reports of whether those drive the sideband in IT mode are mixed. I’ve built a passive capture mode for the replacement firmware that counts clock edges and records raw samples over I2C, so the first test will be a definite yes or no. It isn’t flashed yet.

The LED circuit

Then I started tracing the LED network by hand, with the board powered down, measuring resistance and diode drops in circuit. This is the awkward part: much of the board is hidden under surface-mount parts and I only managed one bay properly.

  • Green and amber: the anode goes to the 3.3 V net, and the cathode goes through a 68 Ω resistor straight to the PIC pin. That is about 19 mA per LED, comfortably inside the PIC’s limit.
  • Blue: the anode goes directly to the 5 V rail. The cathode goes through a 120 Ω resistor to the drain of a small SOT-23 N-channel MOSFET. The source of that MOSFET goes straight to the PIC pin, and its gate is tied permanently to 3.3 V.

That FET is a nice little piece of design. A blue LED needs about 3 V, which a 3.3 V supply can barely give, so HP runs it from 5 V. But a 3.3 V microcontroller pin must not see 5 V. With the gate held at 3.3 V, the transistor conducts when the PIC pulls its pin low (lighting the LED) and switches off when the pin is high, so the 5 V side never reaches the chip. There are eight of them, one per blue LED: Q7, Q17, Q6, Q8, Q3, Q9, Q4 and Q5 for bays 1 to 8. Each bay also has a dual LED (CR1, CR3, CR5 and so on) and a separate green one (CR2, CR4, CR6 and so on). The part is marked 701 on mine, while the ON Semiconductor 2N7002L datasheet lists the marking as 702, so I’m treating it as a 2N7002L-class device until I find out otherwise.

There are also two 100 µF electrolytic capacitors by every drive connector, one on the 5 V rail and one on the 12 V rail.

The 100 µF electrolytic capacitors beside a drive connector.
The 100 µF electrolytic capacitors beside a drive connector.

I’ve only measured bay 1 on PIC A. The rest of the board is drawn on the schematic as assumed identical (amber and dashed) rather than measured, and I’d rather the drawing said so than pretended otherwise.

The schematic

I generate the drawing from a script, so it can be corrected as I trace more of the board. There are nine A3 sheets in the PDF. The first is the block diagram above, the next three are the wired component-level schematics, and the remaining sheets are the pin maps, the connector pinouts, the per-bay table and the firmware interface.

Schematic sheet 2: power, I2C and drive power
Sheet 2: power connector, regulator, I2C bus and the drive power circuit.
Schematic sheet 3: PIC A circuit
Sheet 3: the PIC A circuit, with every LED branch, the drive-detect lines and the J1 sideband.
Schematic sheet 4: PIC B circuit
Sheet 4: the PIC B circuit, the same layout for bays 5 to 8 and J6.
Connector pinouts, with a render of the power connector
The connector pinouts, including a render of the female 2×5 Mini-Fit Jr power connector with its pin numbers.
Per-bay pin table and the SGPIO frame
The per-bay pin table and the SGPIO frame as the stock firmware handles it.

Reading it is straightforward: black solid lines are measured, amber dashed lines are inferred, and grey dotted lines have not been traced. The reference designators J1, J6, J11, J12, J14 and J44 come from the board’s silkscreen. Anything with an asterisk, like Q1*, RB1* or DG2*, is a name I invented to keep the drawing readable.

The PDF is at the end of the post.

Controlling it all: from an ESP32 to a Pico 2

The backplanes now speak a simple I2C register protocol, but something has to talk to them, and the same something has to run four case fans, read temperature probes and press the server’s power button. I started with an ESP32, then realised I had Raspberry Pi Pico 2 boards on the shelf and no WiFi requirement, so the controller is now a plain Pico 2 that plugs into a spare internal USB header on the motherboard. USB powers it and carries all the traffic: status, configuration, alerts and firmware updates.

What hangs off it:

  • I2C to the two backplanes (the J44 headers), which gives the NAS control of every bay LED.
  • Four PWM fans with tach, each through one 2N3904 that pulls the PWM line low (open collector), so it works with any fan pull-up. A jumper decides what the fans do if the Pico is off or hung: they go to full speed.
  • A 1-Wire bus for DS18B20 temperature probes.
  • Power and reset: two transistors across the front-panel header pins, in parallel with the real buttons, plus drivers for the 12 V LED rings in the case buttons and sensing of the motherboard’s own power and drive-activity LED signals.
Pinout of the Pico 2 bay controller, with every used pin labelled and wired to its connector.
The pinout, in the style of the official Pico diagram: fan PWM and tach interleaved on GP6 to GP13, 1-Wire on GP14, I2C on GP4 and GP5.

A few design decisions that are worth passing on:

  • I don’t rely on the RP2350’s internal pull resistors. The A2 stepping has a known erratum that makes the pull-downs unreliable, and pull-ups are weak for a fan tach anyway, so the tach lines have a real 10 kΩ and the 1-Wire bus a real 4.7 kΩ.
  • I swapped some pins from my first plan so that fan PWM and tach pins alternate. That makes the wiring to each fan header run straight across instead of crossing, which matters when you are building it on stripboard.
  • The fan headers are stacked in one column, so the four 12 V pins (and the four grounds) can be joined by a heavy wire under the board.
The Pico bay controller schematic, drawn with real wires in functional blocks.
The controller schematic, drawn with real wires rather than net labels: one block per fan, the I2C and 1-Wire headers, the two panel LED stages, the two button circuits and the 12 V input. The full-size PDF is at the end of the post.

I generated the drawing from a script and checked it electrically: it knows the intended connections, and it fails if any wire shorts two nets, leaves one open or crosses another. A stripboard layout then came out of the stripboard-editor.com solver at 31 by 49 holes, after a couple of attempts. None of this has been built yet, so treat it as a design, not a tested board.

Fans that learn

The Pico runs the fans itself, so they keep working if the NAS is off or crashed. Each fan has a temperature curve of up to eight points, hysteresis so it doesn’t hunt, and slew limiting so it doesn’t lurch. Three temperatures matter: a target the fan should settle at, a limit above which it adds 10 per cent per degree on top of the curve, and a critical temperature at which it goes to full speed.

On top of the curve there is a learned correction. Every thirty seconds, if the zone is warmer than the target, the correction for the current temperature band (2 °C wide) goes up a step; if it is comfortably cooler, it goes down. Over hours the fan finds the quietest speed that holds the target, band by band. It is saved to flash at most every fifteen minutes, so the flash isn’t worn out.

Calibration measures each fan’s start speed and its RPM at every speed, and it also tests the polarity. Fans differ: some run faster at a low PWM duty (inverted). It runs the fan at 20 per cent and then 80 per cent, and if the fan is faster at 20 it flips the software invert flag for that fan.

When a fan dies

A fan that is being driven but sends no tach pulses for eight seconds is treated as failed. Most servers respond by sending every other fan to full power, which is loud. I wanted something calmer: fans are grouped by what they cool, and when one fails the healthy fans in the group are raised by the ratio of total to healthy (so with four fans and one failed, the others go up by a third), capped at 85 per cent by default. Learning pauses while they are covering, so the learned curve isn’t polluted. A critical temperature still means full speed.

The Pico also notices a fan that is turning, but far too slowly (under half its calibrated speed for thirty seconds) and reports it. Every change of state goes into a numbered ring of events and is sent to the NAS straight away, so a host that was busy can still ask for what it missed.

NAS//OS: the control panel

The NAS operating system I’m writing is the control panel for all this. You create zones: a zone is a set of fans plus whatever they cool, drives by cage or bay and temperature probes by their unique ID. The NAS sends the Pico the hottest drive temperature in each zone from SMART, and keeps the Pico’s configuration in step with the zones by comparing what it reads back, so a Pico that has lost its settings is put right on the next poll. Failed fans, slow fans, a zone above its limit, a missing probe or a lost link raise an e-mail alert, and the alert clears when the problem does.

Telling the probes apart is the awkward bit with 1-Wire, because they are identical. The NAS has a “find a probe” button: it remembers every probe’s temperature, you warm one in your hand, and the one that heats up is highlighted so you can name it and say where it sits.

I was caught out on one thing: I’d written my own 1-Wire routines, JSON writer and checksum in the Pico firmware. Then I looked at what the ecosystem already provides and replaced them with the OneWire, DallasTemperature, ArduinoJson and CRC32 libraries. It’s less code to maintain and far less to get wrong.

It has been tested against simulations, not hardware: unit tests on the control logic (failure cover, limits, polarity detection), a whole-firmware simulation on the PC with a model fan and a thermal model, and 38 checks of the NAS side against a simulated Pico. The real test starts when I build the board.

What I still don’t know

  • Whether my 9211-8i cards drive the SGPIO lines at all (test pending).
  • The pad-level confirmation of the sideband clock and load pins (hidden row).
  • Where the SAS lanes go (they bypass the PICs).
  • The LED network on every bay except the first.
  • What J14 and J43 are for. Pin 1 is ground and pin 2 goes through a 10 kΩ resistor to pin 26 (RB5) of the nearest PIC, with no divider to ground. That pin is also the blue LED output for bay 3 (bay 7 on the second chip), which makes me suspect a factory test tap, but I haven’t proved it.
  • What the PICs’ analogue input RA1 is for. On the second chip it is a 1 kΩ and roughly 8.2 kΩ divider with a capacitor, reading a constant 0.891 of the supply, and on the first chip the trace vanishes down a blind via. My guess is a fixed hardware-ID strap, a bit like the address strap, but I haven’t proved it.
  • Pull-up values, the regulator’s capacitors and the PIC B strap divider.
  • How the Pico controller behaves on real hardware: the board is not built yet, and I haven’t run the 1-Wire library against a real probe on the RP2350.

What I’d do differently

  • Back up the chips before touching anything, and verify the backup by reading it back.
  • Don’t experiment with write commands on the only copy of the firmware.
  • Check that I have actually changed the physical state before drawing conclusions from a log.
  • Draw the schematic as you go. Doing it properly exposed a couple of places where I’d misattributed a connection in my notes, such as putting the interrupt on the wrong pin and the FETs on the wrong LED colour.

I’ll follow this up when the SGPIO capture test is done, when I’ve been through the rest of the bays with a meter, and when the controller board has been built and has met a real fan failure.

Downloads

Posted on — 1 Comment

Etching PCBs With Dry Film Photoresist

Since I do my own PCBs on a somewhat regular basis, I decided it was time to move to a more professional method to etch my boards. I have been using the cheap toner transfer method, using special yellow coated paper from China. (I think it’s coated in wax, or some plastic film).

The toner transfer paper does usually work quite well, but I’ve had many issues with pinholes in the transfer, which cause the etched tracks to look horrid, (not to mention the potential for breaks & reduced current capacity), and the toner not transferring properly at all, to issues with the paper permanently fusing to the copper instead of just transferring the toner.

BigClive has done a couple of fairly comprehensive videos on the dry film photoresist available from AliExpress & eBay. This stuff is used similarly to the toner transfer method, in that the film is fused to the board with heat, but then things diverge. It’s supplied either in cut sheets, or by the roll. I ordered a full roll to avoid the issues I’ve heard of when the stuff is folded in the post – once it’s creased, it’s totally useless. The dry film itself is a gel sandwiched between two protective plastic film sheets, and bonds to the board with the application of heat from a laminator.

The board is first cleaned with scotchbrite pad & soap to remove any tarnish & oil from the copper.

Dry Film
Dry Film

Once the board has been cleaned, one side of the backing film is removed from the gel with adhesive tape, and the dry film is placed on the board while still wet. This stops the film from sticking immediately to the clean copper, one edge is pressed down, and it’s then fed through a modified laminator:

Modified Laminator
Modified Laminator

I’ve cut away most of the plastic covering the hot rollers, as constant jamming was an issue with this cheapo unit. All the mains power is safely tucked away under some remaining plastic cover at the end. The board with it’s covering of dry film is fed into the laminator – the edge that was pressed down first. This allows the laminator to squeeze out any remaining water & air bubbles from between the two so no creases or blisters form.

After Lamination
After Lamination

Once the board has been run through the laminator about 6 times, (enough to get it very hot to the touch), the film is totally bonded to the copper. The top film is left in place to protect the UV sensitive layer during expsure.

Photomask
Photomask

The exposure mask is laser printed onto OHP transparencies, in this case I’ve found I need to use two copies overlaid to get enough opacity in the black toner sections to block the UV light. Some touching up with a Sharpie is also easy to do if there are any weak spots in the toner coverage. This film is negative type – All the black areas will be unexposed and washed off in the developer tank. I also found I had to be fairly generous with track spacing, using too small lines just causes issues with the UV curing bits of film it isn’t supposed to.

Exposing The PCB
Exposing The PCB

The PCB is placed on a firm surface, the exposure mask lined up on top, and the whole thing covered with a sheet of standard glass to apply even pressure. The UV exposure lamp in this case is a cheap eBay UV nail curing unit, with 15 high power LEDs. (I’ll do a teardown on this when I get some time, it’s got some very odd LEDs in it). Exposing the board for 60 seconds is all the time needed.

After Exposure
After Exposure

After the board is exposed, the areas that got hit with the UV light have turned purple – the resist has hardened in these areas. It’s bloody tough as well, I’ve scrubbed at it with some vigour and it doesn’t come off. Toner transfer was a bit naff in this respect, most of the time the toner came off so easily that the etchant lifted it off. After this step is done, the remaining protective film on the top can be removed.

After Developing
After Developing

The film is developed in a solution of Sodium Carbonate (washing Soda). This is mildly alkaline and it dissolves off the unexposed resist.

After Etching
After Etching

Now it’s into the etching tank for a couple of minutes, I’m still using Ferric Chloride to etch my boards, at about 60°C. Etching at room temperature is much too slow. Once this is done, the board is washed, and then dipped in the strip tank for a couple of minutes. This is a Sodium Hydroxide solution, and is very caustic, so gloves are required for this bit. Getting Ferric Chloride on skin is also a fairly bad idea, it stains everything orange, and it attacks pretty much every metal it comes into contact with, including Stainless Steel.

This method does require some more effort than the toner transfer method, but it’s much more reliable. If something goes wrong with the exposure, it’s very easy to strip the board completely & start again before etching. This saves PCB material and etchant. This is definitely more suited to small-scale production as well, since the photomask can be reused, there’s much less waste at the end. The etched lines are sharper, much better defined & even with some more chemicals involved, it’s a pretty clean process. All apart from the Ferric Chloride can be disposed of down the sink after use, since the developer & stripper are just alkaline solutions.

 

Posted on — Leave a comment

16-Port SATA PCIe Card – Cooling Recap

It’s been 4 months since I did a rejig of my storage server, installing a new 16-port SATA HBA to support the disk drives. I mentioned the factory fan the card came with in my previous post, and I didn’t have many hopes of it surviving long.

Heatsink
Heatsink

The heatsink card has barely had enough time to accumulate any grime from the air & the fan has already failed!

There’s no temperature sensing or fan speed sensing on this card, so a failure here could go unnoticed, and under load without a fan the heatsink becomes hot enough to cause burns. (There are a total of 5 large ICs underneath it). This would probably cause the HBA to overheat & fail rather quickly, especially when under a high I/O load, with no warning. In my case, the bearings in the fan failed, so the familiar noise of a knackered sleeve bearing fan alerted me to problems.

Replacement Fan
Replacement Fan

A replacement 80mm Delta fan has been attached to the heatsink in place of the dead fan, and this is plugged into a motherboard fan header, allowing sensing of the fan speed. The much greater airflow over the heatsink has dramatically reduced running temperatures. The original fan probably had it’s bearings cooked by the heat from the card as it’s airflow capability was minimal.

Fan Rear
Fan Rear

Here’s the old fan removed from the heatsink. The back label, usally the place where I’d expect to find some specifications has nothing but a red circle. This really is the cheapest crap that the manufacturer could have fitted, and considering this HBA isn’t exactly cheap, I’d expect better.

Bearings
Bearings

Peeling off the back label reveals the back of the bearing housing, with the plastic retaining clip. There’s some sign of heat damage here, the oil has turned into gum, all the lighter fractions having evaporated off.

Rotor
Rotor

The shaft doesn’t show any significant damage, but since the phosphor bronze bearing is softer, there is some dirt in here which is probably a mix of degraded oil & bearing material.

Stator & Bearing
Stator & Bearing

There’s more gunge around the other end of the bearing & it’s been worn enough that side play can be felt with the shaft. In ~3000 hours running this fan is totally useless.

Posted on — Leave a comment

nb Tanya Louise Heating Upgrades – Saloon Heating

With the installation of the new diesel fired heater we’ve noticed a small problem – since the only heat source in the saloon is the stove, even with the diesel heater fired up the temperature doesn’t really change much, as the heat from the radiators in the both the cabins & the head isn’t spreading far enough.

The solution to this problem is obviously an extra radiator in the saloon, however there isn’t the space to fit even a small domestic-style radiator. eBay turned up some heater matrix units designed for kit cars & the like:

3.8kW Matrix
3.8kW Matrix

These small heater matrix units are nice & compact, so will fit into the back of a storage cupboard next to the saloon. Rated at a max heat output of 3.8kW, just shy of the stove’s rated 4kW output power, this should provide plenty of heating when we’re running the diesel heater rather than the fire.

Water & Power
Water & Power

The blower motor has a resistor network to provide 3 speeds, but this probably won’t be used in this install, water connections are via 15mm copper tails. The current plan is to use a pipe thermostat on the flow from the boiler to switch on the blower when the water temperature reaches about 40°C.

Hot Air Outlets
Hot Air Outlets

The hot air emerges from the matrix via 4 55mm duct sockets. This gives enough outlets to cover both the saloon & the corridor down to the cabins.

Hot Air Vents
Hot Air Vents

Standard 60mm Eberspacher style vents will be used to point the warmth where it’s needed.

More to come soon with the install!

Posted on — 2 Comments

Melles-Griot 05-LHP-141-15 Helium Neon Laser Head & Tube Extraction

Melles Griot
He-Ne Laser Head
He-Ne Laser Head

Looking through eBay recently I came across a great deal on some Helium-Neon laser heads from Melles Griot. While definitely not new, these gas lasers are extremely long-lasting & I figured the tubes inside would make a nice addition to my laser collection. Doing some searching on the model number, these heads are rated at an optical output of 4mW, but depending on how much milage is on the tubes, the output may be a bit higher.

Data Label
Data Label

I got a pair of the heads, this one was manufactured in July 1988, the other March 1989.

OC End / Classification Label
OC End / Classification Label

The OC end of the head has the laser classification label & the beam shutter. Once I’d tested the laser heads to make sure they survived the post intact, I set at extracting the plasma tubes from the aluminium housings.
The end caps are fibre-reinforced plastic & are secured with epoxy resin, so some heating & brute force released the caps from the housing, giving access to the laser tube itself.

Glue Holes
Glue Holes

The laser tube is secured in these heads by hot glue – this was squirted into the housing via two rows of holes around the ends. (Some are secured with RTV silicone, which is substantially more difficult to remove).

Copper Tube
Copper Tube

I’ve no photos of the actual extraction process as it’s difficult enough as is without at least 5 hands. A heat gun was used to warm up the housing until the glue melted enough to slide the tube out of the housing. Since everything was hot at this stage, a piece of copper tubing (above), was slipped over the OC mirror mount, so I could push the tube out of the housing while the glue was soft. This also protected the mirror from damage while the tube was being removed.

Extracted Tube
Extracted Tube

After a few minutes of gentle pushing while keeping the housing hot, the tube was released! It’s still pretty well covered in the remains of the hot glue, but this is easily removed once the tube cools down to room temperature with Isopropanol. The line of Kapton tape running down the tube to the cathode end is insulating a start tape electrode, which is supposed to make the laser strike faster on power-up. Instead of being metal though, the electrode appears to be a carbon-loaded plastic tape.

Start Tape & Adhesive
Start Tape & Adhesive

Here’s the HR end of the tube, which also serves as the high voltage anode electrode. The start tape is clipped onto the mirror mount, but all this will be removed.

OC End
OC End

The OC end of the laser, where the beam emerges. What I think is the mW rating of the tubes is written on the end cap, probably from when the tubes were manufactured.

Tube Energized
Tube Energized

Applying power from a He-Ne laser PSU confirmed the tube still works!

Posted on — Leave a comment

ETI Thermamite Catering Thermometer

Catering Thermometer
Catering Thermometer

Here’s another bit of commercial gear, a catering thermometer. These are used to check the internal temperature of foods such as meat, to ensure they’re cooked through.

This was given to me with some damage, the battery cover is missing & the plastic casing itself is cracked.

Battery Compartment
Battery Compartment

Power is provided by 3 AAA cells, for 4.5v

Main PCB
Main PCB

There’s not much to these units, the large LCD at the top is driven by the IC in the centre. A programming header is also present on the board near the edge.

Microcontroller
Microcontroller

The core logic is taken care of with a Texas Instruments M430F4250 MSP430 Mixed-Signal Microcontroller. This MCU has onboard 16-bit Sigma-Delta A/D converter, 16-bit D/A converter & LCD driver. Clock is provided by a 32.768kHz crystal.
The probe itself is just a simple thermistor bonded into a stainless steel rod.

Posted on — Leave a comment

Sony Xperia T Teardown

Back Cover Removed
Back Cover Removed

Since this phone has been in my drawer for some time, I figured it was time for a teardown. (It’s never going to see any more use).
The back cover on these phones is easily removed, as it’s just clipped on.

Motherboard
Motherboard

Once the back cover is removed, the Li-Polymer cell is exposed, along with the logic board. Pretty much all of the PCB is under RF shields.

Motherboard Removed
Motherboard Removed
Battery Management
Battery Management

Under the small RF can on the back of the board is the battery management circuitry & the charger. There’s an extra connection to the cell for temperature monitoring. Just under that circuitry is the eMMC flash storage.
Just to the left of the battery circuit is the NFC transceiver IC, from NXP.

Battery Flex
Battery Flex

The cell is connected to the main board with a FFC, with a very small SMT connector, although not as small as the more modern Xperia series phones.

RF Section
RF Section

The other side of the mainboard holds the large RF transceiver section, with a Qualcomm RTR8600 multiband transceiver IC. In the bottom corner is a Skyworks SKY77351-32 Quad-band power amplifier IC, along with 3 other power amplifier ICs, also from Skyworks.

Gyro & Audio Codec
Gyro & Audio Codec

The top corner of the board holds the various sensors, including an Invensense MPU-3050 3-axis gyro. To the right of that is the Audio Codec, a WCD9310 from Qualcomm.

Logic & CPU Section
Logic & CPU Section

Everything is controlled from the last section on the board, with the main CPU & RAM in a PoP (Package-On-Package) configuration. Under the main CPU is the main power management IC, also from Qualcomm. No datasheet for this one unfortunately, but it gives it’s purpose away by being surrounded by large inductors & capacitors.

Posted on — 1 Comment

IC Decap: ITE IT8712F Super I/O Controller

IT8712F Package
IT8712F Package

These chips are used on PC motherboards, to control many of the legacy peripherals & things such as temperature monitoring & fan speed control.

Here’s the block diagram from the datasheet to show all the features, this IC handles many things on a modern motherboard!

Block Diagram
Block Diagram
IT8712F Die
IT8712F Die
Posted on — 3 Comments

Duratool ZD-915 Vacuum Desoldering Station Teardown

For a long time I’ve needed a decent vacuum desoldering tool, as I do much stripping of old PCBs for random parts.
Solder wick works well for most things, but it’s expensive & can be fiddly. It also doesn’t keep very long as the copper braid oxidises & after that point it never seems to work particularly well, even when soaked in fresh flux.

Desoldering Station
Desoldering Station

As usual eBay to the rescue! I managed to pick this one up for £80.

Vacuum Pump
Vacuum Pump

Removing the lid reveals the internals. Front & centre is the vacuum pump, with the mains supply behind it. There’s also a very noisy cooling fan at the back. Not sure why since the unit never gets warm enough to actually warrant a fan.

PSU
PSU

On the other side is the PSU. This is an 18v 12A rated SMPS, with a bit of custom electronics for controlling the iron element. Mounted to the back case is a small black box, more to come on this bit.

PSU Board
PSU Board

Cracking the case of the PSU reveals a pretty bog-standard SMPS, with a surprising amount of mains filtering for a Chinese supply. The DC outputs are on the right.

20160101_111613

From the rail markings, this is clearly designed to output some more voltage rails – possibly for other models of unit. In this case though, a single 18v rail is present. The iron’s element connects directly to the supply, controlled via an opto-isolated MOSFET.

Chinese Voltage Regulation
Chinese Voltage Regulation

As both the fan & the vacuum pump motor are 12v devices, some provision had to be made to reduce the 18v from the power supply to a more reasonable value. Inside the black plastic box are a pair of 1Ω 5W power resistors, connected in series. The output from this connects to the fan & vacuum pump. Because cheap, obviously.

Controller
Controller

Finally, here’s the controller PCB, the main MCU is an 8081 derivative, with a Holtek HT1621B LCD controller for the front panel temperature readout. Iron temperature is achieved by a thermocouple embedded in the heater, I imagine the potentiometer on the left side of the PCB is for calibration.

Posted on — Leave a comment

DIY SMPS Fan Controller

Now the controllers have arrived, I can rejig the supplies to have proper thermal control on their cooling.

Changes Overview
Changes Overview

Here’s the top off the PSU. The board has been added to the back panel, getting it’s 12v supply from the cable that originally fed the fan directly. Luckily there was just enough length on the temperature probe to fit it to the output rectifier heatsink without modification.

To connect to the standard 4-pin headers on the controller, I’ve spliced on a PC fan extension cable, as these fans spent their previous lives in servers, with odd custom connectors.

Fan Controller
Fan Controller

Here’s the controller itself, the temperature probe is inserted between the main transformer & the rectifier heatsink.
I’ve set the controller to start accelerating the fan at 50°C, with full speed at 70°C.

Full Load Test
Full Load Test

Under a full load test for 1 hour, the fan didn’t even speed up past about 40% of full power. The very high airflow from these fans is doing an excellent job of keeping the supply cool. Previously the entire case was very hot to the touch, now everything is cool & just a hint of warm air exits the vents. As the fan never runs at full speed, the noise isn’t too deafening, and immediately spools back down to minimum power when the load is removed.

Posted on — Leave a comment

DIY SMPS Cooling

The power supplies I have recently built from surplus Cisco switch boards have started displaying a rather irritating problem – continual load of over 9A causes the supplies to shut down on overheat.

This was partially expected, as the original switches that these supplies came from are cooled by a monster of a centrifugal blower that could give a Dyson a run for it’s money. The problem with these fans is that they’re very loud, draw a lot of power (3-4A) and aren’t small enough to fit into the case I’ve used for the project.

The solution of course, is a bigger fan – I’ve got some Delta AFB0612EHE server fans, these are very powerful axial units, shifting 60CFM at 11,000RPM, with a power draw of 1.12A.
They’re 60mm diameter, so only just fit into the back of the case – although they stick out of the back by 40mm.

Monster Fan
Monster Fan

Here’s the fan, not the beefiest I have, but the beefiest that will fit into the available space.
These will easily take fingers off if they get too close at full speed, so guards will definitely be required.

To reduce the noise (they sound like jet engines at full pelt), I have ordered some PWM controllers that have a temperature sensor onboard, so I can have the fan run at a speed proportional to the PSU temperature. I will probably attach the sensor to the output rectifier heatsink, since that’s got the highest thermal load for it’s size.

More to come when parts arrive!

73s for now 🙂

Posted on — Leave a comment

Chinese Power Supply Update

Having now tested the supply I wrote about in my previous post, I can now say that it’s nameplate rating far exceeds it’s actual capability.

On running the supply under load, at 6.5A the operating frequency drops into the audible range, a big sign of overload. (It makes an irritating continuous chirping noise). The output voltage also drops to 10.5v.

The temperature of the unit while it’s been running under such a load is also questionable, the external casing gets hot enough to cause burns, I haven’t yet been able to stick a thermocouple into the case to see what the internal temperature is.

I’m currently talking with the eBay seller (wwwstation) regarding this, however they are arguing that the supply is only for LEDs & CCTV cameras.
However those two loads are very different, and the supply has no internal regulation for supplying LEDs. As a simple switchmode supply, any load is suitable, providing it’s within the load rating of the supply.
I would estimate that the supply is only capable of 5A as an upper limit.

They are requesting that I return the supply, but I’m yet to find out if they’re going to cover return postage. The item as listed is not as described, and I will escalate things if required.
I will update this post when I hear more back from the eBay seller.

73s for now 🙂

Posted on — Leave a comment

13.8v SMPS PSU Final Additions

Following on from my recent power supply build, I’ve added on a couple of improvements:

Front Panel
Front Panel

I’ve added on my standard SpeakOn type 30A connector, a bank of push terminals for quick connecting test leads, and a 15A FSD ammeter.

Panel Rear
Panel Rear

Due to the limited space inside the supply, I’ve had to improvise some insulation on the mains-side heatsink to prevent a nasty accident. The heatsinks are tied to the supply’s HVDC bus negative, so they are energized at -145v DC relative to mains earth. This fact has given me a nasty surprise! The insulation is several layers of Kapton tape, with a couple of layers of Duct Tape. This along with trirated wire to the SpeakOn & the panel meter should ensure safety.

The Ammeter itself was sourced from eBay, for £2. It seems pretty accurate so far!

Ammeter
Ammeter

The shunt is built into the rear of these meters, in an ultrasonically welded part of the case, so I can’t examine it. Hopefully it is indeed rated to 15A!

The only things left to make this supply complete are a mains power switch, and a fan speed control, as the fan I have used is a little noisy at full speed. It will be good to get the speed based from the internal temperature, so the fan only runs at full speed when the supply is under load.

 

 

Posted on — 1 Comment

FE-5680A Rubidium Frequency Standard – Initial Teardown

Physics Package
Physics Package

Here is a quick look inside the FE-5060A Rubidium Frequency Standard. Above you can see the entire physics package, with the rubidium lamp housing on the right hand side. The ribbon cable running into the resonator cavity has the power & signal traces for the internal heater, temperature sensor & Helmholtz coil.

Lamp End
Lamp End

Here is the lamp end of the physics package, with the voltage regulator & RF driver for the lamp. The FETs soldered to the back of the housing are being used as heaters to maintain a constant temperature on the lamp in operation.
The temperature sensor can be seen between the two FETs, with a single copper wire running around the housing to connect to it.

Main frequency synth board. This contains the RS-232 interface & the AD9830A from Analog Devices. This IC is a direct digital synthesizer & waveform generator.

 

Synthesizer Board
Synthesizer Board
Posted on — Leave a comment

SEPIC Regulator Test Rig

Regulator Hookup
Regulator Hookup

Here’s the regulator hooked up with test clips, on the right is the supply from the ultracapacitor bank, while on the left is the output, feeding a 2.3A brushless fan as a test load.

These regulators do get warm, even with no load, with a 2.3A load on the output, the temperature stays warm to the touch.

Posted on — 7 Comments

Monox Compact-S CO Sensor Cell

Top
Top

Here is an old electrochemical type carbon monoxide detector cell, from Monox. Hole in the centre is the inlet for the gas under test.
DO NOT TRY THIS AT HOME! Electrochemical cells contain a substantial amount of sulphuric acid, strong enough to cause burns.

This is a type of fuel cell that instead of being designed to produce power, is designed to produce a current that is precisely related to the amount of the target gas (in this case carbon monoxide) in the atmosphere. Measurement of the current gives a measure of the concentration of carbon monoxide in the atmosphere. Essentially the electrochemical cell consists of a container, 2 electrodes, connection wires and an electrolyte – typically sulfuric acid. Carbon monoxide is oxidized at one electrode to carbon dioxide while oxygen is consumed at the other electrode. For carbon monoxide detection, the electrochemical cell has advantages over other technologies in that it has a highly accurate and linear output to carbon monoxide concentration, requires minimal power as it is operated at room temperature, and has a long lifetime (typically commercial available cells now have lifetimes of 5 years or greater). Until recently, the cost of these cells and concerns about their long term reliability had limited uptake of this technology in the marketplace, although these concerns are now largely overcome. This technology is now the dominant technology in USA and Europe.

Rear
Rear

Rear of unit with connection pins. Hole here is to let oxygen into the cell which permits the redox reaction to take place in the cell when CO is detected, producing a voltage on the output pins.

Disassembled
Disassembled

Cell disassembled. The semi-permeable membrane on the back cover can be seen here, to allow gas into the cell, but not the liquid electrolyte out. Cell with the electrodes is on the right, immersed in sulphuric acid.

Platinum Electrode
Platinum Electrode

Closeup of the electrode structure. Polymer base with a precious metal coating.

Membrane
Membrane

Membrane & filter on the test gas input port.

Posted on — Leave a comment

Hot Laminator

Top
Top

Here is a cheap no brand hot laminator. This pulls the paper, inside a plastic pouch through a pair of heated rollers to seal it.

Heater
Heater

Top removed, heater assembly visible. PCB attached to the top cover holds LEDs to indicate power & ready status.

Switch
Switch
Thermostat
Thermostat

Here is the thermostat & thermal fuse, the thermostat switching the indicator on the front panel to tell the user when the unit is up to temperature. This has a self regulating thermostat. Thermal fuse inside the heat resistant tubing is to protect against any failure of the heater.

Motor
Motor

5 RPM motor that turns the rollers through a simple gear system.

Posted on — Leave a comment

Bosch GSR 14.4v Pro Drill-Driver

Drill Case
Drill Case

Here is a Bosch 14.4v Professional cordless drill/driver, recovered from a skip!
It was thrown away due to a gearbox fault, which was easy to rectify.

Internals
Internals

Here is the drill with the side cover removed, showing it’s internal parts. The speed controller is below the motor & gearbox here. The unit at the top consists of a 12v DC motor, coupled to a 4-stage  epicyclic gearbox unit, from which can be selected 2 different ratios, by way of the lever in the centre of the box. This disables one of the gear stages. There is a torque control clutch at the chuck end of the gearbox, this was faulty when found.

Motor
Motor

Here is the drive motor disconnected from the gearbox, having a bayonet fitting on the drive end.

Drive Gear
Drive Gear

This is the primary drive gear of the motor, which connects with the gearbox.

Cooling Fan
Cooling Fan

The motor is cooled by this fan inside next to the commutator, drawing air over the windings.

Gearbox
Gearbox

This is the gearbox partially disassembled, showing the 1st & second stages of the geartrain. The second stage provides the 2 different drive ratios by having the annulus slide over the entire gearset, disabling it entirely, in high gear. The annulus gears are a potential weak point in this gearbox, as they are made from plastic, with all other gears being made of steel.

Charger
Charger

Here is the charging unit for the Ni-Cd battery packs supplied with the drill. The only indicator is the LED shown here on the front of the unit, which flashes while charging, & comes on solid when charging is complete. Charge termination is by way of temperature monitoring.

Transformer
Transformer

Here the bottom of the charger has been removed, showing the internal parts. An 18v transformer supplies power to the charger PCB on the left.

Charger PCB
Charger PCB

This is the charger PCB, with a ST Microelectronics controller IC marked 6HKB07501758. I cannot find any information about this chip.

Battery Pack Internals
Battery Pack Internals

Here is a battery pack with the top removed, showing the cells.

Temperature Sensor
Temperature Sensor

This is the temperature sensor embedded inside the battery pack that is used by the charger to determine when charging is complete.

Posted on — Leave a comment

Nokia 7110

Front
Front

Another phone from the mid 90s. This is the nokia 7110.

Slider Open
Slider Open

Here the slider is open showing the keypad.

Battery Removed
Battery Removed

Here the battery is removed, a Li-Ion unit.

Battery
Battery

The battery cell & protection circuit removed from the casing.

Rear Of PCB
Rear Of PCB

This is the rear of the PCB removed from the housing. Data & charging ports on the right hand side f the board.

Front Of PCB
Front Of PCB

Front of the PCB with the RF sections at the left hand side & the keypad contacts on the right.

RF Sections
RF Sections

Closeup of the RF sections of the board, big silver rectangular cans are VCO units.

SIM Connector
SIM Connector

Closeup of the top rear section of the PCB, with SIM cnnector, battery contacts, IR tranciever at the far left. Bottom centre is the external antenna connector.

CPU
CPU

The logic section of the board, Large chip is CPU, to right of that is the ROM storing the machine code. Other chips are unknown custom parts.

Mic & Speaker
Mic & Speaker

The Mic & the loudspeaker removed from it’s housing.

LCD
LCD

LCD from the front of the unit, SPI interfaced. Flex PCB also contains the power button, loudspeaker contacts & a temperature sensor.

Scroll Wheel
Scroll Wheel

The scroll wheel removed from the front housing.

Vibra-Motor
Vibra-Motor

Tiny vibration motor removed from the rear housing, alerts the user to a text or phone call.

Posted on — 2 Comments

Current Cost ‘Envi’ CC128 Power Meter

Display Unit
Display Unit

This is the Current Cost CC128 Real Time Power Meter. Shown here is the display unit, British Gas issued these free to some customers.
This unit measures current power draw in Watts, cost of power currently being used (requires unit price to be set), overall kWh usage over the past 1, 7 or 30 days & power trends during the day, night & evening. Also displays current time & current room temperature.

Display PCB
Display PCB

Here the front panel of the display has been un-clipped. At the bottom are the RJ-45 serial port & power connections.
This unit uses a PIC micro-controller as it’s CPU (PIC18F85J90) Just above & left of the CPU is the 433MHz SPD radio receiver module. The chips on the right of the CPU are a 25LC128 SPI serial EEPROM for data storage & a 74HC4060 14 stage binary counter, to which is connected the 32kHz clock crystal. The red wire around the top of the display is the antenna for the radio receiver.

For more info on the CC128 in general, the serial port & software for computer data logging, see this link
See this link for Current Cost’s list of software

Processor & Radio
Processor & Radio

Closeup of the ICs on the mainboard.

Transmitter Unit
Transmitter Unit

Here we have the transmitter unit, with Current Transformer (CT). The red clamp fits around one of the electric meter tails & read the current going to the various circuits. This unit is powered by 2x D cells, rated at a life of 7 years.

Transmitter PCB
Transmitter PCB

The PCB inside the transmitter. Again very minimal design, unknown controller IC, 433MHz radio transmitter on right hand side with wire antenna. Two barrel connectors on left hand side of board allow connection of up to two more CT clamps for measurement of 3-phase power. Centre of board is unmarked header. (ICSP?)

Current Transformer
Current Transformer

CT unit. Inside is a coil of wire & an iron core which surrounds the cable to be measured.