[Need help] Kaby Lake CPU on Skylake motherboard

Hello all,

I need help to modify bios to support 7th Gen CPU on Intel Q170 chipset. Manufacturer doesn’t provide BIOS, so I’m looking for other way how I can make it works. Motherboard is Advantech AIMB-275G2, it has AMI type BIOS.
Here is link with the rom file exported from MMTool Aptio

I would really appreciate any help. Thank you.
Anyone who know how to do it? I’m willing to pay $20 for help with this mod.

@mike.sch - Please give exact CPU model, no one can keep track of what Gen is what with Intel putting out 50 ore more SKU’s per Gen, and you can’t add support like that anyway, need to know exact CPU so whoever tries to help can lookup the CPUID and go from there.
You also cannot export a BIOS with MMTool, so what is in that link, AFU Dump maybe? MMTool is a BIOS editor, so it can’t save or export BIOS, only modify BIOS you give it first

This is best done with FPT anyway, please find out your ME version (And tell me the full version too), then download the matching ME System Tools package from here in section "C"
You can find ME FW version often on BIOS main page, or if not download HWINFO64 and in the large window on the left inside motherboard section expand and find ME Firmware version, then get matching package for rest below
Intel Management Engine: Drivers, Firmware & System Tools

Inside you will find Flash Programming Tool folder, and inside that a windows/win32 folder, select that Win32 folder and hold shift then press right click, choose open command window here.
Then run the following commands, and zip then zip and upload the files and give link

FPTw.exe -bios -d biosreg.bin
FPTw.exe -desc -d FD.bin

@Lost_N_BIOS thank you for your reply.

I just used Extract tab in MMTool and saved module file.

My ME version is 1815.12.0.2021. I found this in Device Manager/Intel(R) Management Engine Interface - Driver tab because I can’t find it in HWINFO64. I hope it is the same thing. I would like to use i7-7700K.

Here is zip file with biosreg.bin and FD.bin

You’re welcome! Extract tab in MMTool only extracts whatever module you have selected, from the BIOS file you opened with MMTool.

That is ME Driver, need to know ME FW version, look on main page of BIOS, or show me image of HWINFO at motherboard section in large window.

Thanks for files, how did you get biosreg and fd bin without knowing ME version?

Please see here for Full Report + Screenshot.
I used Intel CSME System Tools v11 r19 to extract biosreg and fd since I have 100-series motherboard.

Compare ASRock Z170 Pro4 BIOS Version 3.70 and 7.00.
Disassemble all modules and compare them, then you will find how to add kabylake support to skylake BIOS.( I already done part of this, modified 15~ modules to add logic for CPUID 906E*)

You need update iGPU vBIOS, GOP, add microcode, correct _FIT, and add logic for CPUID 906E* ( old BIOS usually can only recognize 506E* ), fix related problems ( PCIE, voltage, sensor, freq, etc)

I don’t know what voltage/sensor/freq related to. So I am stuck here. The CPU freq is very low, everything is so slow. ThrottleStop said limit reason was “EDP Other”

Thank you @dsanke and @Lost_N_BIOS . My issue was resolved, manufacturer send me a new BIOS with support for Kaby Lake.

@mike.sch - glad you were able to get a BIOS from manufacturer, can you please share it here for anyone looking in the future, thank you!

@dsanke - thank you for all that info, will really help me on this thread, we’ve been stuck trying to fix several HP and Dell for long time using these methods
Can you explain in more detail how you “add logic” for the 906E*, DeathBringer tried to tell me to do that once to a few modules in BIOS, and I found where the old was but he wouldn’t further explain how to add new and I couldn’t figure it out since it didn’t look like blind pasting was the solution.
Hope you can advise some on this method, I enjoy editing BIOS and really like to learn all new methods I can so I can help others.

Just compare ASRock BIOS and learn what ASRock done. Use UEFITool search hex pattern "…e0060900…" in kabylake BIOS and find what modules contain it.
Then look into skylake BIOS , disassembly all these modules and find differences.

Thanks @dsanke - I know how to find CPU mask ID, how to make mask hex value from CPUID, and how to locate in BIOS, I just don’t see sensible way to insert on many of the modules when I looked at this in the past.

@Lost_N_BIOS I found ASRock have 2 modifications on these modules.
1. Treat 906E0 as 506E0.
2.Do not check PCIE Host Bridge ID for 906E0.

So I made these changes:

It use "and" to clear the * of 906E*, make it 906E0 in last step. So I just send 506E0 to it.

Move it to result directly, do not compare these IDs.

Tested with Cleco P7xxDM and P870DM, PCIE was fixed. But CPU freq was limited.

Thanks @dsanke - but how do I learn and apply that on any board, not a single Asrock BIOS example. Maybe I am not smart enough to understand?

@Lost_N_BIOS You should disassembly these modules by IDA, and find differences, learn how do they work. I spent lots of time here.

Replace these following values:

edit: deleted because it do not be compatible with all BIOS.

Thanks @dsanke - for now, those edits only apply to this specific board BIOS correct? >> Advantech AIMB-275G2
But, I can do similar to other BIOS, maybe little different edits though, correct? Thanks again, will make these edits tonight for the OP

I haven’t look at AIMB-275G2.
These values fits all BIOS I’ve seen such as ASRock/ASUS/Clevo.
I just tell you what I’ve done to fix PCIE.

Ohh @dsanke thanks and Sorry, I didn’t think that had anything to do with PCIE, I assume it was CPU related fixes (Add CPU logic as you mentioned)
Can’t the above all be done by PCIE Patch, it’s same thing, or no?

@Lost_N_BIOS These values are all I found CPUID related. And changing them result in PCIE fixed.

Thanks @dsanke - when you mentioned CPU logic, I was thinking of something else I guess. Do you know if that does same thing as PCIE Patcher here on forum?

ASRock BIOS also have a logic regarding 906E0 as 506E0. And always return "1" for 906E0.
I modify it always return "1" regardless of CPUID.