Имеется ноутбук acer travalmate P259-MG-382r (NX.VE2ER.018).
Проблема в том что у него совсем не крутится системный вентилятор в линуксе (в Win10 крутится и регулирует скорость сам), fancontrol не находит вентиляторы, решил использовать nbfc, но в DSDT нашел только 0x58 CTMP, вроде это температура процессора или чего-то.
Боюсь что-то испортить, не могу потом без ПК месяц сидеть пока с починки приедет, у меня работа на нем.
Device (EC0)
{
Name (_HID, EisaId ("PNP0C09") /* Embedded Controller Device */) // _HID: Hardware ID
Name (_CRS, ResourceTemplate () // _CRS: Current Resource Settings
{
IO (Decode16,
0x0062, // Range Minimum
0x0062, // Range Maximum
0x00, // Alignment
0x01, // Length
)
IO (Decode16,
0x0066, // Range Minimum
0x0066, // Range Maximum
0x00, // Alignment
0x01, // Length
)
})
Method (_GPE, 0, NotSerialized) // _GPE: General Purpose Events
{
Local0 = GGPE (0x02040010)
Return (Local0)
}
Name (SEL0, 0xF0)
Name (BFLG, Zero)
Name (RDBT, Zero)
Name (RDWL, Zero)
Name (RD3G, Zero)
Name (RDRF, Zero)
Name (PB10, Zero)
Method (_REG, 2, NotSerialized) // _REG: Region Availability
{
If ((Arg0 == 0x03))
{
Local0 = Arg1
If (Local0)
{
ECOK = One
}
Else
{
ECOK = Zero
}
}
If (ECOK)
{
Acquire (MUT1, 0xFFFF)
If ((OSYS >= 0x07DC))
{
OSW8 = One
^^^^RDWL = One
^^^^RDBT = One
^^^^RD3G = One
}
Else
{
OSW8 = Zero
}
If ((OSYS >= 0x07DD))
{
TPRS = 0x55
W81F = One
}
Else
{
TPRS = Zero
W81F = Zero
}
If (((OSYS < 0x07DD) || (PTPS == Zero)))
{
TOHP = TPDS /* \_SB_.TPDS */
TPRD = One
}
ILID ()
WLST = ^^^^RDWL /* \_SB_.RDWL */
BLTS = ^^^^RDBT /* \_SB_.RDBT */
ED3G = ^^^^RD3G /* \_SB_.RD3G */
CPLE = One
Release (MUT1)
}
If ((LINX != One))
{
If (((BBTP == 0x02) && (OSYS == 0x07D9)))
{
SSMP = 0xD9
}
}
If ((OSYS == 0x07D9))
{
CSBM = 0x07
}
Else
{
CSBM = Zero
}
}
OperationRegion (VERM, EmbeddedControl, Zero, 0xFF)
Field (VERM, ByteAcc, NoLock, Preserve)
{
LNPS, 8
}
OperationRegion (ERAM, SystemMemory, 0xFE708500, 0x0100)
Field (ERAM, ByteAcc, NoLock, Preserve)
{
ECTM, 8,
Offset (0x04),
CMCM, 8,
CMD1, 8,
CMD2, 8,
CMD3, 8,
Offset (0x18),
SMPR, 8,
SMST, 8,
SMAD, 8,
SMCM, 8,
SMD0, 256,
BCNT, 8,
SMAA, 8,
BATD, 16,
ACDF, 1,
Offset (0x41),
, 1,
APBF, 1,
, 3,
FLS4, 1,
Offset (0x42),
FLS3, 1,
, 1,
S0EF, 1,
, 4,
PECE, 1,
, 1,
LMAT, 1,
Offset (0x45),
ECPF, 8,
Offset (0x48),
KBBL, 1,
, 1,
RFST, 1,
Offset (0x49),
ERCT, 8,
Offset (0x4B),
TBLV, 8,
ARCD, 1,
, 3,
DOCK, 1,
LANC, 1,
LIDT, 1,
CRTS, 1,
Offset (0x4E),
TJMX, 3,
, 1,
VGAF, 1,
EDTS, 1,
Offset (0x53),
DOFF, 8,
Offset (0x58),
CTMP, 8,
RG59, 8,
Offset (0x60),
WLAN, 1,
BLTH, 1,
ST3G, 1,
CPLE, 1,
, 1,
ED3G, 1,
WLST, 1,
BLTS, 1,
AIRM, 1,
DPBL, 1,
, 4,
NIWM, 1,
TOHP, 1,
Offset (0x63),
WLPH, 1,
BBST, 1,
ODST, 1,
GPSW, 1,
Offset (0x64),
Offset (0x70),
BTMD, 8,
MBTS, 1,
MBTF, 1,
, 1,
MFCF, 1,
, 2,
MBDX, 1,
MBAD, 1,
MBTC, 1,
, 4,
MBPC, 1,
Offset (0x77),
BA1C, 8,
MCYC, 16,
MTMP, 16,
MDAT, 16,
MCUR, 16,
MBRM, 16,
MBVG, 16,
BHVC, 16,
BLVC, 16,
LFCC, 16,
BTSN, 16,
BTDC, 16,
BTDV, 16,
BTMN, 8,
Offset (0xBB),
TARU, 8,
TARN, 8,
TARD, 8,
Offset (0xC0),
ROMD, 8,
Offset (0xD0),
EBPL, 1,
, 1,
, 1,
TPRD, 1,
Offset (0xD1),
, 1,
ECS4, 1,
ECS3, 1,
RFAT, 1,
OSW8, 1,
WOLF, 1,
WOWL, 1,
Offset (0xD5),
ECDY, 8,
DBPL, 8,
CPTS, 8
}
Scope (\_SB)
{
OperationRegion (EROM, SystemMemory, 0xFE708900, 0x0100)
Field (EROM, ByteAcc, NoLock, Preserve)
{
Offset (0x29),
SPRG, 8,
Offset (0x40),
BCL0, 8,
BCL1, 8,
BCL2, 8,
BCL3, 8,
BCL4, 8,
BCL5, 8,
BCL6, 8,
BCL7, 8,
BCL8, 8,
BCL9, 8,
Offset (0xF6),
C6SW, 8,
Offset (0xFC),
TPVD, 8,
SIMU, 8,
Offset (0xFF),
PJNA, 8
}
OperationRegion (EMBX, SystemMemory, 0xFE708A00, 0x0100)
Field (EMBX, ByteAcc, NoLock, Preserve)
{
Offset (0x80),
ODB0, 8,
ODB1, 8,
ODB2, 8,
ODB3, 8,
ODB4, 8,
ODB5, 8,
ODB6, 8,
ODB7, 8,
ODB8, 8,
ODB9, 8,
ODBA, 8,
ODBB, 8,
ODBC, 8,
ODBD, 8,
ODBE, 8,
ODBF, 8,
ODX0, 32,
ODX1, 32,
ODX2, 32,
ODX3, 32,
Offset (0xA5),
BL86, 8,
BL87, 8,
BL88, 8,
BL89, 8,
BL8A, 8,
BLVA, 8,
OSS4, 1,
Offset (0xAC),
Offset (0xAE),
W81F, 1,
Offset (0xAF),
WUSB, 1,
WPBN, 1,
Offset (0xB1),
U3DE, 1,
Offset (0xB4),
VSSD, 16,
Offset (0xB8),
AUES, 1,
CRES, 1,
UPES, 1,
BTES, 1,
CDES, 1,
Offset (0xC0),
VSID, 8,
VRID, 8,
DVID, 16,
Offset (0xC8),
PWSF, 1,
ODEF, 1,
, 1,
, 1,
, 1,
, 1,
TMLF, 1,
Offset (0xC9),
KBBF, 1,
USCB, 1,
RFBS, 1,
USCF, 1,
HKEY, 1,
ZPOD, 1,
, 1,
IOAC, 1,
Offset (0xCB),
Offset (0xCC),
Offset (0xD0),
CFID, 8,
CPSI, 8,
PPCD, 8,
CPTB, 1,
DCTB, 1,
Offset (0xD4),
VGAD, 2,
Offset (0xD5),
PPDC, 8,
SGST, 8,
EDSP, 8,
BLVL, 8,
BBTP, 8,
TPRS, 8,
Offset (0xDC),
APS4, 8,
Offset (0xDE),
CDSB, 8,
GPDT, 8,
PMNL, 8,
PMNH, 8,
PPDL, 8,
PPDH, 8,
IPWM, 8,
QPCU, 8,
QPCN, 8,
QPCD, 8,
TPMS, 1,
GSEN, 1,
FPRS, 1,
SMCD, 1,
Offset (0xE9),
DEFL, 1,
Offset (0xEA),
, 1,
, 1,
, 1,
, 1,
Offset (0xEB),
Offset (0xEC),
PTPS, 8,
BID0, 1,
BID1, 1,
BID2, 1,
BID3, 1,
BID4, 1,
BID5, 1,
BID6, 1,
BID7, 1,
Offset (0xEF),
IFIL, 1,
IF3L, 1,
Offset (0xF0),
SRAM, 1,
SDTU, 1,
Offset (0xF1),
DRID, 8,
TPID, 8,
, 1,
NKST, 1,
BOTY, 1,
Offset (0xF4),
S4CT, 8,
LFCT, 8,
LLCT, 8,
XPS5, 8,
IWLN, 1,
IWWL, 1,
IWS3, 1,
IWS4, 1,
Offset (0xF9),
Offset (0xFB),
WFVD, 8,
ISWR, 8,
IECM, 8
}
}
Mutex (MUT1, 0x00)
Mutex (MUT0, 0x00)
Method (APOL, 1, NotSerialized)
{
DBPL = Arg0
EBPL = One
}
OperationRegion (ECIO, SystemIO, 0x60, 0x10)
Field (ECIO, ByteAcc, NoLock, Preserve)
{
Offset (0x02),
EDAT, 8,
Offset (0x06),
CMDS, 8,
Offset (0x08),
EC68, 8,
Offset (0x0A),
EC6A, 8,
Offset (0x0C),
EC6C, 8,
Offset (0x0E),
EC6E, 8
}
Method (IBE2, 0, Serialized)
{
While ((EC6E & 0x02))
{
Sleep (0x50)
}
}
Method (ECMD, 1, Serialized)
{
IBE2 ()
EC6E = Arg0
IBE2 ()
}
Method (ILID, 0, NotSerialized)
{
If (IGDS)
{
If (((ECTM & 0x08) == 0x08))
{
LIDS = One
^^^GFX0.CLID = One
}
ElseIf (LIDT)
{
LIDS = Zero
^^^GFX0.CLID = Zero
}
Else
{
LIDS = One
^^^GFX0.CLID = One
}
}
}
Method (_Q01, 0, NotSerialized) // _Qxx: EC Query, xx=0x00-0xFF
{
HKEV (One, One)
}
Method (_Q02, 0, NotSerialized) // _Qxx: EC Query, xx=0x00-0xFF
{
HKEV (0x02, One)
Notify (SMKB, 0x80) // Status Change
}
Method (_Q04, 0, NotSerialized) // _Qxx: EC Query, xx=0x00-0xFF
{
HKEV (One, 0x83)
}
Method (_Q05, 0, NotSerialized) // _Qxx: EC Query, xx=0x00-0xFF
{
HKEV (One, 0x82)
TPDS = TOHP /* \_SB_.PCI0.LPCB.EC0_.TOHP */
}
Method (_Q06, 0, NotSerialized) // _Qxx: EC Query, xx=0x00-0xFF
{
HKEV (One, 0x82)
TPDS = TOHP /* \_SB_.PCI0.LPCB.EC0_.TOHP */
}
Method (_Q0A, 0, NotSerialized) // _Qxx: EC Query, xx=0x00-0xFF
{
HKEV (One, 0x22)
}
Method (_Q0B, 0, NotSerialized) // _Qxx: EC Query, xx=0x00-0xFF
{
HKEV (One, 0x24)
}
Method (_Q0C, 0, NotSerialized) // _Qxx: EC Query, xx=0x00-0xFF
{
HKEV (One, 0x23)
}
Method (_Q0E, 0, NotSerialized) // _Qxx: EC Query, xx=0x00-0xFF
{
If ((LMAT == One))
{
HKEV (One, 0x64)
}
Else
{
HKDS ()
}
}
Method (_Q0F, 0, NotSerialized) // _Qxx: EC Query, xx=0x00-0xFF
{
HKEV (0x02, 0x64)
}
Method (_Q12, 0, NotSerialized) // _Qxx: EC Query, xx=0x00-0xFF
{
HKEV (One, 0x21)
}
Name (BATO, 0x80)
Name (BATN, Zero)
Name (ECEV, 0xC0)
Name (Q29F, Zero)
Method (_Q20, 0, NotSerialized) // _Qxx: EC Query, xx=0x00-0xFF
{
If ((SMST & 0x40))
{
Local0 = SMAA /* \_SB_.PCI0.LPCB.EC0_.SMAA */
If ((Local0 == 0x14))
{
SELE ()
If ((0x40 & ECEV))
{
Notify (BAT1, 0x81) // Information Change
BINH ()
}
If ((0x02 & ECEV))
{
Notify (ACAD, Zero) // Bus Check
AINH ()
}
^^^^BAT1.RCAP = Zero
Notify (BAT1, 0x80) // Status Change
BATO = BATD /* \_SB_.PCI0.LPCB.EC0_.BATD */
SMST &= 0xBF
}
}
}
Method (_Q29, 0, NotSerialized) // _Qxx: EC Query, xx=0x00-0xFF
{
}
Method (_Q57, 0, NotSerialized) // _Qxx: EC Query, xx=0x00-0xFF
{
HKEV (One, 0x84)
}
Method (_Q58, 0, NotSerialized) // _Qxx: EC Query, xx=0x00-0xFF
{
HKEV (One, 0x84)
}
Method (_Q5B, 0, NotSerialized) // _Qxx: EC Query, xx=0x00-0xFF
{
HKEV (One, 0x24)
}
Method (_Q62, 0, NotSerialized) // _Qxx: EC Query, xx=0x00-0xFF
{
HKEV (One, 0x25)
}
Method (_Q63, 0, NotSerialized) // _Qxx: EC Query, xx=0x00-0xFF
{
If ((LMAT == One))
{
If ((OSYS >= 0x07DC)){}
ElseIf ((RFST == Zero))
{
RFST = One
If ((WLAN == One))
{
WLST = One
}
If ((ST3G == One))
{
ED3G = One
}
}
Else
{
RFST = Zero
If ((WLAN == One))
{
WLST = Zero
}
If ((ST3G == One))
{
ED3G = Zero
}
}
}
HKEV (One, 0x02)
}
Method (_Q68, 0, NotSerialized) // _Qxx: EC Query, xx=0x00-0xFF
{
^^^WMID.FEBC [Zero] = One
Notify (WMID, 0xBD) // Device-Specific
}
Method (_Q80, 0, NotSerialized) // _Qxx: EC Query, xx=0x00-0xFF
{
Notify (\_TZ.TZ01, 0x80) // Thermal Status Change
}
Method (_Q81, 0, NotSerialized) // _Qxx: EC Query, xx=0x00-0xFF
{
Notify (\_TZ.TZ01, 0x80) // Thermal Status Change
}
Mutex (PPCF, 0x00)
Method (_Q83, 0, NotSerialized) // _Qxx: EC Query, xx=0x00-0xFF
{
Notify (\_TZ.TZ01, 0x80) // Thermal Status Change
}
Method (_Q84, 0, NotSerialized) // _Qxx: EC Query, xx=0x00-0xFF
{
}
Method (_Q85, 0, NotSerialized) // _Qxx: EC Query, xx=0x00-0xFF
{
Notify (BAT1, 0x81) // Information Change
}
Method (_Q8C, 0, NotSerialized) // _Qxx: EC Query, xx=0x00-0xFF
{
UTPS ()
Notify (\_TZ.TZ01, 0x80) // Thermal Status Change
}
Method (_Q8D, 0, NotSerialized) // _Qxx: EC Query, xx=0x00-0xFF
{
UTPS ()
Notify (\_TZ.TZ01, 0x80) // Thermal Status Change
}
Method (_QAC, 0, NotSerialized) // _Qxx: EC Query, xx=0x00-0xFF
{
UTPS ()
Notify (\_TZ.TZ01, 0x80) // Thermal Status Change
}
Method (_QAD, 0, NotSerialized) // _Qxx: EC Query, xx=0x00-0xFF
{
UTPS ()
Notify (\_TZ.TZ01, 0x80) // Thermal Status Change
}
Method (UTPS, 0, NotSerialized)
{
Acquire (PPCF, 0xFFFF)
If (((CPTS == One) || (CPTS == 0x02)))
{
If ((PPCD > One))
{
Divide (PPCD, 0x02, Local1, Local0)
If (CondRefOf (\_PR.CPU0._PPC))
{
\_PR.CPPC = Local0
}
}
Notify (^^^RP01.PXSX, 0xD1) // Hardware-Specific
}
ElseIf (((CPTS == 0x03) || (CPTS == 0x04)))
{
If ((PPCD > One))
{
Divide (PPCD, 0x02, Local1, Local0)
If (CondRefOf (\_PR.CPU0._PPC))
{
\_PR.CPPC = Local0
}
}
Notify (^^^RP01.PXSX, 0xD2) // Hardware-Specific
}
ElseIf ((CPTS == Zero))
{
If (CondRefOf (\_PR.CPU0._PPC))
{
\_PR.CPPC = Zero
}
Notify (^^^RP01.PXSX, 0xD1) // Hardware-Specific
}
PNOT ()
Release (PPCF)
}
Method (_Q8E, 0, NotSerialized) // _Qxx: EC Query, xx=0x00-0xFF
{
If (((OSYS < 0x07D6) || (LINX == One)))
{
If ((BLVL < 0x09))
{
BLVL++
}
BRXP ()
}
Else
{
Notify (^^^GFX0.DD1F, 0x86) // Device-Specific
}
If ((LMAT == One))
{
HKEV (One, 0x61)
}
}
Method (_Q8F, 0, NotSerialized) // _Qxx: EC Query, xx=0x00-0xFF
{
If (((OSYS < 0x07D6) || (LINX == One)))
{
If ((BLVL > Zero))
{
BLVL--
}
BRXP ()
}
Else
{
Notify (^^^GFX0.DD1F, 0x87) // Device-Specific
}
If ((LMAT == One))
{
HKEV (One, 0x62)
}
}
Method (_Q90, 0, NotSerialized) // _Qxx: EC Query, xx=0x00-0xFF
{
^^^^RDWL = WLST /* \_SB_.PCI0.LPCB.EC0_.WLST */
}
Method (_Q91, 0, NotSerialized) // _Qxx: EC Query, xx=0x00-0xFF
{
^^^^RDWL = WLST /* \_SB_.PCI0.LPCB.EC0_.WLST */
}
Method (_Q92, 0, NotSerialized) // _Qxx: EC Query, xx=0x00-0xFF
{
^^^^RDBT = BLTS /* \_SB_.PCI0.LPCB.EC0_.BLTS */
}
Method (_Q93, 0, NotSerialized) // _Qxx: EC Query, xx=0x00-0xFF
{
^^^^RDBT = BLTS /* \_SB_.PCI0.LPCB.EC0_.BLTS */
}
Method (_Q9B, 0, NotSerialized) // _Qxx: EC Query, xx=0x00-0xFF
{
ILID ()
Notify (LID0, 0x80) // Status Change
}
Method (_Q9C, 0, NotSerialized) // _Qxx: EC Query, xx=0x00-0xFF
{
ILID ()
Notify (LID0, 0x80) // Status Change
}
Method (_Q9D, 0, NotSerialized) // _Qxx: EC Query, xx=0x00-0xFF
{
HKEV (One, 0x63)
}
Method (_Q9E, 0, NotSerialized) // _Qxx: EC Query, xx=0x00-0xFF
{
HKEV (One, 0x63)
}
Method (_QA0, 0, NotSerialized) // _Qxx: EC Query, xx=0x00-0xFF
{
^^^^RD3G = ED3G /* \_SB_.PCI0.LPCB.EC0_.ED3G */
}
Method (_QA1, 0, NotSerialized) // _Qxx: EC Query, xx=0x00-0xFF
{
^^^^RD3G = ED3G /* \_SB_.PCI0.LPCB.EC0_.ED3G */
}
Method (_QA6, 0, NotSerialized) // _Qxx: EC Query, xx=0x00-0xFF
{
}
Method (_QC0, 0, NotSerialized) // _Qxx: EC Query, xx=0x00-0xFF
{
HKEV (One, 0x8D)
}
Method (_QC6, 0, NotSerialized) // _Qxx: EC Query, xx=0x00-0xFF
{
Notify (BAT1, 0x80) // Status Change
}
Method (SELE, 0, NotSerialized)
{
BATN = BATD /* \_SB_.PCI0.LPCB.EC0_.BATD */
ECEV = Zero
If ((0xC0 & BATN))
{
ECEV |= One
If ((0x0300 & BATN))
{
ECEV |= 0x04
}
}
Local0 = (BATN & One)
Local1 = (BATO & One)
If (Local0)
{
ECEV |= 0x0100
}
Else
{
ECEV &= 0xFEFF
}
If (~(Local0 == Local1))
{
ECEV |= 0x40
}
Local0 = (BATN & 0x02)
Local1 = (BATO & 0x02)
If (Local0)
{
ECEV |= 0x0200
}
Else
{
ECEV &= 0xFDFF
}
If (~(Local0 == Local1))
{
ECEV |= 0x80
}
Local0 = (BATN & 0xC0)
Local1 = (BATO & 0xC0)
If (~(Local0 == Local1))
{
ECEV |= 0x02
}
If ((One & ECEV))
{
If ((0x04 & ECEV))
{
If ((BATN & 0x20))
{
ECEV |= 0x10
}
Else
{
ECEV |= 0x20
}
}
}
}
Method (BINH, 0, NotSerialized)
{
}
Method (AINH, 0, NotSerialized)
{
SCTB ()
If (((OSYS < 0x07D6) || (LINX == One)))
{
If (ACDF)
{
If ((BLVL < 0x04))
{
BLVL += 0x05
}
Else
{
BLVL = 0x09
}
}
ElseIf ((BLVL > 0x05))
{
BLVL -= 0x05
}
Else
{
BLVL = Zero
}
BRXP ()
}
}
Method (HKEV, 2, NotSerialized)
{
^^^WMID.FEBC [Zero] = Arg0
^^^WMID.FEBC [One] = Arg1
^^^WMID.FEBC [0x02] = Zero
^^^WMID.FEBC [0x03] = Zero
Notify (WMID, 0xBC) // Device-Specific
}
Method (HKDS, 0, NotSerialized)
{
^^^GFX0.GHDS (Zero)
}
Method (BRXP, 0, NotSerialized)
{
If (((SGST == 0x04) || (SGST == Zero)))
{
Local1 = (DerefOf (PNLT [BLVL]) * 0x64)
Local2 = (Local1 / 0x0100)
^^^GFX0.AINT (One, Local2)
}
Else
{
}
}
Mutex (CTBM, 0x00)
Method (SCTB, 0, NotSerialized)
{
Acquire (CTBM, 0xFFFF)
If (CPTB)
{
If ((!ACDF && VGAF))
{
DCTB = One
}
Else
{
DCTB = Zero
}
SSMP = 0xD8
}
Release (CTBM)
}
}