linux-surface / surface-uefi-firmware

UEFI firmware updates for surface using fwupd. WIP, be careful.
104 stars 9 forks source link

is the new firmware 2022 downgradeable ?! #25

Open aramo9696 opened 2 years ago

aramo9696 commented 2 years ago

my surface book 2 has updated to the latest firmware 392.72.768 i would like to downgrade to unlock undervolt since its been locked for whatever reason.

qzed commented 2 years ago

Theoretically yes (you can add a flag to skip the version checks), but I'd try to downgrade all firmware parts as I don't know whether there could be incompatibilities if you run firmware versions from different updates.

aramo9696 commented 2 years ago

Theoretically yes (you can add a flag to skip the version checks), but I'd try to downgrade all firmware parts as I don't know whether there could be incompatibilities if you run firmware versions from different updates.

mate i am a noob when it comes to this especially Linux is there any way you can help me please

aramo9696 commented 2 years ago

Theoretically yes (you can add a flag to skip the version checks), but I'd try to downgrade all firmware parts as I don't know whether there could be incompatibilities if you run firmware versions from different updates.

i dont mind downgrading all parts to be honest i just want to downgrade to able to undevolt this surface book 2

aramo9696 commented 2 years ago

also getting this error when i try to downgrade (msiextract:18060): CRITICAL : 23:12:19.283: libmsi_query_fetch: assertion 'LIBMSI_IS_QUERY (query)' failed ./repack.sh: 162: cd: can't cd to out/SurfaceBook2/* a@a-Surface-Book-2:~/Downloads/surface-uefi-firmware-master$ ./repack.sh -m cab -f ../SurfaceBook2_Win10_18362_21.101.14869.0.msi -o out ==> Found Model: SurfaceBook2 ==> Unpacking driver package

(msiextract:18075): WARNING : 23:12:25.293: open file failed for ../SurfaceBook2_Win10_18362_21.101.14869.0.msi

(msiextract:18075): CRITICAL : 23:12:25.293: libmsi_query_new: assertion 'LIBMSI_IS_DATABASE (database)' failed

(msiextract:18075): CRITICAL : 23:12:25.293: libmsi_query_execute: assertion 'LIBMSI_IS_QUERY (query)' failed

(msiextract:18075): CRITICAL : 23:12:25.293: libmsi_query_fetch: assertion 'LIBMSI_IS_QUERY (query)' failed

(msiextract:18075): CRITICAL : 23:12:25.293: libmsi_query_new: assertion 'LIBMSI_IS_DATABASE (database)' failed

(msiextract:18075): CRITICAL : 23:12:25.293: libmsi_query_execute: assertion 'LIBMSI_IS_QUERY (query)' failed

(msiextract:18075): CRITICAL : 23:12:25.293: libmsi_query_fetch: assertion 'LIBMSI_IS_QUERY (query)' failed

(msiextract:18075): CRITICAL : 23:12:25.293: libmsi_query_new: assertion 'LIBMSI_IS_DATABASE (database)' failed

(msiextract:18075): CRITICAL : 23:12:25.293: libmsi_query_execute: assertion 'LIBMSI_IS_QUERY (query)' failed

(msiextract:18075): CRITICAL : 23:12:25.293: libmsi_query_fetch: assertion 'LIBMSI_IS_QUERY (query)' failed

(msiextract:18075): CRITICAL : 23:12:25.293: libmsi_query_new: assertion 'LIBMSI_IS_DATABASE (database)' failed

(msiextract:18075): CRITICAL : 23:12:25.293: libmsi_query_execute: assertion 'LIBMSI_IS_QUERY (query)' failed

(msiextract:18075): CRITICAL : 23:12:25.293: libmsi_query_fetch: assertion 'LIBMSI_IS_QUERY (query)' failed ./repack.sh: 162: cd: can't cd to out/SurfaceBook2/* a@a-Surface-Book-2:~/Downloads/surface-uefi-firmware-master$

qzed commented 2 years ago

Seems like msiextract fails for some reason... Seems like it has trouble opening the file. I assume the path is correct?

aramo9696 commented 2 years ago

yup the path is right.. ive tried different type of firmware's nothing always giving me errors

aramo9696 commented 2 years ago

a@a-Surface-Book-2:~/Downloads/surface-uefi-firmware-master$ fwupdmgr install'/home/a/Downloads/surface-uefi-firmware-master/out/SurfaceBook2/SurfaceBook2_SurfaceUEFI_390.3192.768.0.cab' Command not found

Use fwupdmgr --help for help a@a-Surface-Book-2:~/Downloads/surface-uefi-firmware-master$ fwupdmgr install'/home/a/Downloads/surface-uefi-firmware-master/out/SurfaceBook2/SurfaceBook2_SurfaceUEFI_390.3192.768.0.cab' Command not found a@a-Surface-Book-2:~/Downloads/surface-uefi-firmware-master$ fwupdmgr install'/home/a/Downloads/surface-uefi-firmware-master/out/SurfaceBook2/SurfaceBook2_SurfaceUEFI_390.3192.768.0.cab' Command not found

Use fwupdmgr --help for help a@a-Surface-Book-2:~/Downloads/surface-uefi-firmware-master$ fwupdmgr install'/home/a/Downloads/surface-uefi-firmware-master/out/SurfaceBook2/SurfaceBook2_SurfaceUEFI_390.3192.768.0.cab' Command not found

Use fwupdmgr --help for help a@a-Surface-Book-2:~/Downloads/surface-uefi-firmware-master$

Use fwupdmgr --help for help a@a-Surface-Book-2:~/Downloads/surface-uefi-firmware-master$

aramo9696 commented 2 years ago

it doesnt even let me install the update ;(

qzed commented 2 years ago

I'm not sure if that's an artifact from pasting this here, but you might be missing a space between the command fwupdmgr install and the file.

qzed commented 2 years ago

So I just tried the repack script on Arch Linux and there it seems to work.

./repack.sh -m cab -f ./SurfaceBook2_Win10_18362_21.101.14869.0.msi -o out
 ==> Found Model: SurfaceBook2
 ==> Unpacking driver package
 ==> Repacking surfacesam firmware
 ==> Repacking surfaceuefi firmware
 ==> Repacking SurfaceTouch_0 firmware
 ==> Repacking surfaceme firmware
 ==> Repacking SurfaceTouch firmware
 ==> Repacking SurfaceISH firmware
qzed commented 2 years ago

Maybe it's related to a specific msiextract version...

aramo9696 commented 2 years ago

Having the same issues mate done a fresh install of pop os to see if things change but nothing at all same results I’m giving up hope… do what do you recommend?

qzed commented 2 years ago

You could maybe try with a Docker container. No idea why msiextract fails...

aramo9696 commented 2 years ago

You could maybe try with a Docker container. No idea why msiextract fails... How do I that sorry I’m new to this whole Linux stuff

aramo9696 commented 2 years ago

You could maybe try with a Docker container. No idea why msiextract fails...

sorry i dont want to confuse you but now im trying install the firmware via terminal with the command fwupdmgr install and it keeps giving me the error 'Use fwupdmgr --help for help'

qzed commented 2 years ago

sorry i dont want to confuse you but now im trying install the firmware via terminal with the command fwupdmgr install and it keeps giving me the error 'Use fwupdmgr --help for help'

Ah, that won't work via Docker... So

sudo fwupdmgr install '/home/a/Downloads/surface-uefi-firmware-master/out/SurfaceBook2/SurfaceBook2_SurfaceUEFI_390.3192.768.0.cab'

does not work?

qzed commented 2 years ago

In case you're still having issues with msiextract. The following should allow you to build the .cab files:

Install docker and copy everything you need into one directory (for example the one of the repack script). From that directory then run

docker run --name fedora --interactive -v "$PWD":/build --tty library/fedora bash

This will launch an interactive docker session where the directory you launched it from is mapped as /build. Therefore run

cd build

and make sure you have all the files you need in that directory (e.g. via ls -al). Now update and install dependencies via

dnf update
dnf install msitools gcab dos2unix

Then you're able to try things out via

./repack.sh -m cab -f ./SurfaceBook2_Win10_18362_21.101.14869.0.msi -o out

or whatever .msi file you want to use. You can't flash the result from the container, so you'll have to exit it via exit. After that you should be able to run

fwupdmgr install ./out/<whatever-file-here>

to flash the firmware.

You may then want to remove the container via docker rm fedora.

aramo9696 commented 2 years ago

im doing it on ubuntu now fresh install. following this guide https://www.reddit.com/r/Surface/comments/ofbytw/guide_how_to_reenable_undervolting_on_your_sb2/ now just having the issue in installing the firmware which keeps giving me that message i sent on here. by the way thanks for the replies and the help

aramo9696 commented 2 years ago

are you sure it can be downgraded from the latest firmware?

qzed commented 2 years ago

The error you get is

Command not found

Use fwupdmgr --help for help

right? That means that something with the subcommand you provided to fwupdmgr is wrong. According to https://manpages.ubuntu.com/manpages/impish/man1/fwupdmgr.1.html that should have the install command. So unless you get a different error there's no reason to think that downgrading isn't possible.