The “Spindicator” Project

In this post I’m going to describe my attempts to date to build a novel computer hard-disk activity indicator, which I named the “spindicator”.


The usual hard-disk activity indicator is an LED connected to a header on the motherboard which illuminates when data is being read from or written to the hard drive. These reads and writes often happen many times in quick succession, resulting in the characteristic rapidly flashing LED  during periods of high disk activity. A while back I built a nixie clock from old Russian  nixie tubes. A related type of old-school discharge tube is the dekatron, which is a decade counting tube. I love the look of the spinning warm glowing dots of a dekatron counter, and wondered how I could possibly use one in a project. Then I had the idea of using one as a spinning computer disk activity indicator, or “spindicator”, with the activity pulses from the motherboard advancing the dot around the dekatron. There were a couple of problems with this idea, firstly I didn’t have a dekatron on hand, and secondly I didn’t (and still don’t) know how to design the high voltage  circuitry for driving one. So I decided to begin by building a simulated dekatron from a ring of ten LEDs, and trying to drive this with the disk activity signal from the motherboard.

Selecting a Counter

A quick look at my old Digital Circuits & Microprocessors textbook from university (I’m not an electronics engineer, I just took the course out of interest) and I could see that simplest type of counter that would produce the required output, a sequentially advancing logic high output, would be a mod 10 ring counter. One could be easily built from flip-flops, but ring counters do not use flip-flops efficiently. A mod 10 (decade) ring counter requires 10 flip-flops. A modification of the ring counter is the switchtail counter, also known as the Johnson counter. This only requires 5 flip-flops to produce 10 unique output states. The disadvantage is that to get a single advancing high output from this counter requires decode logic to be added to the flip-flop outputs. Luckily, however, a mod 10 Johnson counter complete with decode logic is conveniently and commonly available in integrated circuit form as the 4017 decade counter. The counter has 10 outputs, Q0-Q9, which respond to the positive edge of a clocking waveform as illustrated below.

Basic RGB

Figure 1. Response of the 4017 outputs to the clock input

This is exactly the output required to drive the spindicator LEDs. With the counter sorted, the next task was to figure out how to connect it to the motherboard HDD activity header.

Connecting to the Motherboard HDD Activity Header Pins

I did a bit of digging on the internet to try and determine the nature of the HDD activity signal at the motherboard header. I  found a description of the SATA disk activity signal, with example host side implementations (figure 2) in the Serial ATA specifications.

fig 60 SATA

Figure 2. Example host LED drivers (source: Serial ATA  Specification Revision 2.5, figure 60 )

The specifications state that the device (the SATA hard drive) will provide an open collector (or drain) active low activity signal. Exactly how the host (the motherboard) uses this signal to drive an LED is largely up to the board designer. The two circuits given in figure 2 are examples of possible host implementations. In a circuit of type B,  it would be easy to directly obtain an active low clock waveform from the header by shorting the two header pins, provided the open circuit voltage on the positive pin was the same as the supply voltage used to power the 4017 counter. I later determined that my board (a Gigabyte EP45-UD3R) had a B type circuit, and that the open pin voltage was +5V. However, initially I considered that the easiest way to obtain a signal was to use an optocoupler. That way I didn’t need to know the nature of the motherboard circuit or voltage. An optocoupler, such as the 4N25 that I used, is a nifty device consisting of an infrared LED and photosensitive transistor all contained in a small 6-pin IC. A signal is passed through it by way of light alone, allowing physical separation of parts of a circuit. For this project, the optocoupler’s LED can be connected to the motherboard HDD activity header pins in place of the regular HDD activity LED. When there is disk activity, the LED will light and switch on the opto’s transistor. The switching of this transistor provides the logic pulse to drive the counter clock.

Putting it all Together

Version 1: The Positive Edge Triggered Spindicator

It can get a bit confusing when you try and follow the waveform from device through to counter, but let’s try. The device (hard disk) provides an active low signal to the motherboard. The m/b uses this in such a way that an LED connected to the header will light when the device signal is low, as can be seen from figure 2. So when there is activity, the opto LED will light and switch on the transistor. If the opto’s NPN transistor collector is connected to V+, and emitter connected to ground, then a logic signal taken from the collector will be low when the transistor is on, i.e. when there is activity. The 4017’s count is triggered by the positive edge of a clock waveform applied to the Clock input. From our deduction above, if this input is connected to the collector of the optocoupler’s transistor, the count will advance at the end of each activity period (as the HDD activity LED goes from on to off). Such a device I call a negative edge triggered spindicator, named because it is the high to low transition of the optocoupler LED pulse that advances the count. Now of course there’s absolutely nothing wrong with this, it makes no difference to the operation of the spindicator, but for some reason I felt that the count should be advanced when the LED turns on, not off, which in my nomenclature would be a positive edge triggered spindicator. One way to do this would be to add another transistor as a logic inverter. However it turns out there’s an easier way (apart from not bothering with it at all). If you have a look at the 4017’s datasheet you will see that as well as a Clock input, there’s a Not Clock Enable input (this is usually written as Clock Enable with a bar over it, but I can’t do that here). This input is active low, so if you tie it to logic low, the counter will respond to the positive edge of the clock waveform at the Clock input. If  Not Clock Enable is high, the counter will not respond to the Clock input at all (it will not enable the clock as its name says). The thing that caught my attention was another manufacturer’s datasheet for the 4017. In this one, Not Clock Enable was called Not Clock (written as Clock with a bar over it), indicating that it was the logical inverse of the Clock input — just what I needed to change the triggering edge. Looking at the (simplified) internal logic of the IC, figure 3, you can see how it works.

4017 Waveforms

Figure 3. How the 4017 clock inputs are logically combined

If Not Clock is held low, then the output from the AND gate will exactly mirror the Clock input. If the Clock input is held high, then the output from the AND gate will be the inverse of the Not Clock input, and the counter will effectively become negative edge triggered with respect to a waveform at the Not Clock input. Anyway, the upshot is, that by holding Clock high and connecting the signal from optocoupler to Not Clock I could get my positive edge triggered counter as defined above. In hindsight I shouldn’t have bothered as I later ended up changing it back to negative edge triggered version anyway, as you’ll read below.

For the spindicator output, I chose ten 3mm clear-lens green LEDs. I found that connecting these directly between the outputs of the 4017 counter and ground gave adequate brightness without the need for additional switching transistors. So here then is the circuit as built and tested for the positive edge triggered spindicator.

Spindicator Small

Figure 4. The positive edge triggered spindicator – the count is advanced at the beginning of a disk activity period.

I built and tested the circuit on a breadboard using a 5V power supply, as I planned to tap into the computer’s 5V supply in the final version. To test the circuit I used  either switch pulses, or the output from astable 555 timer to simulate disk activity. After verifying that everything worked, I built up the circuit on a piece of prototyping circuit board and mounted the LEDs on a circle through a 3.5” drive bay cover plate, as can be seen in the photo at the beginning of this post, and the photos below. I should mention that my computer case is a mess after years of mods, and now sports no front cover, so these cover plates are exposed. It’s quite good, as I’m not worried about drilling a few holes. I’ve also taken to using foil tape as a type of grungy exterior case finish, so unused holes just get taped over.


The spindicator circuit board. I used IC sockets so that I could reuse the ICs if the thing turned out to be a failure. A terminal block is used to tie together the LED cathodes (brown wires).


The back of the circular LED array. Some of the LEDs were a bit loose, hence the messy hot melt glue job.

An early modification I made to this particular computer case was to rip out some top-mounted unused firewire/USB/audio ports and install a top window and fan. Handily, the cables for the firewire and audio ports were terminated in lots of individual header pin connectors. These have kept supplied with pin connectors for projects ever since, including those I used here to connect the HDD activity header to my spindicator circuit. The local electronics store provided the 4-pin molex connector needed to connect to the computer’s 5V power supply.

I made the above video clip with my webcam to better show how the first spindicator (the positive edge triggered circuit of figure 4) worked when installed in the computer. In the first part of this clip the hard drive is actively storing a file which is being downloaded. In the second part it is mostly idle (apart from saving the webcam video). As can be seen, the active drive activity consisted of multiple very rapid pulses (some don’t even show in the 30fps video) with longer pulses in between where the light appears to briefly pause. This gives the spindicator an interesting but slightly chaotic looking behaviour. When idling, there are very rapid bursts of usually 8 pulses, resulting in the light appearing to jump backwards by two places every couple of seconds. I couldn’t capture this exactly in the video as the computer was also recording the video. Overall I wasn’t very satisfied with this behaviour, and started to consider how I might be able to filter out the high frequency pulses to give a more consistent rotating look to the spindicator.

Version 2: The Negative Edge Triggered Spindicator with Frequency Cut-Off

It struck me that to remove the very rapid pulse sequences I could use the charging or discharging of a capacitor via a resistor to introduce a time delay in the triggering edge of the counter clock. I’ve since discovered that this arrangement is known as a low pass filter (you can tell I’m an electronics amateur). When I sat down to work out the circuit I realised that the easiest modification to make was to introduce a delay in the rising (positive) clock edge by charging a suitable capacitor through the existing 10K resistor. I did work out and successfully test a circuit for a discharging capacitor delay on the falling clock edge, but it was not as straightforward as the charging capacitor. Of course this meant that the counter needed to be triggered by the positive clock edge, so I also has to switch the wires around and apply the clock signal to the Clock input, and tie the Not Clock input to ground. I built up a test circuit on the breadboard and tested the circuits using a 555 timer generated clock signal of variable frequency. I determined that I probably needed a 0.47µF capacitor to do the job. In the test circuit this seemed to cut off frequencies greater than about 100Hz, although when I tested it in the modified hard wired circuit it cut off frequencies greater than 160Hz. Because I wanted the ability to try different caps in the final version, I wired up some unused pins of the optocoupler’s IC socket and just plugged the capacitor into that. The modified circuit is shown in figure 5 below.

spindicator with charging capacitor

Figure 5. The negative edge triggered spindicator with low pass filter – the count is advanced at the end of a disk activity period, provided the time between pulses exceeds a threshold value determined by the capacitor and resistor.

I should note here that it is of course possible to use a different value for the charging resistor if you want to use a different resistor/capacitor combination. I have used a 10K only because it was already soldered onto my board from the first version of the circuit.

I reinstalled the modified spindicator with a 0.47µF capacitor and found that it worked really well. The jumpy behaviour was now gone and the device had fluid spinning motion. The result can be seen in the video below.

I was so pleased with this version that it has remain installed in my computer. I also disconnected my power LED, as the spindicator has the advantage of acting as both a drive activity indicator and power LED because one of its LEDs is always on.


The modified circuit. Note the white capacitor plugged into the IC socket.

Postscript: Direct Connection Without An Optocoupler

Early on I had though about the possibility of obtaining a clocking signal directly from the motherboard header. Although I decided to use an optocoupler, I wanted to go back and see if I could drive the counter without one. The first requirement was that the positive header pin be at the same open circuit voltage as that used to power the counter. A check with the meter (connected between the open positive pin and the computer case) revealed that the pin was at +5V, so that was ok. The second requirement was that the motherboard driver circuit was of the B type (figure 2). In this case, the two header pins could simply be joined together to provide a driving signal. This turned out to be the case with my motherboard. The problem was, I still wanted to include my low pass filter, and I couldn’t do this if I directly connected the motherboard signal to the counter. I would need to use the signal to switch a transistor, essentially making it the same circuit as above but with a direct connection rather than an optical connection.

I built up the circuit shown in figure 6 on a breadboard (although with just 3 LEDs) and put it beside the open computer case so that I could connect it to the header pins. Sure enough, it worked like a charm, showing that it was possible to connect a transistor directly. However it’s really no more difficult or expensive to use an optocoupler, and it removes any uncertainty regarding the motherboard circuit design. If any reader of this blog should want to build a spindicator, I would recommend the optocoupler route.

spindicator with charging capacitor

Figure 6. An alternative to using an optocoupler – using the motherboard header signal to switch a transistor directly. This may not work in all cases, and use of an optocoupler is recommended.


Testing the direct connection circuit of figure 6 using 3 white LEDs. The green lights in the background are the interior illumination of my computer case.

Well that about concludes this long-winded post. I hope it’s been of interest to someone. I certainly had fun building the circuits. A guess at some stage I should try and figure out how I might build a spindicator from a dekatron tube. If anyone has any ideas about how to do it I love to hear them.

UPDATE: Using Transistors to Drive the LEDs

From the comments it seems that some folks are having trouble driving their LEDs directly from the 4017 counter. The other option is to use some general purpose NPN transistors such as BC 547s to drive the LEDs, although this does add several components to the circuit. The  circuit below should do the trick (only the modified counter output shown, the rest is as before). Note that you should change the value of the LED current limiting resistor (160 ohm below) depending on the characteristics of the LEDs you’re using, and the current you want to run them at.

60 responses to “The “Spindicator” Project

  • The Spindicator - Hack a Day

    […] wrote in to share the Spindicator with us. The spindicator is a hard drive activity activity indicator built in a ring to resemble a […]

  • Ced

    Nice walk-through and great result! Have you thought about putting a capacitor at each led? For a high pulse count you could get more of a full glowing ring, but at lower rates, you could end up with a nicely fading led trail a-la-mac. See this:

  • Japala

    My version from 2001.

    Some of you oldtimers might remember this one🙂


    • Harvey Wilson

      An interesting idea with the 555 timer. I was sure that others must have done this before, but I didn’t find you post. Good job.

  • Seuros

    Why did you use all these gnd cables ? You can connect all the leds gnd together and then use a single brown cable to connect it to the board. There is always one led on. so no need to worry that there will be a high current request. I also advice you to connect a resistor to the gnd of the leds

    • Harvey Wilson

      It’s a little complicated, and partly to do with the fact that I was initially planning to drive the LEDs via a transistor array (common anode, don’t want to risk case grounding). The leads are not very long and in the end it seemed just as easy and tidier to run individual cathode leads.

  • Pete

    neat! how about inverting the pattern, leaving one light off that goes around in a circle?

  • Matias

    Great post.
    How did you take those photos with blur background?.

    • Harvey Wilson

      With my Canon EF 50mm f/1.8 II plastic fantastic lens, and a wide lens aperture. A wide aperture gives a narrow depth of field. The pros call the background blur effect “bokeh”.

  • Alan Parekh

    Nice project, love the simple circuit.

  • Blog » Blog Archive » Spindicator: hard-disk activity indicator

    […] hard-disk activity indicator – [Link] Tags: hard-disk, Led, Spindicator Filed in Led | 1 views No Comments […]

  • matt

    nice work! one note on: “If the opto’s NPN transistor collector is connected to V+, and base connected to ground”

    i think you wanted “emitter” instead of “base”.

  • raphael

    Very Very neat project, i did one for my case and it looks fabulous!
    Hope to see more great things from you! Cheers!

  • Top Posts —

    […] The “Spindicator” Project In this post I’m going to describe my attempts to date to build a novel computer hard-disk activity indicator, which I […] […]

  • andre

    nice hack, congrats on getting it featured on HaD.

    i did have a thought, what about using RGB LEDs and having the colour determined by the speed of rotation? that would look awesome and only needs a very minor change in the base circuit with the integrated signal from the activity input determining the colour (via ROYGBIV) using diode logic and an LM3914.
    also gets around the need for resistors as the ‘3914 controls current directly.

  • The Spindicator - Hacking Blog

    […] wrote in to share the Spindicator with us. The spindicator is a hard drive activity activity indicator built in a ring to resemble a […]

  • uplink

    Nice project but it has a flaw, you dont have any current limit to the leds and this can cause problems for both the leds and the cmos 4017

    I suggest that you cut the ground common to the leds and fit a 680 Ohm resistor

    This mod will increase the life of the 4017 and leds at the cost of reduced brightness

    • Harvey Wilson

      The 4017 can only source 4mA on a 5V supply (and I measured it to be sure), and up to 10mA at higher voltages, so is it current spikes or something you’re worried about? My reasoning was that 4 mA is well within the tolerance of the LEDs and 4017. But maybe there’s something I don’t understand, so please add a resistor if you want.

  • Decepticon

    I really like this project and I think it is just the mod I want to spruce up my case. Now I am off to find the parts! Good work!

    • Decepticon

      I finally built this but I have two leds that won’t light up. q6 will never light and q1 only lights every once in a while. I tested both and the leds work fine. Could this be from the filtering from the .47u cap?

      Also, what caps would you recommend for the ‘trailing’ effect Ced suggested?

      • Harvey Wilson

        Sorry for the late reply, I have not been checking the comments. I’m not sure what the problem is there, but it could be poor connection to the 4017 pins. This often happens to me with ICs plugged into a breadboard. Check the continuity between each pin and the circuit board. You could also try the circuit without the cap, or change its value. Lastly, you could try driving the LEDs with transistors. I have added a circuit for this to the article above.
        With regard to the fading effect, I did some experiments and found that 5V is not sufficient for a good fade. You need to power the circuit from the 12V supply and adjust things accordingly. The value of the fading caps depends on how fast you want the fade. I found around 100 micro Farad to be good in tests, but you should experiment. This does add a lot of components as each counter output must drive a transistor with a current limiting resistor and LED in series between its emitter and ground. The fading capacitor is connected between the emitter and ground in parallel with the resistor and LED such that it charges when the transistor (and LED) switches on, and then discharges through the resistor and LED when it switches off.

  • Coffee Open Flashing Led

    […] The “Spindicator” Project | Once Around the Block These reads and writes often happen many times in quick succession, resulting in the characteristic rapidly flashing LED during periods of high disk activity. Now a while back I built a nixie clock from old Russian nixie tubes. In a circuit of type B, it would be easy to directly obtain an active low clock waveform from the header by shorting the two header pins, provided the open circuit voltage on the positive pin was the same as the supply voltage used to power the . […]

  • Victor

    Hi! Great idea for replacing activity led. I am going to built 1 too but i have a problem.
    I simulated first and everything worked ok but then i replaced the green leds with blue wich probably need more power so now they dont turn fully on. Any suggesttions to this problem? If its possible not to mess with optoisolators. Thnx!

  • Victor

    I will look up for the driver. Thnx a lot!

  • José Machado

    Let me first send mine congrats to you for this great page.
    But I am looking for something I believe is more simple.
    I just want to connect say 10 led’s to the HD activity pin connector on the motherboard.
    I believe I cannot do it directly since the motherboard shouldn’t that much juice on the pin connector.
    Can you please propose a circuit for this purpose ?

    Thank You

    José Machado

    • Harvey Wilson


      I think you might be able to get away with driving 10 LEDs directly via an optocoupler like the 4N25, if you use an LED array like this:

      circuit for 10 LEDs

      The current draw should be just below what the optos’ NPN transistor can handle (50mA I think). Note that the LEDs are connected to a 12V supply (use a 4 pin molex plug to access the computers 12V supply). This circuit should flash all 10 LEDs when there is hard drive activity. You may have to adjust the resistor values depending on the LED forward voltage and desired LED current. I’ve based this on Vf of 3V, and current of 15mA. Use an online LED array calculator to get the values.

  • José Machado

    Thank you for your reply
    I am think of using led strips that works directly with 12v.
    But I believe that I need more than 50mA so can you suggest a replacement for the 4N25 that can handle higher currents than 50mA ?
    Than You


  • José Machado

    I just tested the version you propose to me and it works fine with the led’s stripe.
    But now I have the same problem as your first version.
    It blinks to fast.
    Do you think I can put the capacitor as in your second version as a cut off ferquency ?
    once again thank you a lot for your input.


    • Harvey Wilson

      Hi Jose,

      So what is it you want to do with your LEDs? Do you not want them to act like 10 HD activity LEDs, but rather to just steadily blink on and off when there is HD activity? If you can describe exactly how you want them to behave I might be able to suggest something. To add a low pass filter as in the spindicator, you would need something that switched on at a certain voltage level, such as a logic gate. You could then use this to switch a suitable transistor (e.g. a 1 amp NPN) which would drive your LED array.

  • vitya

    Hi, just wanted to let you know guys and girls that today I finished my own clone. Have a look at it at if you like.
    Thanks for the idea – very well written up!

  • Spinning LED Activity Indicator - Hacked Gadgets - DIY Tech Blog

    […] LED output and watch the ring of LEDs speed up and slow down based on hard drive activity. The original Spindicator can be found here, and this was indeed the inspiration for this version that Viktor […]

  • Spinning LED Activity Indicator | The Express Art Blog

    […] LED output and watch the ring of LEDs speed up and slow down based on hard drive activity. The original Spindicator can be found HERE, and this was indeed the inspiration for this version that Viktor […]

  • Garfield

    Hi, first off, let me say that this is a great project ! I would like to build one using 12V and a fading led effect.
    you said “The fading capacitor is connected between the emitter and ground in parallel with the resistor and LED such that it charges when the transistor (and LED) switches on, and then discharges through the resistor and LED when it switches off”.I am just not following this, can you post a drawing to this effect ?
    Also, how do I calculate the value of the current limiting resistor for the leds ?
    Thanks in advance.

    • Harvey Wilson


      Sorry I’ve been very lax about checking for comments, and missed your questions. I have since made another spindicator with fade capacitors, so what I will do is write a short blog about it and include a circuit diagram. Regarding calculating LED current limiting resistor values, there are web pages that will do it for you such as this one, or for a single LED, just use R=V/I where R is the resistor value, V is the supply voltage minus the LED forward voltage, and I is the desired current (usually 10-20mA).

      Once again, sorry for not replying sooner.

      • Decepticon

        Please please please post the updated project! I absolutely love this type of indicator and would love to see the updated project!

  • Mr.V

    Hello Harvey, hope you well and in good health. first off congrats on a super circuit! i have a few questions if you can help it would be greatly appreciated.

    1. is it possible to get the signal directly from a sata drive? i see image reference above to the sata spec. digging around so far leads me to believe Pin 11 is used for led signal or staggered drive spin up and also not all drives support pin 11 led activity. it possible to use SMD leds by creating a custom pcb to mount them on along with the driver circuit?

    I am in the middle of planning a case mod and would love to use this circuit and adapt it for my needs with your help if you dont mind? naturally all credit will go to you for your design?

    any help would be greatly appreciated.

    Thank you in advance

    kind regards,

    • Esven

      1. No, old IDE drives had a reserved pin for a status LED, but newer SATA drives are not equipped with this pin and so the status LED is done by the motherboard. That said some hardware raid controllers have a status LED for each HDD.

      2. Electrically there is no reason that shouldn’t be possible but SMD LEDs are much less forgiving with current. All SMD components are generally just small versions of the same thing (smaller means less heat dissipation, lower currents, and more strict voltage requirements), so long as you stay within the operating specs they shouldn’t be any different. That said since your asking these questions I’ll assume you haven’t worked much with them before, and I’d caution you as to the difficulties associated with soldering such small pieces.

  • Esven

    Just a thought but what if you tried something like this with a 555

    It would count at the slowest rate determined by R1+R3 and at the fastest rate determined by R2+R3.

    This way the hardrive light can be thought of like a duty cycle.

    Just a thought of course.

  • ElectronicsBuilder

    What a great project!

    It is one of those ingenious yet simple projects you want to build right away and it’s as close to instant gratification as it ever gets – would only take a couple of hours to build. I think everyone who’s started building electronics back in 80s or 90s, when not everything was done on an MCU, has a handful of 4017s or similar decade or hex counter ICs just sitting there waiting to be discarded. What a great use for an old IC!

    As a practical question though, does anyone know where to get semi-transparent 5.25″ bay covers? Drilling the circular pattern seems to be a bit less fun than just making them shine through a solid panel.


  • Pimp My Rocket (Espresso Machine) « Once Around the Block

    […] played around with fixed function logic ICs, such as the Johnson counter used in the Spindicator project, I was keen to move on and experiment with programmable microcontrollers. I decided […]

  • Conrad

    Heya i’m for the first time here. I came across this board and I to find It truly helpful & it helped me out much. I’m hoping to give something again and help others
    such as you helped me.

    • Harvey Wilson

      Thanks for your kind comment. It is satisfying to put something on the internet that might be of interest to others.

  • Nicer PC HDD activity indicator - Do It Easy With ScienceProg

    […] performed. [Harvey Wilson] wanted something different then just flashing LED and came out with spindicator. He replaced single LED with 10 LEDs mounted in circular […]

  • p1

    Check out my version of HDD light made in 2007. It have got “a module” to eliminate fast hdd flashes, so the leds do not switch randomly.

Leave a Reply

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

%d bloggers like this: