本帖最后由 weizhifu 于 2011-10-30 18:02 编辑
接回141楼所说的
我的机型是 4736zg 修改 DSDT 之后,使用10.7的 AppleACPIBatterManager.kext 可以显示电量,不过有点问题,就是电量可用时间不准确,一会长一会短一会又长回来,而电量剩余百分比就有时能显示有时显示不了,电池型号显示不了。
下面说说修改DSDT的内容
我的DSDT里面的内容和教程里的不太一样,具体如下:
我的电池是在 BAT0 下的,搜索 _BIF,可以发现里面并没有 Store (^^EC0.BDC0, Index (STAT, One)),只有Store (^^EC0.BDC0, Index (PBIF, One))
- Device (BAT0)
- {
- Name (_HID, EisaId ("PNP0C0A"))
- Name (_UID, One)
- Name (_PCL, Package (0x01)
- {
- _SB
- })
- Name (PBIF, Package (0x0D)
- {
- One,
- 0x0FA0,
- 0x0FA0,
- One,
- 0x39D0,
- 0x0190,
- 0x78,
- 0x0108,
- 0x0EC4,
- "Li_Ion 4000mA ",
- "1234",
- "Lion",
- "Acer "
- })
- Name (PBST, Package (0x04)
- {
- One,
- Ones,
- Ones,
- 0x39D0
- })
- Method (_STA, 0, NotSerialized)
- {
- If (ECON)
- {
- If (^^EC0.BAL1) //数值为 1 ,没有修改
- {
- Sleep (0x64)
- Return (0x1F)
- }
- Else
- {
- Sleep (0x64)
- Return (0x0F)
- }
- }
- Else
- {
- Sleep (0x64)
- Return (0x1F)
- }
- }
- Method (_BIF, 0, NotSerialized)
- {
- If (ECON)
- {
- Sleep (0x64)
- //Store (^^EC0.BDC0, Index (PBIF, One))
- Store (BB2W(^^EC0.SDC0,^^EC0.SDC1), Index (PBIF, One))
- Sleep (0x64)
- //Store (^^EC0.BFC0, Index (PBIF, 0x02))
- Store (BB2W(^^EC0.SFC0,^^EC0.SFC1), Index (PBIF, 0x02))
- Sleep (0x64)
- //Store (^^EC0.BDV0, Index (PBIF, 0x04))
- Store (BB2W(^^EC0.SDV0,^^EC0.SDV1), Index (PBIF, 0x04))
- Sleep (0x64)
- //Store (^^EC0.BDC0, Local2)
- Store (BB2W(^^EC0.SDC0,^^EC0.SDC1), Local2)
- Divide (Local2, 0x64, Local6, Local2)
- Multiply (Local2, 0x05, Local3)
- Store (Local3, Index (PBIF, 0x05))
- Multiply (Local2, 0x03, Local4)
- Store (Local4, Index (PBIF, 0x06))
- Sleep (0x64)
- If (LGreaterEqual (OSYS, 0x07D6))
- {
- //ToHexString (^^EC0.BSN0, Local2)
- ToHexString (BB2W(^^EC0.SSN0,^^EC0.SSN1), Local2)
- Mid (Local2, 0x02, 0x04, Local3)
- Store (Local3, Index (PBIF, 0x0A))
- Sleep (0x64)
- }
- Store (^^EC0.BATD, Index (PBIF, 0x09)) //数值为 56,没有修改,和教程上的参数不太同
- Sleep (0x64)
- Store (^^EC0.BTMF, Local1) //数值为 16,没有修改,和教程上的参数不太同
- Sleep (0x64)
- If (LEqual (Local1, One))
- {
- Store ("SANYO ", Index (PBIF, 0x0C))
- }
- Else
- {
- If (LEqual (Local1, 0x02))
- {
- Store ("SONY ", Index (PBIF, 0x0C))
- }
- Else
- {
- If (LEqual (Local1, 0x04))
- {
- Store ("PANASONIC ", Index (PBIF, 0x0C))
- }
- Else
- {
- If (LEqual (Local1, 0x03))
- {
- Store ("Simplo ", Index (PBIF, 0x0C))
- }
- Else
- {
- Store ("COMPAL ", Index (PBIF, 0x0C))
- }
- }
- }
- }
- }
- Return (PBIF)
- }
- Method (_BST, 0, NotSerialized)
- {
- If (ECON)
- {
- Sleep (0x64)
- Store (^^EC0.BST0, Local0) //这个数值本来就为 8 ,不修改
- And (Local0, 0x07, Local0)
- Store (Local0, Index (PBST, Zero))
- Sleep (0x64)
- Store (^^EC0.GAU0, Local2) //这个数值本来就为 8 ,不修改
- Sleep (0x64)
- //Store (^^EC0.BPV0, Local3)
- Store (BB2W(^^EC0.SPV0,^^EC0.SPV1), Local3)
- Sleep (0x64)
- //Store (^^EC0.BFC0, Local1)
- Store (BB2W(^^EC0.SFC0,^^EC0.SFC1), Local1)
- Sleep (0x64)
- If (Local2)
- {
- Multiply (Local2, Local1, Local2)
- Divide (Local2, 0x64, Local6, Local2)
- If (Local6)
- {
- Increment (Local2)
- }
- }
- //Store (^^EC0.BAC0, Local1)
- Store (BB2W(^^EC0.SAC0,^^EC0.SAC1), Local1)
- If (And (Local1, 0x8000, Local1))
- {
- //Store (^^EC0.BAC0, Local1)
- Store (BB2W(^^EC0.SAC0,^^EC0.SAC1), Local1)
- Subtract (0xFFFF, Local1, Local1)
- }
- Else
- {
- Store (Zero, Local1)
- }
- Sleep (0x64)
- Store (Local1, Index (PBST, One))
- Store (Local2, Index (PBST, 0x02))
- Store (Local3, Index (PBST, 0x03))
- }
- Return (PBST)
- }
- }
复制代码
查看里面的详细内容,发现 BAL1 BDC0 BFC0 BDV0 BSN0 BATM BATD BST0 GAU0 BAC0 BPV0 这11个参数在 Field (ERAM, ByteAcc, Lock, Preserve) 下 除了 BST0 GAU0 这两个参数数值为 8 以外,BAL1数值为 1 BATM数值为 16 BATD的数值更是夸张的 56,剩下的6个参数的数值都是 16 .
- Field (ERAM, ByteAcc, Lock, Preserve)
- {
- , 1,
- LCDS, 1,
- DOCK, 1,
- LANC, 1,
- BBET, 1,
- Offset (0x08),
- BATM, 16,
- Offset (0x19),
- BATD, 56,
- Offset (0x60),
- SMPR, 8,
- SMST, 8,
- SMAD, 8,
- SMCM, 8,
- SMDR, 32,
- BCNT, 8,
- SMAA, 8,
- SMD0, 8,
- SMD1, 8,
- Offset (0x90),
- Offset (0x91),
- Offset (0x92),
- Offset (0x93),
- Offset (0x94),
- ERIB, 16,
- ERBD, 8,
- Offset (0x98),
- Offset (0x99),
- OSIF, 1,
- Offset (0x9A),
- BAL1, 1,
- BAL2, 1,
- BAL3, 1,
- BAL4, 1,
- BCL1, 1,
- BCL2, 1,
- BCL3, 1,
- BCL4, 1,
- BPU1, 1,
- BPU2, 1,
- BPU3, 1,
- BPU4, 1,
- BOS1, 1,
- BOS2, 1,
- BOS3, 1,
- BOS4, 1,
- PHDD, 1,
- IFDD, 1,
- IODD, 1,
- SHDD, 1,
- LS20, 1,
- EFDD, 1,
- ECRT, 1,
- Offset (0x9D),
- SBTN, 1,
- VIDO, 1,
- VOLD, 1,
- VOLU, 1,
- MUTE, 1,
- CONT, 1,
- BRGT, 1,
- HBTN, 1,
- S4SE, 1,
- SKEY, 1,
- BKEY, 1,
- TKEY, 1,
- FKEY, 1,
- DVDM, 1,
- DIGM, 1,
- CDLK, 1,
- , 1,
- LIDO, 1,
- PMEE, 1,
- PBET, 1,
- RIIN, 1,
- BTWK, 1,
- DKIN, 1,
- Offset (0xA0),
- , 6,
- SWTH, 1,
- HWTH, 1,
- DKT0, 1,
- DKT1, 1,
- , 2,
- OSUD, 1,
- OSDK, 1,
- OSSU, 1,
- DKCG, 1,
- ODTS, 8,
- S1LD, 1,
- S3LD, 1,
- VGAQ, 1,
- PCMQ, 1,
- PCMR, 1,
- ADPT, 1,
- SYS6, 1,
- SYS7, 1,
- PWAK, 1,
- MWAK, 1,
- LWAK, 1,
- RWAK, 1,
- , 2,
- KWAK, 1,
- MSWK, 1,
- CCAC, 1,
- AOAC, 1,
- BLAC, 1,
- PSRC, 1,
- BOAC, 1,
- LCAC, 1,
- AAAC, 1,
- ACAC, 1,
- PCEC, 8,
- THON, 8,
- THSD, 8,
- THEM, 8,
- TCON, 8,
- THRS, 8,
- THSE, 8,
- FSSN, 4,
- FANU, 4,
- PTVL, 3,
- , 3,
- TTSR, 1,
- TTHR, 1,
- TSTH, 1,
- TSBC, 1,
- TSBF, 1,
- TSPL, 1,
- TSBT, 1,
- , 2,
- THTA, 1,
- CTMP, 8,
- LTMP, 8,
- Offset (0xB3),
- Offset (0xB4),
- SKTC, 8,
- SKTA, 8,
- NBTP, 8,
- Offset (0xB8),
- BTPV, 8,
- BRTS, 8,
- CTRS, 8,
- WLAT, 1,
- BTAT, 1,
- WLEX, 1,
- BTEX, 1,
- KLSW, 1,
- WLOK, 1,
- Offset (0xBC),
- PJID, 8,
- CPUN, 8,
- THFN, 8,
- MLED, 1,
- SCHG, 1,
- SCCF, 1,
- SCPF, 1,
- ACIS, 1,
- Offset (0xC0),
- , 4,
- BTMF, 3,
- BTY0, 1,
- BST0, 8,
- BRC0, 16,
- //BSN0, 16,
- SSN0, 8,
- SSN1, 8,
- //BPV0, 16,
- SPV0, 8,
- SPV1, 8,
- //BDV0, 16,
- SDV0, 8,
- SDV1, 8,
- //BDC0, 16,
- SDC0, 8,
- SDC1, 8,
- //BFC0, 16,
- SFC0, 8,
- SFC1, 8,
- GAU0, 8,
- BSCY, 8,
- BSCU, 16,
- //BAC0, 16,
- SAC0, 8,
- SAC1, 8,
- BTW0, 8,
- BATV, 8,
- BPTC, 8,
- BTTC, 8,
- BTMA, 16,
- BTSC, 8,
- BCIX, 8,
- CCBA, 8,
- CBOT, 8,
- BTSS, 16,
- OVCC, 8,
- CCFC, 8,
- BADC, 8,
- BSC1, 16,
- BSC2, 16,
- BSC3, 16,
- BSC4, 16,
- BDME, 16,
- Offset (0xEE),
- Offset (0xEF),
- Offset (0xF0),
- BTS1, 8,
- BTS2, 8,
- BSCS, 16,
- BDAD, 16,
- BACV, 16,
- BDFC, 8
- }
复制代码
|