Forum RSS Feed Follow @ Twitter Follow On Facebook

Thread Rating:
  • 1 Vote(s) - 5 Average
  • 1
  • 2
  • 3
  • 4
  • 5
[-]
Welcome
You have to register before you can post on our site.

Username:


Password:





[-]
Latest Threads
[REQUEST] Lenovo Flex 2-14 (A0CNxxWW) Wh...
Last Post: phunn1e3
Today 09:13 AM
» Replies: 245
» Views: 88139
[REQUEST] ASUS X510URR BIOS Unlock
Last Post: Rieidi
Today 08:42 AM
» Replies: 1
» Views: 1955
[REQUEST] Lenovo l380 unlock advanced me...
Last Post: denisv7
Today 08:02 AM
» Replies: 2
» Views: 62
[REQUEST] Lenovo P14S AMD Gen 5 (r2let25...
Last Post: Dudu2002
Today 06:55 AM
» Replies: 3
» Views: 475
[REQUEST] Sony Vaio VPCCB series (Rxxx0V...
Last Post: Maxinator500
Today 03:38 AM
» Replies: 9
» Views: 1206
My Gateway NV57h has an ACER in BIOS - c...
Last Post: zischer
Yesterday 06:13 PM
» Replies: 2
» Views: 2654
[Request] Bios upgrade of an HP Elitedes...
Last Post: CZanoS
Yesterday 10:08 AM
» Replies: 29
» Views: 1035
[REQUEST] Supermicro X8DT3-LN4F Bios UEF...
Last Post: LHairstonX
Yesterday 07:32 AM
» Replies: 0
» Views: 95
IPSB-H61 Cpu Upgrade Support 3rd gen to ...
Last Post: DeathBringer
Yesterday 07:07 AM
» Replies: 1
» Views: 122
[REQUEST] Lenovo G50-80 (B0CNxxWW) White...
Last Post: Dudu2002
02-14-2025 06:21 PM
» Replies: 105
» Views: 43587
[REQUEST] Lenovo G400S (7BCNxxWW) Whitel...
Last Post: Nascimenttojunior
02-14-2025 05:32 PM
» Replies: 206
» Views: 91229
Toshiba Satellite L40-13g (PSL40E): CPU ...
Last Post: DeathBringer
02-14-2025 08:42 AM
» Replies: 9
» Views: 549
[REQUEST] Lenovo G510 (79CNxxWW) Whiteli...
Last Post: Dudu2002
02-14-2025 04:43 AM
» Replies: 593
» Views: 255082
BIOS Unlock Asus ROG GL753VD
Last Post: Dudu2002
02-14-2025 04:42 AM
» Replies: 16
» Views: 13560
Toshiba Satellite L500 & L505 (with Sock...
Last Post: DeathBringer
02-13-2025 11:24 AM
» Replies: 54
» Views: 29056
[REQ] Aorus b450 m Bios unlock
Last Post: soundguy
02-13-2025 10:10 AM
» Replies: 4
» Views: 3531
Lenovo M5400 CPU upgrade
Last Post: Blackangel85
02-13-2025 10:02 AM
» Replies: 50
» Views: 16149
Gigabyte GA-EP45-UD3P (Rev 1.0) - BIOS F...
Last Post: soundguy
02-12-2025 06:14 PM
» Replies: 16
» Views: 12979
SOP 8 to SOP 16 conversion for BIOS prog...
Last Post: SonixSquad
02-12-2025 04:02 PM
» Replies: 5
» Views: 1167
HP dc5800 enable AHCI mode
Last Post: jtamas51
02-12-2025 10:44 AM
» Replies: 2
» Views: 1055

Asus Eee PC R11CX - EMT64 Enabled
#1
Hello folks!

First of all, thanks to the user @xenon on his post:
https://www.bios-mods.com/forum/Thread-REQUEST-Asus-eeepc-1025C?page=2

Based off of that, I managed (with a lot of help from a friend) to apply the same steps on the R11CX model as well.
Esentially the same procedure was applied, and I want to give back to the community :)
I am by no means proficient in this field, but this worked for me flawlessly for several weeks now.
You will be doing this at your own risk, I am not responsible if anything goes wrong.

Simple Instructions:
1. Download the modified BIOS attached below
2. Format your USB flash drive to FAT32
3. Place the downloaded ROM file on the clean FAT32 flash drive - you should only have this file on the flash drive
4. Insert the flash drive in your laptop
5. During bootup of your Asus R11CX, hold F2 to enter BIOS menu
6. In the "Advanced" tab, select "Start Easy Flash"
7. You should be able to select the modified BIOS to be installed, install it (do NOT interrupt the installation procedure)
8. After finishing, restart the laptop and enter BIOS menu again, in "Advanced" tab -> "CPU Configuration" you should have "EMT64 Supported"
9. You can install your 64-bit OS now!

How to check the modifications I made if you are skeptical (I advise everyone to be vigilant):
1. Download Asus Eee PC R11CX BIOS version 1203 from the official Asus website
2. Compare the original .ROM file with my version, you should see that I have replaced 7 bytes in total with the hex
value 90, which is the opcode for "nop" instruction, meaning it just skips calling a function which, apparently, locked the EMT64 support
3. For more details you can check xenons post in the link above.

I'd love to hear if this helps someone out, cheers!


Attached Files
.rom   X101CH-ASUS-1203.ROM (Size: 2 MB / Downloads: 70)
find
quote
#2
Hey brother,
I also saw the Xenon's mods on the bios, but
I don't know how to do this in a hex editor. Could you please tell me step by step what did you edit and how did you find out what to change. I actually have a similar netbook HP-Mini 110-4100 with atom n2600 and want to unlock 64bit in it. Please help me in this case
find
quote
#3
Thanks Dane98! This was awesome to find, and thank you for your share!
find
quote
#4
So I came here while figuring out a way how to enable 64bit on my Asus EE PC R011CX.
It took a little searching, discovering the main difference between my and the R11CX.
The R011CX has 1GB RAM soldered on board and no socket. So possibly the BIOS is different too.
Neither the R11CX nor the R011CX BIOS can be found on the ASUS website any-longer.

Moreover, the BIOS update option in the BIOS did nothing but showing a blinking cursor,
so no way to get a BIOS and no way to flash it. The only reliable way for me: De-solder the
flash with the BIOS, read it out, modify it, flash it and solder it back on.

After troubles with the reader for the flash chips, I managed to copy it out.
Based on the information in the thread linked above, I wrote a program searching for the
pattern to patch my BIOS. This worked successful. A big thanks for this information.
Soldering the flash back on the board, I could start it and at least the BIOS
read EMT64 enabled.
After this, I inserted the SSD back in. Unfortunately after this, the netbook did not start
a second time. Not by battery and no LEDs signalling a charging. Too sad.

But if it is for anyone to be useful, here is the program with which I patched the BIOS and
can reproduce the patched BIOS in the top post. Maybe it can help someone patching a similar BIOS.

Code:
#include <stdio.h>
#include <stdint.h>
#include <stdlib.h>
#include <string.h>
#include <stdbool.h>

/* SPDX-License-Identifier: BSD Zero Clause License */

/*Credits go to:
  https://www.bios-mods.com/forum/Thread-REQUEST-Asus-eeepc-1025C?page=2
  with this, the mod from
  https://www.bios-mods.com/forum/Thread-Asus-Eee-PC-R11CX-EMT64-Enabled
  can be reproduced

  Compile this program by:
  gcc filepatch.c -o filepatch -Wall -Wextra

  Disassembling a rom can be done with:
  ndisasm -b 32 file.rom > file.asm

  Version 1.0 2021-10-04

*/

#define PATCHERS 2

typedef int (*patcher)(uint8_t * buffer, size_t remaining);

size_t fileSizeGet(FILE * f)
{
long s = 0;
long current = ftell(f);
if (fseek(f, 0, SEEK_END) == 0)
{
s = ftell(f);
if (fseek(f, current, SEEK_SET) == 0)
{
return s;
}
}
return 0;
}

int memcmpPattern(const uint8_t * buffer1, const uint8_t * buffer2, const uint8_t * pattern, size_t len)
{
for (size_t i = 0; i < len; i++)
{
if ((pattern[i]) && (buffer1[i] != buffer2[i]))
{
return 1;
}
}
return 0;
}

int patcher1(uint8_t * buffer, size_t remaining)
{
//mov, rdmsr, or, wrmsr
const uint8_t pattern[] = {0xB9, 0x22, 0x1, 0x0, 0x0, 0x0F, 0x32, 0x0C, 0x03, 0x0F, 0x30};
if (remaining >= sizeof(pattern))
{
if (memcmp(buffer, pattern, sizeof(pattern)) == 0)
{
buffer[9] = 0x90; //nop
buffer[10] = 0x90;
return 1;
}
}
return 0;
}

int patcher2(uint8_t * buffer, size_t remaining)
{
//the amount added to the stack is different between compilation, so ignore the amount
//push, push, push, push, push, call, first part of add to stack
//search for "push dword 0x122" in the disassembly if this pattern has no match
const uint8_t pattern[] =  {0x53, 0x6A, 0xFF, 0x53, 0x6A, 0x03, 0x68, 0x22, 0x01, 0x0,  0x0,  0x00, 0x00, 0x00, 0x00, 0x00, 0x83, 0xC4};
const uint8_t relevance[] = {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF};
const size_t len = sizeof(pattern);
if (remaining >= len)
{
if ((memcmpPattern(buffer, pattern, relevance, len)) == 0)
{
buffer[11] = 0x90; //nop
buffer[12] = 0x90;
buffer[13] = 0x90;
buffer[14] = 0x90;
buffer[15] = 0x90;
return 1;
}
}
return 0;
}


int main(int argc, char ** argv)
{
const patcher p[PATCHERS] = {&patcher1, &patcher2};
const uint32_t expected[PATCHERS] = {1, 1};
if (argc != 3)
{
printf("Wrong arguments. Use <inputfile> <outputfile>\n");
return 1;
}
FILE * fi = fopen(argv[1], "rb");
FILE * fo = fopen(argv[2], "wb");
if ((fi) && (fo))
{
const uint32_t filesize = fileSizeGet(fi);
uint8_t * buffer = (uint8_t *)malloc(filesize);
if (buffer)
{
if (fread(buffer, filesize, 1, fi) == 1)
{
uint32_t matches[PATCHERS] = {0};
for (uint32_t i = 0; i < filesize; i++)
{
for (uint32_t j = 0; j < PATCHERS; j++)
{
if (p[j](buffer + i, filesize - i))
{
printf("Patched pattern %u at 0x%x\n", (unsigned int)j + 1, (unsigned int)i);
matches[j]++;
}
}
}
bool bad = false;
for (uint32_t i = 0; i < PATCHERS; i++)
{
if (matches[i] != expected[i])
{
bad = true;
}
}
if (bad == false)
{
printf("Looks promising\n");
}
else
{
printf("Not found expected number of patchable positions. Probably wont work...\n");
}
if (fwrite(buffer, filesize, 1, fo) == 1)
{
printf("Output file written\n");
}
}
else
{
printf("Error, file size mismatch\n");
}
free(buffer);
}
else
{
printf("Error, no mem\n");
}
}
if (fi)
{
fclose(fi);
}
else
{
printf("Error, could not open input file\n");
}
if (fo)
{
fclose(fo);
}
else
{
printf("Error, could not open output file\n");
}
return 0;
}
find
quote
#5
Hi can you give me the BIOS Update please?
find
quote


Forum Jump:


Users browsing this thread: 1 Guest(s)