From ebe1cb6db6519a827054cfda6142a72860a27024 Mon Sep 17 00:00:00 2001 From: Wojciech Lazarski Date: Fri, 10 Aug 2018 16:51:09 +0200 Subject: [PATCH] Fixed Fan mode for MBP2018 --- smc-command/smc.c | 21 +++++++++++++++++---- 1 file changed, 17 insertions(+), 4 deletions(-) diff --git a/smc-command/smc.c b/smc-command/smc.c index fe78e81..40b9330 100755 --- a/smc-command/smc.c +++ b/smc-command/smc.c @@ -529,6 +529,9 @@ float getFloatFromVal(SMCVal_t val) else if (strcmp(val.dataType, DATATYPE_UINT16) == 0 && val.dataSize == 2) { fval = (float)_strtoul((char *)val.bytes, val.dataSize, 10); } + else if (strcmp(val.dataType, DATATYPE_UINT8) == 0 && val.dataSize == 1) { + fval = (float)_strtoul((char *)val.bytes, val.dataSize, 10); + } } return fval; @@ -572,10 +575,20 @@ kern_return_t SMCPrintFans(void) SMCReadKey(key, &val); printf(" Target speed : %.0f\n", getFloatFromVal(val)); SMCReadKey("FS! ", &val); - if ((_strtoul((char *)val.bytes, 2, 16) & (1 << i)) == 0) - printf(" Mode : auto\n"); - else - printf(" Mode : forced\n"); + if(val.dataSize > 0) { + if ((_strtoul((char *)val.bytes, 2, 16) & (1 << i)) == 0) + printf(" Mode : auto\n"); + else + printf(" Mode : forced\n"); + } + else { + sprintf(key, "F%dMd", i); + SMCReadKey(key, &val); + if (getFloatFromVal(val)) + printf(" Mode : forced\n"); + else + printf(" Mode : auto\n"); + } } return kIOReturnSuccess;