LINUX.ORG.RU

Регулирование оборотов вентилятра RedmiBook 15 2022

 ,


1

2

Всем привет, хочу регулировать вентиляторы по своему, чтобы они не начинали шуметь при 38 градусов, как это работает через nbfc. Скорость оборотов вентиляторов никак не отображается (pwmconfig не видит, в винде ПО типа AIDA64 так же). Я так понял что придется самому дебажить как происходит управление через Embedded Controller.

Довольно быстро нашел регистры которые отображают текущие обороты (0x9B - 0x9E), но, скорей всего нужно записать еще в какой то регистр что управление нужно внешнее. Брутфорсом я пробовал с 0x00 по 0xAF писать с 0 по 255 и после каждой записи пробовать менять значение в регистре 0x9B и оно каждый раз там сбрасывалось.

Пробовал анализировать DSDT файл, но опыта в этом нет, нашел в структуре по смещению поля где значения вентяторов считывается, это соответсвенно F1HI, F1LO, F2HI, F2LO, но далее по коду нигде больше не упоминается использование этих переменных, так же пробовал искать и соседние названия переменных, толку нет. Могу выложить весь файл, но там 3Mb. Что можно еще попробовать?

	OperationRegion(ECF2, SystemMemory, 0xFE0B0400, 0xFF)
			Field(ECF2, ByteAcc, Lock, Preserve)
			{
				, 8,
				, 8,
				, 8,
				Offset(0xF),	//Offset(15),
				, 1,
				, 1,
				, 1,
				, 1,
				, 1,
				HKVC, 1,
				, 1,
				, 1,
				EVMR, 8,
				EVMN, 8,
				EVT1, 8,
				EVT2, 8,
				HTKS, 8,
				HTKE, 8,
				, 8,
				TSR1, 8,
				TSR2, 8,
				TSR3, 8,
				TSR4, 8,
				TSR5, 8,
				TSR6, 8,
				TSR7, 8,
				TSR8, 8,
				TSR9, 8,
				LSTE, 1,
				, 1,
				, 1,
				FNHK, 1,
				, 1,
				CRHK, 1,
				OCFL, 1,
				, 1,
				CUMA, 1,
				PJID, 1,
				STPM, 1,
				, 1,
				, 4,
				, 8,
				GSTS, 8,
				HKST, 8,
				TOCP, 1,
				CALK, 1,
				NULK, 1,
				, 1,
				, 1,
				WINK, 1,
				, 2,
				AST1, 8,
				, 8,
				SMPR, 8,
				SMST, 8,
				SMAD, 8,
				SMCD, 8,
				SDAT, 16,
				SDA2, 16,
				SDA4, 32,
				SDA5, 32,
				SDA6, 32,
				SDA7, 32,
				SDA8, 32,
				SDA9, 32,
				SDAA, 32,
				SMCN, 8,
				Offset(0x50),	//Offset(80),
				BS50, 32,
				BS54, 32,
				BS58, 32,
				Offset(0x60),	//Offset(96),
				ECWR, 8,
				PAWT, 8,
				Offset(0x64),	//Offset(100),
				B1DC, 16,
				Offset(0x68),	//Offset(104),
				B1FC, 16,
				BTPT, 16,
				B1CR, 16,
				B1RC, 16,
				B1VT, 16,
				BALM, 16,
				BCYC, 16,
				Offset(0x78),	//Offset(120),
				B1DA, 16,
				B1TP, 16,
				BRSC, 8,
				MIDL, 8,
				MIDH, 8,
				HIDL, 8,
				HIDH, 8,
				FWVL, 8,
				FWVH, 8,
				DAVL, 8,
				DAVH, 8,
				, 8,
				BFUD, 16,
				, 8,
				, 8,
				B1TE, 16,
				B1TF, 16,
				AWHG, 8,
				AWLW, 8, //24 bytes
				SMCE, 1,
				FWEN, 1,
				FUEN, 1,
				, 5,
				EDCC, 1,
				ALSC, 1,
				CDMB, 1,
				CCSB, 1,
				BTSM, 1,
				BTCM, 1,
				LBTM, 1,
				CSBM, 1,
				HYMS, 1,
				HDME, 1,
				HGMF, 1,
				SWCS, 1,
				, 1,
				DCRC, 1,
				ALSS, 1,
				, 1,
				IPEN, 1,
				MBBD, 1,
				SBBD, 1,
				QCFG, 1,
				QCEN, 1,
				UCSA, 1,
				, 1,
				, 1,
				EDCF, 1,
				BTCF, 1,
				HSMG, 1,
				, 1,
				BLEG, 1,
				BTMF, 1,
				ATOM, 1,
				, 1,
				PERM, 1,
				TEMM, 1,
				, 6,
				BATM, 8,
				BBHL, 8,
				BBLP, 8,
				BBHM, 8,
				KBNL, 8,
				F1HI, 8,
				F1LO, 8,
				F2HI, 8,
				F2LO, 8, // Fans!
				PABD, 8,
				BBRU, 1,
				BBRE, 1,
				, 6,
				, 8,
				, 8,
				, 1,
				, 1,
				, 1,
				, 1,
				, 4,
				Offset(0xA8),	//Offset(168),
				RTC1, 32,
				Offset(0xB0),	//Offset(176),
				RTC1, 128,
				BVN1, 128,
				Offset(0xE0),	//Offset(224),
				DGPU, 8,
				SSDK, 8,
				KBBL, 8,
				BPWM, 8,
				ITSM, 8,
				, 8,
				, 8,
				ECTP, 8,
				, 8,
				, 8,
				, 8,
				Offset(0xF0),	//Offset(240),
				, 3,
				, 1,
				, 2,
				, 1,
				, 1,
			}

21 ноября 2022 г.

https://github.com/YoyPa/isw

вот примерно как это реализовано у других китайцев - MSI.

Прямого управления вентиляторами нет - есть загрузка неких температурных порогов и соответствующих им уровней вентиляции.

Как это реализовано в MSI - да шут его знает, EC это некий микроконтроллер который работает так как его прошили. И тут уже каждый производитель сам себе хозяин-барин.

Qui-Gon ★★★★★
()
4 июля 2023 г.