sleepnet 发表于 2017-10-7 15:29

[翻译]Thinkpad T440p hotpatch指南

原贴链接: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)后,我们添加了修补的偏移量:
代码(文字):


Scope (_SB.PCI0.LPC.EC)
    {
      OperationRegion (ECR1, EmbeddedControl, 0x00, 0x0100)
      Field (ECR1, ByteAcc, NoLock, Preserve)
      {
            Offset(0x36),
            HWC0, 8,HWC1, 8,
            //Offset (0x4C)
            //HTMH, 8, (0x4C)
            //HTML, 8, (0x4D)
            Offset (0x4E),
            HWK0, 8,HWK1, 8,
      }
      Field (ECR1, ByteAcc, NoLock, Preserve)
      {
            Offset(0xA0),
            BR00, 8,BR01, 8,
            BF00, 8,BF01, 8,
            //SBAE, 16, (A4/A5)
            //SBRS, 16, (A6/A7)
            Offset(0xA8),
            BA00, 8,BA01, 8,
            BV00, 8,BV01, 8,
      }
      Field (ECR1, ByteAcc, NoLock, Preserve)
      {
            Offset(0xA0),
            BB00, 8,BB01, 8,
      }
      Field (ECR1, ByteAcc, NoLock, Preserve)
      {
            Offset(0xA0),
            BD00, 8,BD01, 8,
            SB00, 8,SB01, 8,
            //SBOM, 16, (A4/A5)
            //SBSI, 16, (A6/A7)
            //SBDT, 16, (A8/A9)
            Offset(0xAA),
            BS00, 8,BS01, 8,
      }
      Field (ECR1, ByteAcc, NoLock, Preserve)
      {
            Offset(0xA0),
            //SBCH, 32,
            SH00,8,SH01,8,SH02,8,SH03,8,
      }

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

Method (GBIF, 3, NotSerialized)
      {
            Acquire (BATM, 0xFFFF)
            If (Arg2)
            {
                Or (Arg0, 0x01, HIID)
                Store (B1B2(BB00,BB01), Local7)
                ShiftRight (Local7, 0x0F, Local7)
                XOr (Local7, 0x01, Index (Arg1, 0x00))
                Store (Arg0, HIID)
                If (Local7)
                {
                  Multiply (B1B2(BF00,BF01), 0x0A, Local1)
                }
                Else
                {
                  Store (B1B2(BF00,BF01), Local1)
                }

                Store (Local1, Index (Arg1, 0x02))
                Or (Arg0, 0x02, HIID)
                If (Local7)
                {
                  Multiply (B1B2(BD00,BD01), 0x0A, Local0)
                }
                Else
                {
                  Store (B1B2(BD00,BD01), Local0)
                }

                Store (Local0, Index (Arg1, 0x01))
                Divide (Local1, 0x14, Local2, Index (Arg1, 0x05))
                If (Local7)
                {
                  Store (0xC8, Index (Arg1, 0x06))
                }
                ElseIf (B1B2(SB00,SB01))
                {
                  Divide (0x00030D40, B1B2(SB00,SB01), Local2, Index (Arg1, 0x06))
                }
                Else
                {
                  Store (0x00, Index (Arg1, 0x06))
                }

                Store (B1B2(SB00,SB01), Index (Arg1, 0x04))
                Store (B1B2(BS00,BS01), Local0)
                Name (SERN, Buffer (0x06)
                {
                  "   "
                })
                Store (0x04, Local2)
                While (Local0)
                {
                  Divide (Local0, 0x0A, Local1, Local0)
                  Add (Local1, 0x30, Index (SERN, Local2))
                  Decrement (Local2)
                }

                Store (SERN, Index (Arg1, 0x0A))
                Or (Arg0, 0x06, HIID)
                Store (RECB(0xA0,128), Index (Arg1, 0x09))
                Or (Arg0, 0x04, HIID)
                Name (BTYP, Buffer (0x05)
                {
                  0x00, 0x00, 0x00, 0x00, 0x00
                })
                Store (B1B4(SH00,SH01,SH02,SH03), BTYP)
                Store (BTYP, Index (Arg1, 0x0B))
                Or (Arg0, 0x05, HIID)
                Store (RECB(0xA0,128), Index (Arg1, 0x0C))
            }
            Else
            {
                Store (0xFFFFFFFF, Index (Arg1, 0x01))
                Store (0x00, Index (Arg1, 0x05))
                Store (0x00, Index (Arg1, 0x06))
                Store (0xFFFFFFFF, Index (Arg1, 0x02))
            }

            Release (BATM)
            Return (Arg1)
      }

      Method (GBST, 4, NotSerialized)
      {
            Acquire (BATM, 0xFFFF)
            If (And (Arg1, 0x20))
            {
                Store (0x02, Local0)
            }
            ElseIf (And (Arg1, 0x40))
            {
                Store (0x01, Local0)
            }
            Else
            {
                Store (0x00, Local0)
            }

            If (And (Arg1, 0x07)) {}
            Else
            {
                Or (Local0, 0x04, Local0)
            }

            If (LEqual (And (Arg1, 0x07), 0x07))
            {
                Store (0x04, Local0)
                Store (0x00, Local1)
                Store (0x00, Local2)
                Store (0x00, Local3)
            }
            Else
            {
                Store (Arg0, HIID)
                Store (B1B2(BV00,BV01), Local3)
                If (Arg2)
                {
                  Multiply (B1B2(BR00,BR01), 0x0A, Local2)
                }
                Else
                {
                  Store (B1B2(BR00,BR01), Local2)
                }

                Store (B1B2(BA00,BA01), Local1)
                If (LGreaterEqual (Local1, 0x8000))
                {
                  If (And (Local0, 0x01))
                  {
                        Subtract (0x00010000, Local1, Local1)
                  }
                  Else
                  {
                        Store (0x00, Local1)
                  }
                }
                ElseIf (LNot (And (Local0, 0x02)))
                {
                  Store (0x00, Local1)
                }

                If (Arg2)
                {
                  Multiply (Local3, Local1, Local1)
                  Divide (Local1, 0x03E8, Local7, Local1)
                }
            }

            Store (Local0, Index (Arg3, 0x00))
            Store (Local1, Index (Arg3, 0x01))
            Store (Local2, Index (Arg3, 0x02))
            Store (Local3, Index (Arg3, 0x03))
            Release (BATM)
            Return (Arg3)
      }



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

Method (RE1B, 1, NotSerialized)
      {
            OperationRegion(ERAM, EmbeddedControl, Arg0, 1)
            Field(ERAM, ByteAcc, NoLock, Preserve) { BYTE, 8 }
            Return(BYTE)
      }
      Method (RECB, 2, Serialized)
      // Arg0 - offset in bytes from zero-based EC
      // Arg1 - size of buffer in bits
      {
            ShiftRight(Add(Arg1,7), 3, Arg1)
            Name(TEMP, Buffer(Arg1) { })
            Add(Arg0, Arg1, Arg1)
            Store(0, Local0)
            While (LLess(Arg0, Arg1))
            {
                Store(RE1B(Arg0), Index(TEMP, Local0))
                Increment(Arg0)
                Increment(Local0)
            }
            Return(TEMP)
      }
   
      Method (WE1B, 2, NotSerialized)
      {
            OperationRegion(ERAM, EmbeddedControl, Arg0, 1)
            Field(ERAM, ByteAcc, NoLock, Preserve) { BYTE, 8 }
            Store(Arg1, BYTE)
      }
   
      Method (WECB, 3, Serialized)
      // Arg0 - offset in bytes from zero-based EC
      // Arg1 - size of buffer in bits
      // Arg2 - value to write
      {
            ShiftRight(Add(Arg1,7), 3, Arg1)
            Name(TEMP, Buffer(Arg1) { })
            Store(Arg2, TEMP)
            Add(Arg0, Arg1, Arg1)
            Store(0, Local0)
            While (LLess(Arg0, Arg1))
            {
                WE1B(Arg0, DerefOf(Index(TEMP, Local0)))
                Increment(Arg0)
                Increment(Local0)
            }
      }
    }
      
    Method (B1B2, 2, NotSerialized) { Return (Or (Arg0, ShiftLeft (Arg1, 8))) }

    Method (B1B4, 4, NotSerialized)
    {

      Store(Arg3, Local0)
      Or(Arg2, ShiftLeft(Local0, 8), Local0)
      Or(Arg1, ShiftLeft(Local0, 8), Local0)
      Or(Arg0, ShiftLeft(Local0, 8), Local0)
      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/

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



[ ... ]

lff520520 发表于 2017-10-7 17:09

有thinkpad e550的吗?不是hasll的

chanjiancan 发表于 2017-10-7 17:58

支持啊,我就是用这个机器
现在加了个黑苹果群,用的 hotpatch3.3 不过睡眠 的呼吸灯不太正常,插入 usb网卡,睡眠不正常

sleepnet 发表于 2017-10-7 21:26

lff520520 发表于 2017-10-7 17:09 https://www.pcbeta.com/static/image/common/back.gif
有thinkpad e550的吗?不是hasll的

没有找到,Haswell的

chanjiancan 发表于 2017-10-8 16:48

原作者怎么不把整个搞好的efi文件发出来啊

sleepnet 发表于 2017-10-8 22:56

chanjiancan 发表于 2017-10-7 17:58 https://www.pcbeta.com/static/image/common/back.gif
支持啊,我就是用这个机器
现在加了个黑苹果群,用的 hotpatch3.3 不过睡眠 的呼吸灯不太正常,插入 usb网 ...

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

shangjigang 发表于 2017-10-9 08:42

感谢楼主分享

shangjigang 发表于 2017-10-9 08:45

有EFI for ThinkPadT440P 吗?分享一下,感谢!

sleepnet 发表于 2017-10-9 09:02

shangjigang 发表于 2017-10-9 08:45 https://www.pcbeta.com/static/image/common/back.gif
有EFI for ThinkPadT440P 吗?分享一下,感谢!

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

mm343162249 发表于 2017-10-9 12:29

怎么提取本机的patch RM有的不适用

hjfgt 发表于 2017-10-12 22:44

感谢分享。

chanjiancan 发表于 2017-10-15 20:11

sleepnet 发表于 2017-10-8 22:56 https://www.pcbeta.com/static/image/common/back.gif
不建议使用USB网卡,影响睡眠功能,如果可以,还是更换内置无线网卡吧

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

chanjiancan 发表于 2017-10-15 20:12

sleepnet 发表于 2017-10-8 22:56 https://www.pcbeta.com/static/image/common/back.gif
不建议使用USB网卡,影响睡眠功能,如果可以,还是更换内置无线网卡吧

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

sleepnet 发表于 2017-10-15 20:21

chanjiancan 发表于 2017-10-15 20:12 https://www.pcbeta.com/static/image/common/back.gif
联想很恶心的,不能随意换网卡,只能换他白名单内的那4个网卡,否则不能开机

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

onlyjim 发表于 2017-10-18 17:07

求T460p如何安装~~

sleepnet 发表于 2017-10-18 17:25

onlyjim 发表于 2017-10-18 17:07 https://www.pcbeta.com/static/image/common/back.gif
求T460p如何安装~~

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

程攀攀 发表于 2017-10-22 14:57

感谢分享。

程攀攀 发表于 2017-10-22 15:05


感谢分享。

limurphy 发表于 2017-10-26 07:55

THANK YOU.

shangjigang 发表于 2017-10-26 08:50

T440P 原装网卡有解决吗?
页: [1] 2
查看完整版本: [翻译]Thinkpad T440p hotpatch指南