Mycroft II Fan Stuck at Max & Solution (Long Version)

Recently, my Mrcroft II developed a problem in which the fan speed remained stuck at maximum. The unit was otherwise functional. The unit was otherwise functional, but the fan noise was very annoying and seemed to interfere with the ability for the unit to understand and respond to commands. (I had to raise my voice to be correctly heard.)

Here is a summary of my troubleshooting and resolution:

*) A search of the Community forum did not identify any record of a similar failure.

*) I have a second Mycroft II in service, with an identical (USB) software configuration. I swapped the USB boot drives to see if the problem remained with the specific hardware. The problem did not migrate, so this suggested that we were dealing with a hardware failure.

*) I made an inquiry to the Matrix chat rooms, to learn whether this might be another failure mechanism of the SJ-201 board. Mike and Daniel promptly provided useful & appreciated information - I previously gave the fan no attention as to how it actually worked. Daniel explained that the speed control is accomplished via pulse width modulation (PWM) via the Pi GPIO pins, under software control. The fan itself has four connections - so I did a bit of reading… The speed control is more complex than simply varying voltage/current via a pair of power supply connections. If I understand these fans correctly, they are supplied a dc operating voltage via two pins, and the PWM is probably switching an internal power device (transistor) inside the fan itself. So, there could be the possibility of a failure internal to the fan even though the fan was spinning up.

*) The fan does not connect directly to the Pi GPIO pins, but rather the PWM control passes through some interface logic on the SJ-201. There is a circuit diagram available in the SJ-201 documentation.

SJ-201 Design Info

A quick review of this circuit indicates that the transistor Q1 is simply providing a control logic interface to the fan PWM input; it is not a power device.

*) Based on these considerations I hypothesized three possible failure modes:

a) A failure in the fan itself – possible, as we presume a power transistor in the fan. Typically, power devices are more prone to fail than passive or small signal active devices.

b) A fail of the fan interface logic on the SJ-201 – hopefully not; a single small signal transistor should be reliable

c) A problem with the Raspberry Pi GPIO interface pins – I presumed the Pi4 to be a reliable device, the GPIO pins running this interface should not be suffering any abuse from the system design

Of the three fail mechanisms I chose to investigate the fan first by installing a replacement. The design info for the Mycroft II did not specify the make/model of the fan (at least I didn’t find it). It turns out that the fan is a COOLCOX CC4010H12D. Mike suggested a Noctura NF-A4x10 as a replacement fan having better airflow.

I opened the Mycroft II and proceeded to disassemble following the helpful teardown guide Mike posted:

Teardown

The teardown went smoothly per Mike’s instructions; the only glitch was unplugging the speaker connections. Those were fairly tight and I had to spend some time working the plug/socket apart carefully, using a jeweler’s flat blade screwdriver as a pry bar. My concern was to avoid tearing the socket off the SJ 201 board with excess force.

The Noctura fan has the same mounting hole pattern as the OEM fan, but has larger screw holes. I did not have any appropriate mounting screws, but I found that the Noctura could slip over the OEM screws and hold in a fairly secure position with a friction fit. Definitely sufficient for a test. After re-assembly I fired up the Mycroft and the fan behavior was unchanged – stuck at full speed!

This left the SJ-201 or the Raspberry Pi 4 as possible fail mechanisms. I did not have a spare SJ-201 available to install, and I was unwilling to pull the SJ-201 from my working Mycroft II.

I did have a spare Pi 4 in my inventory – an 8 Gb configuration. I saw somewhere in the Community Forum a recommendation for upgrading the Mycroft with the 8 8Gb Pi, so I decided to try that next.

I checked to verify that my replacement Pi was configured to boot from USB, and installed a 32Gb SD card (ext4 format) to fortify the upgrade. I re-opened the Mycroft II and re-installed the OEM fan. I replaced the Noctura for two reasons: First, it was a bit louder than the OEM fan. Second, I wanted to change only one component/module at a time to confirm the fail mechanism & solution.

Replacement of the Pi4 boards was straightforward and did not require removal of the SJ-201 from the Mycroft cover, although the cover assembly did need to be slid out from the case. Some care is needed with the ribbon cables and connectors; my past life experience is that these can be damaged by excess force or bending.

My replacement Pi4 did not have heat sinks and I did not repurpose the heat sinks from the original Mycroft II Pi4.

Following reassembly of the Mycroft II I started the unit up. I was pleased (and a bit surprised) to hear the fan spin up and then settled down. Back to normal behavior. When commanded to shutdown via the screen or via ssh, the fan goes to full speed and then completely stops as expected.

The preceding appears to implicate the Pi4 as the fail mechanism in this case.
Overall the defective Pi4 appears to behave normally. The board is able to boot Raspberry Pi OS Lite no problem (Prior to removal from the Mycroft I did encounter a failure to start the GUI interface which was remedied with a reboot.) I have not attempted further diagnostics on the Pi4/GPIO pins at this time.

I did not expect to encounter a fail of the Pi4 itself, but that’s my story and I will stick with it.

In the meantime, my repaired Mycroft II is once again partnering with Home Assistant to keep our lights on (and off)!

5 Likes

Nice deep dive!

1 Like

Great analysis! I think we established previously that the CPU was reporting reasonable temperatures so I do think something affecting the PWM output on the GPIO pins would be the next suspect.

That said, if it were my Pi4 I’d just put a sticky note on it and find a use for it that doesn’t require GPIO :wink: .