蓝牙与WIFI二合一的NGFF卡没啥好选得,用得最多的就是BCM 94352z(DW1560)。但是我在东芝Portege z30-b上安装这块卡时还是遇到了不少麻烦,安装过程如下:

下载驱动

下载:RehabMan-FakePCIID

下载:RehabMan-BrcmPatchRAM

安装驱动

解压缩以上文件,将BrcmFirmwareRepo.kext与BrcmPatchRAM2.kext安装到//Library/Extensions(最好用工作软件安装,例如:KCPM Utility Pro)。 将FakePCIID_Broadcom_WiFi.kext与FakePCIID.kext放入/EFI/Clover/kexts/10.11(10.12)/中。

配置 Clover

用Clover Configurator打开config.plist,做如下修改:

  1. Devices->Fake ID->WIFI中填入0x43a014E4 (后来我试了下,似乎不填这个也没问题,并且好象去掉这个后,iPhone HotSpot功能好了)
  2. SystemParameters->InjectKexts先择Yes或Detect
  3. 加入Kexts注入:
<key>KextsToPatch</key>
<array>
	<dict>
		<key>Comment</key>
		<string>10.11-BCM94352-CC=#a-Ramalama</string>
		<key>Disabled</key>
		<false/>
		<key>Find</key>
		<data>
		QYP8/3QsSA==
		</data>
		<key>Name</key>
		<string>AirPortBrcm4360</string>
		<key>Replace</key>
		<data>
		ZscGI2HrKw==
		</data>
	</dict>
	<dict>
		<key>Comment</key>
		<string>10.11-BCM94352-Airport-Extreme</string>
		<key>Disabled</key>
		<false/>
		<key>Find</key>
		<data>
		axAAAHUN
		</data>
		<key>Name</key>
		<string>AirPortBrcm4360</string>
		<key>Replace</key>
		<data>
		axAAAJCQ
		</data>
	</dict>	
	<dict>
		<key>Comment</key>
		<string>10.11-BT4LE-Handoff-Hotspot-lisai9093</string>
		<key>Disabled</key>
		<false/>
		<key>Find</key>
		<data>
		SIX/dEdIiwc=
		</data>
		<key>Name</key>
		<string>IOBluetoothFamily</string>
		<key>Replace</key>
		<data>
		Qb4PAAAA60Q=
		</data>
	</dict>
	<dict>
		<key>Comment</key>
		<string>10.11-BCM94352-5GHz-US-FCC-dv</string>
		<key>Disabled</key>
		<false/>
		<key>Find</key>
		<data>
		QYP8/3QsSA==
		</data>
		<key>Name</key>
		<string>AirPortBrcm4360</string>
		<key>Replace</key>
		<data>
		ZscGVVPrKw==
		</data>
	</dict>
	<dict>
		<key>Comment</key>
		<string>10.11-BCM94352-Whitelest-0x4331-iMac14,3</string>
		<key>Disabled</key>
		<false/>
		<key>Find</key>
		<data>
		TWFjLUM2RUZBNjM5NjJGQzZFQTA=
		</data>
		<key>Name</key>
		<string>AirPortBrcm4360</string>
		<key>Replace</key>
		<data>
		TWFjLTI3QURCQjdCNENFRThFNjE=
		</data>
	</dict>
	<dict>
		<key>Comment</key>
		<string>10.11-BCM94352-Whitelest-0x4353-MacBoolAir5,2</string>
		<key>Disabled</key>
		<false/>
		<key>Find</key>
		<data>
		TWFjLUM2RUZBNjM5NjJGQzZFQTA=
		</data>
		<key>Name</key>
		<string>AirPortBrcm4360</string>
		<key>Replace</key>
		<data>
		TWFjLTI3QURCQjdCNENFRThFNjE=
		</data>
	</dict>
</array>

关于无法找到蓝牙模块的问题

安装好配置好后启动系统,就是死活找不到蓝牙模块,按说这卡的蓝牙是走USB的,就算驱动不了这个蓝牙模块,也是可以在System Reports的USB项中看到这个设备,后来,为了验证是否是卡的问题,我甚至重装了Windows,但是在Windows中也没有找到蓝牙模块。联系了卖家,卖家发誓说卡是新的,质量肯定没问题,我看这卡似乎质量不错,看来,这不是软件问题,而是硬件问题。后来,查阅了无数资料,终于找到了解决方案,说起来也很简单,就是将卡上的两个脚屏蔽掉,如下图:

94352z Shield Two Legs

功能测试

测试通过的功能:

  1. Handoff
  2. 5Ghz
  3. AirDrop
  4. iPhone HotSpot

说起来这个问题挺妖的,问题表现症状就是在启动系统时,必须在启动参数中加入-v(就是verbose啦),不然,过了Clover管理器就黑屏。以前在10.11系统上没这问题,后来在安装了10.12后就遇到这个问题。虽然问题不是多大,但是,这个问题让我纠结了2个月了,我是个完美主义者,怎么能容忍系统启动时显示整屏的日志信息呢!今天总算解决了这个问题,虽然还是没搞明白问题背后的技术细节,但是不管怎么说,总算有了个解决问题的办法。解决方法很简单,就是将config.plist->Boot->CustomLogo设为No(原来我都是用Alternate,因为在老版本中,只有这个选项能使系统启动时显示的那个苹果logo更象是正版的)。对,就这么简单。

我以前讲过如何用AppleIntelCPUPowerManagementInfo.kext来查看黑苹果电源管理是否正常工作,AppleIntelInfo.kext是AppleIntelCPUPowerManagementInfo.kext的替代者,并且,从其功能更加强大,收集的信息更加多样。使用如下:

下载编译AppleIntelInfo.kext,生成AppleIntelInfo.kext。

sudo chown -R root:wheel AppleIntelInfo.kext
sudo kextutil AppleIntelInfo.kext
sudo cat /tmp/AppleIntelInfo.dat

以我的Toshiba Portege z30-b为例,信息如下:

AppleIntelInfo.kext v2.0 Copyright © 2012-2016 Pike R. Alpha. All rights reserved
enableHWP................................: 0

Settings:
------------------------------------------
logMSRs..................................: 1
logIGPU..................................: 1
logCStates...............................: 1
logIPGStyle..............................: 1

Warning: Clover hw.busfrequency error detected : 17d78400
InitialTSC...............................: 0x1f7a2b22ebe4 (1504 MHz)
MWAIT C-States...........................: 286531872

Processor Brandstring....................: Intel(R) Core(TM) i5-5300U CPU @ 2.30GHz

Processor Signature..................... : 0x306D4
------------------------------------------
 - Family............................... : 6
 - Stepping............................. : 4
 - Model................................ : 0x3D (61)

Model Specific Registers (MSRs)
------------------------------------------

MSR_CORE_THREAD_COUNT............(0x35)  : 0x0
------------------------------------------
 - Core Count........................... : 2
 - Thread Count......................... : 4

MSR_PLATFORM_INFO................(0xCE)  : 0x5053BF3011700
------------------------------------------
 - Maximum Non-Turbo Ratio.............. : 0x17 (2300 MHz)
 - Ratio Limit for Turbo Mode........... : 1 (programmable)
 - TDP Limit for Turbo Mode............. : 1 (programmable)
 - Low Power Mode Support............... : 1 (LPM supported)
 - Number of ConfigTDP Levels........... : 1 (additional TDP level(s) available)
 - Maximum Efficiency Ratio............. : 5
 - Minimum Operating Ratio.............. : 5

MSR_PMG_CST_CONFIG_CONTROL.......(0xE2)  : 0x1E008406
------------------------------------------
 - I/O MWAIT Redirection Enable......... : 1 (enabled, IO read of MSR(0xE4) mapped to MWAIT)
 - CFG Lock............................. : 1 (MSR locked until next reset)
 - C3 State Auto Demotion............... : 1 (enabled)
 - C1 State Auto Demotion............... : 1 (enabled)
 - C3 State Undemotion.................. : 1 (enabled)
 - C1 State Undemotion.................. : 1 (enabled)
 - Package C-State Auto Demotion........ : 0 (disabled/unsupported)
 - Package C-State Undemotion........... : 0 (disabled/unsupported)

MSR_PMG_IO_CAPTURE_BASE..........(0xE4)  : 0x31814
------------------------------------------
 - LVL_2 Base Address................... : 0x1814

IA32_MPERF.......................(0xE7)  : 0x64113239192
IA32_APERF.......................(0xE8)  : 0x1DB6E4D7358

MSR_FLEX_RATIO...................(0x194) : 0x10000
------------------------------------------

MSR_IA32_PERF_STATUS.............(0x198) : 0x21BA00001B00
------------------------------------------
 - Current Performance State Value...... : 0x1B00 (2700 MHz)

MSR_IA32_PERF_CONTROL............(0x199) : 0x1D00
------------------------------------------
 - Target performance State Value....... : 0x1D00 (2900 MHz)
 - Intel Dynamic Acceleration........... : 0 (IDA engaged)

IA32_CLOCK_MODULATION............(0x19A) : 0x0

IA32_THERM_INTERRUPT.............(0x19B) : 0x0

IA32_THERM_STATUS................(0x19C) : 0x883D0808
------------------------------------------
 - Thermal Status....................... : 0
 - Thermal Log.......................... : 0
 - PROCHOT # or FORCEPR# event.......... : 0
 - PROCHOT # or FORCEPR# log............ : 1
 - Critical Temperature Status.......... : 0
 - Critical Temperature log............. : 0
 - Thermal Threshold #1 Status.......... : 0
 - Thermal Threshold #1 log............. : 0
 - Thermal Threshold #2 Status.......... : 0
 - Thermal Threshold #2 log............. : 0
 - Power Limitation Status.............. : 0
 - Power Limitation log................. : 1
 - Current Limit Status................. : 0
 - Current Limit log.................... : 0
 - Cross Domain Limit Status............ : 0
 - Cross Domain Limit log............... : 0
 - Digital Readout...................... : 61
 - Resolution in Degrees Celsius........ : 1
 - Reading Valid........................ : 1 (valid)

MSR_THERM2_CTL...................(0x19D) : 0x0

IA32_MISC_ENABLES................(0x1A0) : 0x850089
------------------------------------------
 - Fast-Strings......................... : 1 (enabled)
 - FOPCODE compatibility mode Enable.... : 0
 - Automatic Thermal Control Circuit.... : 1 (enabled)
 - Split-lock Disable................... : 0
 - Performance Monitoring............... : 1 (available)
 - Bus Lock On Cache Line Splits Disable : 0
 - Hardware prefetch Disable............ : 0
 - Processor Event Based Sampling....... : 0 (PEBS supported)
 - GV1/2 legacy Enable.................. : 0
 - Enhanced Intel SpeedStep Technology.. : 1 (enabled)
 - MONITOR FSM.......................... : 1 (MONITOR/MWAIT supported)
 - Adjacent sector prefetch Disable..... : 0
 - CFG Lock............................. : 0 (MSR not locked)
 - xTPR Message Disable................. : 1 (disabled)

MSR_TEMPERATURE_TARGET...........(0x1A2) : 0x690000
------------------------------------------
 - Turbo Attenuation Units.............. : 0 
 - Temperature Target................... : 105
 - TCC Activation Offset................ : 0

MSR_MISC_PWR_MGMT................(0x1AA) : 0x400001
------------------------------------------
 - EIST Hardware Coordination........... : 1 (hardware coordination disabled)
 - Energy/Performance Bias support...... : 1
 - Energy/Performance Bias.............. : 0 (disabled/MSR not visible to software)
 - Thermal Interrupt Coordination Enable : 1 (thermal interrupt routed to all cores)

MSR_TURBO_RATIO_LIMIT............(0x1AD) : 0x1B1B1B1B1B1D
------------------------------------------
 - Maximum Ratio Limit for C01.......... : 1D (2900 MHz) 
 - Maximum Ratio Limit for C02.......... : 1B (2700 MHz) 

IA32_ENERGY_PERF_BIAS............(0x1B0) : 0x5
------------------------------------------
 - Power Policy Preference...............: 5 (balanced performance and energy saving)

MSR_POWER_CTL....................(0x1FC) : 0x4005F
------------------------------------------
 - Bi-Directional Processor Hot..........: 1 (enabled)
 - C1E Enable............................: 1 (enabled)

MSR_RAPL_POWER_UNIT..............(0x606) : 0xA0E03
------------------------------------------
 - Power Units.......................... : 3 (1/8 Watt)
 - Energy Status Units.................. : 14 (61 micro-Joules)
 - Time Units .......................... : 10 (976.6 micro-Seconds)

MSR_PKG_POWER_LIMIT..............(0x610) : 0x4280C800DD8078
------------------------------------------
 - Package Power Limit #1............... : 15 Watt
 - Enable Power Limit #1................ : 1 (enabled)
 - Package Clamping Limitation #1....... : 1 (allow going below OS-requested P/T state during Time Window for Power Limit #1)
 - Time Window for Power Limit #1....... : 110 (163840 milli-Seconds)
 - Package Power Limit #2............... : 25 Watt
 - Enable Power Limit #2................ : 1 (enabled)
 - Package Clamping Limitation #2....... : 0 (disabled)
 - Time Window for Power Limit #2....... : 33 (10 milli-Seconds)
 - Lock................................. : 0 (MSR not locked)

MSR_PKG_ENERGY_STATUS............(0x611) : 0x2FE2B74E
------------------------------------------
 - Total Energy Consumed................ : 49034 Joules (Watt = Joules / seconds)

MSR_PKG_POWER_INFO...............(0x614) : 0x78
------------------------------------------
 - Thermal Spec Power................... : 15 Watt
 - Minimum Power........................ : 0
 - Maximum Power........................ : 0
 - Maximum Time Window.................. : 0

MSR_PP0_POWER_LIMIT..............(0x638) : 0x0

MSR_PP0_ENERGY_STATUS............(0x639) : 0x1F50F940
------------------------------------------
 - Total Energy Consumed................ : 32067 Joules (Watt = Joules / seconds)

MSR_TURBO_ACTIVATION_RATIO.......(0x64C) : 0x0

MSR_PKGC6_IRTL...................(0x60b) : 0x8873
MSR_PKGC7_IRTL...................(0x60c) : 0x8891
MSR_PKG_C2_RESIDENCY.............(0x60d) : 0x6AAB4D09D28
MSR_PKG_C3_RESIDENCY.............(0x3f8) : 0x15F1B404C1C
MSR_PKG_C6_RESIDENCY.............(0x3f9) : 0x4205FA89
MSR_PKG_C7_RESIDENCY.............(0x3fa) : 0xCD729046C1D

IA32_TSC_DEADLINE................(0x6E0) : 0x1F7A2E776809

CPU Ratio Info:
------------------------------------------
Base Clock Frequency (BLCK)............. : 100 MHz
Maximum Efficiency Ratio/Frequency.......:  5 ( 500 MHz)
Maximum non-Turbo Ratio/Frequency........: 23 (2300 MHz)
Maximum Turbo Ratio/Frequency............: 29 (2900 MHz)

IGPU Info:
------------------------------------------
IGPU Current Frequency...................:  350 MHz
IGPU Minimum Frequency...................:  300 MHz
IGPU Maximum Non-Turbo Frequency.........:  300 MHz
IGPU Maximum Turbo Frequency.............:  900 MHz
IGPU Maximum limit.......................: No Limit

P-State ratio * 100 = Frequency in MHz
------------------------------------------
CPU P-States [ (13) 19 27 ] iGPU P-States [ (7) ]
CPU C3-Cores [ 0 1 2 3 ]
CPU C6-Cores [ 0 1 2 3 ]
CPU C7-Cores [ 0 1 2 3 ]
CPU P-States [ (13) 14 19 27 ] iGPU P-States [ (7) ]
CPU P-States [ (13) 14 18 19 27 ] iGPU P-States [ 7 (9) ]
CPU P-States [ (13) 14 16 18 19 27 ] iGPU P-States [ (7) 9 ]
CPU P-States [ 13 14 15 16 18 19 (27) ] iGPU P-States [ (7) 9 ]
CPU P-States [ (13) 14 15 16 18 19 27 ] iGPU P-States [ 7 9 (18) ]
CPU P-States [ (13) 14 15 16 18 19 27 ] iGPU P-States [ 7 9 (14) 18 ]
CPU P-States [ 13 14 15 16 18 19 21 (25) 27 ] iGPU P-States [ 7 9 14 (18) ]
CPU P-States [ 13 14 15 16 18 19 21 25 (26) 27 ] iGPU P-States [ 7 9 14 (18) ]
CPU P-States [ (13) 14 15 16 17 18 19 21 25 26 27 ] iGPU P-States [ 7 9 (12) 14 18 ]
CPU P-States [ (13) 14 15 16 17 18 19 20 21 25 26 27 ] iGPU P-States [ (7) 9 12 14 18 ]
CPU P-States [ (13) 14 15 16 17 18 19 20 21 25 26 27 ] iGPU P-States [ 7 9 12 14 (16) 18 ]
CPU P-States [ 13 14 15 (16) 17 18 19 20 21 25 26 27 ] iGPU P-States [ 7 (8) 9 12 14 16 18 ]

我这款笔记本比较小众(HD5500, Broadwell),安装黑苹果来比较麻烦。上次安装El Capitan时,害得哥一晚上没睡觉,说实话,虽然安装成功了,但是对于当时的一些细节,确实是记不得了。最近想重装下系统,昨天又害得哥用了一个晚上搞定它,这次记录下关键点。

首先,遇到的问题是电脑可以正常使用,但是用相同的EFI放到USB安装盘中启动后便会黑屏。从报错信息看是显卡驱动问题。我的ig-platform-id用的是0x16260006。后来才搞明白,安装时应该在Clover启动界面将其改为0x16160004,这样就可以正常进入安装界面,当然,如果你安装完全依然用0x16160004,你会发现,虽然系统可以正常进入,但是显存只有4M。

其次,是Clover的版本,开始时用的是3899版,虽然改了ig-platform-id,启动过程也不Crash了,但是进度条会挂起,也就是进度条停在一个位置死活不往下走了。后来将Clover换成3526版,问题解决!

最后,我也尝试了下安装Sierra,我发现Clover 3526不支持Sierra(进入安装界面时会自动重启),但是用3899又进不了安装界面。这就难办了,只能放弃。

对于HD5500,最讨厌的是”DVMT pre-allocated memory”。我死活找不到这款笔记本的BIOS工具,因此,也就无法得到BIOS镜像修改,只能借助Kexts注入,估计这也是安装时不得不用不同ig-platform-id的原因。

参考资料:GUIDE: Intel HD Graphics 5500 on OS X Yosemite 10.10.3

注:Clover 3526在官网上已经找不到了,这个可以在我的github上找到:Clover_v2.3k_r3526.zip

上文《 奥睿科(ORICO)BTA-408蓝牙适配器》讲了如何驱动这个外接蓝牙适配器。后来发现个问题,如果电脑已经启动,再插入这个适配器就无效了,需要插好适配器再启动系统。这个是比较烦人的,后来看了看资料,估计是驱动的加载顺序的问题,解决方法如下:

将EFI/EFI/CLOVER/kexts/10.11目录下的BrcmPatchRAM2.kext与BrcmFirmwareData.kext 删除,然后再用Kext Wiard安装BrcmPatchRAM2.kext与BrcmFirmwareRepo.kext到/System/Library/Extentions,重启,搞定。