123456_ 发表于 2012-11-22 22:43

ThinkPad E40黑苹果折腾大结局

本帖最后由 123456_ 于 2013-3-1 09:58 编辑

      断断续续折腾好几个月了,在远景疯狂爬帖,看过的帖子多到吐啊!最初的时候热情高涨,好多次都搞到凌晨三四点才睡。多数问题都是从nksmiles的https://bbs.pcbeta.com/viewthread-1017396-1-1.html 找到解决方法的,现在基本捣鼓得够用了,因此写个帖子记录一下。      ==================================================本机信息      操作系统    Win7 32位 SP1 + OS X ML 10.8.2 (12C60)      主板         Thinkpad E40 0578MDC (Intel HM55 Chipset)      处理器      Intel Core i3 380M @ 2.53GHz 双核      内存         2 GB ( Samsung DDR3 1333MHz )      主硬盘      西数 WDC WD3200BEVT-08A23T1 ( 320 GB / 5400 转/分 )      显卡         ATI Mobility Radeon HD 545v( 512 MB )      显示器      京东方 BOE059E ( 14 英寸 ) (非原装)      光驱         日立-LG DVDRAM GT30N DVD刻录机      声卡         Realtek ALC269 @ Intel 5 Series/3400 Series Chipset      网卡         Realtek RTL8168D(P)/8111D(P) PCI-E Gigabit Ethernet NIC键鼠驱动
       我觉得这个是首要的,有一次重装的时候犯傻没放入E/E ,结果进到安装界面了,啥也干不鸟。。。。。。
      
1、支持三指动作:对应 Ctrl+Command+方向键;

2、源项目github.com/RehabMan/OS-X-Voodoo-PS2-Controller有兴趣的可以研究一下,自己修改编译。
DSDT中加入DTGP
       黑苹果的许多问题可以通过修改dsdt解决。加入苹果特有的DTGP函数。找到第一处Scope (_SB),在前面加入:Method (DTGP, 5, NotSerialized)
{
    If (LEqual (Arg0, Buffer (0x10)
      {
            /* 0000 */    0xC6, 0xB7, 0xB5, 0xA0, 0x18, 0x13, 0x1C, 0x44,
            /* 0008 */    0xB0, 0xC9, 0xFE, 0x69, 0x5E, 0xAF, 0x94, 0x9B
      }))
    {
      If (LEqual (Arg1, One))
      {
            If (LEqual (Arg2, Zero))
            {
                Store (Buffer (One)
                  {
                         0x03
                  }, Arg4)
                Return (One)
            }
            If (LEqual (Arg2, One))
            {
                Return (One)
            }
      }
    }
    Store (Buffer (One)
      {
            0x00
      }, Arg4)
    Return (Zero)
} 显卡驱动
      最难搞的就是TMD显卡了,花费我最多的时间。此方法驱动显卡必须保证原装ATIRadeonX2000.kext 中已有自己的显卡硬件ID。
1、ATI4600Controller.kext 中加入显卡ID;
      打开ATI4600Controller.kext/Contents/Info.plist , 找到 IOPCIMatch 节点,在它值里加入0x95531002 。
2、使用Shrike参数驱动显卡;
      打开ATI4600Controller.kext/Content/MacOS/ATI4600Controller文件
找到Shrike参数:02 00 00 00 40 00 00 00 09 01 00 00 02 01 00 03 02 00 00 00 00 01 00 00 09 01 00 00 20 01 02 02 00 04 00 00 04 03 00 00 00 01 00 00 10 00 01 01替换为:10 00 00 00 10 00 00 00 00 01 00 00 00 10 02 06 00 08 00 00 00 02 00 00 00 71 00 00 20 01 01 02 02 00 00 00 40 00 00 00 09 01 00 00 12 04 00 013、安装ATY_Init.kext到S/L/E,识别显卡。   屏幕亮度
      从dsdt中找到Device (PWRB),在它前面加入: Device (PNLF)
{
   Name (_HID, EisaId ("APP0002"))
   Name (_CID, "backlight")
   Name (_UID, 0x0A)
   Name (_STA, 0x0B)
}就能调节亮度了。我现在有两种组合键调节亮度:Fn+C/P 及 ThinkPad自身的Fn+F7/F8(ThinkPad组合键没有小太阳)。(2013-02-17更新:新版变色龙已解决亮度保存问题,如果不行再参考下面部分。)
      重启亮度会重置为最大,设置开机亮度的方法:
1、将brightness文件放进bin目录;
2、打开AppleScript ,写入下面脚本:tell application "System Events"
do shell script "sudo brightness -v 亮度值" user name "账号" password "密码" with administrator privileges
end tell亮度值取0-1,保存为backlight.app,放进Applications目录;
3、在系统偏好设置—>用户与群组—>登陆项,加入backlight.app 。
      关于E40的机器,好多人SMBios.plist中机型都选MacBookPro6,1,但iMac11,2配置才是最接近吧。我用MacBookPro6,1的话会有一个问题,就是亮度调到0会黑屏,按增加亮度救不回来,起初我不知怎么办,就直接按power键关机,结果HFS+分区被损坏。由于 HFS+ for Windows 有开机启动进程,读取hfs+分区出错,导致win7开机时蓝屏报错。但机型改成用imac 11,2就完美了,有16档,调到0不会黑屏。
      现在知道,组合键Ctrl+Alt+F12(还不行就加上Fn键)可以让mac重启,避免了按power键伤机器的问题。      

123456_ 发表于 2012-11-22 22:43

本帖最后由 123456_ 于 2013-1-5 00:12 编辑

声卡驱动
      如果你只是为获取codec 文件需要Linux系统的话,我强烈推荐大家安装 CDlinux系统(http://cdlinux.info/wiki/doku.php/zh/download/latest ,居然不能给文字加站外链接{:5_597:}),它比坛内其他人推荐的系统或工具都要小。另外,10.8的声卡驱动layout-id不能自定义了,因此仿冒驱动的修改与nksmiles有一点点区别。
1、在dsdt中的Device (HDEF)内加入:Method (_DSM, 4, NotSerialized)
{
   Store (Package (0x0A)
         {
             "codec-id",
             Buffer (0x04)
             {
               0x69, 0x02, 0xEC, 0x10
            },
             "layout-id",
             Unicode ("V"),
             "device-type",
             Buffer (0x0F)
             {
                  "Realtek ALC269"
             },
             "hda-gfx",
             Buffer (0x0A)
             {
               "onboard-1"
             },
             "PinConfigurations",
             Buffer (Zero) {}
         }, Local0)
   DTGP (Arg0, Arg1, Arg2, Arg3, RefOf (Local0))
   Return (Local0)
}注意其中的layout-id值,Unicode ("V")对应的是 86 。
2、打开AppleHDA.kext/Contents/PlugIns/AppleHDAHardwareConfigDriver.kext/Contents/Info.plist 。
      展开IOKitPersonalities下的HDA Hardware Config Resource,删除HDAConfigDefault下Item 0以外的所有节点;
展开Item 0,改CodecID的值为283902569(10EC0269转为十进制);
改ConfigData的值为(通过整理codec 文件取得)<01171cf0 01171d00 01171e00 01171f40 01271c10 01271d01 01271ea3 01271f90 01471c40 01471d01 01471e13 01471f90 01571c50 01571d10 01571e21 01571f01 01671cf0 01671d00 01671e00 01671f40 01871c20 01871d10 01871e81 01871f01 01971cf0 01971d00 01971e00 01971f40 01a71cf0 01a71d00 01a71e00 01a71f40 01b71cf0 01b71d00 01b71e00 01b71f40 01d71cf0 01d71d00 01d71e00 01d71f40 01e71cf0 01e71d00 01e71e00 01e71f40 01470c02>改LayoutID值为 86 。
3、将zlib.pl文件及AppleHDA.kext/Contents/Resources/目录下的 layout86.xml.zlib、Platforms.xml.zlib 复制到同一目录下。
      打开终端,cd命令切换到此目录,再执行下面命令:perl zlib.pl inflate layout86.xml.zlib > layout86.xml
perl zlib.pl inflate Platforms.xml.zlib > Platforms.xml执行后会生成layout86.xml、Platforms.xml两个文件。
      
4、打开layout86.xml
      展开PathMapRef下Item 0,改CodecID下Item 0的值为283902569,改PathMapID的值为 86 。其它项就照着nksmiles的 Layouts修改部分改。
5、打开Platforms.xml
      将PathMaps下Item 0以外的所有节点删除;
展开Item 0改PathMapID为 86 ,其它项就照着nksmiles的 PathMaps修改部分改。
6、将layout86.xml和Platforms.xml压缩成zlib格式。执行下面命令:perl zlib.pl deflate layout86.xml > layout86.xml.zlib
perl zlib.pl deflate Platforms.xml > Platforms.xml.zlib      将生成的两个zlib放回AppleHDA.kext/Contents/Resources目录,替换原有的。其它layoutXX.xml.zlib全部删除。
7、AppleHDA破解。终端执行下面命令:sudo perl -pi -e 's|\x62\x02\xec\x10|\x69\x02\xec\x10|g' /System/Library/Extensions/AppleHDA.kext/Contents/MacOS/AppleHDA8、去掉内核日志中的Sound assertion提示:
      在/System/Library/Extensions/AppleHDA.kext/Contents/MacOS/AppleHDA 及AppleHDA.kext/Contents/PlugIns/AppleHDAController.kext/Contents/MacOS/AppleHDAController中找到536F756E6420617373657274696F6E20696E202573206174206C696E652025640A替换为位数相等的00,即0000000000000000000000000000000000000000000000000000000000000000009、安装修改后的AppleHDA.kext,修复权限重启。
   
网卡驱动
      以下二选一:
      1) Realtek官网10.7驱动,原址http://www.realtek.com/downloads/downloadsView.aspx?Langid=3&PNid=13&PFid=5&Level=5&Conn=4&DownTypeID=3&GetDown=false      2) ,安装完kext,不用重启就能上网。
电源驱动
   替换掉原装电源驱动。
   
解决BIOS重置
   从dsdt中找到Device (RTC),将整块内容替换为:Device (RTC)
{
   Name (_HID, EisaId ("PNP0B00"))
   Name (_CRS, ResourceTemplate ()
   {
         IO (Decode16,
             0x0070,// Range Minimum
             0x0070,// Range Maximum
             0x01,// Alignment
             0x02,// Length
         )
   })
}

123456_ 发表于 2012-11-22 22:43

本帖最后由 123456_ 于 2013-1-21 10:20 编辑

睡眠实现
1、从dsdt中找到Device (EHC1)处,在Name (_ADR, 0x001D0000)这行后面加入:Method (_DSM, 4, NotSerialized)
{
   Store (Package (0x02)
         {
            "AAPL,clock-id",
            Buffer (One)
            {
                  0x01
            }
         }, Local0)
   DTGP (Arg0, Arg1, Arg2, Arg3, RefOf (Local0))
   Return (Local0)
}2、找到Device (EHC2)处,在Name (_ADR, 0x001A0000)这行后面加入:Method (_DSM, 4, NotSerialized)
{
   Store (Package (0x02)
         {
             "AAPL,clock-id",
             Buffer (One)
             {
               0x02
             }
         }, Local0)
   DTGP (Arg0, Arg1, Arg2, Arg3, RefOf (Local0))
   Return (Local0)
}上述修改是让 EHCI USB 2.0 识别为内建。
3、在org.chameleon.Boot.plist中加入:<key>USBBusFix</key>
<string>Yes</string>解决唤醒黑屏的问题。
      现在 合盖/开盖及电源键 可以 睡眠/唤醒了,菜单栏的手动睡眠也有效。
如果刚唤醒系统时鼠标有卡顿现象,这时只要运行一下某个程序,我是用Alt+空格键 调一下spotlight,就不卡了。
但是自动睡眠有个问题:在“节能器”里调至小于10,实际还是至少10分钟才睡眠。照着 https://bbs.pcbeta.com/viewthread-1057544-1-1.html 尝试解决,系统显示倒是变了,但还是至少要等10分钟。发现系统设置了定时睡眠时,在进入睡眠前,会弹出个提示框倒计时10分钟才进入睡眠,猜想或许跟这个有关系吧。有谁知道怎么解决吗?
唤醒无声
   据了解这是ALC269的普遍情况。起初一直是重新载入kext 的方法解决,参考:https://bbs.pcbeta.com/forum.php?mod=viewthread&tid=786627打开AppleScript ,写入下面代码:
do shell script "kextunload /System/Library/Extensions/AppleHDA.kext
kextload /System/Library/Extensions/AppleHDA.kext
exit" user name "账号" password "密码" with administrator privileges
delay 0.5保存为app文件,唤醒之后执行一下。
另一个解决方法,参考 htt p://ww w.tonymacx86.co m/lion-laptop-support/51019-update-alc-269-patch-applehda-may-work-idea-others.html 安装patch过的IOAudioFamily.kext 并修复权限。
      
唤醒BIOS重置
      睡眠唤醒后重启时 BIOS 重置问题,参考 https://bbs.pcbeta.com/forum.php?mod=viewthread&tid=1095891
打开终端,执行以下命令:
sudo perl -pi -e 's|\x75\x30\x89\xd8|\xeb\x30\x89\xd8|' /System/Library/Extensions/AppleRTC.kext/Contents/MacOS/AppleRTC起初误认为用sudo命令就不用作其它什么处理,忽略了重建缓存这一步,导致一直不成功。org.chameleon.Boot.plist设置      只是加入npci=0x2000(解决开机木有小菊花)、CPU降频实现、以及USBBusFix=Yes(解决唤醒黑屏)。<?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 Flags</key>
         <string>npci=0x2000</string>
         <key>GenerateCStates</key>
         <string>Yes</string>
         <key>GeneratePStates</key>
         <string>Yes</string>
         <key>USBBusFix</key>
         <string>Yes</string>
         <key>UseKernelCache</key>
         <string>Yes</string>
    </dict>
</plist>Windows 与Mac系统时间不一致
      在Win系统下, 开始—>运行—>CMD,执行以下命令:Reg add HKLM\SYSTEM\CurrentControlSet\Control\TimeZoneInformation /v RealTimeIsUniversal /t REG_DWORD /d 1就解决了。{:9_638:}最后感叹一下子:折腾黑苹果,痛苦并快乐着!!

123456_ 发表于 2012-11-22 23:11

本帖最后由 123456_ 于 2016-7-1 16:58 编辑




开机扁苹果
      在另一贴 https://bbs.pcbeta.com/viewthread-1205354-1-1.html ,欢迎围观!{:7_438:}

lovttt 发表于 2012-11-22 23:25

强帖留名,看后,我退缩了。

东城丶 发表于 2012-11-23 09:26

楼主有无线网卡驱动马{:5_297:}

半夜洗衣服 发表于 2012-11-23 09:34

加油!~我也快弄好了。折腾驱动~

lg0001 发表于 2012-11-23 12:49

take it for test

东城丶 发表于 2012-11-23 22:03

{:5_597:}新手看起来有点困难,我慢慢学去

canmenglee 发表于 2012-11-23 22:05

123456_ 发表于 2012-11-23 22:09

东城丶 发表于 2012-11-23 22:03 static/image/common/back.gif
新手看起来有点困难,我慢慢学去

如果你刚接触,又像我这样爱自找麻烦的话,那么恭喜你,你的苦日子来了{:7_441:}

123456_ 发表于 2012-11-23 23:15

canmenglee 发表于 2012-11-23 22:05 static/image/common/back.gif
写的很详细,支持一个

谢谢。 话说你头像是神马?

canmenglee 发表于 2012-11-24 09:15

canmenglee 发表于 2012-11-24 09:28

bossbird 发表于 2012-11-25 15:59

内牛满面啊。。。。。。终于看到牛人拉。。

fuwu1245 发表于 2012-11-25 16:56

键关机,结果HFS+分区被损坏。由于 HFS+ for Windows 有开机启动进程,读取hfs+分区出错,导致win7开机时蓝屏报错。但机型改成用imac 11,2就完美了,有16档,调到0不会黑屏。

这个蛮关键的 现在一直Windows和Mac分开用就是因为不想装读取HFS分区的软件   

123456_ 发表于 2012-11-25 18:52

fuwu1245 发表于 2012-11-25 16:56 static/image/common/back.gif
键关机,结果HFS+分区被损坏。由于 HFS+ for Windows 有开机启动进程,读取hfs+分区出错,导致win7开机时蓝 ...

现在知道怎么避免那个蓝屏了,就不愁了
意外关机后,就先-x进一次mac

装个软件还是有必要的,有时只为拷个文件,重启一次不划算

andyoulee 发表于 2012-11-25 19:45

太复杂了。。。

123456_ 发表于 2012-11-25 19:56

andyoulee 发表于 2012-11-25 19:45 static/image/common/back.gif
太复杂了。。。

这还复杂啊

andyoulee 发表于 2012-11-26 12:18

123456_ 发表于 2012-11-25 19:56 static/image/common/back.gif
这还复杂啊

做一个什么懒人版本,咱们直接拿来傻瓜安装就好了。。。
页: [1] 2 3 4 5 6 7 8 9 10
查看完整版本: ThinkPad E40黑苹果折腾大结局