Fixed high fan speed displayed on low RPM #175
Merged
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Configuration
Computer: MSI Bravo 15 A4DDR
Motherboard: 16WKEMS1.105
GPU Fan address: 0xCA and 0xCB (in green, fan 2)
CPU Fan address: 0xCC and 0xCD (in cyan/blue, fan 1)
This is the same address as described in isw msi-ec datasheet
The issue
With my configuration, the fan speed is represented by 2 bytes as described above.
MControlCenter only reads the second byte.
In general, this is fine, since the first byte has the value 0x00 (e.g. CPU RPM in cyan is correct)
But my GPU fan is often in a low RPM (e.g. transition between on and off).
Which means it is possible to have the value
0x0115
, where the RPM should be1696
,while MControlCenter calculates
470000/0x15 = 22k
RPM ! (different from the picture below because the value changes quickly).The value was


0x0123
when MControlCenter read, RPM should be 1696.The value was
0x0101
when MControlCenter read, RPM should be 1828.When the value is
0x00ff
, the RPM displayed is ~1843 as expected.Fix
Read the 2 bytes and combine them
value = (value1 << 8) | value0
Additional information
I have no idea if this is the same in every scenario.
For instance, in case fan1 is at address
0xC9
, is0xC8
the first byte..?Command used:
watch -d=cumulative -n 0.1 sudo isw -c
(with the original isw)