Fan Mod Controller
ICX switches are too smart for you to simply plug different fans in and run them like nothing happened. The switches monitor the speeds of all connected fans, and if there isn't at least one fan working exactly as expected, the switches enter a sort of "safe mode"[1] and stop working. So to use big, slow, quiet fans instead of the 1U datacenter screamers these switches ship with, you need to trick the switch into thinking everything is fine.
I based my work on this forum post. But I wanted to make one tweak: the point of the fan speed sensing mechanism is to make it obvious if the fans fail. So my spoofing Arduinos do the following:
- spoofs the expected fan speed to the switch's fan speed input
- measures the speed of the actual fans, the big ones I've installed
- if the real fan stops spinning, the Arduino stops sending the spoofed fan speed[2], so the switch can do its thing
My Arduino code is in this gist. It's a little fancier than it needs to be, so you will need the header as well as the main sketch.
How to use
There are lots of #defines at the top of the sketch, but the main one is INPUT_NUM_FANS. This will tell the sketch how many fan speed signals it should expect. This is because I put separate Arduinos in the PSU and in the fan module tray; the PSU only has one fan, but I connected two to the fan tray. I want to know if any one of them fails.
Otherwise all of the constants should be calibrated and usable as-is; at least, they work perfectly in my switches.
Hardware mods
Fan tray
Unfortunately I have no photos of my modded fan trays, and none of them are accessible - sorry! But I did as others have. I ripped the fans out of the trays, stuck an Arduino Nano and a fan controller in it instead, and wired it all into a replacement connector to plug directly into the switch as the original did.
These mods do make it impossible to hot-swap the fan trays, as you have to plug the lid fans into it somehow, and that would be hard to make hot-swappable or externally accessible (especially with the failsafe on the spoofing!). I also ran the fan controller's speed knob across to the other fan bay, as I couldn't make a hole for it in the back of the same tray. But there's less value in hot-swapping here, compared to the PSUs. I'm not too worried about it.
The only other modification I did was wire in the speed-sense pin from my fan extension cables into the Arduino, so it could read the speeds & use the safety mechanism as described above. (This requires a resistor in-line; there are lots of guides online for "Arduino read fan speed" or similar.)
The linked forum post above has the wrong part number for the Molex housing - it should be 0441331000.
I bought these fan controllers, though that link might be dead by the time you get to it. They're multi-output 4-pin PWM controllers with a speed-control pot as mentioned.
You can see my fan choices for the lid fans at the fan mod lid page.
It's a shame I don't have any photos of the fan trays, though. I did some nice wiring work to keep the built-in LED functional and everything. You're really missing out.
PSU
WARNING: PERFORM AT YOUR OWN RISK
Power supplies can be dangerous. There's a reason they have warning labels on them. See those big inductor donuts wrapped with uninsulated wiring? See that big-ass capacitor next to them? I don't know if they can kill you if mishandled, but I don't think either one of us wants to find out. I do not suggest you try to modify a power supply yourself. I have experience and training in electrical and electronics work. If you do open a PSU, make sure it's been unplugged from the wall for hours, if not days, to let those capacitors drain fully.

I installed Noctua 40mm x 20mm fans. There's no speed control on these ones - they're quiet enough at 100%, and they move a lot less air than the stock fans, so I wanted to err on the side of caution.
I bought two ICX 7450s; both came with redundant power supplies. One came with rev. A/Emerson-made units, which are known to be louder than the newer rev. B or rev. C units. The other came with rev. C units. I can confirm: rev. A is louder than rev. C. It doesn't realy matter, but I modified my rev. A units and kept the rev. Cs unmodified as spares.
I thought it would be nice to keep these PSUs hot-swappable; that's hard to do if you run wires out the back of them into the rest of the switch. I picked an Arduino Nano in hopes that I could stuff it into the PSU safely somehow. And sure enough, I was able to shove one (without pin headers - the wires are soldered directly to the Arduino) into the gap on the other side of the PSU's weird internal wall. There are little notches in the wall for zip ties, that give just enough space between the lid & the wall for a couple thin wires to cross over it. I didn't know what else to do to keep it from shorting, so I mummified the Arduino in some Kapton tape. Hopefully I retire these switches before it disintegrates.
I wired in the Arduino spoofer to the PSU controller using the connector at the top-rear of the vertical daughterboard. This is a JST PH 6-position connector. I didn't want to cut the original wiring, so I popped the LED pins out of the original connector, popped them into a new one, and wired my fan + speed spoofer into that. I bought the housing + pins from Digikey, and an Engineer PA-09 from Amazon to crimp them.
Footnotes
I put that in quotes because it's a pretty weak "safety" mechanism: the switches boot-loop infinitely on fan failure. So you'll know something is wrong because your switch stops working. But I doubt repeating the boot process endlessly really helps them avoid overheating... ↩︎
I considered spoofing with some multiple of the real fan speed, to be able to read the spoofed speed and derive from it how fast the real fans were actually spinning. But I was worried that this would artificially limit the usable speed-control range, if the multiplied values ended up out of range for the switch's safety feature at certain speeds. ↩︎