专门网论坛

 找回密码
 立即注册

新浪微博登陆

只需一步, 快速开始

快捷登录

【放大价】X390 T490 T490S X1专门网 纪念品蜗牛家 X230 618最新活动【玖伍鑫】团购Yoga260
查看: 3175|回复: 21

[系统] 【原创】改屏机黑苹果的春天,通过修正ACPI实现合盖睡眠

[复制链接] [ 1126字 ]

高级会员 Rank: 4Rank: 4Rank: 4Rank: 4

帖子
11572
积分
11.9
技术分
4.6 分
资产值
75297 nb
联谊分
2.5 分
注册时间
2011-6-21
年全勤勋章2017
发表于 2018-12-3 22:27:03 | 显示全部楼层 |阅读模式
本帖最后由 f23258 于 2018-12-3 23:19 编辑

改屏机的黑苹果,其合盖睡眠一直是个老大难的问题,之前没接触所以也没深入研究。
前阵子入了台X330,《为了一直挂念的窄边框,X330体验流水分享》,开始第一次与改屏机亲密接触。
机器到手黑苹果起来也很容易的顺风顺水,但是怎么折腾就是没有原生亮度和合盖睡眠。强迫症使然的想折腾完善,了解改屏原理后,放弃了在我机器上实现原生的亮度调节。但是对于无法合盖睡眠这事,心里一直有想法,强迫症使然的找思路。几经折腾,黑果大神武大实现代码,最终在X330上完美实现了合盖睡眠。

一、原理
X230的改屏有两三家的方案,但基本原理都是一样的。
原机的LVDS是没法支持高分的,要支持高分只能从DP口下手,而X230是支持底座的,所以改屏都是从底座接口处的DP做文章。
如何实现各家有各家的思路,但基本原理就是从DP处修正以便可以接入高分屏屏,相当于外接了一个显示器,而对于是否屏蔽内屏就看各家实力了(需改BIOS屏蔽LVDS,据说省电一点,这点本人未实证)。
从苹果系统的规范上来说,合盖事件在外接显示屏的情况下,机器也是不会实现睡眠的,只是内屏熄屏,外屏工作,这一点在白苹果机器上得到了实证。而对于改屏机而言,其实只有一个屏幕,但是系统当它是外接了一个显示器(复制模式能调节亮度),这样内屏熄(实际已无内屏),外屏继续工作,当然导致系统无法进入睡眠了。
这也是改屏机器一直无法睡眠的原因。
而如何解决这个问题,从ACPI的睡眠方法中找到了启发。

二、规范
苹果系统的调用和运作,很大程序上会去调用各个ACPI,所以ACPI和白果越接近,就有越容易黑的可能。
查找WAKE/SLEEP等等关键词,可以确认ACPI规范了3种进入睡眠的方式,分别是:
(1)PNP0C0C — Power Button Device
(2)PNP0C0D — Lid Device
(3)PNP0C0E — Sleep Button Device
QQ20181203-204630@2x.png
其中,PNP0C0D — Lid Device,又规范了_LID方法:
返回值:
0 – The lid is closed
Non-zero – The lid is open
通常情况下,黑苹果启用(3)时,视同关机,向系统发出了关机参数,致使黑苹果系统崩溃。
而黑果系统的合盖睡眠,是按PNP0C0D方式进行。这个时候合盖进入睡眠时,开盖终止睡眠。连接外显的情况下,无法睡眠,内屏和外显同步性异常。
通过PNP0C0E进入睡眠时,盒盖还是按下功能键,会立即睡眠,睡眠过程快于Lid方式,连接外显的情况下,睡眠正常。
以上这一点就是改屏机实现睡眠的可能,完整的根据规范定义出睡眠的必要参数和条件,以实现改屏机合盖睡眠。

三、实现
ACPI规范中,针对PNP0C0E的实现举了这么一个例子,
QQ20181203-210006@2x.png
原文有如下描述:
The AML code below does the following:
• Creates a device named “SLPB” and associates the Plug and Play identifier (through the _HID object) of “PNP0C0E.”
• The Plug and Play identifier associates this device object with the sleep button driver.
• Creates an operational region for the control method sleep button’s programming model:
System I/O space at 0x201.
• Fields that are not accessed are written as “1s” (these status bits clear upon writing a “1” to their bit position, hence preserved would fail in this case).
• Creates a field within the operational region for the sleep button status bit (called PBP). In this case the sleep button status bit is a child of the general-purpose status bit 0. When this bit is set it is the responsibility of the AML code to clear it (OSPM clears the general-purpose status bits). The address of the status bit is 0x201.0 (bit 0 at address 0x201).
• Creates an additional status bit called PBW for the sleep button wake event. This is the next bit and its physical address would be 0x201.1 (bit 1 at address 0x201).
• Generates an event handler for the sleep button that is connected to bit 0 of the general-purpose status register 0. The event handler does the following:
• Clears the sleep button status bit in hardware (writes a “1” to it).
• Notifies OSPM of the event by calling the Notify command passing the sleep button object and the device specific event indicator 0x80.
看着容易头晕,大概意思就是定义一个SLPB的设备名称来和PNP0C0E关联,再通过特定Notify(\_SB.SLPB, 0x80)来实现睡眠。
基于此,要实现此功能,得满足以下条件:
1、更名,使用原DSDT里的LID相关不起作用
2、做LID相关补丁,使LID事件发生时调用PNP0C0E的方法
3、修正PNP0C0E方法传递的参数,使系统正确休眠。

代码的最终实现有宪武开发完成,在X330改屏机上和X1C 5TH均测试通过。
X230的EFI将在《还战X230完美黑苹果,macOS Mojave 10.14安装即使用》主帖中更新。
以上只是通过对ACPI对某些功能实现的探讨,仔细研究ACPI规范,应该会有发现更多黑果完美的可能。

附上ACPI标准规范文件以供参考:
附件一: ACPI 6_2_A_Sept29_规范.zip.001 (5.72 MB, 下载次数: 4)

评分

参与人数 1资产值 +510 收起 理由
HOPE + 510 精品文章

查看全部评分

初级会员 Rank: 2Rank: 2

帖子
1894
积分
1.3
技术分
0 分
资产值
21741 nb
联谊分
0 分
注册时间
2013-2-18
发表于 2018-12-3 22:30:42 来自手机版 | 显示全部楼层
膜拜下大神
回复 支持 反对

使用道具 举报

wenlj163 - X62-3180

入门会员 Rank: 1

帖子
624
积分
0.4
技术分
0 分
资产值
6186 nb
联谊分
0 分
注册时间
2011-4-9
发表于 2018-12-3 22:41:02 | 显示全部楼层
可以可以

330已出
回复 支持 反对

使用道具 举报

iamcheyan - 澈澈澈言

入门会员 Rank: 1

帖子
1015
积分
0.2
技术分
0 分
资产值
1253 nb
联谊分
0 分
注册时间
2009-3-2
发表于 2018-12-3 23:16:52 来自安卓客户端来自安卓客户端| 显示全部楼层
膜拜了
回复 支持 反对

使用道具 举报

弟大勿博 - -洋哥

初级会员 Rank: 2Rank: 2

帖子
13792
积分
1.7
技术分
0.5 分
资产值
4179 nb
联谊分
0 分
注册时间
2013-8-10
月全勤勋章
发表于 2018-12-3 23:50:33 来自手机版 | 显示全部楼层
技术贴啊,造福黑友!

版主正在加分设精的路上。
回复 支持 反对

使用道具 举报

高级会员 Rank: 4Rank: 4Rank: 4Rank: 4

帖子
54914
积分
10.7
技术分
0 分
资产值
84483 nb
联谊分
3.4 分
注册时间
2011-10-18
月全勤勋章年全勤勋章2017
发表于 2018-12-4 06:11:09 来自手机版 | 显示全部楼层
睡什么睡!起来嗨!
回复 支持 反对

使用道具 举报

入门会员 Rank: 1

帖子
99
积分
0.1
技术分
0 分
资产值
1351 nb
联谊分
0 分
注册时间
2004-1-27
发表于 2018-12-4 07:33:23 来自安卓客户端来自安卓客户端| 显示全部楼层

回复 支持 反对

使用道具 举报

高级会员 Rank: 4Rank: 4Rank: 4Rank: 4

帖子
11572
积分
11.9
技术分
4.6 分
资产值
75297 nb
联谊分
2.5 分
注册时间
2011-6-21
年全勤勋章2017
 楼主| 发表于 2018-12-4 10:01:29 | 显示全部楼层
QUOTE:
peacefeeling 发表于 2018-12-4 06:11
睡什么睡!起来嗨!

这么早HIGH到哪了?
回复 支持 反对

使用道具 举报

入门会员 Rank: 1

帖子
213
积分
0.2
技术分
0 分
资产值
2768 nb
联谊分
0 分
注册时间
2009-6-9
发表于 2018-12-4 12:38:34 来自安卓客户端来自安卓客户端| 显示全部楼层
群里改屏的师傅们活要多了。
回复 支持 反对

使用道具 举报

huzhi28251 - x210

入门会员 Rank: 1

帖子
3980
积分
0.5
技术分
0 分
资产值
3384 nb
联谊分
0 分
注册时间
2016-7-17
发表于 2018-12-4 16:54:12 来自手机版 | 显示全部楼层
厉害
回复 支持 反对

使用道具 举报

版主 Rank: 7Rank: 7Rank: 7Rank: 7Rank: 7Rank: 7Rank: 7

帖子
5296
积分
7.2
技术分
6.6 分
资产值
2042 nb
联谊分
0 分
注册时间
2006-5-25
银牌荣誉勋章(注册8年以上会员)金牌荣誉勋章(注册10年以上会员)
发表于 2018-12-4 16:58:28 | 显示全部楼层
厉害!!!
回复 支持 反对

使用道具 举报

入门会员 Rank: 1

帖子
1998
积分
0.3
技术分
0 分
资产值
1979 nb
联谊分
0 分
注册时间
2007-10-16
发表于 2018-12-4 19:05:56 来自手机版 | 显示全部楼层
二个zip文件怎么使用??
回复 支持 反对

使用道具 举报

入门会员 Rank: 1

帖子
241
积分
0.3
技术分
0 分
资产值
5650 nb
联谊分
0 分
注册时间
2009-9-15
发表于 2018-12-4 20:24:46 | 显示全部楼层
实在是技术精品文章,论坛就要多多来这样的好文!
回复 支持 反对

使用道具 举报

初级会员 Rank: 2Rank: 2

帖子
3125
积分
1.1
技术分
0 分
资产值
17101 nb
联谊分
0 分
注册时间
2012-12-12
发表于 2018-12-4 21:30:31 | 显示全部楼层

膜拜下大神
回复 支持 反对

使用道具 举报

入门会员 Rank: 1

帖子
125
积分
0.1
技术分
0 分
资产值
773 nb
联谊分
0 分
注册时间
2018-9-6
发表于 2018-12-4 23:33:23 | 显示全部楼层
支持,一路黑到头..马上快白了
回复 支持 反对

使用道具 举报

初级会员 Rank: 2Rank: 2

帖子
3937
积分
1.2
技术分
0 分
资产值
15782 nb
联谊分
0 分
注册时间
2014-8-20
月全勤勋章
发表于 2018-12-5 07:00:38 来自手机版 | 显示全部楼层
都四神之人
回复 支持 反对

使用道具 举报

初级会员 Rank: 2Rank: 2

帖子
1951
积分
1.6
技术分
0 分
资产值
26260 nb
联谊分
0 分
注册时间
2007-9-17
银牌荣誉勋章(注册8年以上会员)金牌荣誉勋章(注册10年以上会员)
发表于 2018-12-5 09:44:35 | 显示全部楼层
内涵好文!
回复 支持 反对

使用道具 举报

入门会员 Rank: 1

帖子
449
积分
0.1
技术分
0 分
资产值
544 nb
联谊分
0 分
注册时间
2007-4-4
发表于 2019-1-12 22:36:07 | 显示全部楼层
呼吁版主设精
回复 支持 反对

使用道具 举报

入门会员 Rank: 1

帖子
46
积分
0
技术分
0 分
资产值
782 nb
联谊分
0 分
注册时间
2018-4-24
发表于 2019-1-13 18:34:54 | 显示全部楼层
QUOTE:
f23258 发表于 2018-12-3 22:27
改屏机的黑苹果,其合盖睡眠一直是个老大难的问题,之前没接触所以也没深入研究。
前阵子入了台X330,《为 ...

白苹果笔记本外接显示屏,官方说法需要接通电源,否则很快会重新进入休眠。按照这个思路,黑苹果拔下电源线,是否会进入睡眠呢?
回复 支持 反对

使用道具 举报

认证商家 Rank: 4Rank: 4Rank: 4Rank: 4

帖子
8256
积分
15.8
技术分
13.4 分
资产值
33039 nb
联谊分
0 分
注册时间
2008-9-12
银牌荣誉勋章(注册8年以上会员)金牌荣誉勋章(注册10年以上会员)
发表于 2019-1-13 18:47:12 | 显示全部楼层
QUOTE:
f23258 发表于 2018-12-3 22:27
改屏机的黑苹果,其合盖睡眠一直是个老大难的问题,之前没接触所以也没深入研究。
前阵子入了台X330,《为 ...

厉害,尽然没有加技术分!
回复 支持 反对

使用道具 举报

入门会员 Rank: 1

帖子
157
积分
0.1
技术分
0 分
资产值
892 nb
联谊分
0 分
注册时间
2015-1-19
发表于 2019-1-15 14:19:37 | 显示全部楼层
厉害,收藏个
回复 支持 反对

使用道具 举报

入门会员 Rank: 1

帖子
1
积分
0
技术分
0 分
资产值
41 nb
联谊分
0 分
注册时间
2019-6-1
发表于 2019-6-25 22:05:39 | 显示全部楼层
楼主,我想问一下,就是您的这个补丁通用吗?还有clover里改名的都有哪些,我想参照您的补丁给我的电脑解决合盖睡眠问题,谢谢
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Powered by Discuz! X3.2 © 2001-2018 Comsenz Inc & 51nb.com

GMT+8, 2019-7-18 13:23 , Processed in 0.107517 second(s), 113 queries , Gzip On, OPcache On, Redis On.

手机版|小黑屋|客户端|Archiver|||专门网 ( 粤B2-20050246 )

返回顶部