HP G32 在黑蘋果OS X下的折騰


花了幾個禮拜的時間,終於把手頭上的這個HP G32筆記本搞得比較完美了。由於這個本子出了好幾年,網上成功的分享幾乎沒有,所以要自己摸索的路子非常艱難,成功的喜悅難以言表,讓我彷彿回到了十幾年前在台式機上裝Linux裝驅動的日子。首先要感謝論壇,感謝各位熱心的壇友,沒有你們的無私付出,我想我堅持不到最後。廢話少說,步入正題。

一、電腦配置

Motherboard:
  CPU Type    Mobile DualCore Intel Core i3-390M, 2666 MHz (20 x 133)
  Motherboard Name  Hewlett-Packard HP G32 Notebook PC
  System Memory   4981 MB(DDR3-1333 DDR3 SDRAM)

Display:
  3D Accelerator  ATI Mobility Radeon HD 5470 (1024M)
  Monitor     Chi Mei N133B6-L02[13.3" LCD]

Multimedia:
  Audio Adapter   ATI Radeon HDMI @ ATI Cedar/Park/Robson - High Definition Audio Controller
  Audio Adapter   IDT 92HD81B1X @ Intel Ibex Peak PCH - High Definition Audio Controller [B-2]

Storage:
  Disk Drive    WDC WD5000BEVT-60A0RT0(500 GB, 5400 RPM, SATA-II)
  Optical Drive   hp DVD RW AD-7586H

Network:
  Network Adapter Realtek PCIe FE Family Controller 
  Network Adapter Realtek RTL8191SE 802.11b/g/n WiFi Adapter


  
二、系統安裝

?    安裝鏡像用iaihc的10.10正式版懶人版:http://bbs.8miu.com/viewthread-1550906-1-1.html

?    安裝過程是按照neycwby09的教程:http://bbs.8miu.com/viewthread-1518901-1-1.html

?    因為hp筆記本需要變色龍參數cpus=1屏蔽多核才能成功啟動,所以去五國貼找對應版本的hp kernel裝上 : http://bbs.8miu.com/viewthread-863656-1-1.html

?    變色龍用最新的2433官方版,可以免 -f 用UseKernelCache快速啟動系統,基本在10秒左右可以到登錄界面。http://bbs.8miu.com/viewthread-1518850-1-1.html

三、顯卡/聲卡/網卡 驅動

?    顯卡【ATI Mobility Radeon HD 5470 (1024M)】
老實說,我在這個破顯卡和顯示屏上花了百分之九十九的時間,電腦重啟了上百次,走了無數彎路回頭路死胡同。本來這個顯卡成功的經驗挺多,但由於內屏SenseID=07,系統又不能自動識別正確的edid位置,所以一直黑屏搞不定,直到發帖求救(http://bbs.8miu.com/viewthread-1544578-3-1.html),經FrankieD指點,才得到根本解決,真是脫離苦海啊,非常感謝!

1. 驅動顯卡和內屏

Yosemite原生就支持ATI 5470M(1002_68E0)顯卡,所以不需要加vendorID和deviceID。驅動步驟簡述如下:

  1)在Win下用AIDA64得到dsdt和顯卡rom,以及用其他工具得到內屏的edid(由於我的筆記本接過幾個顯示器和投影儀,所以會出現好幾個屏幕信息,要仔細對比,才能找到真正的那個內屏edid);

  2)在Mac下用iDSDT工具,導入上面得到的dsdt和顯卡rom,編譯生成含有顯卡rom的dsdt;

  3)再在Win下用ACPI Patcher工具把上一步得到的dsdt反編譯成DSL文件,在顯卡那段代碼添加edid信息;

  4)只添加edid雖然可以驅動內屏,但會出現沒有32bit色的奇怪問題,登錄界面的背景圖會看到水波紋。所以還要加上其他一堆代碼(我也不懂,抄前輩們的),然後再編譯成最終的DSDT.aml;

  5)顯卡部分詳細代碼如下。

Method (_DSM, 4, NotSerialized)
      {
        Store (Package (0x3A)
          {
          "@0,compatible",
          Buffer (0x0C)
          {
            "ATY,Eulemur"  /* ATI 5470M 的Framebuffer默認是 Eulemur */
          },
          "@0,display-link-component-bits",
          Buffer (One)
          {
            0x06
          },
          "@0,device_type",
          Buffer (0x08)
          {
            "display"
          },
          "@0,VRAM,memsize",
          Buffer (0x04)
          {
            0x00, 0x00, 0x00, 0x40
          },
          "@0,name",
          Buffer (0x0C)
          {
            "ATY,Eulemur"
          },
          "@0,AAPL,boot-display",
          Buffer (0x04)
          {
            0x01, 0x00, 0x00, 0x00
          },
          "@0,display-pixel-component-bits",
          Buffer (0x04)
          {
            0x06, 0x00, 0x00, 0x00
          },
          "@0,display-dither-support",
          Buffer (0x04)
          {
            0x00, 0x00, 0x00, 0x00
          },

          …..        /* 此處略去 @1, @2 的類似代碼 */

          "device_type",
          Buffer (0x12)
          {
            "ATY,EulemurParent"
          },
          "VRAM,totalsize",
          Buffer (0x04)
          {
            0x00, 0x00, 0x00, 0x40
          },
          "hda-gfx",
          Buffer (0x0A)
          {
            "onboard-1"
          },
          "model",
          Buffer (0x1C)
          {
            "HP-G32 ATI 5470M"      /* 我為顯卡起的名字 */
          },
          "AAPL00,override-no-connect",  /* 這部分就是注入的edid */
          Buffer (0x80)
          {
            /* 0000 */ 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00,
            /* 0008 */ 0x0D, 0xAF, 0x21, 0x13, 0x00, 0x00, 0x00, 0x00,
            /* 0010 */ 0x35, 0x13, 0x01, 0x03, 0x80, 0x1D, 0x10, 0x78,
            /* 0018 */ 0x0A, 0xD6, 0xF5, 0x95, 0x59, 0x56, 0x91, 0x27,
            /* 0020 */ 0x20, 0x50, 0x54, 0x00, 0x00, 0x00, 0x01, 0x01,
            /* 0028 */ 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
            /* 0030 */ 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x12, 0x1B,
            /* 0038 */ 0x56, 0x6C, 0x50, 0x00, 0x10, 0x30, 0x20, 0x16,
            /* 0040 */ 0x24, 0x00, 0x25, 0xA4, 0x10, 0x00, 0x00, 0x18,
            /* 0048 */ 0x00, 0x00, 0x00, 0xFE, 0x00, 0x4E, 0x31, 0x33,
            /* 0050 */ 0x33, 0x42, 0x36, 0x2D, 0x4C, 0x30, 0x32, 0x0A,
            /* 0058 */ 0x20, 0x20, 0x00, 0x00, 0x00, 0xFE, 0x00, 0x43,
            /* 0060 */ 0x4D, 0x4F, 0x0A, 0x20, 0x20, 0x20, 0x20, 0x20,
            /* 0068 */ 0x20, 0x20, 0x20, 0x20, 0x00, 0x00, 0x00, 0xFE,
            /* 0070 */ 0x00, 0x4E, 0x31, 0x33, 0x33, 0x42, 0x36, 0x2D,
            /* 0078 */ 0x4C, 0x30, 0x32, 0x0A, 0x20, 0x20, 0x00, 0x2F
          },
          "ATY,bin_image",          /* iDSDT導入的顯卡rom,此處略去不表 */
          Buffer (0xEE00)
          {
           .....
           }
          }, Local0)
        DTGP (Arg0, Arg1, Arg2, Arg3, RefOf (Local0))
        Return (Local0)
      }

至此,用這個dsdt文件啟動,變色龍不需要添加任何顯卡相關參數,即可以驅動顯卡和內建屏幕,歡呼吧!

(這裡還有個小插曲,就是我在10.10搞不定的時候,曾經嘗試裝10.8.5。那個年代還有自己編譯boot這種方法,我在10.8的變色龍(http://bbs.8miu.com/viewthread-971434-1-1.html)裡找到一個Chameleon_2.1svn_r1820_10.8_68C0_Baboon_pkg+wowpc.zip 的boot,居然可以成功驅動顯卡和外屏,再把edid寫入DisplayProductID-717,讓外屏強制輸出到內屏,內屏也可以顯示了。但這個方法在10.10下無效,而且那個版本的變色龍也不支持10.10,殘念。)

?    另外,用四葉草clover也可以驅動顯卡和內屏,而且更簡單,只需注入edid即可,我霎時間覺得自己早幹嘛去了?不過我是傳統BIOS+MBR分區,懶得折騰,所以只是有需要時才用U盤的四葉草啟動。



2. 睡眠喚醒黑屏

顯卡驅動後,問題又來了。筆記本睡眠後無法成功喚醒。無論敲鍵盤和電源鍵都是黑屏,這時鍵盤燈是亮的,但屏幕還是黑的。解決這個問題,唯有出動最終武器——修改Framebuffer值。變色龍ati.c裡面5470M默認用的FB是Eulemur,我就拿這個來改。

此款筆記本FB值如下:
_____________前面部分________  txmitenc hotplugin senseid
02 00 00 00 40 00 00 00 09 01 00 00 10 00   00     07  LVDS
00 08 00 00 04 02 00 00 00 71 00 00 11 02   01     01  HDMI
10 00 00 00 10 00 00 00 00 01 00 00 00 10   02     08  VGA


用0xED工具修改AMD5000Controller.kext的FB值:

Eulemur
原值:
040000001400000000010000010201040008000000020000007100001204040210000000100000000000000000100001

修改成:
020000004000000009010000100000070008000004020000007100001102010110000000100000000001000000100208

修改完重新安裝kext,重啟就OK了。

後面附上幾個版本的已修改FB的AMD5000驅動文件。








3. 遺留問題

顯卡和內屏都驅動了,但在10.10/10.9下VGA外接顯示器是黑屏或者花屏。而在10.8下,VGA不僅可用,而且多出來的那個外屏還沒法去掉(可以改用2接口的FB),真是兩個極端啊。

?    聲卡
安裝最新的Voodoo萬能聲卡驅動,效果不錯,就不去折騰原生驅動了。但要修改Info.plist以下兩個地方(把false改成true),修復不能調聲音和靜音的問題。
VoodooHDAEnableMuteFix

VoodooHDAEnableVolumeChangeFix


?    網卡
1. 有線網卡
本來我是裝了RealtekRTL81xx.kext 這個驅動,能出現網卡,但獲取不了DHCP IP,上不了網。後來我改用Realtek官方的驅動,就能正常使用了。


2. Wifi無線網卡
這個無解,只能自己買個usb wifi無線網卡插上。最好不要買8188芯片的卡,容易導致黑蘋果死機,我的兩部台式機都這樣,筆記本好像沒出現過,但保險點還是買819x的卡吧。要注意即使是同一牌子同一型號的卡,在不同時期出產也可能用不同芯片的,我在這上面就踩了坑,所以買之前最好上官網看看驅動的說明。(磊科(netcore) NW367 300M USB迷你無線網卡)

?    藍牙
買了個支持Bluetooth 4.0的usb藍牙適配器,免驅即用。(奧睿科(ORICO) BTA-402 迷你USB真藍牙4.0適配器/接收器)
遺留問題:只有在10.10下可以勾選「允許藍牙設備喚醒這台電腦」,低版本OS X的話這一項是灰的,不過也不是什麼大問題了,用鍵盤喚醒就可以了。


?    觸摸板
筆記本上的觸摸板免驅可用,但我還是入手了apple自家出的magic trackpad,買了不後悔,體驗好感度馬上翻了N倍,手勢操作超贊,裝卑實用兩不誤。不過用久了手會痛,呵呵。

?    USB
系統本來有兩個USB Bus,一個掌管左邊的一個USB和上面的WebCam,另一個掌管右邊的兩個USB。變色龍如果不用-f啟動的話,進系統後會少了前面那個USB Bus,也就是左邊的USB和攝像頭就失效了,只剩右邊兩個USB可用。如果用-f啟動,則一切正常,但啟動時間就長很多。
用 -v -f 啟動看日誌可以看到USB有類似如下報錯:

AppleUSBEHCI[0xffffff800a796000]: unable to get filterInterruptEventSource
AppleUSBEHCI[0xffffff800a796000]::UIMInitialize – Error occurred

上網搜到解決方案,大概是IRQ衝突的原因:http://piggyq.com/pen/appleusbehci-uiminitialize-error.html
在DSDT裡面加入以下紅色代碼就好了:

Device (HPET)
      {
      Name (_HID, EisaId ("PNP0103"))
      Name (_UID, Zero)
      Name (BUF0, ResourceTemplate ()
      {
        IRQNoFlags ()
        {2}
        IRQNoFlags ()
        {8}
        IRQNoFlags ()
        {11}  
        IRQNoFlags ()
        {15}
        Memory32Fixed (ReadWrite,
          0xFED00000,   // Address Base
          0x00000400,   // Address Length
          )
      })
……


?    DSDT
最後奉上心血結晶,HP G32 的 dsdt 文件,以及變色龍的配置,祝早日脫離苦海吧。



變色龍配置:
EthernetBuiltIn
Yes
PCIRootUID
1
Instant Menu
Yes
Kernel Flags
-v
ShowInfo
Yes
UseKernelCache
Yes












RTGNICv2.0.6For10.7.mpkg.zip



2014-10-29 10:20 上傳
下載次數: 0
下載積分: 米幣 -1 




157.01 KB, 下載次數: 0, 下載積分: 米幣 -1 
















DSDT.aml.zip



2014-10-29 10:14 上傳
下載次數: 0
下載積分: 米幣 -1 




68.01 KB, 下載次數: 0, 下載積分: 米幣 -1 
















10.10-AMD5000Controller.kext.zip



2014-10-29 12:17 上傳
下載次數: 0
下載積分: 米幣 -1 




1.78 MB, 下載次數: 0, 下載積分: 米幣 -1 
















10.9-AMD5000Controller.kext.zip



2014-10-29 12:17 上傳
下載次數: 0
下載積分: 米幣 -1 




1.23 MB, 下載次數: 0, 下載積分: 米幣 -1 
















10.8-ATI5000Controller.kext.zip



2014-10-29 12:17 上傳
下載次數: 0
下載積分: 米幣 -1 




659.28 KB, 下載次數: 0, 下載積分: 米幣 -1

倒,帖子的排版怎麼亂成馬了,編輯了幾次都搞不定。

good,樓主好樣的,好像可以使用破解補丁免 CPUs=1,或者使用 clover

破解內核可以用了呀。。。。我以前也安裝過

很優秀的經驗貼,雖然我沒有這台電腦,無法進行證實,但是可以肯定,樓主很用心,支持一下,順便留作備用,自己折騰時可以借鑑下

留言

這個網誌中的熱門文章

雷神 索爾 彩蛋 無限手套 乙太 無限寶石

2017年日本福袋總整理~持續更新~ # 日本 日本福袋 福袋