I recently started setting up a SOQuartz Model A baseboard and attached a Waveshare CM4 heatsink with PWM controlled fan to the SOQuartz module. There is a GP7101 PWM controller sitting at address 0x58 on I²C bus 1, and one controls the fan by writing 8-bit values to data address 3, or 16-bit values to data address 2. I only ever tried the 8-bit mode. Writing 0x00:
i2cset -y 1 0x58 3 0x00
will turn the fan on permanently (this is the default status).
i2cset -y 1 0x58 3 0xff
turns the fan off permanently. Intermediate values result in the fan turning on and off at regular intervals, though this is not that noticeable below 0xd0 (1 second off, 2 seconds on)
I could try to add code to support this method of controlling the PWM fan since I don't think that there is a formal way to access the PWM controller via sysfs at this time.
I recently started setting up a SOQuartz Model A baseboard and attached a Waveshare CM4 heatsink with PWM controlled fan to the SOQuartz module. There is a GP7101 PWM controller sitting at address 0x58 on I²C bus 1, and one controls the fan by writing 8-bit values to data address 3, or 16-bit values to data address 2. I only ever tried the 8-bit mode. Writing 0x00:
i2cset -y 1 0x58 3 0x00
will turn the fan on permanently (this is the default status).
i2cset -y 1 0x58 3 0xff
turns the fan off permanently. Intermediate values result in the fan turning on and off at regular intervals, though this is not that noticeable below 0xd0 (1 second off, 2 seconds on)
I could try to add code to support this method of controlling the PWM fan since I don't think that there is a formal way to access the PWM controller via sysfs at this time.