How to change CPU String in BIOS post, reverse engeneering?

Posted on 2009-04-18
Medium Priority
Last Modified: 2013-12-16
Hello, first of all I apologize for my english, it's not my first language.

I'm posting here because your fellows of Hardware couldn't deal directly with the matter at hands, anf they've suggested to me trying again in this section.

I want to change the CPU string posted by the bios. The reason is because a close friend of mine has a computer shop and he has different lines of computers, one of them are overlocked ones (tested very hard to be stable) and he wants the bios to post something like "Intel Q9550: 2,83@3,2Ghz" instead of "Intel Q9550: 2,83Ghz" (the AMI bios doesn't show up the actual speed). The computers are sold fairly, as he explicitly inform that they're OC ones and they offer the best bang per buck, but most of his customers doesn't understand anything about bios, OC... and the only thing that they see is 2.83Ghz in bios post and 2.83Ghz in right-click My Pc, so here's the problem.

I've spend hours and hours reading about this (I'm a casual programmer, C, Java...) but I've not idea about assembly language;  I cannot find a solution. I have arrived to the conclusion that CPUID string (Vendor...) resides in the own CPU, and the only thing the BIOS do is identifying the code associated with that processor and retrieve the information from it, but I am not sure at all, maybe I missunderstood.

I know we can add codes to the CPU patch of the BIOS but I don't know where to find the Strings associated to it. Googling I've reached an application called "Microcode Update Utility for Linux" (http://www.urbanmyth.org/microcode/) that, on the fly, changes the place of memory where this info is stored, so when the OS call for cpu info, it's given whatever we want. This seems that can be useful at changing the strings showed by the OS and other programs, but I've the question if I can launch a boot loader based in Linux, run this code and then pass the control to Windows (i think this is what lilo or grub do isn't it?), I also don't know how to edit the microcode and replace somethings, I know they can be found in http://downloadcenter.intel.com/Product_Search.aspx?Prod_nm=microcode&page_nbr=2&lang=eng .

However, this solution only works partally, we still have the bios post problem, but, really... we can live without it.

The best way will be to reverse engineering the BIOS module (what of them? I also don't know it), I'm lost, can you throw some light onto this matter, or at least direct me to the right way?

Thanks in advance.
Question by:TallyxZ
  • 2
LVL 19

Expert Comment

ID: 24174989
Personally I think it may be better to create a custom bios and just use the O/S to read the values.

LVL 35

Expert Comment

by:Duncan Roe
ID: 24177435
I agree with jools, except I wonder if they (biosman) can actually do what you want. It looks to me like their business is mostly in standard pre-configuration, with logo changing as an extension. No harm in asking them though.
LILO & GRUB are boot loaders. You would need to boot all the way to running Linux to use the utilities you found. The chanegs would be lost when rebooting to Windows. Whlle in Linux, the Bogomips measurer should show the increased speed. But I guess that's not much use to you :(

Author Comment

ID: 24177911
I don't think that biosman could do such a thing... I've talked yesterday to someone really working with AMI bios (mods, assembly...) and even him doesn't know how to start with it. There's a software that is intended exactly to do this job, but unfortunately it works only in AMD.

About the linux program... what a pity... you're right, lilo and grub don't load any kernel, so it'll be unable to run the code... isn't anyway to load a mini-version and, afterwars, pass the control to a windows system? I'm afraid the answer is no, but I'd like to hear it from you and linux developers.

I know how to modify standard parameters in BIOS setup, logo, retail info... but I don't know what way to follow in this matter, I've decompressed and "WinHexed" every module of the bios and, at least in plain text, there's nothing about CPU models. In one of them called "Single Link Arch Bios" I've found this string: "Unknown .Genuine Intel(R) .Processor.Intel(R) Pentium(R) 4 Processor.Intel(R) Celeron(R) Processor.Intel(R) Xeon(TM) Processor.Intel(R) Xeon(TM) Processor MP.Mobile Intel(R) Pentium(R) 4-M.Genuine Intel(R) Processor (Engineering Sample)".

I think model/speed is either coded in another way (encrypted?) or that it's stored in the own chip, so my only way is to write some software to catch BIOS calls made from the SO and third-party software and replace its content. Is this "affordable" to do? Do I have to learn assembly to do that?
LVL 35

Accepted Solution

Duncan Roe earned 1500 total points
ID: 24178917
In the Linux world, you can never categorically say "no 0ne has done that" because someone might have. But I'd say with 99.99% confidence no, you cannot load Linux and have it pass control to Windows.
I suspect the CPU id is in the chip. There is a get cpu id assembler instruction. I think it returns a number rather than a string. I don't have an up to date manual so maybe it returns a string. Either way it doesn't matter - you want to append to it, not to modify it.
I think you would need a specialised software tool, like a user_level bios environment emulator and you would have to learn assembler (or get your hands on actual bios source, which may well be written in a higher-level language). Then you could debug your way through the code and find the part you want and append your CPU ID extension

Featured Post

What does it mean to be "Always On"?

Is your cloud always on? With an Always On cloud you won't have to worry about downtime for maintenance or software application code updates, ensuring that your bottom line isn't affected.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Join Greg Farro and Ethan Banks from Packet Pushers (http://packetpushers.net/podcast/podcasts/pq-show-93-smart-network-monitoring-paessler-sponsored/) and Greg Ross from Paessler (https://www.paessler.com/prtg) for a discussion about smart network …
Fine Tune your automatic Updates for Ubuntu / Debian
Learn how to find files with the shell using the find and locate commands. Use locate to find a needle in a haystack.: With locate, check if the file still exists.: Use find to get the actual location of the file.:
This demo shows you how to set up the containerized NetScaler CPX with NetScaler Management and Analytics System in a non-routable Mesos/Marathon environment for use with Micro-Services applications.
Suggested Courses
Course of the Month14 days, 8 hours left to enroll

840 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question