Lenovo M700/M900 BIOS mod to Coffee Lake CPUs

Notice: Page may contain affiliate links for which we may earn a small commission through services like Amazon Affiliates or Skimlinks.

Gabe14

New Member
Sep 24, 2024
1
0
1
Hello eveyone, Ive had my m700 with an i7 6700 for a while, just got a brand new power supply for it. Im planing to move it to a bigger case and put an i7 9700 on it, has anoyone tried it? Also with that verision of the m700 with the modding could I put an i9 9900 on it?
 

wyk72

New Member
Sep 16, 2024
8
4
3
As requested, I'm sharing the coreboot file for M700/M900.

Boots with e2k/TianoCore.

ONLY Skylake/Kabylake CPUs microcode included.


- USE AT YOUR RISK

- FILE IS HIGHLY EXPERIMENTAL

- BACKUP YOUR BIOS WITH A PROGRAMMER FIRST

- WILL TAKE LONG TIME TO BOOT


GOOGLE DRIVE LINK:

**FILE REMOVED** NEW IMPROVED VERSION AVAILABLE SEE NEXT MESSAGE
 
Last edited:

wyk72

New Member
Sep 16, 2024
8
4
3
I have finally figured it out, I think.

I have successfully compiled a coreboot ROM file for M700/M900.

This one is working reasonably well.

Boot is FAST, really FAST as coreboot can do.

Compiled with support for Skylake/Kabylake/Coffelake (not tested since I do not own one).

Tested with Kaby Lake 7400t cpu, 100% working, temps perfect, everything OK, maybe some minor audio quirks (noisy/cracking analog sound sometimes, do not know why).

ASPM L1 disabled to make wifi/sff slot work.

**** VERY IMPORTANT ****

ME status was the reason why this thing was booting SLOWLY before.

I was DISABLING it with ME_DISABLE and the mainboard, being OEM SHIT, locks up/freezes.

ME MUST NOT BE DISABLED AT ALL TIMES and must be in "OK" state.


So the correct "bulletproof" procedure to flash this ROM, in my experiments was:

- UPDATE THE MACHINE TO THE LATEST BIOS FROM LENOVO :


- MAKE SURE THE MACHINE WORKS PROPERLY after the update: boot to windows, then shut down system.

- REMOVE COIN SIZED BATTERY BEFORE FLASHING

- INSTALL CPU (Skylake/Kabylake/Coffeelake)

- CONNECT PROGRAMMER (Neoprogrammer 2.2.0.10 works best with my CH341, but you can of course use ....whatever, a pi3 or anything else you are comfortable with)

- MAKE A FULL BACKUP OF THE BIOS i.e. READ THE CHIP (EXTREMELY IMPORTANT DO NOT SKIP THIS)

- PROGRAM BIOS WITH MY COREBOOT IMAGE (ERASE/WRITE/VERIFY) HERE IS THE LINK:


****IMPORTANT****
in this image I've ripped the ME firmware from a machine with latest LENOVO BIOS, so update it to the version in the link above BEFORE flashing.
I've also ripped the GbE Intel FW with MY MAC ADDRESS burned into it.
You SHOULD rip THE GbE Intel FW from YOUR OWN MACHINE and COMPILE coreboot with it to be 100% OK.

- REINSTALL COIN BATTERY

- TURN SYSTEM ON, after a reboot, you are into e2k/Tianocore!

- PROFIT from this 100% cute little PC !
 
Last edited:

JiksterZ

New Member
Sep 18, 2023
2
1
3
I have finally figured it out, I think.

I have successfully compiled a coreboot ROM file for M700/M900.

This one is working reasonably well.

Boot is FAST, really FAST as coreboot can do.

Compiled with support for Skylake/Kabylake/Coffelake (not tested since I do not own one).

Tested with Kaby Lake 7400t cpu, 100% working, temps perfect, everything OK, maybe some minor audio quirks (noisy/cracking analog sound sometimes, do not know why).

ASPM L1 disabled to make wifi/sff slot work.

**** VERY IMPORTANT ****

ME status was the reason why this thing was booting SLOWLY before.

I was DISABLING it with ME_DISABLE and the mainboard, being OEM SHIT, locks up/freezes.

ME MUST NOT BE DISABLED AT ALL TIMES and must be in "OK" state.


So the correct "bulletproof" procedure to flash this ROM, in my experiments was:

- UPDATE THE MACHINE TO THE LATEST BIOS FROM LENOVO :


- MAKE SURE THE MACHINE WORKS PROPERLY after the update: boot to windows, then shut down system.

- REMOVE COIN SIZED BATTERY BEFORE FLASHING

- INSTALL CPU (Skylake/Kabylake/Coffeelake)

- CONNECT PROGRAMMER (Neoprogrammer 2.2.0.10 works best with my CH341, but you can of course use ....whatever, a pi3 or anything else you are comfortable with)

- MAKE A FULL BACKUP OF THE BIOS i.e. READ THE CHIP (EXTREMELY IMPORTANT DO NOT SKIP THIS)

- PROGRAM BIOS WITH MY COREBOOT IMAGE (ERASE/WRITE/VERIFY) HERE IS THE LINK:


****IMPORTANT****
in this image I've ripped the ME firmware from a machine with latest LENOVO BIOS, so update it to the version in the link above BEFORE flashing.
I've also ripped the GbE Intel FW with MY MAC ADDRESS burned into it.
You SHOULD rip THE GbE Intel FW from YOUR OWN MACHINE and COMPILE coreboot with it to be 100% OK.

- REINSTALL COIN BATTERY

- TURN SYSTEM ON, after a reboot, you are into e2k/Tianocore!

- PROFIT from this 100% cute little PC !
Strange situation. My M700 did not start with i3 9100, it flash screen and nothing more. When I test that bios with my original G4400T, same situation. Maybe some problem with microcodes. With my original bios G4400T works well.
 

wyk72

New Member
Sep 16, 2024
8
4
3
Strange situation. My M700 did not start with i3 9100, it flash screen and nothing more. When I test that bios with my original G4400T, same situation. Maybe some problem with microcodes. With my original bios G4400T works well.
I got it working with the following CPUs:

- Celeron G3900T (Skylake)
- i5 6500 (Skylake)
- i3 7100 (Kaby lake)
- i5 7400T (Kaby lake)

I've compiled it with coffe lake support, but I can't test it (can't find a cheap cpu to make tests, will try).

Sometimes to make it boot the first time can take 20/30 seconds: try removing the battery and keep it removed for all tests.

There are a few caveats with M700 (B150 chipset), I am trying to contact coreboot devs for solving them.
 

JiksterZ

New Member
Sep 18, 2023
2
1
3
I got it working with the following CPUs:

- Celeron G3900T (Skylake)
- i5 6500 (Skylake)
- i3 7100 (Kaby lake)
- i5 7400T (Kaby lake)

I've compiled it with coffe lake support, but I can't test it (can't find a cheap cpu to make tests, will try).

Sometimes to make it boot the first time can take 20/30 seconds: try removing the battery and keep it removed for all tests.

There are a few caveats with M700 (B150 chipset), I am trying to contact coreboot devs for solving them.
Coffee-Lake i3 9100 is working. Same as G4400T. I found that bios doesn't support my monitor 21:9 2560x1080. After I use another with FullHD resolution it works.
 
Last edited:
  • Like
Reactions: wyk72

wyk72

New Member
Sep 16, 2024
8
4
3
With ALL the mods here, (original OEM fw+m710q on second half), the internal wifi sff slot stops working; the slot is not enumerated at all.

This happens with M700.

Coreboot mods too.

It works only with original, untouched LENOVO OEM firmware, for some obscure reason.

It's an M700-only issue I guess.

That's an issue I am trying to push into coreboot devs, we'll see.
 
Last edited:

Magman

New Member
Sep 18, 2024
1
0
1
I’m currently running a QJT1 on the M910q with a modded BIOS. Do you think your Coreboot will work on this? Idk much about it
 

dad1_2_3_4

New Member
Jan 28, 2024
1
0
1
With ALL the mods here, (original OEM fw+m710q on second half), the internal wifi sff slot stops working; the slot is not enumerated at all.

This happens with M700.

Coreboot mods too.

It works only with original, untouched LENOVO OEM firmware, for some obscure reason.

It's an M700-only issue I guess.

That's an issue I am trying to push into coreboot devs, we'll see.
Thanks for all your work. I have the same observation: the wifi slot stops working with original OEM fw+m710q on second half. I tried all bios settings, especially those ASPM related, but I still can not make windows activate the wifi slot. If you get the slightest hint on a solution, please post it here. Thanks.
 

wyk72

New Member
Sep 16, 2024
8
4
3
I’m currently running a QJT1 on the M910q with a modded BIOS. Do you think your Coreboot will work on this? Idk much about it
The port of coreboot to these machines Lenovo Tiny M900/700 was made by guys at DASHARO as far as I can tell.

They plan to port those machines (M920q) on the next coreboot relese, in November.

I have to say it's a strange world this "open firmware" one: lots of confusion between "distros" that basically do the same thing but with a ton of "slight variations", making an already complex subject - as Pc firmware is - even more complex.

There is coreboot, then the Dasharo fork, the IvyRain, Skulls, Heads....
 

wyk72

New Member
Sep 16, 2024
8
4
3
Thanks for all your work. I have the same observation: the wifi slot stops working with original OEM fw+m710q on second half. I tried all bios settings, especially those ASPM related, but I still can not make windows activate the wifi slot. If you get the slightest hint on a solution, please post it here. Thanks.
It's a weird thing, I'm trying to reach the guy who made the port at 3mdeb.com (Dasharo people, very cool guys from Poland), but nobody answers. I'll try buy a subscription for that.

I suspect there's a GPIO "secret" pin to enable the slot, as usual OEMs tweak the boards so it's a hacking game, basically.
 

mkopec

New Member
Oct 8, 2024
3
2
3
It's a weird thing, I'm trying to reach the guy who made the port at 3mdeb.com (Dasharo people, very cool guys from Poland), but nobody answers. I'll try buy a subscription for that.
Hi, I'm the guy who made the port, I see you made a ticket on coreboot.org and I've responded to you there but maybe here it's easier :)

Do note that I'm working on the port in my spare time, it's not a product (yet, at least)

I suspect there's a GPIO "secret" pin to enable the slot, as usual OEMs tweak the boards so it's a hacking game, basically.
I have the schematics and there is a pin M.2_WLAN_DISABLE# but it should be set correctly since I have a working m2 slot in mine.

There's two things that come to mind looking at the board changelog:
- one board revision had dedicated wifi power control circuit. Mine doesn't, it's simply always powered.
- In one board revision they changed the clock request pin

I might also have an outdated schematics. I'll look for a way to check if they changed the clock request pin on your board remotely
 

mkopec

New Member
Oct 8, 2024
3
2
3
Compiled with support for Skylake/Kabylake/Coffelake (not tested since I do not own one).
I think you might want to select `SOC_INTEL_SKYLAKE_LGA1151_V2` in coreboot config, this will compile with Amber Lake FSP that should be compatible with CFL processors. I have an m700 tower with that FSP and an 8100 CPU, works pretty well

ME status was the reason why this thing was booting SLOWLY before.

I was DISABLING it with ME_DISABLE and the mainboard, being OEM SHIT, locks up/freezes.
ah yes, coreboot was probably timing out on some commands to the ME. I'll try to incorporate this to the documentation when I get some time to write it

I'm still baffled by your graphics issue. Maybe try booting with the video module disconnected? Your logs show that a video module is plugged in, sadly I haven't tested any of these so I don't know it they're supposed to work.

Right now it's hard for me to develop and test because the one unit I have is now working as my router :p I found a cheapo m700 tiny unit with a g4400t, this will allow me to work on it again
 
  • Like
Reactions: wyk72

mkopec

New Member
Oct 8, 2024
3
2
3
I also took a look at the ME region from your coreboot binary, it looks like you have a different CLKREQ - CLKOUT mapping than me. Yours is CLKREQ 1 - CLKOUT 1, but my schematics say CLKREQ 11 - CLKOUT 1... This is 99.9% the reason why your wifi is not working.

I'm now comparing what the ME region says and what the schematics say is completely different, awesome. I am now wondering why my wifi slot is working at all. Lenovo UEFI seems to ignore CLKREQ and just leave clocks free-running, I'll do the same then. This will mean a tiny power consumption penalty, but it's not a big deal I think
 
Last edited:
  • Like
Reactions: wyk72

wyk72

New Member
Sep 16, 2024
8
4
3
I think you might want to select `SOC_INTEL_SKYLAKE_LGA1151_V2` in coreboot config, this will compile with Amber Lake FSP that should be compatible with CFL processors. I have an m700 tower with that FSP and an 8100 CPU, works pretty well



ah yes, coreboot was probably timing out on some commands to the ME. I'll try to incorporate this to the documentation when I get some time to write it

I'm still baffled by your graphics issue. Maybe try booting with the video module disconnected? Your logs show that a video module is plugged in, sadly I haven't tested any of these so I don't know it they're supposed to work.

Right now it's hard for me to develop and test because the one unit I have is now working as my router :p I found a cheapo m700 tiny unit with a g4400t, this will allow me to work on it again
I'll send you one unit if you want, I have plenty of them, so we can iron out those bugs and make those machines worth using in 2024/2025.

They are far superior to almost any thin client, extremely capable for the size.

And if we feel adventorous, we can fit them with comet lake ES xeons made for notebooks (45W tdp, a bit high but still within margin), and enjoy extremely capable and tiny machines, these cpus are about 55 Euros on aliexpress.