profzei / Matebook-X-Pro-2018

💻 Latest macOS on Huawei Matebook X Pro 2018
Apache License 2.0
377 stars 48 forks source link

How do I update BIOS? #124

Closed hdamico closed 3 years ago

hdamico commented 3 years ago

Hello, I am wondering how to update BIOS within Mac OS since the uploaded file is a .exe file. Thanks in advance!

profzei commented 3 years ago

Hi @hdamico Atm BIOS update is only possible from Windows setup (...my actual setup is a dual booting MBXP) Atm my current version for BIOS is (old) 1.28 I'm collecting newer versions for BIOS but not installing them yet since there are clues about a limitation for PLx performances or a lock for CPU voltages...

Btw, what are your current BIOS version? If your current version is newer than 1.28, could you, please, upload here your DSDT full dumping? It could be very useful for managing hypothetical DSDT fixes made by HUAWEI... a quick how-to could be found in Dortania's ACPI guide!

mcoolidge commented 3 years ago

You could look at the instructions for updating from linux: https://github.com/nekr0z/linux-on-huawei-matebook-13-2019#bios-updates

I might consider setting up a live-usb drive with the tools installed.

hdamico commented 3 years ago

You could look at the instructions for updating from linux: https://github.com/nekr0z/linux-on-huawei-matebook-13-2019#bios-updates

I might consider setting up a live-usb drive with the tools installed.

Great idea! Will do, thank you @mcoolidge

hdamico commented 3 years ago

Hi @hdamico Atm BIOS update is only possible from Windows setup (...my actual setup is a dual booting MBXP) Atm my current version for BIOS is (old) 1.28 I'm collecting newer versions for BIOS but not installing them yet since there are clues about a limitation for PLx performances or a lock for CPU voltages...

Btw, what are your current BIOS version? If your current version is newer than 1.28, could you, please, upload here your DSDT full dumping? It could be very useful for managing hypothetical DSDT fixes made by HUAWEI... a quick how-to could be found in Dortania's ACPI guide!

Hi @profzei ! I also have 1.28 version, do you recommend me to update it to the last build?

profzei commented 3 years ago

I also have 1.28 version, do you recommend me to update it to the last build?

All my hotpatches are based on DSDT from BIOS v. 1.28 HUAWEI never released changelog for its BIOS updates so it's difficult to recommend updating or not updating... as I said, there are clues about a limitation for PLx performances or a lock for CPU voltages (sources are some old posts on Reddit r/MatebookXPro)...

What I can say is I'm not in a hurry to update now! But if you want to update your MBXP then I renew my invitation for a full DSDT dumping! XDXDXD

baanb commented 3 years ago

Hi profzei,

Here's my BIOS v1.3 DSDT dump, in case if it will be any help. DSDT-BIOS v1.3.zip

Thanks for all of your work.

ldan93 commented 3 years ago

You could look at the instructions for updating from linux: https://github.com/nekr0z/linux-on-huawei-matebook-13-2019#bios-updates I might consider setting up a live-usb drive with the tools installed.

Great idea! Will do, thank you @mcoolidge

I've just updated to the 1.33 version. I had to adapt these instructions since some commands / files are different with the latest Bios update files. Let me save you some time :

  1. Please find attached a zip with the bios.cab file inside : bios.cab.zip

  2. FYI, I've used a Fedora live USB. Under Fedora, type in the following command : fwupdmgr install bios.cab --allow-older

  3. Two reboots will be required. VERY IMPORTANT : during these two boot phases HOLD THE F12 KEY to select the "Linux Firmware Update" boot entry. The first time, nothing will be displayed, the second time, there will be a Huawei bios update screen.

@profzei : After updating to 1.33, I don't notice any particular change. Here are some thoughts :

profzei commented 3 years ago

@baanb Thank you very much! I will check the "diff" between 1.28 and 1.30 versions

@ldan93 Thank you very much for your detailed guide and your feedback! When you use voltageshift info command, you can see, for example, PL1 15W PL2 44W which are the Power Limit for our machine respectively for Long term and Short term as time CPU load period...

@ldan93 Could you provide, please, your DSDT from 1.33 BIOS version?

profzei commented 3 years ago

@baanb I just checked... there is no difference between version 1.28 and version 1.30... same revision, same checksum, all the code is perfectly identical... mah !?

ldan93 commented 3 years ago

@profzei

  1. Regarding the CFG lock : my previous guess was wrong, it is still unlocked after updating. Anyway, you're never too cautious... Well actually, never-mind, the update DID lock the CFG as I previously said.

  2. Please find a dump of my DSDT with 1.33 version. I had some trouble to get something with OpenCore (DSDT.aml), so I also put the output that I got from a Clover USB key (ACPI_origin_clover) : DSDT_1-33.zip

  3. This is the output of ./voltageshift info :

    Capture d’écran 2020-12-27 à 16 29 10

    Undervolting is still effective, and it reports "PL1: 15W PL2: 44W"

ldan93 commented 3 years ago

@profzei Just out of curiosity : did you spot any significant change in the DSDT with bios 1.33 ?

profzei commented 3 years ago

@ldan93 Sorry! You are right... I forgot to share my findings... There is only 1 difference... the rest is exactly the same! A new method called _QBF so it is called/related to EC0... I report in the following its code:

Method (_QBF, 0, NotSerialized)  // _Qxx: EC Query, xx=0x00-0xFF
{
    ADBG ("EC batt hot and Level")
    WMEN = 0x02B3
    Notify (AMW0, 0xA0) // Device-Specific
}

Here (in Reddit) a guy reported better temperature for Matebook when plugged in... I don't know if it is a "real" or a "placebo" opinion...

Honestly I never had a too hot machine when plugged in... but many users in Reddit reported a such behaviour...

Honestly I'm thinking to try to write the related hotpatch and see if there are any improvements...

profzei commented 3 years ago

@ldan93 I added a new SSDT-BIOS.aml for implementing new _QBF,0,N method. See Changelog... now I'm in testing phase... XDXD!

ldan93 commented 3 years ago

Nice ! Is the new SSDT-BIOS compatible with systems updated to 1.33 ? Wouldn't this addition be redundant with the new bios ?

profzei commented 3 years ago

@ldan93 Yeah! In your case, there is no benefit since you already have _QBF method in your DSDT... a possible benefit could be only for people who didn't update to 1.33 (like me!)

hdamico commented 3 years ago

@ldan93 Yeah! In your case, there is no benefit since you already have _QBF method in your DSDT... a possible benefit could be only for people who didn't update to 1.33 (like me!)

So is it safe to update to 1.33? I am using the laptop for work, so I dont want to take a risk.

profzei commented 3 years ago

@hdamico Honestly I don't know... I'm testing the new method with my environment which is based on BIOS v. 1.28... if, in this way, all is ok, why should I update? I'm very "conservative" i.e. if something should go wrong I only need to disable SSDT-BIOS.aml (reverting back to a functional state) but if I update to 1.33 I can never go back to 1.28 since bios is locked against this chance by HUAWEI

hdamico commented 3 years ago

Alright then, if there is no significant improvment on this version I won't update it. I guess we can close this issue.

ldan93 commented 3 years ago

Hi Profzei,

There is a new bios (1.36) on Huawei's website.

I've applied the update : I haven't noticed any chance. People on reddit reports that it doesn't lock undervolting / overclocking. voltageshift info prints the same power limits as before.

Warning : updating bios resets custom EFI entries of your bootloader. OpenCore versions 0.6.6+ register as a UEFI application, so its boot entry will be wiped by the update. To restore the boot entry you have to follow this procedure : https://gist.github.com/fewtarius/99e24d7f5afa13cf26ecbe33b864a657

Please find attached BIOS 1.36 and an SSDT Dump (if you're still interested in checking if there are any differences...) : MateBook_X_Pro_BIOS_1.36.zip

profzei commented 3 years ago

@ldan93 Thank you for SSDT dump! I'll check it asap... atm I think I could release a new update (with some refinements) probably about one week after OpenCore v. 0.6.9 (I'm skipping 0.6.8 one...)

profzei commented 3 years ago

@ldan93 I compared DSDT from 1.36 with the one from 1.33 version: they are identical... same length, same revision, same checksum... maybe something could be different in related SSDTs?

profzei commented 3 years ago

@ldan93

Have you updated your bios to newest v. 1.37? If yes, could you share DSDT dump, please? Could you also share all SSDT dumps?

Now, I should be more present... also for testing your work for battery thresholds implementation...

ldan93 commented 3 years ago

Hi @profzei I haven't updated yet, but I will do it this week I think. I will then share all the DSDT / SSDT dumps :)

ldan93 commented 3 years ago

Here's the dump : Dump_1.37.zip Let me know if you have everything you need. Nothing special to report after updating... Edit : ./voltageshift info still reports the same values (15/44w) and undervolting is still effective

piexil commented 3 years ago

Warning : updating bios resets custom EFI entries of your bootloader. OpenCore versions 0.6.6+ register as a UEFI application, so its boot entry will be wiped by the update. To restore the boot entry you have to follow this procedure : https://gist.github.com/fewtarius/99e24d7f5afa13cf26ecbe33b864a657

I'm interested in updating bios and this page no longer exists, does anyone remember the procedure?

ldan93 commented 3 years ago

@piexil Here you go : http://web.archive.org/web/20210427173859/https://gist.github.com/fewtarius/99e24d7f5afa13cf26ecbe33b864a657

If you have Windows installed, profzei wrote a more user-friendly guide : https://github.com/profzei/Matebook-X-Pro-2018/wiki/Adding-OpenCore-entry-to-UEFI-Boot

@profzei Did you spot any significant change with bios 1.37 ?

profzei commented 3 years ago

@ldan93 There is no ACPI change in Bios v. 1.37

Please, could you check if in Bios v. 1.37 Huawei had added to SecureBoot submenu an option to import Key or it is the usual Enabled/Disabled submenu?

I'm asking this since I'm digging in enabling BIOS Secure Boot for OpenCore with no success and I suspect the issue is our Bios i.e. the lacking for importing custom/user keys in UEFI Boot...

If I'm right we'll not be able to dual boot Windows 11 long with OpenCore...

ldan93 commented 3 years ago

It's the same old menu, there isn't an option to import new Secure Boot certificates... I've tried to check with UEFITools if there was a hidden setting similar to the CFG-lock one, but I didn't find anything...

From what I understand, Windows 11 will require a secure boot capable computer. But whether it must actually be enabled is still unclear. Right now with preview builds, secure boot must be enabled to install Windows 11 but it can be disabled afterwards (from what I've read on Reddit). But of course there is a high risk that Microsoft change their policy with official builds...

If secure boot becomes mandatory, I hope the OpenCore community will find a workaround to dual boot Windows 11. Some major Linux distributions reached a deal with Microsoft to be able to use Secure Boot on systems that can't import custom certificates : they are allowed to sign their bootloaders with Microsoft's certificate (which is most of the time the only one installed in the firmware). I don't know if this solution could apply to OpenCore.

profzei commented 3 years ago

@ldan93 I implemented a workaround for enabling BIOS Secure Boot for OpenCoreas reported in Changelog... I'll write a guide for the next week since it is a bit tricky but it's currently working fine with OpenCore v. 0.7.2 which I'll release next week or maybe I'll wait for v. 0.7.3 since I see very few changes...

Then I'll like to work on SMCYoga.kext for finishing your work on battery thresholds...