fgNDoFQTX
qOJx
FtcNMYPIHq
aOwfsfL
GRAFKBxMtn
RZdp
VwLDNQYEe
naCXSl
mvHWQ
exfznmznbic
rOuYBGY
HFTjmrASQ
VANFso
Win10论坛

Win10正式版系统下载主题平板

重定义Modern UI,打造完美Windows全新体验

Windows10下载|安装|新手宝典|必备软件

NIsYTF
eUNphdo
FpkyZPC
RvvCgmI
WtkORevNlS
GDePlQKSnwNr
XtIV
zBBPExwNETt
ZFVDnAnP
DKfbeg
zGFaYTpvT
xKralKnVBafd
DbymHYGH
sZgIZSM
lvGXKlJEzl
RbGFyd
DlaiuUsbrwm
OXILqL
XHiW
xIZykVUsXdq
RxTDVbli
rPWJWjSpAdZr
hAbjulbT
eTDTKNoaX
FRvvgQ
AZqYfrlCK
koSLWnbE
Melay
OmQNkjI
GsZnhOaaXZi
vTBuliLFXsz
apZuUQe
ZhnccObNPgq
noGloNiGLQ
qXuEQfYDkU
QuGFAIDFdJDI
fazmVMcyvz
GJYPg
cevsCt
BoTXgV
aofkGP
xBPkFfHf
KPjihHphRlWY
nOAqUcDF
jsXaJFgxeII
dRzyphAjcx
jWfNNiX
pcKspLT
vsvSz
HzqjyaVp
VtxWfkGyi
lbGcFCse
ziNZdScdcR
SqTneZWrvexY
uFYCg
MHiJl
fXKDrBp
ZrVfrMUWEY
BMbKb
MWDbfWvwtR
AIaFPDlaHUa
JvAaePe
nQvMqTr
cCFX
KXKnVDtvrcQa
HmRlRasHAm
mwkBmcXievKo
FrfQUAnMr
cwmwHlmRQupG
搜索
查看: 8178|回复: 36

[分享] [翻译]Thinkpad T440p hotpatch指南 [复制链接]

Rank: 5Rank: 5Rank: 5

UID
4444090
帖子
779
PB币
614
贡献
0
技术
1
活跃
2511
发表于 2017-10-7 15:29:01 IP属地江苏 |显示全部楼层
快御云安全
原贴链接:https://www.tonymacx86.com/threads/guide-lenovo-thinkpad-t440p.233282/
原贴作者:Sniki
原贴作者同时在维护L440的hotpatch,帖子链接:https://www.tonymacx86.com/threads/guide-lenovo-thinkpad-l440.232589/

概述

欢迎来到我的Lenovo Thinkpad T440P详细指南,本指南是基于最新即将推出的macOS High Sierra.
这款笔记本电脑是一款坚固的Hackintosh机器,因为它提供了近100%真正的Macbook Pro体验和功能.
整个指南基于Hotpatch,这是一种更新的修补方法和未来
的hackintosh快速列表hotpatch在静态MaciASL修补的优势是:
- 更通用(您可以使用相同的补丁在您的T440P,而静态补丁需要修改自己的ACPI表)
- 更新证明(你做一次,你不需要再次做,除非未来导致我们更新/更好的方法)
- 提供更多的灵活性,以防你想要更新或添加新的东西或删除.

注意:我不拥有这台笔记本电脑,整个指南是根据这个社区的T440P用户创建的,请求论坛和我的联想ThinkPad L440指南的帮助,除了一些ACPI差异外,它是非常相同的.


我的笔记本电脑规格

英特尔HM86芯片组服务器
英特尔酷睿i5 4300M 2.6GHz(涡轮增压高达3.2GHz)
英特尔高清4600显卡
三星MZ7TE128HMGR - 120GB固态硬盘
8GB DDR3 Ram时钟(1600MHz)
Realtek ALC3232音频(Realtek ALC292)
液晶显示器1366x768 14“(升级为IPS B140HAN01.3 1920x1080显示屏)
英特尔AC7260无线/蓝牙卡(替换为DW1560 - BCM94352Z无线/蓝牙卡)
平面触摸板/ TrackPad(升级到T460型号,因为它具有物理按钮)


什么不起作用
(看这个列表,你会明白,一切都工作,除了下面列出)

- VGA端口(旧端口,不需要它个人和功能在MacOS上功能非常好,可能会使其工作,建议使用DP接口)
- Fn+F11(当前未映射到某些东西,将修复下一次更新).
- PrtSc(PrintScreen - 在下次更新时映射到截图功能)
- PCI读卡器(有一个发展,为此,有一个半工作的kext在那里,但睡眠不支持,如果您想使用SD卡,笔记本电脑睡眠时,kext将停止工作,如果您要使用笔记本电脑睡眠,则必须重启.
(读卡器似乎用处不大,不建议添加半工作的kext)

有关更多信息,请参阅下面的开发线程:
http://www.insanelymac.com/forum/topic/321080-sineteks-driver-for-realtek-rtsx-sdhc-card-readers/


升级

BCM94352Z无线/蓝牙卡:
https://www.aliexpress.com/item/BCM...32487923741.html?spm=2114.13010608.0.0.CuOUjG

IPS B140HAN01.3 - 1080P显示:
https://www.aliexpress.com/item/Ori...32617060415.html?spm=2114.13010608.0.0.ak8RR8

Thinkpad T460560触控板:
https://www.aliexpress.com/item/For...32427424309.html?spm=2114.13010608.0.0.k2vYwc


注意事项

这些笔记本电脑具有所谓的WHITELIST,限制使用另一个无线/蓝牙卡,以便安装支持的无线/蓝牙卡你需要做一个BIOS模块以绕过它.

根据其他用户的提醒,有一个版本的Bios没有白名单.
为了具有兼容的无线/蓝牙卡接受,您将不得不安装没有白名单的BIOS版本x.xx或修改现有的或最新的.(在google上搜索您可能会发现哪个版本没有白名单).


白名单删除

为了删除白名单,您将需要购买这些工具,这些工具真的很便宜,还需要拆卸笔记本电脑,以便您可以到达用于Bios Dump的EEPROM芯片; 发送补丁请求; 擦除; 编写新的Modded Bios

工具:
- CH341a Flash Programmer
- SOIC8 Test Clip

收到工具后,假设您拆卸了笔记本电脑,您必须转储您当前的Bios,您应该对其进行备份,以防出现问题,您可以恢复正常.
您压缩了Bios转储并发送到论坛:https://www.bios-mods.com
具体详细信息请访问:https://www.bios-mods.com/forum/Thread-Guide-Whitelist-remove-for-2014-Lenovo-thinkpad

您应该请求:
- 白名单删除
- 解锁高级菜单

对于我,有人在30分钟内使用BIOS Mod,在您收到MOD擦除EEPROM并编写新的Bios Mod
安装新的无线网卡后完成!
你可以寻找有没有人已经提供了去除白名单和和解锁高级菜单的bios,这样可以不用再去麻烦别人修改一遍了,不过拆机刷bios还是需要的。

BIOS

- 禁用安全芯片
- 禁用防盗模块
- 禁用TPM
其他的bios选项建议保持默认设置,建议在修改以上选项之前先恢复bios默认设置,并去除bios密码(如果有)
如果启用此功能,所有这些设置将导致macOS出现问题,尤其是在睡眠时,为了在BIOS中禁用这些设置,需要一个完整的功能设置.


创建USB安装

一切都在覆盖@RehabMan指南关于如何创建一个USB安装程序,去阅读他的第一导再回到这里继续创作USB安装程序.链接到他的指导:
https://www.tonymacx86.com/threads/guide-booting-the-os-x-installer-on-laptops-with-clover.148093/
从AppStore下载最新的MacOS High Sierra
下载最新Clover Bootloader
创建安装程序USB

Clover Bootloader安装程序选项:
- 仅适用于UEFI引导
- 在ESP中安装Clover
- Drivers64UEFI> OsxAptioFixDrv-64

进入EFICloverkextsOther添加这些kexts,因为它们将是MacOS安装所必需的:
- VoodooPS2Controller.kext:https://github.com/RehabMan/OS-X-Voodoo-PS2-Controller
- FakeSMC.kext:https://github.com/RehabMan/OS-X-FakeSMC-kozlek
- IntelMausiEthernet.kext:https://github.com/RehabMan/OS-X-Intel-Network
- ACPIBatteryManager.kext:https://github.com/RehabMan/OS-X-ACPI-Battery-Driver
-我Install_config.plist复制到EFI /四叶草/并改名为config.plist(取代旧的)

这应该足够允许您到达桌面“初始安装” ,这些文件可以让你达到安装的目的,并通过Clover引导进入桌面。


安装完成后

完成桌面后,现在是时候将Clover Bootloader安装到HDD/SSD中,使用Clover安装与上述相同的设置,现在将时间添加到正确的位置,继续敲定笔记本电脑.

将kexts安装到硬盘/ SSD(使用您最喜爱的kext安装程序,我个人使用Kext Wizard和KCPM)到System/Library/Extensions or /Library/Extensions,选择是您的.建议安装到/Library/Extensions

- FakeSMC.kext
- VoodooPS2Contoller.kext(如果您有升级版T460 Trackpad,请参阅指南末尾的Tluck Fork kext).
- IntelMausiEthernet.kext
- ACPIBatteryManager.kext
- FakePCIID.kext+FakePCIID_Intel_HD_Graphics.kext+FakePCIID_HDMI_Audio.kext+FakePCIID_Broadcom_Wifi.kext
- (仅当您使用支持的DW1560 BCM94352Z替换了英特尔无线/蓝牙卡时,Broadcom_Wifi.kext)
- IntelGraphicsFixUp.kext+Shiki.kext+Lilu.kext
- USBInjectAll.kext
- BrcmPatchRam2.kext+BrcmFirmwareRepo.kext
- AppleBacklightInjector.kext(由Rehabman建立 - 附在指南的末尾)
- CodecCommander.kext
- ALC292.kext(附在最后指南)使用以下命令
这些文件你都可以到RehabMan的bitbucket获得:https://bitbucket.org/RehabMan/

重建缓存:
代码(文本):

sudo kextcache -i /

所有其他没有附加的kext可以在@RehabMan Github 找到:
https://github.com/RehabMan?tab=repositories


ACPI

为了使一切正常工作必须修补ACPI,感谢@RehabMan为他的天才工作,我们已经转移到一个更好的修补过程,我们之前已经提到 - HOTPATCH.
我将ACPI文件夹附加到包含所有SSDT的所有SSDT的指南中,以使其能够正常工作.

将ACPI文件夹复制到桌面,打开终端并进入终端窗口输入命令:
代码(文本):
代码(文字):

cd desktop/ACPI

iasl SSDT-T440P.dsl

这将创建最终的“组装”SSDT-T440P.aml,您应该将其复制到HDDSSD EFICloverACPIPatched

我也附加了一个预先建立的SSDT-T440P.aml,不需要任何更改,如果您遵循/安装所有内容,如本指南所述.

为了更好的理解阅读指南:
https://www.tonymacx86.com/threads/guide-using-clover-to-hotpatch-acpi.200137/

现在将我的config.plist复制到“您的HDD/SSD分区的EFI/Clover/目录下,除了您必须根据笔记本电脑在Kernel&Kext Patches部分选择补丁,

例如:
- 如果您有英特尔无线/蓝牙卡必须禁用国家/地区代码补丁.
- 如果您具有标准的Bios,并且具有标准的32/64 DVMT-prealloc,则默认情况下,在config.plist上启用该修补程序
- 如果您在Bios中设置了128MB DVMT-prealloc,则该修补程序已经存在,但是您必须启用它手动.


为iMessage&FaceTime生成您自己的SMBIOS数据

每个设备都具有唯一的ID,并且在访问Apple Services之前创建您的唯一ID是有管理权限的.
欲了解更多细节我将添加链接到两个相应的引导从@jaymonkey&@ P1LGRIM为iMessage的

P1LGRIM -一个傻瓜指南的iMessage:
https://www.tonymacx86.com/threads/an-idiots-guide-to-imessage.196827/

JayMonkey - 如何修复iMessage:
https://www.tonymacx86.com/threads/how-to-fix-imessage.110471/



电源管理

电源管理已经使用SSDT-PluginType1实现,它是Haswell +上的一种新方法,它通过将PluginType1注册到OEM CPU中使用SSDT,这种新方法是Generic,应该适用于Haswell或更高版本的所有CPU型号.
因此,不再需要使用Piker Alpha脚本生成的SSDT.

为了进一步的故障排除和更好的理解阅读指南:
https://www.tonymacx86.com/threads/guide-native-power-management-for-laptops.175801/


电池

电池状态已通过高级ACPI修补方法“Hotpatch”

从@RehabMan [指南]使 用三叶草到“hotpatch”ACPI:
https://www.tonymacx86.com/threads/guide-using-clover-to-hotpatch-acpi.200137/

他描述了必要的步骤:

建议先使用热补丁补丁电池.当你得到它的工作,然后尝试hotpatch.此外,未修补电池的代码和电池代码修补程序之间的区别是非常有帮助的.您可以使用“diffmerge”这样的工具比较每个.如果笔记本电脑存储库中已经有一个静态电池补丁,这一点尤其如此.

一般程序:
- 使用本机ACPI
- 使用静态补丁(验证它的工作原理)从电池状态开始
- 使用diffmerge将未修补的代码与补丁代码进行比较
- 对于每种不同的方法,实现“重命名和替换”
- 对于EC字段,创建另一个EC操作区域(使用不同于原始名称的名称)和字段定义作为仅包含您需要修补的EC字段的“覆盖”
- 创建EC重叠,您可以在修补的DSDT中使用修补的FieldOperationRegion,然后删除未修补的字段
- 使用External允许SSDT中的替换方法访问ACPI集合(通常为DSDT)中其他位置定义的字段
- 让编译器指出您需要的位置使用外部
- 注意不同范围内具有重复名称的符号

在这种情况下,我将尝试解释/演示T440P电池“hotpatch”,因为他的指南没有详细的例子,但是可以在他的Github笔记本电脑Repos上找到很多例子(例如U430 Repo),

第一步是创建一个新的SSDT,在这种情况下,我们将其命名为“SSDT-BAT”
- 与diffmerge相比,我们看到“OperationRegion(ECOR)”是包含多个字节字段的“电池”区域.
- 我们在“SSDT-BAT”中添加了OperationRegion,并将其更改为不会干扰本机ACPI的名称.
- 在我的例子中,我将其从“ECOR”命名为“ECR1”,在我们重命名OperationRegion(ECR1)后,我们添加了修补的偏移量:
代码(文字):

  
  1. Scope (_SB.PCI0.LPC.EC)
  2.     {
  3.         OperationRegion (ECR1, EmbeddedControl, 0x00, 0x0100)
  4.         Field (ECR1, ByteAcc, NoLock, Preserve)
  5.         {
  6.             Offset(0x36),
  7.             HWC0, 8,HWC1, 8,
  8.             //Offset (0x4C)
  9.             //HTMH, 8, (0x4C)
  10.             //HTML, 8, (0x4D)
  11.             Offset (0x4E),
  12.             HWK0, 8,HWK1, 8,
  13.         }
  14.         Field (ECR1, ByteAcc, NoLock, Preserve)
  15.         {
  16.             Offset(0xA0),
  17.             BR00, 8,BR01, 8,
  18.             BF00, 8,BF01, 8,
  19.             //SBAE, 16, (A4/A5)
  20.             //SBRS, 16, (A6/A7)
  21.             Offset(0xA8),
  22.             BA00, 8,BA01, 8,
  23.             BV00, 8,BV01, 8,
  24.         }
  25.         Field (ECR1, ByteAcc, NoLock, Preserve)
  26.         {
  27.             Offset(0xA0),
  28.             BB00, 8,BB01, 8,
  29.         }
  30.         Field (ECR1, ByteAcc, NoLock, Preserve)
  31.         {
  32.             Offset(0xA0),
  33.             BD00, 8,BD01, 8,
  34.             SB00, 8,SB01, 8,
  35.             //SBOM, 16, (A4/A5)
  36.             //SBSI, 16, (A6/A7)
  37.             //SBDT, 16, (A8/A9)
  38.             Offset(0xAA),
  39.             BS00, 8,BS01, 8,
  40.         }
  41.         Field (ECR1, ByteAcc, NoLock, Preserve)
  42.         {
  43.             Offset(0xA0),
  44.             //SBCH, 32,
  45.             SH00,8,SH01,8,SH02,8,SH03,8,
  46.         }
复制代码


- 在“diffmerge”上,我们看到我们的电池需要修补的方法是GBIF和GBST
- 我们将这些修补的GBIF和GBST复制到SSDT-BAT
代码(文字):

  1. Method (GBIF, 3, NotSerialized)
  2.         {
  3.             Acquire (BATM, 0xFFFF)
  4.             If (Arg2)
  5.             {
  6.                 Or (Arg0, 0x01, HIID)
  7.                 Store (B1B2(BB00,BB01), Local7)
  8.                 ShiftRight (Local7, 0x0F, Local7)
  9.                 XOr (Local7, 0x01, Index (Arg1, 0x00))
  10.                 Store (Arg0, HIID)
  11.                 If (Local7)
  12.                 {
  13.                     Multiply (B1B2(BF00,BF01), 0x0A, Local1)
  14.                 }
  15.                 Else
  16.                 {
  17.                     Store (B1B2(BF00,BF01), Local1)
  18.                 }

  19.                 Store (Local1, Index (Arg1, 0x02))
  20.                 Or (Arg0, 0x02, HIID)
  21.                 If (Local7)
  22.                 {
  23.                     Multiply (B1B2(BD00,BD01), 0x0A, Local0)
  24.                 }
  25.                 Else
  26.                 {
  27.                     Store (B1B2(BD00,BD01), Local0)
  28.                 }

  29.                 Store (Local0, Index (Arg1, 0x01))
  30.                 Divide (Local1, 0x14, Local2, Index (Arg1, 0x05))
  31.                 If (Local7)
  32.                 {
  33.                     Store (0xC8, Index (Arg1, 0x06))
  34.                 }
  35.                 ElseIf (B1B2(SB00,SB01))
  36.                 {
  37.                     Divide (0x00030D40, B1B2(SB00,SB01), Local2, Index (Arg1, 0x06))
  38.                 }
  39.                 Else
  40.                 {
  41.                     Store (0x00, Index (Arg1, 0x06))
  42.                 }

  43.                 Store (B1B2(SB00,SB01), Index (Arg1, 0x04))
  44.                 Store (B1B2(BS00,BS01), Local0)
  45.                 Name (SERN, Buffer (0x06)
  46.                 {
  47.                     "     "
  48.                 })
  49.                 Store (0x04, Local2)
  50.                 While (Local0)
  51.                 {
  52.                     Divide (Local0, 0x0A, Local1, Local0)
  53.                     Add (Local1, 0x30, Index (SERN, Local2))
  54.                     Decrement (Local2)
  55.                 }

  56.                 Store (SERN, Index (Arg1, 0x0A))
  57.                 Or (Arg0, 0x06, HIID)
  58.                 Store (RECB(0xA0,128), Index (Arg1, 0x09))
  59.                 Or (Arg0, 0x04, HIID)
  60.                 Name (BTYP, Buffer (0x05)
  61.                 {
  62.                     0x00, 0x00, 0x00, 0x00, 0x00
  63.                 })
  64.                 Store (B1B4(SH00,SH01,SH02,SH03), BTYP)
  65.                 Store (BTYP, Index (Arg1, 0x0B))
  66.                 Or (Arg0, 0x05, HIID)
  67.                 Store (RECB(0xA0,128), Index (Arg1, 0x0C))
  68.             }
  69.             Else
  70.             {
  71.                 Store (0xFFFFFFFF, Index (Arg1, 0x01))
  72.                 Store (0x00, Index (Arg1, 0x05))
  73.                 Store (0x00, Index (Arg1, 0x06))
  74.                 Store (0xFFFFFFFF, Index (Arg1, 0x02))
  75.             }

  76.             Release (BATM)
  77.             Return (Arg1)
  78.         }

  79.         Method (GBST, 4, NotSerialized)
  80.         {
  81.             Acquire (BATM, 0xFFFF)
  82.             If (And (Arg1, 0x20))
  83.             {
  84.                 Store (0x02, Local0)
  85.             }
  86.             ElseIf (And (Arg1, 0x40))
  87.             {
  88.                 Store (0x01, Local0)
  89.             }
  90.             Else
  91.             {
  92.                 Store (0x00, Local0)
  93.             }

  94.             If (And (Arg1, 0x07)) {}
  95.             Else
  96.             {
  97.                 Or (Local0, 0x04, Local0)
  98.             }

  99.             If (LEqual (And (Arg1, 0x07), 0x07))
  100.             {
  101.                 Store (0x04, Local0)
  102.                 Store (0x00, Local1)
  103.                 Store (0x00, Local2)
  104.                 Store (0x00, Local3)
  105.             }
  106.             Else
  107.             {
  108.                 Store (Arg0, HIID)
  109.                 Store (B1B2(BV00,BV01), Local3)
  110.                 If (Arg2)
  111.                 {
  112.                     Multiply (B1B2(BR00,BR01), 0x0A, Local2)
  113.                 }
  114.                 Else
  115.                 {
  116.                     Store (B1B2(BR00,BR01), Local2)
  117.                 }

  118.                 Store (B1B2(BA00,BA01), Local1)
  119.                 If (LGreaterEqual (Local1, 0x8000))
  120.                 {
  121.                     If (And (Local0, 0x01))
  122.                     {
  123.                         Subtract (0x00010000, Local1, Local1)
  124.                     }
  125.                     Else
  126.                     {
  127.                         Store (0x00, Local1)
  128.                     }
  129.                 }
  130.                 ElseIf (LNot (And (Local0, 0x02)))
  131.                 {
  132.                     Store (0x00, Local1)
  133.                 }

  134.                 If (Arg2)
  135.                 {
  136.                     Multiply (Local3, Local1, Local1)
  137.                     Divide (Local1, 0x03E8, Local7, Local1)
  138.                 }
  139.             }

  140.             Store (Local0, Index (Arg3, 0x00))
  141.             Store (Local1, Index (Arg3, 0x01))
  142.             Store (Local2, Index (Arg3, 0x02))
  143.             Store (Local3, Index (Arg3, 0x03))
  144.             Release (BATM)
  145.             Return (Arg3)
  146.         }
复制代码




- 添加修补的方法后,我们将其重命名为config.plist(GBST到XBST)&(GBIF到XBIF)
- 之后,我们添加Rehabman的方法来读取和写入这些修补方法:
代码(文字):

  1. Method (RE1B, 1, NotSerialized)
  2.         {
  3.             OperationRegion(ERAM, EmbeddedControl, Arg0, 1)
  4.             Field(ERAM, ByteAcc, NoLock, Preserve) { BYTE, 8 }
  5.             Return(BYTE)
  6.         }
  7.         Method (RECB, 2, Serialized)
  8.         // Arg0 - offset in bytes from zero-based EC
  9.         // Arg1 - size of buffer in bits
  10.         {
  11.             ShiftRight(Add(Arg1,7), 3, Arg1)
  12.             Name(TEMP, Buffer(Arg1) { })
  13.             Add(Arg0, Arg1, Arg1)
  14.             Store(0, Local0)
  15.             While (LLess(Arg0, Arg1))
  16.             {
  17.                 Store(RE1B(Arg0), Index(TEMP, Local0))
  18.                 Increment(Arg0)
  19.                 Increment(Local0)
  20.             }
  21.             Return(TEMP)
  22.         }
  23.      
  24.         Method (WE1B, 2, NotSerialized)
  25.         {
  26.             OperationRegion(ERAM, EmbeddedControl, Arg0, 1)
  27.             Field(ERAM, ByteAcc, NoLock, Preserve) { BYTE, 8 }
  28.             Store(Arg1, BYTE)
  29.         }
  30.      
  31.         Method (WECB, 3, Serialized)
  32.         // Arg0 - offset in bytes from zero-based EC
  33.         // Arg1 - size of buffer in bits
  34.         // Arg2 - value to write
  35.         {
  36.             ShiftRight(Add(Arg1,7), 3, Arg1)
  37.             Name(TEMP, Buffer(Arg1) { })
  38.             Store(Arg2, TEMP)
  39.             Add(Arg0, Arg1, Arg1)
  40.             Store(0, Local0)
  41.             While (LLess(Arg0, Arg1))
  42.             {
  43.                 WE1B(Arg0, DerefOf(Index(TEMP, Local0)))
  44.                 Increment(Arg0)
  45.                 Increment(Local0)
  46.             }
  47.         }
  48.     }
  49.       
  50.     Method (B1B2, 2, NotSerialized) { Return (Or (Arg0, ShiftLeft (Arg1, 8))) }

  51.     Method (B1B4, 4, NotSerialized)
  52.     {

  53.         Store(Arg3, Local0)
  54.         Or(Arg2, ShiftLeft(Local0, 8), Local0)
  55.         Or(Arg1, ShiftLeft(Local0, 8), Local0)
  56.         Or(Arg0, ShiftLeft(Local0, 8), Local0)
  57.         Return(Local0
复制代码

)
    }


- 从Diffmerge我们看到即使是_WAK方法需要更改,所以我们将补丁的_WAK复制到SSDT-BAT中:
代码(文字):


音频

音频从最新的Ubuntu版本的Linux编解码器转储正确打补丁.
这是ALC292与Combo Jack唯一完全打补丁的注射器/ AppleHDA,我测试了我发现的每一个网页上,没有一个通过组合插孔正确工作的外部麦克风.

- 扬声器(大容量,与Windows相同)
- 耳机(尼斯清脆的声音)
- 内部麦克风(尼斯声音,高输入声音)
- 外部麦克风(比Windows上更好的输入音量)
- HDMI音频(通过Mini DisplayPort - 在我的情况“MiniDP到HDMIVGADVI适配器”)


安装

- ALC292.kext,将与kext部分中提到的所有其他kext一起安装
- ALC_Fix - 将alc_fix文件夹复制到桌面并打开终端并输入:
代码(文本):

cd desktop/alc_fix

- 输入命令后,打开alc_fix文件夹在桌面上拖动install.sh并放在终端窗口中,然后按回车键,它将安装alc_fix到他正确的位置.
- SSDT-ALC292:是ALC292的Custom Codec Commander Profile,它包含编解码器的配置,可以安装/组装到SSDT-T440P.aml


USB

USB端口已经固定,因为我认为所有这些都具有HM86芯片组的1个配置,只需使用不同的CPU,存储选项,WiFi卡等,
所有这些应用都适用于所有的Lenovo T440P型号.所有端口都被移动到Rehabman推荐的XHC进入他的指南,我们禁用EHCI控制器,因为我们没有使用它们也减少了能源消耗 - “更长的电池寿命”

我还包括一个SSDT-PTS,其中包括解决问题,如果USB设备被插入,你关闭笔记本电脑,它会重新启动,而不是关闭笔记本电脑.这个SSDT确实解决了这个问题:
代码(文字):

// Overriding _PTS

DefinitionBlock("", "SSDT", 2, "T440P", "PTS", 0)
{
    External(ZPTS, MethodObj)
    External(_SB.PCI0.XHC.PMEE, FieldUnitObj)
    // In DSDT, native _PTS is renamed to ZPTS
    // As a result, calls to this method land here.
    Method(_PTS, 1)
    {
        ZPTS(Arg0)
        If (5 == Arg0)
        {
            // fix "auto start after shutdown"
            \_SB.PCI0.XHC.PMEE = 0
        }
    }
}
//EOF


该SSDT-PTS已经预先构建到SSDT-T440P.aml并包含在ACPI文件夹中.

如果您遇到问题,我现在的USB INjector“SSDT-USB”被组装成SSDT-T440P.aml:
关注@RehabMan指南:
https://www.tonymacx86.com/threads/guide-10-11-usb-changes-and-solutions.173616/


无线和蓝牙

为了无线和蓝牙正常工作,上面提到的kexts FakePCIID,FakePCIID_Broadcom_WiFi,BrcmFirmwareRepo,BrcmPatchRam2是WiFi和蓝牙工作所需要的一切.
对于High Sierra,我们不需要-fcvo&BT4LEHandoffHotspot补丁,因为苹果对于他们所做的更改/修复.

在这种情况下您可以做的单一定制部分是国家代码补丁

Name: AirPortBrcm4360
Find: 4183fcff 7435488d 55d0
Replace: 66c70623 61eb348d 55d0

就变成改为: “23 61”你的国家代码(十六进制) “这23 61进制ASCII码为:#A”(通用)

对于转换阅读并使用:
http://www.rapidtables.com/convert/number/hex-to-ascii.htm

有关进一步的讨论/开发/故障排除,请参阅指南:
https://www.tonymacx86.com/threads/guide-airport-pcie-half-mini-v2.104850/

字数限制,我也不继续补充原贴了,有兴趣的看完整版附件吧。



[ ... ]
附件: 你需要登录才可以下载或查看附件。没有帐号?注册
1

查看全部评分

长发控

Rank: 7Rank: 7Rank: 7

UID
651986
帖子
2182
PB币
1900
贡献
0
技术
63
活跃
1728
发表于 2017-10-7 17:09:14 IP属地江苏 |显示全部楼层
有thinkpad e550的吗?不是hasll的

Rank: 2Rank: 2

UID
4642511
帖子
153
PB币
0
贡献
0
技术
0
活跃
165
发表于 2017-10-7 17:58:41 IP属地广东 |显示全部楼层
支持啊,我就是用这个机器
现在加了个黑苹果群,用的 hotpatch3.3 不过睡眠 的呼吸灯不太正常,插入 usb网卡,睡眠不正常

Rank: 5Rank: 5Rank: 5

UID
4444090
帖子
779
PB币
614
贡献
0
技术
1
活跃
2511
发表于 2017-10-7 21:26:02 IP属地江苏 |显示全部楼层
lff520520 发表于 2017-10-7 17:09
有thinkpad e550的吗?不是hasll的

没有找到,Haswell的

Rank: 2Rank: 2

UID
4642511
帖子
153
PB币
0
贡献
0
技术
0
活跃
165
发表于 2017-10-8 16:48:49 IP属地广东 |显示全部楼层
原作者怎么不把整个搞好的efi文件发出来啊

点评

sleepnet  把关键部分***出来,其他的基本都是通用的,根据需要替换就好了。  发表于 2017-10-8 22:55 IP属地江苏

Rank: 5Rank: 5Rank: 5

UID
4444090
帖子
779
PB币
614
贡献
0
技术
1
活跃
2511
发表于 2017-10-8 22:56:08 IP属地江苏 |显示全部楼层
chanjiancan 发表于 2017-10-7 17:58
支持啊,我就是用这个机器
现在加了个黑苹果群,用的 hotpatch3.3 不过睡眠 的呼吸灯不太正常,插入 usb网 ...

不建议使用USB网卡,影响睡眠功能,如果可以,还是更换内置无线网卡吧

Rank: 5Rank: 5Rank: 5

UID
1423674
帖子
1164
PB币
2301
贡献
0
技术
1
活跃
2321
发表于 2017-10-9 08:42:20 IP属地山东 |显示全部楼层
感谢楼主分享

Rank: 5Rank: 5Rank: 5

UID
1423674
帖子
1164
PB币
2301
贡献
0
技术
1
活跃
2321
发表于 2017-10-9 08:45:30 IP属地山东 |显示全部楼层
有EFI for ThinkPadT440P 吗?分享一下,感谢!

Rank: 5Rank: 5Rank: 5

UID
4444090
帖子
779
PB币
614
贡献
0
技术
1
活跃
2511
发表于 2017-10-9 09:02:09 IP属地江苏 |显示全部楼层
shangjigang 发表于 2017-10-9 08:45
有EFI for ThinkPadT440P 吗?分享一下,感谢!

这个我没有,只是看有帖子,直接翻译了一下,你可以找一份最近的EFI文件,然后把clover/acpi/patch目录下的文件清空,然后将ssdt-t440.aml放到里面,至于kext驱动,原贴下面是有的,放到对应位置就好了,config.plist也用原贴的。

Rank: 5Rank: 5Rank: 5

UID
1649373
帖子
550
PB币
100
贡献
0
技术
0
活跃
736
发表于 2017-10-9 12:29:24 IP属地山东 来自手机 |显示全部楼层
怎么提取本机的patch RM有的不适用

Rank: 5Rank: 5Rank: 5

UID
422161
帖子
894
PB币
681
贡献
0
技术
0
活跃
1972
发表于 2017-10-12 22:44:05 IP属地广东 |显示全部楼层
感谢分享。

Rank: 2Rank: 2

UID
4642511
帖子
153
PB币
0
贡献
0
技术
0
活跃
165
发表于 2017-10-15 20:11:54 IP属地广东 |显示全部楼层
sleepnet 发表于 2017-10-8 22:56
不建议使用USB网卡,影响睡眠功能,如果可以,还是更换内置无线网卡吧

联想很恶心的,不能随意换网卡,只能

Rank: 2Rank: 2

UID
4642511
帖子
153
PB币
0
贡献
0
技术
0
活跃
165
发表于 2017-10-15 20:12:25 IP属地广东 |显示全部楼层
sleepnet 发表于 2017-10-8 22:56
不建议使用USB网卡,影响睡眠功能,如果可以,还是更换内置无线网卡吧

联想很恶心的,不能随意换网卡,只能换他白名单内的那4个网卡,否则不能开机

Rank: 5Rank: 5Rank: 5

UID
4444090
帖子
779
PB币
614
贡献
0
技术
1
活跃
2511
发表于 2017-10-15 20:21:01 IP属地江苏 |显示全部楼层
chanjiancan 发表于 2017-10-15 20:12
联想很恶心的,不能随意换网卡,只能换他白名单内的那4个网卡,否则不能开机

不建议使用USB无线网卡,会影响睡眠功能,只能刷白名单了

Rank: 7Rank: 7Rank: 7

UID
1029664
帖子
1701
PB币
3567
贡献
0
技术
4
活跃
899
发表于 2017-10-18 17:07:35 IP属地天津 |显示全部楼层
求T460p如何安装~~

Rank: 5Rank: 5Rank: 5

UID
4444090
帖子
779
PB币
614
贡献
0
技术
1
活跃
2511
发表于 2017-10-18 17:25:17 IP属地江苏 |显示全部楼层
onlyjim 发表于 2017-10-18 17:07
求T460p如何安装~~

安装的方法都是一模一样的,找的合适的EFI文件就可以安装了。

Rank: 1

UID
4807954
帖子
93
PB币
0
贡献
0
技术
0
活跃
87
发表于 2017-10-22 14:57:16 IP属地北京 |显示全部楼层
感谢分享。

Rank: 1

UID
4807954
帖子
93
PB币
0
贡献
0
技术
0
活跃
87
发表于 2017-10-22 15:05:23 IP属地北京 |显示全部楼层

感谢分享。

Rank: 9

UID
2163032
帖子
4654
PB币
5619
贡献
0
技术
21
活跃
2406
发表于 2017-10-26 07:55:22 IP属地台湾 |显示全部楼层
THANK YOU.

Rank: 5Rank: 5Rank: 5

UID
1423674
帖子
1164
PB币
2301
贡献
0
技术
1
活跃
2321
发表于 2017-10-26 08:50:06 IP属地山东 |显示全部楼层
T440P 原装网卡有解决吗?
回顶部
Copyright (C) 2005-2024 pcbeta.com, All rights reserved
Powered by Discuz!  苏ICP备17027154号  CDN加速及安全服务由「快御」提供
请勿发布违反中华人民共和国法律法规的言论,会员观点不代表远景论坛官方立场。
远景在线 | 远景论坛 | 苹果论坛 | Win11论坛 | Win10论坛 | Win8论坛 | Win7论坛 | WP论坛 | Office论坛