黑苹果DSDT注入代码驱动部分声卡的教程

摘 要

多谢shangty的投稿,这段时间网站垃圾留言严重,改为收费邀请注册,这样一来用户也好管理了,垃圾留言也渐渐变得少了,也刚好弄点费用来维护服务器的开销。扯远了下面来看看投稿内容吧!此片文章详细的介绍了如何利用DSDT注入代码的方式驱动你的声卡设备,从此摆脱voodohda 本教程支持更新,首先看一下此文中支持更新的声卡型号吧!

  • 支持型号:笔记本
  • 支持型号:台式机
  • 第一步:先确定你(声卡)的音频编解码器(codec)
  • 第二步:注入你声卡的设备ID
  • 代码解释 Codec-id
  • 代码解释 layout-id
  • 文章结尾
  • 驱动下载

文章目录

文章前言

多谢shangty的投稿,这段时间网站垃圾留言严重,改为收费邀请注册,这样一来用户也好管理了,垃圾留言也渐渐变得少了,也刚好弄点费用来维护服务器的开销。扯远了下面来看看投稿内容吧!

玩黑苹果安装不是重点,重点是驱动好不好找,如果硬件支持那就不用说了顺顺利利的安装使用即可,要是不支持那就费劲了,最好在安装之前看一下自己的硬件设备适不适合,有没有成功案例,然后找一篇适合自己的教程进行安装。每一篇教程并不代表适合所有人,不过大体步骤也就那样子,也只能作为参考。

此片文章详细的介绍了如何利用DSDT注入代码的方式驱动你的声卡设备,从此摆脱voodohda 本教程支持更新,首先看一下此文中支持更新的声卡型号吧!

支持型号:笔记本

点击下面的显示,查看支持的笔记本声卡型号

展开

  • AppleHDA-272.18-ALC233
  • AppleHDA-272.18-ALC235
  • AppleHDA-272.18-ALC255
  • AppleHDA-272.18-ALC268
  • AppleHDA-272.18-ALC269
  • AppleHDA-272.18-ALC269
  • AppleHDA-272.18-ALC269
  • AppleHDA-272.18-ALC269VB
  • AppleHDA-272.18-ALC269VB
  • AppleHDA-272.18-ALC269VB
  • AppleHDA-272.18-ALC269VC
  • AppleHDA-272.18-ALC269VC
  • AppleHDA-272.18-ALC270
  • AppleHDA-272.18-ALC270
  • AppleHDA-272.18-ALC271x
  • AppleHDA-272.18-ALC272
  • AppleHDA-272.18-ALC275
  • AppleHDA-272.18-ALC280
  • AppleHDA-272.18-ALC282
  • AppleHDA-272.18-ALC282
  • AppleHDA-272.18-ALC283
  • AppleHDA-272.18-ALC284
  • AppleHDA-272.18-ALC288
  • AppleHDA-272.18-ALC290
  • AppleHDA-272.18-ALC663
  • AppleHDA-272.18-ALC663
  • AppleHDA-272.18-ALC888
  • AppleHDA-272.18-ALC892
  • AppleHDA-272.18-CX20583
  • AppleHDA-272.18-CX20585
  • AppleHDA-272.18-CX20588
  • AppleHDA-272.18-CX20590
  • AppleHDA-272.18-CX20752
  • AppleHDA-272.18-CX20756
  • AppleHDA-272.18-CX20757
  • AppleHDA-272.18-IDT_92HD66C3:65
  • AppleHDA-272.18-IDT92HD75B2X5
  • AppleHDA-272.18-IDT92HD75B3X5
  • AppleHDA-272.18-IDT92HD81B1X5
  • AppleHDA-272.18-IDT92HD87B1
  • AppleHDA-272.18-IDT92HD91BXX
  • AppleHDA-272.18-IDT92HD93BXX
  • AppleHDA-272.18-VIA_VT1802
  • AppleHDA-272.18-VIA_VT1802

这里面有适合你的吗?接下来看一下台式机的

支持型号:台式机

展开

  • AppleHDA-272.18-ADI1988B
  • AppleHDA-272.18-ADI2000B
  • AppleHDA-272.18-ALC662
  • AppleHDA-272.18-ALC882
  • AppleHDA-272.18-ALC883
  • AppleHDA-272.18-ALC887VD
  • AppleHDA-272.18-ALC888
  • AppleHDA-272.18-ALC889
  • AppleHDA-272.18-ALC889a
  • AppleHDA-272.18-ALC892
  • AppleHDA-272.18-ALC898
  • AppleHDA-272.18-ALC1150
  • AppleHDA-272.18-VIA__VT2020_2021

特别提示:百度网盘经常有失去分享的可能性,请你尽快保存到你的网盘,以免下面分享链接失败!

第一步:先确定你(声卡)的音频编解码器(codec)

win下打开设备管理器,DEVICE_ID 对应的 音频编解码器Codec_id: 10ec0889 如下图:

第二步:注入你声卡的设备ID

注入的方法较多这里就教大家dsdt注入:

在clover引导界面按f4提取,提取时没有任何提示,会自动保存在(目录)efi-clover-ACPI-origin,然后再编译成dsl格式(这里就不多做解释了),mac下用Maciasl。 以idt92hd91bxx声卡注入id为例

首先打开 Maciasl ,查找“hdef”,如下图:

接下来打开下载的声卡驱动包,如下图:

里面带了一组DSDT注入代码。将此代码替换我们DSDT中hdef下的代码,如下面的图片:

代码解释 Codec-id

其中:codec-id 即第一步查得的DEVICE_ID ,例如我的idt92hd91bxx=10ec0889,全部倒序填写,每两数值前加0x补位,即 0x89,0x08,0xEC,0x10

代码解释 layout-id

其中layout-id 即下载驱动对应的声卡layout-id,查得下载idthd91bxx驱动,Layout_ID=3 (笔记本一般都是三),全部倒序填写,每两数值前加0x补位,即 0x07,0x00,0x00,0x00。

另外dsdt中需要有DTGP函数 如果没有就复制下面这段代码加进去
展开

  1. Method (DTGP, 5, NotSerialized)
  2.     {
  3.         If (LEqual (Arg0, Buffer (0x10)
  4.                 {
  5.                     /* 0000 */    0xC6, 0xB7, 0xB5, 0xA0, 0x18, 0x13, 0x1C, 0x44,
  6.                     /* 0008 */    0xB0, 0xC9, 0xFE, 0x69, 0x5E, 0xAF, 0x94, 0x9B
  7.                 }))
  8.         {
  9.             If (LEqual (Arg1, One))
  10.             {
  11.                 If (LEqual (Arg2, Zero))
  12.                 {
  13.                     Store (Buffer (One)
  14.                         {
  15.                             0x03
  16.                         }, Arg4)
  17.                     Return (One)
  18.                 }
  19.                 If (LEqual (Arg2, One))
  20.                 {
  21.                     Return (One)
  22.                 }
  23.             }
  24.         }
  25.         Store (Buffer (One)
  26.             {
  27.                 0x00
  28.             }, Arg4)
  29.         Return (Zero)
  30.     }

利用主板上声卡的接口数目定义的Layout_ID数值如下:

Layout_ID 3 = 适用于笔记本电脑
Layout_ID 5 = 支持3接口(粉色,绿色,蓝色)
Layout_ID 7 = 支持5/6接口(灰色,黑色,橙色,粉色,绿色,蓝色)
Layout_ID 9 =  支持5/6接口 (灰色,黑色,橙色,粉色,绿色,蓝色, CodecAddress: 2)

文章结尾

以上文章是来自用户shangty的投稿,如果发现有什么问题欢迎留言反馈或者加群讨论吧!

驱动下载

售价:0 x币提取密码:******** [隐藏信息,登陆并发表评论后刷新可见!]发表评论

文件下载

百度网盘下载

Warnings:Possible operator timeout is ignored | DSDT错误修复

错误描述

DSDT编译提示错误Warnings:Possible operator timeout is ignored!翻译为超时被忽略。

修复方法

解决方法如下:

  1. Method (ENFG, 1, NotSerialized)  
  2.      {  
  3.        Acquire (MUT0, 0x0FFF)       //改为0xFFFF  
  4.          Store (0x87, INDX)  
  5.          Store (0x87, INDX)  
  6.          Store (Arg0, LDN)  
  7.      }  

将一下代码

  1. Acquire (MUT0, 0x0FFF)  

修改为

  1. Acquire (MUT0, 0xFFFF)  

最后代笔变更如下

  1. Method (ENFG, 1, NotSerialized)  
  2.      {  
  3.          Acquire (MUT0, 0xFFFF)  
  4.          Store (0x87, INDX)  
  5.          Store (0x87, INDX)  
  6.          Store (Arg0, LDN)  
  7.      }  

工具下载

MaciASL – DSDT Editor V1.3 B252 | OS X aml编译器

syntax error,unexpected ‘}’,expecting ‘(’ | DSDT错误修复

错误介绍

虽然现在DSDT的提取有各种各样的方法,编译能力也是越来越强,错误越来越少,但是有些童鞋还是坚持用比较旧的方法来提取,所以错误在所难免,就比如

  1. syntax error,unexpected ‘}’,expecting ‘(’  

此错误好像haswell平台的都会出现,而且此错误是个关键错误,一般会出现几个甚至是几十个的错误警告。

修改方法

编译时提示是语法错误,定位代码到如下代码:

  1. If (CondRefOf (\_SB.PCI0.XHC.PS0X))
  2.    {
  3.       PS0X
  4.    }

即应该是要对PS0X进行某种操作,可是代码中却只有要操作的对象,没有操作的动作。在PS0X后加上一对小括号,如 PS0X ( )。 或者对PS0X添加一个操作,如Store(Zero, PS0X)

或者External (PS0X,MethodObj)语句把 PS0X定义成方法,那么执行应该用 PS0X()。

其它一样的错误提示的修改方法相同,只是不是同样的字母。修改好所有这样的错误后,Object does not exits ()的提示就全都消失了。

syntax error,unexpected PARSEOP_ | DSDT错误修复

错误描述

编译DSDT时提示syntax error,unexpected PARSEOP_xxxx错误,这里的xxxx会不同,或为LOCAL0、LOCAL1、ARG0、Zero等。但是修改放大略同。点击错误提示软件定位到如下代码:

  1. Store (CMSR (0x63), Local1)
  2. Store (CMSR (0x64), Local0)
  3. Store (^^^GFX0.DD1F.LGBR, Local1)
  4. Local1
  5. Store (^^^GFX0.DD1F.LGBR, Local0)
  6. Local0
  7. Or (ShiftLeft (Local1, 0x04), Local0,Local0)
  8. Or (ShiftLeft (Local0, 0x10), CAUS, Local0)
  9. Store (Zero, ^^EC0.WHOK)
  10. Store (Zero, CAUS)
  11. Return (Local0)

以上代码只是类似,或许你的与此代码不同,大致的修改方法一样。

修复方法

这是语法错误。即应该是要对” Local0”进行某种操作,可是代码中却只有要操作的对象,没有操作的动作。

我们只需要将Local0或错误提示时的字符串用//注释掉或者删除即可。

用acpidump提取ACPI表 包括DSDT SSDT等

文章前言

读了一下远景论坛联合SSDT编译DSDT以减少错误的帖子,自己做实验也没成功编译成aml文件,但是发现了几种提取ACPI表的方法。

ACPI由很多表组成,包括:RSDP,SDTH,RSDT,FADT,FACS,DSDT,SSDT,MADT,SBST,XSDT,ECDT,SLIT,SRAT。(略写了,不用太详细介绍)其中DSDT就是它的一个重要的描述表。

DSDT使用的编程语言是ASL(ACPI Source Language),具体的可以百度一下官方网站,并且网站提供了工具一些平台的编译器,可能Unix平台需要自己下载编译后才能用,我现在用的KALI linux,顺利编译成功,会提供下载。

编译后的文件除了IASL外还提供了很多工具,我只略研究了一下IASL和APCIDUMP这两个工具,ACPIDUMP用来提取ACPI表的工具,iasl是编译程序。

好了,一知半解吓唧唧了半天,进入正题提取DSDT,有英文好的可以翻译一下帮助文件。

iasl选项

iasl -h //获取更多帮助

acpidump选项

acpidump -h //获取更多帮助

实现方法

sudo cp acpidump iasl /usr/bin  复制acpidump和iasl到/usr/bin目录

mkdir acpi  //新建一个acpi文件夹

cd acpi  //进入acpi文件夹

acpidump -b  //提取acpi所有表

iasl *.dat  //编译dat文件为dsl

打开acpi目录你会看到DSDT和SSDT等文件了。如果需要dsdt或者ssdt的可以拷贝出来用MACIASL等软件进行修复错误并编译吧,目前我就研究到这里,又能力的朋友也可以好好研究一下,比如说如何只提取DSDT或者SSDT文件吧。

文件下载

此处为隐藏的内容!发表评论并刷新,才能查看发表评论

syntax error, unexpected PARSEOP_FIELD | DSDT错误修复

错误提示

编译DSDT时提示syntax error, unexpected PARSEOP_FIELD错误!点击错误提示定位到一下代码:

  1. OperationRegion (HRPE, SystemMemory,\_GPE.MMTB (0x04), Field (HRPE, DWordAcc, Lock, Preserve)
  2.       {
  3.       VDPC,  32
  4.       })

修复方法

根据提示,知道这是语法错误,即对Field的操作有误。需要把Field从OperationRegion中分离。

  1. OperationRegion (HRPE, SystemMemory,\_GPE.MMTB (0x04), 0x04) Field (HRPE, DWordAcc, Lock, Preserve)
  2.       {
  3.       VDPC,  32
  4.       }   //在这里删除小括号

在顶部的(0x04)后面加一个0x04,最后再加上小括号,最后面大括号后面的小括号也要删掉。

修改完后,有可能会出现syntaxerror,unexpected ‘}’,expecting ‘(’,按这篇文章修改syntaxerror,unexpected ‘}’,expecting ‘(’ | DSDT错误修复即可。

Control Method should be made Serialized | DSDT错误修复

问题描述

编译DSDT时遇到Control Method should be made Serialized(due to creation of named objects within)错误提示,如下图:

点击错误提示来到一下代码:

  1. Method (UXDV, 1, NotSerialized)  
  2.     {  
  3.         Store (0xFF, Local0)  
  4.         Name (T_0, Zero)  
  5.         Store (Add (Arg0, Zero), T_0) /* \UXDV.T_0_ */  
  6.         If (LEqual (T_0, 0x03F8))  
  7.         {  
  8.             Store (Zero, Local0)  
  9.         }  

问题出在Method (UXDV, 1, NotSerialized)这句代码上。

修复方法

Method (UXDV, 1, NotSerialized)修改成Method (UXDV, 1, Serialized)即可

修复前代码:

  1. Method (UXDV, 1, NotSerialized)  
  2.     {  
  3.         Store (0xFF, Local0)  
  4.         Name (T_0, Zero)  
  5.         Store (Add (Arg0, Zero), T_0) /* \UXDV.T_0_ */  
  6.         If (LEqual (T_0, 0x03F8))  
  7.         {  
  8.             Store (Zero, Local0)  
  9.         }  

修复后代码:

  1. Method (UXDV, 1, Serialized)  
  2.     {  
  3.         Store (0xFF, Local0)  
  4.         Name (T_0, Zero)  
  5.         Store (Add (Arg0, Zero), T_0) /* \UXDV.T_0_ */  
  6.         If (LEqual (T_0, 0x03F8))  
  7.         {  
  8.             Store (Zero, Local0)  
  9.         }  

错误有好几处,以上面的修改实例修复其他几处错误提示即可。

Invalid combination of length and Min/Max fixed flags | DSDT错误修复

错误描述

Error:Invalid combination of length and Min/Max fixed flags,错误提示无效的组合长度。

错误修复

错误代码类似于0x0000, // Length这样或者0x0000000000000000, // Length十六进制代码。

0x0000, // Length改成0x0001, // Length 即可修复错误,如果是别的数值0X10FFF这样的数值,我们可以用系统自带的计算器将这个数值转换成十进制然后加一再转换成十六进制就可以了。

文章总结

这篇文章其实在于手机DSDT的编译错误,没有什么技术含量,如果有需要的可以留着备用。

Remark :Use of compiler reserved name(_T_1) | DSDT错误修复

错误描述

Remark :Use of compiler reserved name(_T_1) 翻译为:使用了编译器保留的名称(_T_1)。

错误提示可能会有多个,下面是一个例子。

If (LEqual (_T_0, 0x03))   
                      {    
                        SIT3 (PRM0, PRM1, PRM2)   
                      }   
                      Else   
                      {    
                        If (LEqual (_T_0, 0x04))   ………………   
                      }

错误修复

修改前

If (LEqual (_T_0, 0x03))   
                      {    
                        SIT3 (PRM0, PRM1, PRM2)   
                      }   
                      Else   
                      {    
                        If (LEqual (_T_0, 0x04))   ………………   
                      }

替换所有的_T_1为T_1,可能替换一处还是会有提示,必须替换全部的_T_1T_1

修改后

If (LEqual (T_0, 0x03))   //在这里修改
                      {    
                        SIT3 (PRM0, PRM1, PRM2)   
                      }   
                      Else   
                      {    
                        If (LEqual (T_0, 0x04))   ………………   //还有这里
                      }

工具下载

MaciASL – DSDT Editor V1.3 B252 | OS X aml编译器

Object does not exist (DTGP) | DSDT错误DTGP函数修复

错误描述

DSDT错误提示Object does not exist (DTGP),去烧DTGP函数,

修复方法

DTGP函数代码:

  1. Method (DTGP, 5, NotSerialized)  
  2.     {  
  3.         If (LEqual (Arg0, Buffer (0x10)  
  4.                 {  
  5.                     /* 0000 */    0xC60xB70xB50xA00x180x130x1C0x44,   
  6.                     /* 0008 */    0xB00xC90xFE0x690x5E0xAF0x940x9B  
  7.                 }))  
  8.         {  
  9.             If (LEqual (Arg1, One))  
  10.             {  
  11.                 If (LEqual (Arg2, Zero))  
  12.                 {  
  13.                     Store (Buffer (One)  
  14.                         {  
  15.                             0x03  
  16.                         }, Arg4)  
  17.                     Return (One)  
  18.                 }  
  19.                 If (LEqual (Arg2, One))  
  20.                 {  
  21.                     Return (One)  
  22.                 }  
  23.             }  
  24.         }  
  25.         Store (Buffer (One)  
  26.             {  
  27.                 0x00  
  28.             }, Arg4)  
  29.         Return (Zero)  
  30.     }  

添加DTGP函数,把以上代码添加到顶部42行左右,添加以后如下图:

在此编译错误已经消失了。

相关下载

MaciASL – DSDT Editor V1.3 B252 | OS X aml编译器