CBROM32: Not enough space for adding ROM

Hello everyone,

so lately I thought about buying a SSD and I noticed, that most products have built in hardware-based AES256 encryption nowadays. As you may know, adding reliable crypto is not as easy as it might seems, the likeliness of a security flaws is high. I did some research on this and found out, that the data is only secure, if a password is set for the SSD and used to encrypt the AES keys (which are stored in the SSD firmware and not encrypted by default and therefore the disk encryption is vulnerable). This can be done with any BIOS supporting the ATA Security Mode Feature Set, but sadly my BIOS doesn’t. I asked Google for assistence and it came up with ATASX, a PCI BIOS extension which can be embedded into any BIOS.

I downloaded the latest BIOS for my GA-MA790X-DS4 motherboard. When I tried to add ATASX, CBROM32 came up with “MA79XDS4.10d have not enough space for adding ROM. (Over 0D6Ch bytes)”. The problem is obvious but I don’t know what to remove. I found a post suggesting to replace the EPA logo with “a black one”, but I couldn’t get that done.

I don’t want to brick my motherboard, please give me some advice. :frowning:

@ buchstabensalat:
Welcome at WinRAID Forum!

I have tested it myself and got the same result:

M79XDS4.10d Modding.png



Problems:
1. There is not enough space within the 512KB sized BIOS.
2. The sensitive BIOS modules (MEMINIT.BIN, HT.DLL and HT32GATE.BIN) are already at the bottom of the shown modules. So any change above them will brick the BIOS integrity.
My conclusion: It will be very difficult to get any additional module into the BIOS of your mainboard. I don’t know a solution.

Regards
Fernando

Thank you for the welcome. :slight_smile:

I checked out older versions of the BIOS and F7 is latest version the integration works. Is the second problem a no-go? I am sorry but I don’t understand this clearly. I read the guide and it says, that CBROM32 will fix this automatically or otherwise I could do it manually. However, F7 would be ideally because since then only CPU AGESA code was updated to support AM3 socket but I have a CPU on AM2+ socket.

If you are able to add the ATASX OROM module without touching any other BIOS module, you will be able to use the tool CBROM v198 (everything will be corrected automaticly), but if a replacement or deletion of any BIOS module should be necessary, which is situated above the sensitive modules, you should better use the tool CBROM v155 and correct the location of the sensitive modules manually.

Before:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
 
cbrom32 V1.98 [08/27/08] (C)Phoenix Technologies 2001-2008
 
******** MA79XDS4.F7 BIOS component ********
 
No. Item-Name Original-Size Compressed-Size Original-File-Name
================================================================================ 0. System BIOS 20000h(128.00K)13015h(76.02K)MA79XDS4.BIN
1. XGROUP CODE 0DED0h(55.70K)099CBh(38.45K)awardext.rom
2. ACPI table 0633Eh(24.81K)02B09h(10.76K)ACPITBL.BIN
3. EPA LOGO 0168Ch(5.64K)0030Dh(0.76K)AwardBmp.bmp
4. GROUP ROM[18] 03BA0h(14.91K)02811h(10.02K)ggroup.bin
5. GROUP ROM[20] 02620h(9.53K)01B96h(6.90K)ffgroup.bin
6. YGROUP ROM 0B5A0h(45.41K)05282h(20.63K)awardeyt.rom
7. GROUP ROM[ 0] 072E0h(28.72K)02D98h(11.40K)_EN_CODE.BIN
8. PCI ROM[A] 0C800h(50.00K)0AC37h(43.05K)sata22.bin
9. OEM1 CODE 0AE4Fh(43.58K)06B6Dh(26.86K)ui22.bin
10. LOGO1 ROM 00B64h(2.85K)00520h(1.28K)dbios.bmp
11. OEM0 CODE 02FEFh(11.98K)02409h(9.01K)SBF.BIN
12. GV3 08878h(34.12K)02CF2h(11.24K)AGESACPU.ROM
13. MINIT 134E1h(77.22K)1350Ch(77.26K)MEMINIT.BIN
14. HTINIT 05011h(20.02K)05040h(20.06K)HT.DLL
15. 2 PE32 in MB 00568h(1.35K)005A7h(1.41K)HT32GATE.BIN
(SP) NCPUCODE 05800h(22.00K)05800h(22.00K)NCPUCODE.BIN
 
Total compress code space = 62000h(392.00K)
Total compressed code size = 60C89h(387.13K)
Remain compress code space = 01397h(4.90K)
 
** Micro Code Information **
Bridge ID | Bridge ID
North South Update ID CPUID | North South Update ID CPUID
---------------------------------------+---------------------------------------- C0012102 00000401| 1000002 00000000|
 


After:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
 
cbrom32 V1.98 [08/27/08] (C)Phoenix Technologies 2001-2008
 
******** MA79XDS4.F7 BIOS component ********
 
No. Item-Name Original-Size Compressed-Size Original-File-Name
================================================================================ 0. System BIOS 20000h(128.00K)13015h(76.02K)MA79XDS4.BIN
1. XGROUP CODE 0DED0h(55.70K)099CBh(38.45K)awardext.rom
2. ACPI table 0633Eh(24.81K)02B09h(10.76K)ACPITBL.BIN
3. EPA LOGO 0168Ch(5.64K)0030Dh(0.76K)AwardBmp.bmp
4. GROUP ROM[18] 03BA0h(14.91K)02811h(10.02K)ggroup.bin
5. GROUP ROM[20] 02620h(9.53K)01B96h(6.90K)ffgroup.bin
6. YGROUP ROM 0B5A0h(45.41K)05282h(20.63K)awardeyt.rom
7. GROUP ROM[ 0] 072E0h(28.72K)02D98h(11.40K)_EN_CODE.BIN
8. PCI ROM[A] 0C800h(50.00K)0AC37h(43.05K)sata22.bin
9. OEM1 CODE 0AE4Fh(43.58K)06B6Dh(26.86K)ui22.bin
10. LOGO1 ROM 00B64h(2.85K)00520h(1.28K)dbios.bmp
11. OEM0 CODE 02FEFh(11.98K)02409h(9.01K)SBF.BIN
12. GV3 08878h(34.12K)02CF2h(11.24K)AGESACPU.ROM
13. MINIT 134E1h(77.22K)1350Ch(77.26K)MEMINIT.BIN
14. HTINIT 05011h(20.02K)05040h(20.06K)HT.DLL
15. 2 PE32 in MB 00568h(1.35K)005A7h(1.41K)HT32GATE.BIN
16. PCI ROM[B] 01800h(6.00K)00E8Eh(3.64K)ATASX2.ROM
(SP) NCPUCODE 05800h(22.00K)05800h(22.00K)NCPUCODE.BIN
 
Total compress code space = 62000h(392.00K)
Total compressed code size = 61B17h(390.77K)
Remain compress code space = 00509h(1.26K)
 
** Micro Code Information **
Bridge ID | Bridge ID
North South Update ID CPUID | North South Update ID CPUID
---------------------------------------+---------------------------------------- C0012102 00000401| 1000002 00000000|
 


I think that everything is alright, because CBROM32 located the new module at the end of the BIOS file and the adresses of the sensitive modules didn't change. Is this correct?

Yes.
CBROM always puts the new (inserted or updated) PCI ROM module at the end, but if any module has been changed, which originally has been before the sensitive modules, CBROM32_198 will automaticly extract and reinsert all 3 sensitive modules to put them into the original place again. This action destroys the internal security methods of the BIOS with the result, that the BIOS will be shown as invalid or corrupted while trying to flash it.