FAKE wires in MY server?!

What is causing my HDDs to crash? It can't be the voltage drop across those short cables, right?

FAKE wires in MY server?!

I recently replaced my old HP ProLiant Gen8 server with a new Intel-N100-based, custom-built one. My main goal was to reduce the idle power consumption, so in order to save every watt possible, I chose to build my own power supply. This DIY PSU is based on a MeanWell RPS-120-12C and a synchronous 5V buck converter, which, in total, should have a very high conversion efficiency at low loads, outcompeting even high-efficiency ATX PSUs.

Upon completing the build of the server and PSU, however, I noticed that one of the 4 HDDs made odd, repetitive noises as if it was spinning up and then crashing. I checked all the wiring and measured the voltages at the 12V PSU and 5V buck converter, but everything seemed fine. I double-checked the datasheets for both and verified that they should be able to supply enough power to spin up 4 HDDs simultaneously. The only thing that seemed off, was that the voltages measured at the end of the wires supplying power to the HDDs seemed to be about 0.4V lower than at the respective sources. I decided to change some of the wiring configuration and decided to call it a day when the HDD was finally able to spin up completely.

The next day, while running a cshatag on one and zfs scrub on some other drives, I noticed the odd noise again. Checking the kernel ring buffer of the server (sudo dmesg), I found the following messages.

[Mon Mar 31 17:38:31 2025] ata5.00: exception Emask 0x10 SAct 0x8000 SErr 0x4010000 action 0xe frozen
[Mon Mar 31 17:38:31 2025] ata5.00: irq_stat 0x80400040, connection status changed
[Mon Mar 31 17:38:31 2025] ata5: SError: { PHYRdyChg DevExch }
[Mon Mar 31 17:38:31 2025] ata5.00: failed command: READ FPDMA QUEUED
[Mon Mar 31 17:38:31 2025] ata5.00: cmd 60/00:78:80:90:1f/01:00:00:00:00/40 tag 15 ncq dma 131072 in
                                    res 40/00:80:80:91:1f/00:00:00:00:00/40 Emask 0x10 (ATA bus error)
[Mon Mar 31 17:38:31 2025] ata5.00: status: { DRDY }
[Mon Mar 31 17:38:31 2025] ata5: hard resetting link
[Mon Mar 31 17:38:32 2025] ata5: SATA link up 6.0 Gbps (SStatus 133 SControl 300)
[Mon Mar 31 17:38:32 2025] ata5.00: configured for UDMA/133
[Mon Mar 31 17:38:32 2025] sd 4:0:0:0: [sde] tag#15 FAILED Result: hostbyte=DID_OK driverbyte=DRIVER_OK cmd_age=16s
[Mon Mar 31 17:38:32 2025] sd 4:0:0:0: [sde] tag#15 Sense Key : Illegal Request [current]
[Mon Mar 31 17:38:32 2025] sd 4:0:0:0: [sde] tag#15 Add. Sense: Unaligned write command
[Mon Mar 31 17:38:32 2025] sd 4:0:0:0: [sde] tag#15 CDB: Read(16) 88 00 00 00 00 00 00 1f 90 80 00 00 01 00 00 00
[Mon Mar 31 17:38:32 2025] I/O error, dev sde, sector 2068608 op 0x0:(READ) flags 0x80700 phys_seg 4 prio class 2
[Mon Mar 31 17:38:32 2025] ata5: EH complete

This message repeated about every 2 minutes for a total of 10 times

It seems like, while shortening the cables fixes the problem at idle, the disk /dev/sde is still disconnecting when multiple drives are under load. In a further attempt to diagnose the issue, I checked the voltages again using my multimeter. Once again, I saw a surprisingly large voltage drop between the PSU and the SATA power cables. While trying to narrow down the point of the voltage drop, I noticed something really strange. Most of the voltage drop did not seem to come from the long Molex to SATA cables or the Molex connectors themselves but rather from the very short cables connecting the PSU to the Molex connectors.

Multimeter connected to both ends of a wire running from PSU to Molex connector showing a voltage of 0.3.
This is where the voltage drop is happening?!

Under load, I measured a voltage drop of about 0.3V. WTF! According to ChatGPT, a 10cm, 20AWG wire should only have a voltage drop of around 33mV at 1A. So what the hell is going on?

I took one of the wires and hooked it up to my bench power supply. Setting it to constant current mode with a limit of 1A let the supply reach a voltage of 1.46 V without and 1.68 V with the wire in series.

Plugging these numbers into ChatGPT gave me an estimated resistance of 220 mΩ, much higher than the expected resistance of around 3mΩ. But this expected resistance assumes a 20AWG copper wire. So maybe the label on the cable is lying and it is not actually 20AWG?

Cable with end cut off and conductors spread appart. 12 conductors visible.
The conductors in one of the cables.

I took a closer look at the conductors of one of the cables. It contained 12 conductors with a diameter of around 0.07mm each. Once again, plugging these details into ChatGPT, it estimates an equivalent of about AWG 30, much smaller than the advertised wire gauge. But even at this size, asking it about the expected resistance, it estimates a resistance of about 36mΩ . So why is the measured resistance still so far off from the expected resistance?

I found the answer in the following video by Matthias random stuff:

In the video, he tests some cables with crocodile clips and finds that – to his surprise – the high resistance of the cables does not come from the clips or the crimp connection on the clips, but rather from the wires themselves. Upon further investigation, he finds that the wires are most likely not copper cables but rather copper-coated steel cables. A very simple and elegant way of testing for steel in these cables is to check whether they are magnetic, as normal copper wires should not be magnetic.

After checking the video, I tested my wires straight away, and – to my surprise – they really were magnetic! That explains why the estimates were wrong. Not only was the "20AWG copper wire" not actually 20 AWG – it was neither 20 AWG nor copper!

Red wire lifted up by a magnet on a scissor.
The wire attached to a tiny magnet. Funnily enough, the wires of my PSU that I was using to test the wires were magnetic too, so they are most likely also made of steel wire.

Now, finally, I was able to use ChatGPT to check the estimated resistance, assuming the wire is 30AWG and made out of steel. For 10cm, it calculated a resistance of around 310mΩ, which would give rise to a voltage drop of 310mV or 0.31V at 1A and matches my observed voltage drop quite closely.

So I now know that the difficulties I was experiencing were not related to any mistake I made when planning the power supply of the server, but rather caused by my mistake of buying the cheapest "molex 3x splitter" cables that I could find from AliExpress. Having finally figured out all of this should let me sleep soundly at night, but until I have replacement cables, I do not have a good alternative to keeping the server running as it is and avoiding using all disks at the same time. I am currently looking for any trustworthy-looking Molex cables and will update this post with a link once I have found, received and tested them.


What I've learnt:

  • How to tell these kinds of "fake" wires from normal copper ones
    • A very simple first check is to test whether they are magnetic. I tested all the cables I could reach from my desk and found that only the guilty Molex wires and the wires to the clips of my bench power supply were magnetic. All other wires seemed to be non-magnetic, as expected.
    • A good way of measuring the resistance of a cable is to use a constant current power supply. I had tried to measure the wires using a multimeter before, but it gave me a false sense of security, showing a resistance of "0.00 Ω". The method I used is very similar to the ideal 4-wire resistance method, in which the voltage drop across the tested wire is measured directly, rather than subtracting the short circuit voltage from the measured voltage at the power supply.
4-wire resistance method Source: https://www.ni.com/docs/en-US/bundle/ni-daqmx/page/4wireres.html
  • Do not buy the very cheapest stuff on AliExpress, especially if it is a "normie" product
    • I have only had two instances (in probably >500 orders) where a product I bought from AliExpress did not conform to the specs I expected from the product. In both of these cases, they were normal consumer products that were intentionally and grossly mislabeled. My other orders of specific components, such as raw copper wire, microcontrollers, etc., never deviated from the expected parameters far enough to cause any problems. I think the sellers prey on "normal" consumers that will not test the products to their limit, such as I did in my server, as most will probably never notice the difference between 30AWG steel wires and 20AWG copper wires.
  • Never exclude anything from being a cause when debugging a problem
    • It took me a long time and many HDD power cycles for me to actually start measuring the voltage drop across the short 10cm cable that ended up being the culprit. I assumed it might be an inherent problem of the Molex connectors, related to the length of the Molex to SATA cables or even a design mistake of the custom power supply.
  • ChatGPT is a great tool for calculating these kinds of things
    • Calculating this stuff by hand would have cost much more effort than just pasting in some numbers and asking ChatGPT to figure it out. On the other hand, this could have been a great refresher in Ohm's law, etc., if I had actually calculated these things myself. What I really appreciated was not having to look up the conductivity of copper, steel, or having to figure out how many inches per square gallon a 30 AWG wire is. ;)
  • Have backups! (and test them too)
    • During the power cycling of the disk, I was running cshatag on its files, which caused some xattr blocks of the ext4 file system to become corrupted. Fortunately, I did not lose the affected files, but I restored them from an offsite backup just to be safe. I hope the power cycles did not permanently damage the HDD and will double-check that my offsite backups work.