前言

本篇文章纯粹记录个人完善黑苹果过程,如有不对的地方,还请多多指教。

DSDT补丁

DSDT如何打补丁?

  1. 提取DSDT,SSDT
    网上有很多种提取的教程,大致有三种方案

    1. 在windows使用AIDA64进行提取
    2. 在linux进行提取
    3. 在clover按F4进行提取(推荐,最简单)
    4. mac下使用MacIASL进行提取
      我这里使用的是第三种方案提取,直接在clover界面按F4就可以提取完成,存储位置就在EFI/Clover/ACPI/origin/,然后将DSDT.aml与SSDT.aml复制出来即可。

挂载EFI分区方法

#查看EFI分区的IDENTIFIER
diskutil list
#挂在分区
diskutil mount disk0s1

  1. 反编译dsdt(参考链接)
    在提取完成之后,则需要对dsdt进行反编译。下载isal,解压后放在/usr/bin目录下。
    为了避免反编译出现更多的错误,先建立refs.txt,
#用到的命令#定位到用户根目录
cd ~
#创建refs.txt
touch refs.txt
#编辑refs.txt
vi refs.txt
#键盘按‘I’键进入编辑模式,然后粘贴下面代码
#粘贴完成后依次按esc,shift+:
#输入wq,并回车保存
#查看文件是否编辑正确,如果打印出的内容正是粘贴内容则OK
cat refs.txt

粘贴内容:

External(MDBG, MethodObj, 1)
External(_GPE.MMTB, MethodObj, 0)
External(_SB.PCI0.LPCB.H_EC.ECWT, MethodObj, 2)
External(_SB.PCI0.LPCB.H_EC.ECRD, MethodObj, 1)
External(_SB.PCI0.LPCB.H_EC.ECMD, MethodObj, 1)
External(_SB.PCI0.PEG0.PEGP.SGPO, MethodObj, 2)
External(_SB.PCI0.GFX0.DD02._BCM, MethodObj, 1)
External(_SB.PCI0.SAT0.SDSM, MethodObj, 4)
External(_GPE.VHOV, MethodObj, 3)
External(_SB.PCI0.XHC.RHUB.TPLD, MethodObj, 2)

前面的文件准备完成后,开始反编译。打开终端,将存放DSDT,SSDT的文件夹拖入终端,回车就可以定位到该文件夹,输入如下指令:

iasl -da -dl -fe ~/refs.txt *.aml

反编译完成。

  1. 用MacISAL打开反编译的DSDT.dsl,点击上方的compile,查看弹出的compiler Summary框底部是否显示有错,如图我的是0 error没有错误,有错误的可以根据报错百度修正错误。
  2. 打入补丁
    点击上方的Patch,粘贴补丁代码,点击Apply应用,应用完成后,点击Close关掉即可。

    然后再次点击Compile进行编译,如果有错继续修正错误。没错就点击顶部状态栏的File->Save as

    文件格式选择ACPI Machine Language Binary,即aml格式。

    保存为DSDT.aml后,将打好补丁的DSDT放到EFI\Clover\ACPI\Patch目录下,然后重启即可。

补丁列表

  1. 电池电量补丁
    这个补丁我是直接打的ASUS-N55SL的补丁,可以直接打上
#Maintained by: RehabMan for: Laptop Patches
#battery_ASUS-N55SL.txt# created by RehabMan 8/12/2013
# created originally for jesselid# works for:
#  ASUS N55SL, BIOS rev. 204
#  ASUS VivoBook series
#  ASUS Zenbook UX31A
#  ASUS UX301LA
#  ASUS X553E-SX399V
#  ASUS F501A
#  ASUS K55VM
#  ASUS U46SV, BIOS rev. 2.04
#  ASUS N43
#  ASUS PU500CA (90NB00F1-M01120)
#  ASUS N73SV
#  ASUS X401A-WX108
#  ASUS F551CA Bios rev. 207
#  ASUS S551LB VivoBook
#  ASUS ZenBook UX32VD
#  ASUS ZenBook UX32V
#  ASUS F550L-X455H
#  ASUS X53S
#  ASUS K550JD-XX003H
#  ASUS G53SX
#  ASUS K56CB
#  ASUS UX305
#  ASUS N550LF (per gabberZ)
#  ASUS TP300LA
#  ASUS X200LA
#  ASUS TP500LA (per haimann951)
#  ASUS U46E (per jacopers)
#  ASUS N550JK (per sonicmule)
#  ASUS K46CM
#  ASUS N76-VB-T4038H (per Tamshiii)
#  ASUS Zenbook Pro UX501VW (per Jingu)
#  ASUS G751JY (per Going Bald)
#  ASUS S300CA (per mugen441)
#  ASUS F556UA-AB32 (per Jdazzle44)
#  ASUS UX306UA (per MaraficeEye)
#  ASUS N550JV (per Xracer99)
#  ASUS X540LA (per arg274)
#  ASUS X540LJ (per palash)
#  ASUS X550VX (per vualeks)
#  ASUS UX330UA (per fluxo)
#  ASUS UX303UB (per CyanTech)
#  ASUS K550JK (per m3ftwz)
#  ASUS TP500LB (per Archangeliques)
#  ASUS X556UA (per ben9923)
#  ASUS UX410 (per minhquang211090)
#  ASUS N552VW (per nicolas2121)
#  ASUS Vivobook NV752 (per tmazzoni)
#  ASUS Strix FX502VM/GL502VM (per benspoonder)
#  ASUS X53E (per REvandenBerg)
#  ASUS UX430 (per starcentral)
# ...
#  and many othersinto method label B1B2 remove_entry;
into definitionblock code_regex . insert
begin
Method (B1B2, 2, NotSerialized) { Return (Or (Arg0, ShiftLeft (Arg1, 8))) }\n
end;# not really for battery, but might come in handy to read fan speed(s)
into device label EC0 code_regex TAH0,\s+16 replace_matched begin TH00,8,TH01,8 end;
into device label EC0 code_regex TAH1,\s+16 replace_matched begin TH10,8,TH11,8 end;
into method label TACH code_regex \(TAH0, replace_matched begin (B1B2(TH00,TH01), end;
into method label TACH code_regex \(TAH1, replace_matched begin (B1B2(TH10,TH11), end;
into method label GFAN code_regex \(\\_SB\.PCI0\.LPCB\.EC0\.TAH0, replace_matched begin (B1B2(\\_SB.PCI0.LPCB.EC0.TH00,\\_SB.PCI0.LPCB.EC0.TH01), end;# battery EC
into device label EC0 code_regex B0SN,\s+16 replace_matched begin B0S0,8,B0S1,8 end;
into device label EC0 code_regex B1SN,\s+16 replace_matched begin B1S0,8,B1S1,8 end;
into method label BIFA code_regex \(B0SN, replace_matched begin (B1B2(B0S0,B0S1), end;
into method label BIFA code_regex \(B1SN, replace_matched begin (B1B2(B1S0,B1S1), end;
into device label EC0 code_regex DT2B,\s+16 replace_matched begin T2B0,8,T2B1,8 end;
into method label SMBR code_regex \(DT2B, replace_matched begin (B1B2(T2B0,T2B1), end;
into method label SMBW code_regex Store\s+\(([^,]*),\s+DT2B\) replace_matched
begin
Store(%1,T2B0) Store(ShiftRight(%1,8),T2B1)
end;into device label EC0 insert
begin
Method (RDBA, 0, Serialized)\n
{\nName (TEMP, Buffer(0x20) { })\nStore (BA00, Index(TEMP, 0x00))\nStore (BA01, Index(TEMP, 0x01))\nStore (BA02, Index(TEMP, 0x02))\nStore (BA03, Index(TEMP, 0x03))\nStore (BA04, Index(TEMP, 0x04))\nStore (BA05, Index(TEMP, 0x05))\nStore (BA06, Index(TEMP, 0x06))\nStore (BA07, Index(TEMP, 0x07))\nStore (BA08, Index(TEMP, 0x08))\nStore (BA09, Index(TEMP, 0x09))\nStore (BA0A, Index(TEMP, 0x0A))\nStore (BA0B, Index(TEMP, 0x0B))\nStore (BA0C, Index(TEMP, 0x0C))\nStore (BA0D, Index(TEMP, 0x0D))\nStore (BA0E, Index(TEMP, 0x0E))\nStore (BA0F, Index(TEMP, 0x0F))\nStore (BA10, Index(TEMP, 0x10))\nStore (BA11, Index(TEMP, 0x11))\nStore (BA12, Index(TEMP, 0x12))\nStore (BA13, Index(TEMP, 0x13))\nStore (BA14, Index(TEMP, 0x14))\nStore (BA15, Index(TEMP, 0x15))\nStore (BA16, Index(TEMP, 0x16))\nStore (BA17, Index(TEMP, 0x17))\nStore (BA18, Index(TEMP, 0x18))\nStore (BA19, Index(TEMP, 0x19))\nStore (BA1A, Index(TEMP, 0x1A))\nStore (BA1B, Index(TEMP, 0x1B))\nStore (BA1C, Index(TEMP, 0x1C))\nStore (BA1D, Index(TEMP, 0x1D))\nStore (BA1E, Index(TEMP, 0x1E))\nStore (BA1F, Index(TEMP, 0x1F))\nReturn (TEMP)\n
}\n
end;into device label EC0 insert
begin
Method (WRBA, 1, Serialized)\n
{\nName (TEMP, Buffer(0x20) { })\nStore (Arg0, TEMP)\nStore (DerefOf(Index(TEMP, 0x00)), BA00)\nStore (DerefOf(Index(TEMP, 0x01)), BA01)\nStore (DerefOf(Index(TEMP, 0x02)), BA02)\nStore (DerefOf(Index(TEMP, 0x03)), BA03)\nStore (DerefOf(Index(TEMP, 0x04)), BA04)\nStore (DerefOf(Index(TEMP, 0x05)), BA05)\nStore (DerefOf(Index(TEMP, 0x06)), BA06)\nStore (DerefOf(Index(TEMP, 0x07)), BA07)\nStore (DerefOf(Index(TEMP, 0x08)), BA08)\nStore (DerefOf(Index(TEMP, 0x09)), BA09)\nStore (DerefOf(Index(TEMP, 0x0A)), BA0A)\nStore (DerefOf(Index(TEMP, 0x0B)), BA0B)\nStore (DerefOf(Index(TEMP, 0x0C)), BA0C)\nStore (DerefOf(Index(TEMP, 0x0D)), BA0D)\nStore (DerefOf(Index(TEMP, 0x0E)), BA0E)\nStore (DerefOf(Index(TEMP, 0x0F)), BA0F)\nStore (DerefOf(Index(TEMP, 0x10)), BA10)\nStore (DerefOf(Index(TEMP, 0x11)), BA11)\nStore (DerefOf(Index(TEMP, 0x12)), BA12)\nStore (DerefOf(Index(TEMP, 0x13)), BA13)\nStore (DerefOf(Index(TEMP, 0x14)), BA14)\nStore (DerefOf(Index(TEMP, 0x15)), BA15)\nStore (DerefOf(Index(TEMP, 0x16)), BA16)\nStore (DerefOf(Index(TEMP, 0x17)), BA17)\nStore (DerefOf(Index(TEMP, 0x18)), BA18)\nStore (DerefOf(Index(TEMP, 0x19)), BA19)\nStore (DerefOf(Index(TEMP, 0x1A)), BA1A)\nStore (DerefOf(Index(TEMP, 0x1B)), BA1B)\nStore (DerefOf(Index(TEMP, 0x1C)), BA1C)\nStore (DerefOf(Index(TEMP, 0x1D)), BA1D)\nStore (DerefOf(Index(TEMP, 0x1E)), BA1E)\nStore (DerefOf(Index(TEMP, 0x1F)), BA1F)\n
}\n
end;into device label EC0 code_regex BDAT,\s+256 replace_matched
begin
//BDAT, 256,\n
BA00,8,BA01,8,BA02,8,BA03,8,\n
BA04,8,BA05,8,BA06,8,BA07,8,\n
BA08,8,BA09,8,BA0A,8,BA0B,8,\n
BA0C,8,BA0D,8,BA0E,8,BA0F,8,\n
BA10,8,BA11,8,BA12,8,BA13,8,\n
BA14,8,BA15,8,BA16,8,BA17,8,\n
BA18,8,BA19,8,BA1A,8,BA1B,8,\n
BA1C,8,BA1D,8,BA1E,8,BA1F,8\n
end;into method label SMBR code_regex \(BDAT, replaceall_matched begin (RDBA(), end;
into method label SMBR code_regex Store\s\((.*),\sBDAT\) replaceall_matched begin WRBA(%1) end;
into method label SMBW code_regex Store\s\((.*),\sBDAT\) replaceall_matched begin WRBA(%1) end;
into method label ECSB code_regex Store\s\((.*),\sBDAT\) replaceall_matched begin WRBA(%1) end;
into method label ECSB code_regex \(BDAT, replaceall_matched begin (RDBA(), end;into device label EC0 insert
begin
Method (RDBB, 0, Serialized)\n
{\nName (TEMP, Buffer(0x20) { })\nStore (BB00, Index(TEMP, 0x00))\nStore (BB01, Index(TEMP, 0x01))\nStore (BB02, Index(TEMP, 0x02))\nStore (BB03, Index(TEMP, 0x03))\nStore (BB04, Index(TEMP, 0x04))\nStore (BB05, Index(TEMP, 0x05))\nStore (BB06, Index(TEMP, 0x06))\nStore (BB07, Index(TEMP, 0x07))\nStore (BB08, Index(TEMP, 0x08))\nStore (BB09, Index(TEMP, 0x09))\nStore (BB0A, Index(TEMP, 0x0A))\nStore (BB0B, Index(TEMP, 0x0B))\nStore (BB0C, Index(TEMP, 0x0C))\nStore (BB0D, Index(TEMP, 0x0D))\nStore (BB0E, Index(TEMP, 0x0E))\nStore (BB0F, Index(TEMP, 0x0F))\nStore (BB10, Index(TEMP, 0x10))\nStore (BB11, Index(TEMP, 0x11))\nStore (BB12, Index(TEMP, 0x12))\nStore (BB13, Index(TEMP, 0x13))\nStore (BB14, Index(TEMP, 0x14))\nStore (BB15, Index(TEMP, 0x15))\nStore (BB16, Index(TEMP, 0x16))\nStore (BB17, Index(TEMP, 0x17))\nStore (BB18, Index(TEMP, 0x18))\nStore (BB19, Index(TEMP, 0x19))\nStore (BB1A, Index(TEMP, 0x1A))\nStore (BB1B, Index(TEMP, 0x1B))\nStore (BB1C, Index(TEMP, 0x1C))\nStore (BB1D, Index(TEMP, 0x1D))\nStore (BB1E, Index(TEMP, 0x1E))\nStore (BB1F, Index(TEMP, 0x1F))\nReturn (TEMP)\n
}\n
end;into device label EC0 insert
begin
Method (WRBB, 1, Serialized)\n
{\nName (TEMP, Buffer(0x20) { })\nStore (Arg0, TEMP)\nStore (DerefOf(Index(TEMP, 0x00)), BB00)\nStore (DerefOf(Index(TEMP, 0x01)), BB01)\nStore (DerefOf(Index(TEMP, 0x02)), BB02)\nStore (DerefOf(Index(TEMP, 0x03)), BB03)\nStore (DerefOf(Index(TEMP, 0x04)), BB04)\nStore (DerefOf(Index(TEMP, 0x05)), BB05)\nStore (DerefOf(Index(TEMP, 0x06)), BB06)\nStore (DerefOf(Index(TEMP, 0x07)), BB07)\nStore (DerefOf(Index(TEMP, 0x08)), BB08)\nStore (DerefOf(Index(TEMP, 0x09)), BB09)\nStore (DerefOf(Index(TEMP, 0x0A)), BB0A)\nStore (DerefOf(Index(TEMP, 0x0B)), BB0B)\nStore (DerefOf(Index(TEMP, 0x0C)), BB0C)\nStore (DerefOf(Index(TEMP, 0x0D)), BB0D)\nStore (DerefOf(Index(TEMP, 0x0E)), BB0E)\nStore (DerefOf(Index(TEMP, 0x0F)), BB0F)\nStore (DerefOf(Index(TEMP, 0x10)), BB10)\nStore (DerefOf(Index(TEMP, 0x11)), BB11)\nStore (DerefOf(Index(TEMP, 0x12)), BB12)\nStore (DerefOf(Index(TEMP, 0x13)), BB13)\nStore (DerefOf(Index(TEMP, 0x14)), BB14)\nStore (DerefOf(Index(TEMP, 0x15)), BB15)\nStore (DerefOf(Index(TEMP, 0x16)), BB16)\nStore (DerefOf(Index(TEMP, 0x17)), BB17)\nStore (DerefOf(Index(TEMP, 0x18)), BB18)\nStore (DerefOf(Index(TEMP, 0x19)), BB19)\nStore (DerefOf(Index(TEMP, 0x1A)), BB1A)\nStore (DerefOf(Index(TEMP, 0x1B)), BB1B)\nStore (DerefOf(Index(TEMP, 0x1C)), BB1C)\nStore (DerefOf(Index(TEMP, 0x1D)), BB1D)\nStore (DerefOf(Index(TEMP, 0x1E)), BB1E)\nStore (DerefOf(Index(TEMP, 0x1F)), BB1F)\n
}\n
end;into device label EC0 code_regex BDA2,\s+256 replace_matched
begin
//BDA2, 256,\n
BB00,8,BB01,8,BB02,8,BB03,8,\n
BB04,8,BB05,8,BB06,8,BB07,8,\n
BB08,8,BB09,8,BB0A,8,BB0B,8,\n
BB0C,8,BB0D,8,BB0E,8,BB0F,8,\n
BB10,8,BB11,8,BB12,8,BB13,8,\n
BB14,8,BB15,8,BB16,8,BB17,8,\n
BB18,8,BB19,8,BB1A,8,BB1B,8,\n
BB1C,8,BB1D,8,BB1E,8,BB1F,8\n
end;into method label SMBR code_regex \(BDA2, replaceall_matched begin (RDBB(), end;
into method label SMBR code_regex Store\s\((.*),\sBDA2\) replaceall_matched begin WRBB(%1) end;
into method label SMBW code_regex Store\s\((.*),\sBDA2\) replaceall_matched begin WRBB(%1) end;
into method label ECSB code_regex Store\s\((.*),\sBDA2\) replaceall_matched begin WRBB(%1) end;
into method label ECSB code_regex \(BDA2, replaceall_matched begin (RDBB(), end;# additional work for _BIX method present in some ASUS laptopsinto device label EC0 code_regex B0C3,\s+16 replace_matched begin XC30,8,XC31,8 end;
into device label EC0 code_regex B1C3,\s+16 replace_matched begin YC30,8,YC31,8 end;
into_all method label _BIX code_regex \(\^\^LPCB\.EC0\.B0C3, replaceall_matched begin (B1B2(^^LPCB.EC0.XC30,^^LPCB.EC0.XC31), end;
into_all method label _BIX code_regex \(\^\^LPCB\.EC0\.B1C3, replaceall_matched begin (B1B2(^^LPCB.EC0.YC30,^^LPCB.EC0.YC31), end;
into_all method label _BIX code_regex \(B0C3, replaceall_matched begin (B1B2(XC30,XC31), end;# or could remove the _BIX method if it turns out not to work#into_all method label _BIX remove_entry;#fix logic error in some newer ASUS DSDTs (issue #23)
into method label FBST code_regex If\s\(CHGS\s\(Zero\)\)[\s]+\{[\s]+Store\s\(0x02,\sLocal0\)[\s]+\}[\s]+Else[\s]+\{[\s]+Store\s\(One,\sLocal0\)[\s]+\} replaceall_matched
begin
If (CHGS (Zero))\n
{\nStore (0x02, Local0)\n
}\n
Else\n
{\nStore (Zero, Local0)\n
}
end;
  1. 键盘背光补丁
    按照文章内容直接搜索Device (ATKD),在下面的{后面回车加入如下代码
Name (BOFF, Zero)Method (SKBL, 1, NotSerialized){If (Or (LEqual (Arg0, 0xED), LEqual (Arg0, 0xFD))){If (And (LEqual (Arg0, 0xED), LEqual (BOFF, 0xEA))){Store (Zero, Local0)Store (Arg0, BOFF)}Else{If (And (LEqual (Arg0, 0xFD), LEqual (BOFF, 0xFA))){Store (Zero, Local0)Store (Arg0, BOFF)}Else{Return (BOFF)}}}Else{If (Or (LEqual (Arg0, 0xEA), LEqual (Arg0, 0xFA))){Store (KBLV, Local0)Store (Arg0, BOFF)}Else{Store (Arg0, Local0)Store (Arg0, KBLV)}}Store (DerefOf (Index (PWKB, Local0)), Local1)^^PCI0.LPCB.EC0.WRAM (0x04B1, Local1) // Haswell/Ivy^^PCI0.LPCB.EC0.WRAM (0x044B, Local1) // Sandy/IvyReturn (Local0)}Method (GKBL, 1, NotSerialized){If (LEqual (Arg0, 0xFF)){Return (BOFF)}Return (KBLV)}
  1. 关机不断电补丁
# Change method _PTS where Arg0 is 0x05 (shutdown)
#
into method label _PTS code_regex_not If\s*\(LEqual\s*\(Arg0,\s*0x05\)\) code_regex ^((?:.|\n)*)$ replace_matched
beginIf (LEqual (Arg0, 0x05))\n{\nStore (Zero, SLPE)\nSleep (0x10)\n}\nElse\n{\n
%1}
end;
into definitionblock code_regex . code_regex_not OperationRegion\s*\(PMRS insert
begin
OperationRegion (PMRS, SystemIO, 0x0430, One)\n
Field (PMRS, ByteAcc, NoLock, Preserve)\n
{\n,   4, \nSLPE,   1\n
}
end
  1. 自动背光补丁
# Insert method ALSS into ATKD device for reading ambient illuminance values in my driver
into method label ALSS parent_label ATKD remove_entry;
into device label ATKD insert begin
Method (ALSS, 0, NotSerialized)\n{\nReturn (^^PCI0.LPCB.EC0.RALS ())\n}
end;
  1. 睡眠立即唤醒
    这里我找到的有两种方法,第一种是USB定制,不仅解决睡眠立即唤醒,同时也可以解决USB3.0的问题;第二种则是通过屏蔽dsdt唤醒方法实现睡眠。这里推荐使用第一种,方法参考黑果小兵教程链接(另附视频教程链接);下面介绍第二种方法:

在终端中查看唤醒原因

log show --start '2019-12-23 09:20:00' --end '2019-12-23 09:25:00' |grep 'Wake reason'

我的查询结果为

2019-12-23 09:24:45.440325+0800 0x73       Default     0x0                  0      kernel: (AppleACPIPlatform) Wake reason: HDEF XHC

可以看到后面有HDEF XHC两个原因,在dsdt中搜索Device(HDEF),将其下面的_PRW方法注释删除都行,然后保存重启再次尝试。如果依然唤醒则重复这些动作,后面的原因变了则继续使用该方法注释删除,直到能够睡眠即可。

ASUS UB303 黑苹果 DSDT补丁相关推荐

  1. 简单 黑苹果dsdt教程_黑苹果笔记本:关于DSDT亮度表的分析与修改

    前言:前部分引用远景论坛的内容,<最近研究了一下关于亮度的调节,发现了一些心得,我个人不喜欢最低亮度黑屏,虽然白果是这样的,但是我个人不喜欢黑屏,没有修改之前,最低亮度依然很亮,晚上很刺眼,修改 ...

  2. 黑苹果热补丁hotpatch来禁用笔记本独显

    写在前面 最近我根据 RehabMan 的 hotpatch 添加了一些路径做了一个屏蔽独显得 hotpatch 来屏蔽独显解决一些升级 10.13 后因为 nv_disable 参数失效而卡在 Wi ...

  3. AMD cpu黑苹果 修改补丁 OpenCore教程

    文章目录[隐藏] 先听我说! 特征 缺点 支持AMD CPU 有关PAT修补程序的信息 TRX 40系统注记 支持MacOS版本 指令 特别说明 提供了Beta版本的补丁,但在操作系统发布之前不提供支 ...

  4. 简单 黑苹果dsdt教程_黑苹果教程(三)

    安装各种驱动.... 安装驱动是件很复杂的事楼主就不详细讲解了..只说一下自己的经验..供大家参考参考... 1.学习DSDT 制作仿冒驱动..这种方法最好,... 2.SSDT与CPU变频提取... ...

  5. 简单 黑苹果dsdt教程_史上最全教程,让你的黑苹果不是梦(DSDT. SSDT 篇)

    DSDT. SSDT 篇 这里不做详解,只给大概方向和启用方法.因为各个主板的DSDT都不同,给你这些文件也没用 1.提取DSDT,SSDT 在clover 界面按F4即可提取,或者用软件 clove ...

  6. 简单 黑苹果dsdt教程_小米Ruby笔记本安装98%完美黑苹果教程

    因为日常做大数据处理, 之前的mac 16g内存经常捉襟见肘. 后来在网上看到小米新出的ruby笔记本, 发现可以自己更换内存和硬盘, 而且i7-8550u的cpu没和我17年的mac pro差多少, ...

  7. amd速龙黑苹果内核补丁_Lilu.kext v1.4.2 黑苹果内核扩展补丁

    概述 Lilu.kext是一个开源内核扩展,为macOS的整个系统提供了一个平台,用于任意kext,库和程序修补.作为安装黑苹果系统时候的一款必不可缺驱动,安装其他的插件都需要依赖此kext作用,不管 ...

  8. 【黑苹果教程】对笔记本的 DSDT/SSDT 打补丁

    版权说明:本文章参考tonymacx86的Patching LAPTOP DSDT/SSDTs这篇文章, 如果需要转载,请注明原文地址:http://blog.csdn.net/wr132/artic ...

  9. amd黑苹果万能显卡驱动_黑苹果系统安装之声卡驱动

    黑苹果系统安装之声卡驱动, 首先,删除万能声卡驱动 路径:EFI/clover/kexts/other,在kext文件夹下找到 VoodooHDA 删除即可,没有删除默认加载万能声卡驱动,无法加载ap ...

最新文章

  1. Web前端性能优化——编写高效的JavaScript
  2. angularjs与PHP,我应该混合AngularJS与PHP框架吗?
  3. pic单片机低电压检测_pic单片机汇编语言讲解(上)
  4. 转载 300年前的黑色“巫女”
  5. 二、数据预处理——缺失值处理
  6. mysql default unix_timestamp(now())
  7. vue2.X slot 分发内容
  8. python入门系列:函数
  9. 【报告分享】2021年中国新经济企业500强发展研究报告.pdf(附下载链接)
  10. android系统移植学习笔记一
  11. 整理python小爬虫
  12. ffmpeg ACC音频播放
  13. 安装eclipse汉化包后无法打开eclipse的解决方法
  14. CCD和CMOS大小(尺寸)对比图
  15. linux安装chrome浏览器(中标麒麟+龙芯CPU)
  16. 1. 2020年《DeepMind&UCL深度学习讲座》第1讲:机器学习和AI入门【中文字幕】
  17. 设计模式笔记--访问者模式
  18. 使用python定义简单工资扣税实际收入函数
  19. java中求两个数的最小公倍数,最大公约数的简便方法
  20. 少儿编程网站源码和scratch课程

热门文章

  1. 2023最新SSM计算机毕业设计选题大全(附源码+LW)之java网上旅游订票服务系统10r27
  2. 密码学【java】初探究之springboo集成mybatis,swagger,数字签名
  3. 软件操作说明-微信送礼
  4. uc浏览器电脑版 v1.0.370 官方版
  5. 构建大规模分布式服务--高并发、高可用架构系列,高质量原创好文
  6. 前端介绍----html基础和css的认识
  7. 为什么deceit显示无服务器,Deceit进不去怎么办 Deceit游戏崩溃闪退解决方法
  8. maxdos,everything工具共享
  9. 台达wplsoft2.34指令表
  10. 计算机专业口号霸气,计算机气势口号