好咧
就这样吧

[教程] AppleALC使用和修改教程

-------------------------------------------------------------------

 PlistEdit Pro 1.8.2汉化破解版.zip (4.08 MB, 下载次数: 153) 

 zlib转换器.zip (166.91 KB, 下载次数: 141) 

 iDSDT.zip (4.37 MB, 下载次数: 167) 

-------------------------------------------------------------------
操作前必看:
多次安装万能驱动可能会造成不知名的原因无法加载AppleHDA,
确定方法为查看功能扩展中查看AppleHDA是否加载。
已知俩款声卡使用AppleALC无效:ALC662,CX20590
-------------------------------------------------------------------
本教程以ALC887为例,希望方法简单了能让更多小白完美驱动声卡。
在终端输入代码,下载AppleALC

  1. git clone https://github.com/vit9696/AppleALC
复制代码

记录codec中以下内容:
①Address值

 
address值只有0和2俩种情况,本帖举例中为0

②在codec中搜索Pin Default

 



 


如上图如果搜到的内容中间有N/A则不记录(后方有N/A,可记录)

 


如上图如果搜到的内容无N/A则记录下一串数字后面的设备名称和往上找最近的node值
此处记录的内容为:Line Out at Ext Rear    Node=0x14

整理下记录内容如下:
Line Out at Ext Rear    Node=0x14    线路输出
Mic at Ext Rear            Node=0x18    后置麦克风
Mic at Ext Front           Node=0x19    前置麦克风
Line In at Ext Rear       Node=0x1a     线路输入
HP Out at Ext Front    Node=0x1b     耳机扬声器

这里需要解释下:
对于台式机,可能会出现多个线路输出,至少要把一个线路输出改成内置扬声器。
麦克风最多只可定义一个,所以把前置麦克风改成线路输入。
对于笔记本MIC at ext为外置麦克风,mic at in为内置麦克风,需要把外置麦克风改成线路输入。

更改后内容如下:
Line Out at Ext Rear    Node=0x14    内置扬声器
Mic at Ext Rear            Node=0x18    后置麦克风
Mic at Ext Front           Node=0x19    线路输入
Line In at Ext Rear       Node=0x1a     线路输入
HP Out at Ext Front    Node=0x1b     耳机扬声器



③Vendor Id值,并将其转换为10进制

 


 



使用PlistEdit Pro打开appleALC/Resources/PinConfigs/Contents/Info.plist
搜索283904135(此数字为Vendor Id值的10进制)

 


如上图有不止一个ALC887声卡的配置内容,但是其中的layoutID不同。
先把layoutID=1中的ConfigData后面很长的数字复制出来

 


如上图将每四串数字排成1行,没串数字的第一个数字代表Address值。
示例中Address=0,所以layoutID=1不适合这款声卡。继续往下找:

 


 


每一串数字的第二位+第三位代表node值
每一行的第三串数字中的倒数第二个数字是设备的定义,定义的规则如下:

  1. 0 = Line Out
  2. 1 = Speaker
  3. 2 = HP Out
  4. 3 = CD
  5. 4 = SPDIF Out
  6. 5 = Digital Other Out
  7. 6 = Modem Line Side
  8. 7 = Modem Handset Side
  9. 8 = Line In
  10. 9 = AUX
  11. A = Mic In
  12. B = Telephone
  13. C = SPDIF In
  14. D = Digital Other In
  15. E = Reserved
  16. F = Other
复制代码

拿出之前记录的内容和图中对比:
Line Out at Ext Rear    Node=0x14    内置扬声器
Mic at Ext Rear            Node=0x18    后置麦克风
Mic at Ext Front           Node=0x19    线路输入
Line In at Ext Rear       Node=0x1a     线路输入
HP Out at Ext Front    Node=0x1b     耳机扬声器


第一行node值为0x14,第三串数字中的倒数第二个数字是1= Speaker=内置扬声器,符合条件。
第二行node值为0x18,第三串数字中的倒数第二个数字是A= Mic In=内置麦克风,符合条件。
第三行node值为0x19,第三串数字中的倒数第二个数字是8= Line In=线路输入,符合条件。
第四行node值为0x1A,第三串数字中的倒数第二个数字是8= Line In=线路输入,符合条件。
第五行node值为0x1B,第三串数字中的倒数第二个数字是2= HP OUT=耳机扬声器,符合条件。
第六行为多余,删除它。
最后将整理好的数字,替换到info.plist原位置中。记录下其中的LayoutID值=5

 

将appleALC/Resources/ALC887中的layout5.xml.zlib(5为layoutID值)拖入zlib转换器

 


点击转换后ALC887文件夹会生成layout5.xml文件,使用PlistEdit Pro打开它。
记录下PathMapID值,此处为1。

 



将codec导入IDSDT,生成声卡驱动AppleHDAMOD.kext
打开AppleHDAMOD.kext/Contents/Resources复制里面的Platforms.xml文件到ALC887目录下。
然后将其打开更改PathMapID值,之前记录的值为1。

 


最后将其拖入zlib转换器进行转换完成后会生成Platforms.xml.zlib

再打开ALC887中的info.plist
CodecID值需要改成之前记录的Vendor Id值10进制=283904135

 


在Platforms下找到ID=5的子项,将Path后面的内容改成Platforms.xml.zlib

 



打开AppleALC/AppleALC.xcodeproj,生成appleALC

 


 



生成的appleALC放入四叶草
layoutID值可先尝试四叶草注入(某些电脑四叶草注入可能无效)
四叶草注入方法:

 



DSDT注入方法:
先给DSDT打开IRQ补丁:

  1. #Maintained by: RehabMan for: Laptop Patches
  2. #system_IRQ.txt

  3. # This can fix non-working audio and also has an affect on HPET.
  4. #
  5. # Use this if you have issues with patched AppleHDA (required on almost all laptops)
  6. # or if you have issues with HPET (restart after wake).

  7. # IRQ fix
  8. into device name_hid PNP0000 code_regex IRQNoFlags\s\(\)\n\s+\{(\d+)\} remove_matched;
  9. into device name_hid PNP0100 code_regex IRQNoFlags\s\(\)\n\s+\{(\d+)\} remove_matched;
  10. into device name_hid PNP0B00 code_regex IRQNoFlags\s\(\)\n\s+\{(\d+)\} remove_matched;
  11. into device name_hid PNP0103 code_regex IRQNoFlags\s\(\)\n\s+\{.*\} removeall_matched;
  12. into device name_hid PNP0103 code_regex Name\s\(([^,]+),\sResourceTemplate\s\(\).*\n\s+\{((?:.|\n)*)\}\) replace_matched
  13. begin
  14. Name (%1, ResourceTemplate()\n
  15. {\n
  16.     IRQNoFlags() { 0, 8, 11, 15 }\n
  17. %2
  18. })\n
  19. end;
复制代码

搜索HDEF插入以下函数:

  1. Method (_DSM, 4, NotSerialized)  // _DSM: Device-Specific Method
  2.             {
  3.                 Store (Package (0x0A)
  4.                     {
  5.                         "hda-gfx", 
  6.                         Buffer (0x0A)
  7.                         {
  8.                             "onboard-1"
  9.                         }, 


  10.                         "layout-id", 

  11.                        Buffer (0x04)
  12.                         {          
  13.                              0x05, 0x00, 0x00, 0x00
  14.                         },

  15.                         "PinConfigurations", 
  16.                         Buffer (Zero) {}
  17.                     }, Local0)
  18.                 DTGP (Arg0, Arg1, Arg2, Arg3, RefOf (Local0))
  19.                 Return (Local0) 
  20.                }
复制代码

其中layoutID可自行更改

可能需要的DTGP函数:

  1. Method (DTGP, 5, NotSerialized)
  2.     {
  3.         If (LEqual (Arg0, ToUUID ("a0b5b7c6-1318-441c-b0c9-fe695eaf949b")))
  4.         {
  5.             If (LEqual (Arg1, One))
  6.             {
  7.                 If (LEqual (Arg2, Zero))
  8.                 {
  9.                     Store (Buffer (One)
  10.                         {
  11.                              0x03                                           
  12.                         }, Arg4)
  13.                     Return (One)
  14.                 }

  15.                 If (LEqual (Arg2, One))
  16.                 {
  17.                     Return (One)
  18.                 }
  19.             }
  20.         }

  21.         Store (Buffer (One)
  22.             {
  23.                  0x00                                           
  24.             }, Arg4)
  25.         Return (Zero)
  26.     }
复制代码


相关推荐

最新回复