大家好,又见面了,我是你们的朋友全栈君。
2021年1月更新, 发现升级 big sur 11.1之后,固件版本变成了429.0.0.0, 睡眠问题又回来了,每次都睡死,不醒。 于是我按老办法,把mbp114的nvme驱动刷到mpb111的429里,刷完之后,结果,睡眠问题又解决了,真是服了苹果,搞来搞去的。办法就是用ch341a来刷,参考最下面的说明。把文件换成bigsur的nvme驱动就好了。
———我是分隔线—-
Big Sur 出来了,有网友说需要刷回原版固件版本方可升级,我试了一下,升级中间会黑屏死机重启多次, 然后刷回原版也是如此,
但是多次之后,也可以升级到Big Sur,据说下面的跟贴说,原盘的话会升到一个新的固件版本, 我确认了一下我的版本还是153.0.0.0.0, 看来是没有升级成功了,我的硬盘不是原装的,按之前的研究,这个无法升级是合理的,刷回的旧版,休眠问题回来了,mode 25 的情况下,一会就会睡死了。
搞了一个原装的APPLE的SSD, 把Firmware的版本升到了427.0.0.0.0, 休眠问题消失了,不会再睡死了,感谢苹果。
测试了2013-2014的两个MBP都是同样的结果。
据说不需要原装的SSD也有可能升级固件成功,但是不同的牌子不一样的,有机率失败,大家可以试试,欢迎留言返馈。
本文章的原来使用ch341a来夹芯片刷bios的办法可以废弃了,!!!大家只需要把固件升到427就好了!!!!!
同时已经刷过BIOS的网友,如果无法升级固件,请尝试使用编程器恢复原来的没有修改的固件。如果你没有备份的话,又无法升级的话,这个有就比较悲剧了,我也不知道怎么办了,只能试试换个ssd看看,欢迎大家留言交流。
下面介绍,如何升级Bigsur的固件,不使用下面的办法,可以使用全新安装或升级,也是可以刷到固件的。
sudo /usr/sbin/bless -firmware Desktop/Big\ Sur/MBP111.scap --verbose --recovery
新的文件在安装的app的下面的目录:
先mount一下:
Install\ macOS\ Big\ Sur.app/Contents/SharedSupport/SharedSupport.dmg
.
然后可以在下面的地方找到 一个zip文件:
/Volumes/Shared\ Support/com_apple_MobileAsset_MacSoftwareUpdate/ee3ab6c04234b360dd8fca93c0ae49f957bf0843.zip
解开这个zip, 就得到了新的firmware了:
ee3ab6c04234b360dd8fca93c0ae49f957bf0843/AssetData/boot/EFI/EFIPayloads
我的2013 late mbp 15, 所以是MBP111.scap
2014的mbp是 MBP112.scap
执行上面的bless的命令,然后关机(不是重启) ,然后马上开机。
这个据说只能在原始的固件才行,修改过补丁的不行。
然后就开机的时候会看到logo和进度条,1-2分钟就可以升级完, 升级完会自动重启一下,然后就进入系统了。
测试了手上另一台mbp 15 2014年的,是原装的硬盘,成功把固件升级到了427.0.0.0
admin@ADMINdeMacBook-Pro ~ % sudo /usr/sbin/bless -firmware ~/Downloads/MBP112.scap --verbose --recovery
EFI found at IODeviceTree:/efi
Will need to copy 8523776 bytes to EFI system partition
No auxiliary booter partition required
System partition found
Preferred system partition found: disk0s1
Returning booter information dictionary:
{
"Auxiliary Partitions" = (
);
"Data Partitions" = (
disk1s5
);
"Preboot Volumes" = (
disk1s2
);
"System Partitions" = (
disk0s1
);
}
Mounting at /Volumes/bless.fY7x
Executing "/sbin/mount"
Returned 0
Creating /Volumes/bless.fY7x/EFI/APPLE/FIRMWARE if needed
Deleting previous contents of /Volumes/bless.fY7x/EFI/APPLE/FIRMWARE
Deleting /Volumes/bless.fY7x/EFI/APPLE/FIRMWARE/MBP112.scap (8520304 bytes)
Opened dest at /Volumes/bless.fY7x/EFI/APPLE/FIRMWARE/MBP112.scap for writing
preallocation not supported on this filesystem for /Volumes/bless.fY7x/EFI/APPLE/FIRMWARE/MBP112.scap
/Volumes/bless.fY7x/EFI/APPLE/FIRMWARE/MBP112.scap created successfully
No auxiliary booter partition required
System partition found
Preferred system partition found: disk0s1
Returning booter information dictionary:
{
"Auxiliary Partitions" = (
);
"Data Partitions" = (
disk1s1
);
"Preboot Volumes" = (
disk1s2
);
"System Partitions" = (
disk0s1
);
}
Bad path for boot item: /Users/admin/Downloads/MBP112.scap
Relative path of /Volumes/bless.fY7x/EFI/APPLE/FIRMWARE/MBP112.scap is \EFI\APPLE\FIRMWARE\MBP112.scap
IOMedia disk0s1 has UUID 492ABF07-D827-447A-A506-DA52C7BCA4CF
Executing "/sbin/umount"
Returned 0
Write to RTC: 0
Setting EFI NVRAM:
{
"efi-apple-recovery" = "<array><dict><key>IOMatch</key><dict><key>IOProviderClass</key><string>IOMedia</string><key>IOPropertyMatch</key><dict><key>UUID</key><string>492ABF07-D827-447A-A506-DA52C7BCA4CF</string></dict></dict><key>BLLastBSDName</key><string>disk0s1</string></dict><dict><key>IOEFIDevicePathType</key><string>MediaFilePath</string><key>Path</key><string>\\EFI\\APPLE\\FIRMWARE\\MBP112.scap</string></dict></array>";
}
稍后试一下非原装的升级。
新的Big sur的Macbook pro 的固件我上传了在 https://download.csdn.net/download/aerror/13119980
———–上面这些更新于-2020.11.17—— 我是分割线 —————以下是原文(已废弃,不建议采用),升级big sur就好了,不需要再用编程器这样修改了。 ———
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
1. 手上512GMBP 2013 late 差不多满了,因为穷,所以在淘宝上买了一个NVME转Macbook pcie,然后再买一个NVME 2T的硬盘
2. NVME因为需要最新的Firmware Rom支持,所以必须使用原装的硬盘(必须原装)安装Mac 14以上,我安装了14.5.要不然识别不出来新安装的NVME硬盘
3. 买之前就知道是会有休眠问题的,问了卖家推荐了一些型号说不会的,其中我是买了推荐的HP EX950 2T, 比intel足足贵了700元,结果然并卵,安装完系统测试了一下,发现也是有休眠问题的。测试办法如下:
pmset -a hibernatemode 25
pmset sleepnow
然后合上盖子,过上几分钟,发现就睡死了。根本醒不过来了。必须强行关机再开机, 确认了多次如此。 估计有人说2013 late的机子可以,可能是默认的hibernatemode 3 ,或者设置了hibernatemode 0, 要不就是插着电源。
同时还有副作用,就是开机会黑屏过10-20秒才看到苹果和进度条,开机速度超慢。
4. 遍查了整个网络,找到了以下的资料:
Background
证实了,只要是2013-2014的Macbook都会有问题的,任何型号的NVME转接的SSD都有问题,没有例外,原因是固件中的NVME驱动有问题会令到无法唤醒.
参考URLhttps://forums.macrumors.com/threads/upgrading-2013-2014-macbook-pro-ssd-to-m-2-nvme.2034976/page-87
解决办法也给出了,就是使用2015的固件中NVME替换2013-2014的固件驱动,GUID为51116915-C34B-4D8E-86DB-6A70F2E60DAA, 然后使用编程器去先从MX25L6406EMI这芯片读出原来的Rom, 然后从Macos的安装包找出2015的NVME替换好了,再刷回MX25L6406EMI。
文中CH341A编程器淘宝有卖,好便宜,只需要20-30元不等,但是它是使用一个SPI to J6100 adapter,这个查了一下发现淘宝没有,只有ebay上有,韩国卖家,几百块,发货时间还要超长。。。
5. 既然升级系统的时候可以升级固件,那么说明使用软件来刷也是可行的,就是前几天发的文章了,
1. get the FirmwareUpdate.pkg file from the OS installer app's installESD.dmg
2. extract the contents using pkgutil --expand /path/to/FirmwareUpdate.pkg <path somewhere else>/FirmwareUpdate
3. in terminal, cd to the Scripts directory inside the expanded FirmwareUpdate pkg directory.
4. with Scripts as your working directory, run these 2 commands, then reboot:
sudo /usr/libexec/FirmwareUpdateLauncher -p "$PWD/Tools"
sudo /usr/libexec/efiupdater -p "$PWD/Tools/EFIPayloads"
5. at the reboot, firmware will be updated if there are any updates to be applied.
测试了一下,固件是可以刷的,但是必须满足以下所有条件:
1. 使用原装的硬盘
2. 原装的固件
3.固件版本必须大于等于当前的固件的版本
efiupdate只是把文件复制到efi分,然后设置了一些nvram的参数,然后是固件启动的时候从efi的指定地方来更新,但是很明显上面的测试表明了,这个固件的更新之前是有校验的上面三个条件都满足才给刷的,修改了的固件刷不了。
这里人下 Y.H. wong说
hat guide on MacRumors is really useful. I recently upgraded a 2014 MBPr board using most of its instructions, and it still works. Changes made: 1. No need for kapton tape. 2. I used a Sintech ST-NGFF2013-B. 3. I didn't turn off hibernation with pmset, I didn't buy a CH341A programmer either. I just looked up the MBP112 and MBP114 firmwares, transplanted the NVMe driver from MBP114 to MBP112, and flashed my Mac with /usr/libexec/efiupdater -p /path/to/EFIPayloads --force-update. Wakeup problem completely gone. – Y.H Wong Nov 4 '18 at 13:00
@Y.HWong: Sounds like the easiest way to flash the firmware. Can you tell in more detail how you proceeded? May be even join the discussion at MacRumors. Thanks a lot! – Bernhard Fürst Feb 6 at 19:20
不知道他是怎么做到的,始终无法把修改后的固件成功刷上去,有点怀疑他可能是没有测试清楚 。
6. 没有办法了,看到intel是有一个fpt.efi(Flash proramming tool)的,可以在Uefi的shell下执行来刷UEFI的BIOS/固件,但是只是对于PC的,工具和文档参考https://github.com/holoto/efi_shell_flash_bios/
于是安装了refind,然后从clover那里找了一个shellx64.efi放到/EFI/tools/shell.efi下,然后下载了fpt.efi也放到这里,然后运气并不好,fpt.efi无法识别SPI的设备.
但是发现安装refind解决了一些问题:
1.启动不会黑屏20秒左右了,马上就可以启动看到启动菜单,把超时设置为0的话,马上就可以看到苹果和进度条了。
2.唤醒虽然还是有问题,但是表现有些不一样,唤醒的时候不会直接黑屏卡死,而是可以看到refind的启动菜单,然后自动重启,然后再重启开机,这个其实也还好,至少不需要手动长按关机再开机那么烦了。
这个两个问题的解决,我认为问题应该不只是固件的问题,还和启动的efi有关系,然后翻查了一下refind的文档,发现它在原装的硬件中唤醒表现竟然是和我的机器的表现是一致的,就是唤醒变成了自动重启两次。
新的希望又有了,看来唤醒这个只是refind没有做好,在白苹果还有一个选择就是refit这个工具,虽然很久没有更新了,但是工作方式有些不同,它是直接安装在系统盘的根目录的,而不是EFI的分区中,也没有使用nvram的变量。 据查在白苹里使用它是没有休眼唤醒的问题的。于是把refind删除了,安装了refit, 然而也是没有走到狗屎运. :(
7. 好好的查了一下mx25L6406EMI-12G的datasheet, 知道它是8 SOP封装的,问了做硬件的朋友,他说其实可以焊几条线来用刷,但是不想动手电烙铁,上次拆硬盘的bios是拆得满头大汗,折腾许久,最后竟然还没有成功,所以有点信心不足. 于是在淘宝上再试试找那个连接线,也是没有找到,但是发现有一个sop 8的夹子,研究一下买家的评论图片,都是用来刷路由器,刷笔记本的,看来是一个可行,价格便宜又可以快速达成的办法。 于是拍了ch341a+夹子+一堆转接1.8v之类的一整套回来,花了50元左右,第二天就收到了。
8. 买ch341a没有说明书, 我汗,看到有一个跳线写着3.3V5V的,从https://static6.arrow.com/aropdfconversion/cb5c77c505104f4e4cad1b3667abe88327b4ee44/mx25l6406e203v2064mb20v1.9.pdf
先下载datasheet确认了这个mx25L6406EMI是3.3V的,然后小心翼翼用万用表量了一个8号脚是3.3V的, 然后把跳线插在编程那个两个脚上(板上好在有提示),
夹子夹了第一次没有夹好,读不出来,夹第二次好了,测试一下,可以读, 一切正常, 两个红灯都亮起来了,如图:
按上面的https://forums.macrumors.com/threads/upgrading-2013-2014-macbook-pro-ssd-to-m-2-nvme.2034976/page-87
一步一步都做,最后成功刷入固件。 开机问题好了,使用pmset -a hibernatemode 25来测试,唤醒问题也好了。
一切完美解决。
应要求补充一下翻译过来的操作步骤:
1. 打开后盖,主板上找mx25L6406EMI-12G这个芯片,是8只脚的,写了mx25L6406EMI这些字在上面的, 照图夹好BIOS, 红线对齐第一只脚(芯片上有一个圆点标记的)
2. 安装flash rom 工具,使用brew安装
brew install flashrom
3. 开始读出原来的 bios ROM ,这个大小是8M的。输入以下命令:
flashrom -p ch341a_spi -r dump1.bin -c "MX25L6406E/MX25L6408E"
保险起见,执行3次,每次改改名,如下:
flashrom -p ch341a_spi -r dump2.bin -c "MX25L6406E/MX25L6408E"
flashrom -p ch341a_spi -r dump3.bin -c "MX25L6406E/MX25L6408E"
然后可以md5看看hash是不是一致的
md5 *.bin
要是读不出,或者是三次不一致,应该是没有夹好,重新夹一下。
在读数据的时候,这个ch341a的红灯会亮起来
4. 从升级/安装包解压出2015的MBP固件中的NVME驱动
2013-2014 MacBook Pro (MacBookPro11,1), 用MacBookPro11,4 的 firmware
2013-2014 MacBook Air (MacBookAir6,1),用 MacBookAir7,1的 firmware
4.1 双击装载 InstallESD.dmg , 在macOS安装包的Contents/SharedSupport目录下.
4.2 在InstallESD.dmg image, 找到 Packages/FirmwareUpdate.pkg 这个安装包
4.3 用Pacifist或The Archive Browser 打开 the FirmwareUpdate.pkg
4.4 打开Scripts
4.5 从Tools/EFIPayloads 这里解压合适的firmware.
MBA71_0177_B00.fd 是2015 MacBook Air
MBP114_0183_B00.fd 是 2015 MacBook Pro
4.6 上面的操作使用命令行也是可以,我是使用命令行来操作的
xar -x Packages/FirmwareUpdate.pkg
cat Scripts | cpio -i
5. 修改dump1.bin 中的NVME驱动
5.1 用UEFITool 打开2015的固件,找到这个驱动,有查找菜单的,找GUID为 51116915-C34B-4D8E-86DB-6A70F2E60DAA 的就是了。
5.2 右键 “Extract as is…” 把2015的驱动保存下来.
5.3 使用5.2这时保存下来的驱动去替换dump下来的rom里的nvme驱动,也是定位那个GUID,然后右键 “replace aS IS ….”
5.4 替换的动作可以在UEFITool的界面如下图看到,保存这个文件为MBA71_0117_B00-Mod.rom ,
5.5 可以再次打开这个修改后的文件,可以对比一下这个rom的驱动和2015的firmware中的驱动的信息是不是一致的。
如果一致的,那么你这一步成功修改了你机器定制的rom了。
6. 使用flashrom 把修改后的rom写入bios芯片里, flashrom写完之后会自己校验的。
flashrom -p ch341a_spi -w MBA71_0117_B00-Mod.rom -c "MX25L6406E/MX25L6408E"
写完之后,拔出USB的ch341a编程,夹子松开移走,开机,应该一切都是完美的了,可以看到开机马上就看到进度条了,而不是原来的卡上个几十秒,可以使用上面说的方法测试休眠唤醒。
祝好运.
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/149731.html原文链接:https://javaforall.cn