HDMI audio on GA-H55M-S2H+ ATI HD5770 with 10.7.1
で必要になったConfigDataを作成する。
Ubuntu 10.4を(たまたまCDがあったので)立ち上げて、
$ ls /proc/asound/card0
とすると、codec#0とcodec#2があったが、中を吟味するとcodec#2が対象。
$ cat /proc/asound/card0/codec#2 > /home/ubuntu/Desktop/codec_dump.txt
として保存。USB stickかNASあたりに保存してOSX86から使用できるようにしておく。
OSX86に戻って、開くと内容はこんな感じ。
Codec: Realtek ALC887
Address: 2
Function Id: 0x1
Vendor Id: 0x10ec0887
Subsystem Id: 0x1458a102
Revision Id: 0x100202
No Modem Function Group found
Default PCM:
以下略
Addressの”2"が重要。
Node 0x14〜0x1fまでのPin Complexが対象。
Node 0x14 0x01014410: [Jack] Line Out at Ext Rear Conn = 1/8, Color = Green DefAssociation = 0x1, Sequence = 0x0
Node 0x15 0x01011412: [Jack] Line Out at Ext Rear Conn = 1/8, Color = Black DefAssociation = 0x1, Sequence = 0x2
Node 0x16 0x01016411: [Jack] Line Out at Ext Rear Conn = 1/8, Color = Orange DefAssociation = 0x1, Sequence = 0x1
Node 0x17 0x01012414: [Jack] Line Out at Ext Rear Conn = 1/8, Color = Grey DefAssociation = 0x1, Sequence = 0x4
Node 0x18 0x01a19c40: [Jack] Mic at Ext Rear Conn = 1/8, Color = Pink DefAssociation = 0x4, Sequence = 0x0
Node 0x19 0x02a19c50: [Jack] Mic at Ext Front Conn = 1/8, Color = Pink DefAssociation = 0x5, Sequence = 0x0
Node 0x1a 0x0181344f: [Jack] Line In at Ext Rear Conn = 1/8, Color = Blue DefAssociation = 0x4, Sequence = 0xf
Node 0x1b 0x02214c20: [Jack] HP Out at Ext Front Conn = 1/8, Color = Green DefAssociation = 0x2, Sequence = 0x0
Node 0x1c 0x593301f0: [N/A] CD at Int ATAPI Conn = ATAPI, Color = Unknown DefAssociation = 0xf, Sequence = 0x0
Node 0x1d 0x4005e601: [N/A] Line Out at Ext N/A Conn = Optical, Color = White DefAssociation = 0x0, Sequence = 0x1
Node 0x1e 0x014b6130: [Jack] SPDIF Out at Ext Rear Conn = Comb, Color = Orange DefAssociation = 0x3, Sequence = 0x0
Node 0x1f 0x01cb7160: [Jack] SPDIF In at Ext Rear Conn = Comb, Color = Yellow DefAssociation = 0x6, Sequence = 0x0
重要な項目を取り出すとこうなる。
Address + Node + 71c/d/e/f + PinDefaultの数字を逆から
組み合わせていくと
21471c10 21471d44 21471e01 21471f01
21571c12 21571d14 21571e01 21571f01
21671c11 21671d64 21671e01 21671f01
21771c14 21771d24 21771e01 21771f01
21871c40 21871d9c 21871ea1 21871f01
21971c50 21971d9c 21971ea1 21971f02
21a71c4f 21a71d34 21a71e81 21a71f01
21b71c20 21b71d4c 21b71e21 21b71f02
21c71cf0 21c71d01 21c71e33 21c71f59
21d71c01 21d71de6 21d71e05 21d71f40
21e71c30 21e71d61 21e71e4b 21e71f01
21f71c60 21f71d71 21f71ecb 21f71f01
となるが、Macでは最初の2**71c**の最後は0になるとのことなので、
21471c10 21471d44 21471e01 21471f01
21571c10 21571d14 21571e01 21571f01
21671c10 21671d64 21671e01 21671f01
21771c10 21771d24 21771e01 21771f01
21871c40 21871d9c 21871ea1 21871f01
21971c50 21971d9c 21971ea1 21971f02
21a71c40 21a71d34 21a71e81 21a71f01
21b71c20 21b71d4c 21b71e21 21b71f02
21c71cf0 21c71d01 21c71e33 21c71f59
21d71c00 21d71de6 21d71e05 21d71f40
21e71c30 21e71d61 21e71e4b 21e71f01
21f71c60 21f71d71 21f71ecb 21f71f01
となる。
これを一行にして"<"と">"でくくったものがConfigDataとなる。
GA-H55M-S2H+ATI HD5770で10.6.7まではHDMI audioが使えていたが、10.6.8以降だめになっていた。
いろいろとAppleHDA patchについて勉強し、なんとか10.7.1でHDMI audioのみ回復した。
参考にしたのは
肝心のpin configのところが解りにくいが、HDMIまでは動かせるようになった。
使用するDSDTはHDMI audio from HD5770 with DSDT modificationで作成したもの。
USB Lion installerから起動して10.7.1をclean install
一旦 10.6.8に戻って、10.7.1をtargetに
MultiBeast 3.8.0をインストール(UserDSDT instal, System Utilities, Lnx2Mac's RealtekRTL81xx, 64bit GraphicsEnabler No, PCRootUID fix, Instant Menu, CPU states, OSX86 software)
** HD5770は10.6.8からnative supportになっているので、GraphicsEnabler=Noでよい。
この状態だとAudio deviceは表示されない。

やるべきことは
1) AppleHDAへのbinary patch
2) AppleHDAHardwareConfigDriver.kextのInfo.listの変更
3) AppleHDA.kextのlayout**.xmlの作成と変更
4) AppleHDA.kextのPlatforms.xmlの変更
3)までできるとHDMI audioが動く
まだ4)ができていないので、analog audioのpin configurationがだめ。
1)AppleHDAへのbinay patch
/System/Libray/Extensions/AppleHDA.kext/Contents/MacOS/AppleHDA
はRealtekのALC885に対応している。GA-H55M-S2HのcodecはALC887。
RealtekのVender ID が0x10ecなので
"0x85 0x08 0xec 0x10" を "0x87 0x08 0xec 0x10"に変更する。
Terminalで以下を実行する。
sudo perl -pi -e 's|\x85\x08\xec\x10|\x87\x08\xec\x10|g' /System/Library/Extensions/AppleHDA.kext/Contents/MacOS/AppleHDA
2)AppleHDAHardwareConfigDriver.kextのInfo.plistの変更
/System/Library/Extensions/AppleHDA.kext/Contents/PlugInsに含まれる
AppleHDAHardwareConfigDriver.kext/Contents/Info.plist
を修正する。
PropertyList Editor(xcodeをinstallするとDeveloper/Application/Utilitiesに入る)で開く。
IOKitPersonalities > HDA Hardware Config Resource > HDAConfigDefaultと開いて、
Item 0以外はすべて削除してから、
a) CodecIDを 28390433(=0x885)から 283904135(=0x887)に変更
b) ConfigDataを Linuxを動かして入手する codec_dump.txtを元に作成したものに変更。
(これは別の記事にまとめる)
c) LayoutIDを 887に
3) AppleHDA.kextのlayout**.xmlの作成と変更
/System/Library/Extensions/AppleHDA.kext/Contents/Resources/
を開くと、layout**.xmlがたくさんある。
この中でALC885が使用するのは layout12.xmlなので
cp layout12.xml layout887.xml
としてlayout887.xmlを編集する。
PropertyList Editorで開いて
a) LayoutIDを 12 から887に
b) Codec IDを 283904133から 283904135に
c) OutputsのPathMapIDを 9から 887に
以上をすませたAppleHDA.kextを/S/L/Eに放り込んで再起動すると
HDMIだけは使用できる。

pin configurationを理解していないので、Platforms.xmlの変更ができていない。
これができればanalog audioも完全に動くはず。
10.6.8を動かしているGA-H55M-S2HでApp StoreからOS X Lionを購入。
3.75GBでDLに30分もかかってしまった。
毎回これでは大変なので、Lion Installer USB stickを作成することにした。
インストールしてしまうとやっかいらしいので、インストール前に作業する。
DLしたInstall Mac OS X Lion.appはApplication フォルダに入っている。
これを右クリックで開いてShow Package Contents>Contents>SharedSupportと開くと
InstallESD.dmgが見つかるので、これをDesktopにコピーする。
InstallESD.dmgをダブルクリックしてMac OSX Install ESDをマウントする。
Terminal.appで
ls -al /Volumes/Mac\ OS\ X\ Install\ ESD/
と内容を確認。BaseSystem.dmgを見つける。
これを開く。
open Volumes/Mac\ OS\ X\ Install\ ESD/BaseSystem.dmg
"Mac OS X Base System"ディスクがマウントされる。
これを8GBのUSB stickにrestoreする。
Disk Utilityで8GBのUSB stickをpartitionする。
今回使用したのはKingmax USB2.0 FlashDisk Media
Mac OS Extended(Journaled)の1 partition
Optionで Master Boot Recordにする。
(MBRにしないとUSBを差した状態でBIOSが起動しないことがある)
LionInstallerと名付ける。
一旦、Disk Utilityを終了。
FinderでLionInstallerを選択。command+IでGetInfo
Sharing & Permissionsで
"Ignore ownership on this volune"のチェックを外す。
(ownershipを有効にする)
再びDisk Utilityを起動。
"Mac OS X Base System"を選択してRestoreする
Mac OS X Base SystemをSourceに
LionInstallerをDestinationに
Erase Destinationのチェックは外す
RestoreできたらDisk Utilityは終了。
/Volumes/LionInstaller/System/Installation/Packages
にInstallされるpackage群が入っているべきだが、
これはBoot diskの
/System/Installation/Packagesへのsymbolic linkになっている。
(Install Mac OS X Lion.appを起動すると、ここにpackage群がコピーされるのだろう)
USB stick単独で使用できるようにpackage群をcopyする。
Terminal.appで
$ sudo rm /Volumes/LionInstaller/System/Installation/Packages
$ sudo cp -R /Volumes/Mac\ OS\ X\ Install\ ESD/Packages /Volumes/LionInstaller/System/Installation
これで起動してみたが、mach_kernelがない。
$ sudo cp /Volumes/Mac\ OS\ X\ Install\ ESD/mach_kernel /Volumes/LionInstaller/
$ sudo cp /Volumes/Mac\ OS\ X\ Install\ ESD/kernelcache /Volumes/LionInstaller/
$ sudo chgrp wheel /Volumes/LionInstaller/mach_kernel
$ sudo chgrp wheel /Volumes/LionInstaller/kernelcache
この状態で普通のLion対応のMacなら起動できるはず。
OSX86の場合はbootloaderなどを追加する。
MultiBeast 3.8.0を使用。
System Utilitiesをチェックしてinstallすると必ずエラーになるので、
EasyBeast Installだけチェックしてinstall
pfixでownershipとpermissionを訂正、Extensions.mkextを作成させる。
これでOSX86用Lion Installerが完成。
Hardwareの構成は CustMac #4
★ 2011/09/01 追記
CPU Intel Core i7 2600K 3.4G 8M
MB Gigabyte GA-Z68X-UD5-B3(ATX)
Graphic Board ATI ビデオカード Radeon HD 6870 R6870 Twin Frozr II
RAM Corsair Vergenece 1600MHz DDR3 16GB
Case + PSU CoolerMaster Elite 371 500W
Optical Disk IOData DVR-S7260LEBK
HDD Hitachi HDS7219CLA332 1TB
CPU Fan CoolerMaster VortexPlus RR-VTPS-28PK-R2
HDDラック ノバック 5インチベイ対応 3.5インチSATA HDDラック はい~るKIT 出し入れ楽太郎 NV-SR301B
webcam LOGICOOL ウェブカムプロ 9000
Display Diamondcrysta WIDE RDT271WV(BK)
amazonで頼んでしまって約15万円だった。
Snow Leopardのinstallに参考にしたのは
Installする項目は
Easy Install
System Utilities
ALC8xxHDA
AppleHDARollback
Non-DSDT HDAEnabler ALC889
Chimera(★ 明示的に指示しなくてもdefaultでinstallされるが)
Lnx2Mac's RealtekRTL81xx (Realtek Gigabit Ethernet 2.0.6でも良いのだが負荷かけたらKPになった)
iMac 12.2(★ これは指定する必要がない。DefaultのMacPro 3.1のままでOK)
これで再起動。
こんどはiBoot CDからではなく、HDDから起動できるはず。
Kexts.comから ATI HD6870用 kextを入手し
ATI6000Controller.kext
ATIFrameBuffer.kext
ATISupport.kext
ATI?Init.kext
をkext.helperなどでinstall
これで再起動すればディスプレーの解像度を変えることができ、full workingとなる。
(★ 先にも書いたがATI Radeon 6000シリーズは 10.6.8からvanilaなシステムで使えるようになったので、
これらをインストールする必要はない。さらにGraphicEnabler=NoでOK)
うまくいったら、RAMを16GBに戻し、
com.apple.boot.listで
arch=i386を除去して64bitモードにする。
残る問題はSleepが効かない?
これはDSDTを入れるとよさそうだが、あとで試そう。
世間はLionに以降しつつあるようだが、職場のiMac(early 2008)がお亡くなりになり、
OSX86で組むことになった。Hardware構成はさておき、
USB stickを使ったinstallerを作成してみる。
8GBのUSBにMultiBeastをinstallし、OSX10.6.3をrestoreするのでよいのか?
USBはDiskUtilityで新規にPartition。OptionでMBRをチェックする。
(GUIDではUSB stickを差し込んだ状態で起動できなくなることがある)
GetInfoで
*Ignore ownership on this volume"をuncheckする。
MultiBeast 3.8.0をinstall
とりあえず、
EasyBeast Install
32-bit GraphicsEnabler=No
にだけチェック
その後OSX10.6.3をrestoreするのだが、
USB stickに "tmp"というフォルダができているため、
最後でエラーになるので、予め削除しておく。
DiskUtilityでRestoreする。
Lion対策で入れとかないと。
OSX 10.6.6+N430GTをupdateする。
MacOSXUpdCombo10.6.8.dmgをAppleからdownload
Terminalで
"sudo open /Volumes/Mac\ OS\ X\ 10.6.8\ Update\ Combo/MacOSXUpdCombo10.6.8.pkg"
としてupdate実行。rebootしないこと。
MultiBeast 3.7.3をinstall (Easy Beast Install, System Utilities,64-bit Apple Boot Screen,
PCI Root ID Fix,MacPro 3.1,OSx86 Software)
ここでいったんreboot(1024x768で起動する)
NVIDIAのドライバを入れる Retail_256.02.25f1v1.dmg
GA-E7AUM-DS2Hに装着したGeForce GT430を
com.apple.Boot.plistにdevice-propertiesを追加することでfull workingとしたが、
今回はDSDTを編集してみる。
作業にはDSDTseを使用する。
GA-E7AUM-DS2HのBIOSはF4。Onboard videoはoffの設定。
DSDTseで"Extract DSDT"してCompileを試みるが、errorになってしまう。
InsanelyMacのForumにe60氏が投稿したDSDT.amlがある。
この256-DSDT.amlをDSDTseで開き、Injectionに必要な枠組みを追加するのだが、
ここから先が難航した。
tonymacx86のAdvanced DSDT Fixes: nVidia Graphicsを参考に
Device(PCI0)内にDevice(GFX0)を含むDevice(PEGP)を追加してみたが、駄目。
Device(PEGP)のAddressを0x00030000からいろいろ変化させるも、駄目。
このアドレスはIOregistryの問題と気付き、lspciで見てみると、
$ lspci -tv
-[0000:00]-+-00.0 nVidia Corporation MCP79 Host Bridge
+-00.1 nVidia Corporation MCP79 Memory Controller
+-03.0 nVidia Corporation MCP79 LPC Bridge
+-03.1 nVidia Corporation MCP79 Memory Controller
+-03.2 nVidia Corporation MCP79 SMBus
+-03.3 nVidia Corporation MCP79 Memory Controller
+-03.4 nVidia Corporation Unknown device 0a98
+-03.5 nVidia Corporation MCP79 Co-processor
+-04.0 nVidia Corporation MCP79 OHCI USB 1.1 Controller
+-04.1 nVidia Corporation MCP79 EHCI USB 2.0 Controller
+-06.0 nVidia Corporation MCP79 OHCI USB 1.1 Controller
+-06.1 nVidia Corporation MCP79 EHCI USB 2.0 Controller
+-08.0 nVidia Corporation MCP79 High Definition Audio
+-09.0-[0000:01]----0e.0 Texas Instruments TSB43AB23 IEEE-1394a-2000 Controller (PHY/Link)
+-0a.0 nVidia Corporation MCP79 Ethernet
+-0b.0 nVidia Corporation MCP79 AHCI Controller
+-0c.0-[0000:02]--+-00.0 nVidia Corporation Unknown device 0de1
| \-00.1 nVidia Corporation Unknown device 0bea
\-16.0-[0000:03]----00.0 JMicron Technology Corp. JMB368 IDE controller
0c.0にGT430(device id 0de1)があることがわかった。
さっそく、Device(GFX0)でName(_ADR,0x000c0000)としてみるも、駄目。
e60氏の256-DSDT.amlをdecompileしたdslで0x000c0000を検索すると
Device(XVR0)が0x000c0000に割り当てられている。
IORegistryExplorerでdisplayを検索すると、確かにこのdeviceに一致する。
このDevice(XVR0)がDevice(PEGP)に一致するものと考え、
Device(PEGP)内にDevice(GFX0)のブロックを追加したところ、
GT430はfull workingとなった。

tonymacx86に新しいMultiBeast3.3.0が発表された。
先日のiBootのupdateに対応している。
3.2.0からの変更点は
- EasyBeastのElliottForceLegacyRTC が LegacyAppleRTC に
- Chameleon 2.0 RC5 - ATI Experimental がr700からr748に
- HDAEnabler888.kextが32/64bit対応に
- HDAEnablersが個別のcodec用に(888,888b,889,889a,892)
- Boot OptionsにChameleon Instant Menuが加わった
64bitを諦めざるを得なかったGeForce 7800GTに代わり、
新規にGeForce GT430搭載のGraphic boradを購入した。
MSIのN430GT TwinFrozr Mini 1G
手順
- 10.6.0 install
- 10.6.6 update
- MultiBeast
(Easy Beast Install, System Utilities,64-bit Apple Boot Screen,
PCI Root ID Fix for Chameleon,MacPro 3.1,OSx86 Software) - ここでいったん再起動(1024x768で起動する)
- NVIDIAのdriverをinstall
/System/Library/Extensions/NVDAGF100Hal.kextが新たに追加されるFermi用driver。
これでrebootしても残念ながらblack screenになってしまう。
EFIstudioでのdevice propertiesの作成が必要。
EFIstudioを入手したら、右クリックで中身を見る。
Contents,Resources,graphiccardsを開き
1024MBと記載のある"nVidia GeForce 9800 GT [G92] - 1024MB.plist"
をoption keyを押しながらdragして複製
名前を"nVidia GeForce GT430 - 1024MB.plist"に変更する。
EFIstudioを起動し"nVidia GeForce GT430 - 1024MB”を選択して
Add Deviceをクリック。
Hex String to Clipboardをクリック。(write to com.apple.Boot.plistはうまくいかない)
/Extra/com.apple.Boot.plistをDesktopにcopy
TextEditで開いて
<key>device-properties</key>
<string>ここにHex stringをペースト</string>
を作成する。
これでrebootすればOK。
CINEBENCH 11.5の結果は
OpenGL 23.47fps
CPU 1.88pts
だった。
(ちなみにGA-H55M-S2H+HD5770は21.69fps+2.57ptsだった、どうなんだこれは、、、)
Chameleon v2.0-RC5 r699
NVDAGF100Hal.kext 1.3.4
com.apple.Boot.plist
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>Kernel</key>
<string>mach_kernel</string>
<key>Kernel Flags</key>
<string>-v PCIRootUID=1</string>
<key>GraphicsEnabler</key>
<string>Yes</string>
<key>Timeout</key>
<string>1</string>
<key>Legacy Logo</key>
<string>Yes</string>
<key>EthernetBuiltIn</key>
<string>Yes</string>
<key>device-properties</key>
<string>
6802000001000000010000005c0200000d00000002010c00d041030a0100000001010600000c0101060000007fff04001e00000072006f006d002d007200650076006900730069006f006e0000002c0000006e5669646961204765466f726365204754343330204f70656e474c20456e67696e65205b4546495d22000000400030002c006400650076006900630065005f00740079007000650000000b000000646973706c6179100000004e00560043004100500000001800000004000000000003000c00000000000007000000000e0000006e0061006d00650000000b000000646973706c617914000000400030002c006e0061006d0065000000120000004e5644412c446973706c61792d41100000006d006f00640065006c000000180000006e5669646961204765466f7263652047543433300e0000004e00560050004d000000200000000100000000000000000000000000000000000000000000000000000014000000400031002c006e0061006d0065000000120000004e5644412c446973706c61792d4220000000400031002c0063006f006d00700061007400690062006c00650000000e0000004e5644412c4e564d6163220000005600520041004d002c0074006f00740061006c00730069007a0065000000080000000000004020000000400030002c0063006f006d00700061007400690062006c00650000000e0000004e5644412c4e564d616322000000400031002c006400650076006900630065005f00740079007000650000000b000000646973706c61791c0000006400650076006900630065005f00740079007000650000000f0000004e5644412c506172656e74
</string>
tonymacx86でiBootの新しいversionが発表された。
主な変更点は
- Chameleon bootloaderが Kabyl branchの最新版 2.0RC5 r748になった。
- ntel82566MM.kextがAppleIntelE1000e.kextに
- ElliottForceLegacyRTC.kextがLegacyAppleRTC.kextに
ということらしい。
Kabyl branchの/i386/libsaioで対応するGraphic boradが確認できる。
最近のコメント