Old AMI bios and MSDM insertion

Discussion in 'BIOS Mods' started by mishak, Feb 10, 2014.

  1. mishak

    mishak MDL Novice

    Aug 10, 2009
    4
    0
    0
    Hello, sorry to distrub all of you ( especially Yen).

    I try to understand how to insert MSDM.
    My motherboard SuperMicro X8STi supermicro.com/products/system/1U/5016/SYS-5016T-T.cfm It is Ami bios. Amitool 1.63 insert SLIC good but ...

    Now I learned to run mmtool v3.26, extract decompressed module 1B,then I found a program ami_1b_splitter.exe, which gives ACPITBL_SEG as a separate file . But I can not understand why all pointers to other tables in RSDT and XSDT - all zeros .
    In backup of my current bios - zeros too , although in rw-everything all tables good filled.

    No pointers to the tables does not give me way to understand how to add MSDM: where in ACPITBL_SEG.
    I think I found a place for MSDM injection (between XSDT and FACP modules) but how to put pointers on new MSDM module in RSDT and XSDT i don't know.
    Even when I save the my not_good_odified 1B module in bios , amitool1.63 can not open it (error 6). I think this is due to incorrect checksum in my module 1B

    - I can not find .jar for recheck/recalculate checksum of 1B module.
    - And I can not find AMI_AWARD_SUPER_STATIC.rar file for reading and best understanding

    Could you help me in anything if you have the time

    thank you
     
  2. Yen

    Yen Admin
    Staff Member

    May 6, 2007
    10,938
    10,477
    340
    When you open your BIOS with AMITool it finds a SLIC 2.0 at F0 module already. When you press yes it chooses dynamic method. It simply replaces the SLIC (without header) at the F0 module.
    This is the reason why you cannot see static address pointers in the 1B module.

    Trick:
    Open the original BIOS with AMITool, press cancel (not yes). Choose manufacturer other.
    Choose SSV3 method. (This is the method where you looking at! SSV3 means SuperStaticVersion3). Choose Dell SLIC 2.3 and press go.
    Do NOT use this modified BIOS (it has 2 SLIC tables now), have a look at 1B_SLIC.BIN and search for the start of the SLIC.
    Now REPLACE the SLIC with your MSDM table and key using winhex, be sure that the MSDM table sums to zero. MSDM must start at he same place where SLIC has started. (same offset, here F8A4h) Zero out the excess bytes of the SLIC, it uses more bytes (change them to 00).
    Save the 1b module.

    Here is described how you change the key at MSDM / download a MSDMTable: http://forums.mydigitallife.net/thr...-VMware/page11?p=783505&viewfull=1#post783505

    Now open the original BIOS with MMTool. Replace the 1b module with it. You have now added a MSDMTable with SSV3 method and static addresses.
    Use now this BIOS with AMITool again. THIS time press yes and let the tool use dynamic method to replace the F0 module (SLIC2.0-->2.3).

    If you have further questions please reply....I can later make a mod for you if you want.:)
    As a part of the developing process I know all the methods.....can explain to you...
     
    Stop hovering to collapse... Click to collapse... Hover to expand... Click to expand...
  3. mishak

    mishak MDL Novice

    Aug 10, 2009
    4
    0
    0
    I need replace NEW slic module with msdm? If so i did it, and filled by 00(zeroes) remaining part of NEW slic. Should I recalculate some checksums of new 1B module? Or just insert in original bios?

    When i try to open original bios with inserter ssv3-modded 1B module, AMITool do not asked me "This BIOS has already have ...Allow modification?". I think it is not good. Or i need select OTHER again, than Dynamic, set checkbox USE MMTOOL and ... go??? P.S. can not use this way: error 6 ... overflow...

    Thanks
     
  4. Yen

    Yen Admin
    Staff Member

    May 6, 2007
    10,938
    10,477
    340
    I'll test it when I am at home. It can be that the AMITool has problems if the MSDM is already added the SSV3 way.......
    Then you'd need first to add SLIC 2.3 (press yes) dynamic method. THEN replace 1b module with MSDM mod....

    You only need to correct the sum of the MSDMTable, the sum of 1b module then also does not change, because the table sum must be zero.
     
    Stop hovering to collapse... Click to collapse... Hover to expand... Click to expand...
  5. Yen

    Yen Admin
    Staff Member

    May 6, 2007
    10,938
    10,477
    340
    I was right the AMITool has some problems when there is a table added the SSV3 way already.
    The right order to modify is:

    Open the original BIOS with AMITool, press cancel (not yes). Choose manufacturer other.
    Choose SSV3 method. (This is the method where you looking at! SSV3 means SuperStaticVersion3). Choose Dell SLIC 2.3 and press go.
    Do NOT use this modified BIOS (it has 2 SLIC tables now, delete it!), have a look at the created 1B_SLIC.BIN and search for the start of the SLIC using winhex.
    Now REPLACE the SLIC with your MSDM table and key using winhex, be sure that the MSDM table sums to zero. MSDM must start at the same place where SLIC has started. (same offset, here F8A4h) Zero out the excess bytes of the SLIC, it uses more bytes (change them to 00).
    Save the 1b module. 1B_MSDM.BIN, the size of the module must NOT change whilst modifying it (7407Bh)!

    Now you have all to make a mod:
    Open the original BIOS with AMITool again. Choose again the same Dell SLIC 2.3. THIS time press yes and let the tool use dynamic method to replace the F0 module (SLIC2.0-->2.3). Save the SLIC mod. X8STi0_SLIC_2_3.ROM.

    Open THIS SLIC mod with MMTool. Replace the 1b module MSDM mod with it (1B_MSDM.BIN) and save the final BIOS. You have now added a MSDMTable with SSV3 method and static addresses. Final mod: X8STi0_msdm_slic_2_3.ROM.
    Flash the original BIOS version and test if it is working....
    Rename the final mod to original name, remove switch /B at ami.bat and flash the mod.

    Here are the files to compare, final mod name is X8STi0_msdm_slic_2_3.ROM.
    http://www.sendspace.com/file/qivqoh



    Here SSV3 what is it actually? http://forums.mydigitallife.net/thr...-modded/page52?p=810882&viewfull=1#post810882
     
    Stop hovering to collapse... Click to collapse... Hover to expand... Click to expand...
  6. genuineintel

    genuineintel MDL Member

    Apr 28, 2009
    226
    23
    10
    How can I insert an MSDM to a non-SLIC, legacy AMI BIOS such as P5Q Deluxe bios? SLIC mod using AMITool before or after MSDM mod? Any references? Thanks very much.
     
  7. Yen

    Yen Admin
    Staff Member

    May 6, 2007
    10,938
    10,477
    340
    You are referring to a classic BIOS. :worthy:
    The ASUS P5 series BIOSes were the FIRST which could be SLIC'ed at all. It was on February 2007 when Aneo wrote about a potential flaw to exploit the SLP2.0 activation. He used the P5B BIOS as example. It was hard for me to get a proper translation of his document. :)
    ASUS prepared this series to have a SLIC inside in the future.

    The Chinese then downloaded all available BIOS tools from a German BIOS collection site....there was no super static approach yet, to replace an already existing table was the way to go...or to dynamically allocate the table at Award BIOS....

    A Chinese passed the method to me and I leaned myself to apply and develop methods (on IRC).
    I got my Vista activated on March 2007, self made dynamic Award mod...:D
    There were no loaders, no software, nothing by Daz....those all came much later....


    Your BIOS still holds the FC module for a dynamic mod...later ASUS locked this method, but we broke it: http://forums.mydigitallife.net/thr...ts-to-test-it-Disassembly-skills-are-welcome!

    Nobody went for the dynamic FC mod anymore since SSV3 worked all the time and couldn't be locked by Asus anymore

    Generally it is possible to add a second (MSDM) table besides of a SLIC to any BIOS (Award, AMI and PHOENIX).

    Andy's tools are not made for it. Concerning AMI: If there is a dynamic method available I'd suggest to add the SLIC dynamically using AMITool first, THEN to replace the 1b module with a self made (replaced SLIC with MSDM) SSV3 mod using MMTool.

    If there is no dynamic method available, both tables can be added manually the SSV3 way, there is enough space to put both tables into the 1b module. One simply would need to extend the RSDT /XSDT even further (+4/+8) to add a new address pointer pair behind the SLIC address pointers at RSDT/XSDT tables...

    To flash the FC module afudos needs special switches though. Afudos /ixxxx.rom /pbnc /n, probably needed if default dynamic mod does not have a SLIC shown up.

    A way to go @ASUS P5 series BIOSes: Make a dynamic SLIC mod with AMITool, choose manufacturer:ASUS.
    Then use this mod to replace the 1B module with the MDSM mod using MMTool.

    So the answer is before MSDM mod as well. You'd have to use the firstly created 1B_SLIC.BIN to add the MDSMTable.


    The general way at AMI BIOSes is to add both tables the SSV3 way. To add a SLIC one can use andy's tool. (SSV3 method).
    The MSDM has to be added later manually the same way....therefore one needs to know how SSV3 works...


    Well, I thought to add a MSDMTable additionally is only for testing purposes, but since M$ reads generic SLP keys from it it could be interesting for many others.

    Actually the thread contains anything that is needed to make a own mod....but I'll be glad to help if somebody is interested in special questions...:)
     
    Stop hovering to collapse... Click to collapse... Hover to expand... Click to expand...
  8. genuineintel

    genuineintel MDL Member

    Apr 28, 2009
    226
    23
    10
    #9 genuineintel, Apr 11, 2014
    Last edited by a moderator: Apr 20, 2017
    AMITool 1.63 does not work for ASUS P5Q Deluxe BIOS, namely P5Q-ASUS-DELUXE-2301, by choosing dynamic method.

    View attachment 28179

    So, I guess the MSDM Table must be added manually for now. The question is how to add a new pointer pair behind the existing SLIC address pointers to the inserted MSDM Table at RSDT/XSDT tables. :confused:

    BTW, for ASUS P5 series BIOSes, "Afudos.exe /ixxxx.rom /pbnc /n" is probably not working for officially released AFUDOS utilities. The working AFUDOS utilities, called Engineering Edition, can be found here:

    Code:
    https://www.mirrorcreator.com/files/LPBIRROQ/AFUDOS.ES.7z_links
    or
    http://mir.cr/LPBIRROQ
     
  9. Yen

    Yen Admin
    Staff Member

    May 6, 2007
    10,938
    10,477
    340
    #10 Yen, Apr 11, 2014
    Last edited by a moderator: Apr 20, 2017
    Dynamic method works here....:confused: (SLIC 2.3 isn't recognized yet properly.)

    Code:
    Version 1.63
    Manufacturer - ASUS
    Original BIOS size 2097152 bytes (2048K)
    1B3FEC Module 15 Padded size 32312 
    10 Module E Padded size 253420 
    3DE1C Module 11 Padded size 163848 
    1CF800 Module 8 Padded size 1948 
    1BBE40 Module FD Padded size 96 
    1BBEBC Module 30 Padded size 76 
    1CFFB0 Module FC Padded size 16 
    1BBF20 Module C Padded size 8 
    65E38 Module 1B Padded size 226316 (Actual size 226314 Original size 451898)
    9D258 Module F2 Padded size 96988 (Actual size 96985 Original size 99894)
    B4D48 Module 20 Padded size 40480 (Actual size 40478 Original size 65536)
    BEB7C Module 20 Padded size 37088 (Actual size 37085 Original size 59392)
    C7C70 Module 20 Padded size 35456 (Actual size 35453 Original size 57856)
    D0704 Module 20 Padded size 35452 (Actual size 35452 Original size 57856)
    D9194 Module F5 Padded size 34944 (Actual size 34943 Original size 64194)
    E1A28 Module 20 Padded size 33296 (Actual size 33296 Original size 65536)
    E9C4C Module 21 Padded size 28884 (Actual size 28881 Original size 58662)
    F0D34 Module 21 Padded size 28544 (Actual size 28543 Original size 58740)
    F7CC8 Module 21 Padded size 27828 (Actual size 27826 Original size 63385)
    FE990 Module 4 Padded size 22152 (Actual size 22150 Original size 35891)
    10402C Module 21 Padded size 20912 (Actual size 20909 Original size 51705)
    1091F0 Module 21 Padded size 20196 (Actual size 20194 Original size 47985)
    10E0E8 Module 21 Padded size 19116 (Actual size 19116 Original size 44972)
    1BBF3C Module 20 Padded size 13104 (Actual size 13102 Original size 20480)
    112BA8 Module 18 Padded size 6144 (Actual size 6141 Original size 16965)
    1BF280 Module 1E Padded size 2312 (Actual size 2309 Original size 20428)
    1143BC Module 19 Padded size 1436 (Actual size 1436 Original size 4868)
    11496C Module 1A Padded size 1332 (Actual size 1330 Original size 9890)
    114EB4 Module 6 Padded size 1112 (Actual size 1110 Original size 3072)
    1BFB9C Module 2B Padded size 840 (Actual size 839 Original size 1360)
    1BFEF8 Module 80 Padded size 104 
    1E0018 Module 15 Padded size 53920  (Unlinked)
    NVRAM at 1D0000 length 10000
    ROM Hole at 0 length 10
    ROM Hole at 1C0000 length F800
    Bootblock at 1F0000 length 10000
    Extended Bootblock at 1E0000 length 20000
    Boot block checksum is correct
    Extended boot block checksum is correct
    Main BIOS checksum is correct
    1B module size is 451898 bytes
    AMIBIOS string found at FF7E
    Dynamic method
    SLIC module size is 374 bytes
    SLIC module checksum is 0
    OEM Activation 2.0 SLIC
    No split OEM/Table ID strings found
    RSDT table found at 4DF13
    RSDT table OEM and Table ID patched to DELL  PE_SC3  
    XSDT table OEM and Table ID patched to DELL  PE_SC3  
    FACP table OEM and Table ID patched to DELL  PE_SC3  
    FACP table OEM and Table ID patched to DELL  PE_SC3  
    APIC table OEM ID patched to DELL  
    HPET table OEM ID patched to DELL  
    MCFG table OEM ID patched to DELL  
    OSFR table OEM ID patched to DELL  
    SLIC table OEM ID patched to DELL  
    OEM table OEM ID patched to DELL  
    String found at 1A83F (method 2)
    Patch applied at 1A992 (method 2)
    SLIC inserted at 66206 (XOR'd)
    Module 1B written 451898 bytes
    1B3FEC Module 15 Padded size 32312 
    10 Module E Padded size 253420 
    3DE1C Module 11 Padded size 163848 
    1CF800 Module 8 Padded size 1948 
    1BBE40 Module FD Padded size 96 
    1BBEBC Module 30 Padded size 76 
    1CFFB0 Module FC Padded size 16 
    1BBF20 Module C Padded size 8 
    65E38 Module 1B Padded size 226644 (Actual size 226642 Original size 451898)
    9D3A0 Module F2 Padded size 96988 (Actual size 96985 Original size 99894)
    B4E90 Module 20 Padded size 40480 (Actual size 40478 Original size 65536)
    BECC4 Module 20 Padded size 37088 (Actual size 37085 Original size 59392)
    C7DB8 Module 20 Padded size 35456 (Actual size 35453 Original size 57856)
    D084C Module 20 Padded size 35452 (Actual size 35452 Original size 57856)
    D92DC Module F5 Padded size 34944 (Actual size 34943 Original size 64194)
    E1B70 Module 20 Padded size 33296 (Actual size 33296 Original size 65536)
    E9D94 Module 21 Padded size 28884 (Actual size 28881 Original size 58662)
    F0E7C Module 21 Padded size 28544 (Actual size 28543 Original size 58740)
    F7E10 Module 21 Padded size 27828 (Actual size 27826 Original size 63385)
    FEAD8 Module 4 Padded size 22152 (Actual size 22150 Original size 35891)
    104174 Module 21 Padded size 20912 (Actual size 20909 Original size 51705)
    109338 Module 21 Padded size 20196 (Actual size 20194 Original size 47985)
    10E230 Module 21 Padded size 19116 (Actual size 19116 Original size 44972)
    1BBF3C Module 20 Padded size 13104 (Actual size 13102 Original size 20480)
    112CF0 Module 18 Padded size 6144 (Actual size 6141 Original size 16965)
    1BF280 Module 1E Padded size 2312 (Actual size 2309 Original size 20428)
    114504 Module 19 Padded size 1436 (Actual size 1436 Original size 4868)
    114AB4 Module 1A Padded size 1332 (Actual size 1330 Original size 9890)
    114FFC Module 6 Padded size 1112 (Actual size 1110 Original size 3072)
    1BFB9C Module 2B Padded size 840 (Actual size 839 Original size 1360)
    1BFEF8 Module 80 Padded size 144 
    NVRAM at 1D0000 length 10000
    There are unlinked blocks in module 80h
    Boot block preserved
    Unlinked bytes preserved
    Main BIOS checksum is correct
    Bootblock at 1F0000 length 10000
    Extended Bootblock at 1E0000 length 20000
    Boot block checksum is correct
    Extended boot block checksum is correct
    1B3FEC Module 15 Padded size 32312 
    10 Module E Padded size 253420 
    3DE1C Module 11 Padded size 163848 
    1CF800 Module 8 Padded size 1948 
    1BBE40 Module FD Padded size 96 
    1BBEBC Module 30 Padded size 76 
    1CFFB0 Module FC Padded size 16 
    1BBF20 Module C Padded size 8 
    65E38 Module 1B Padded size 226644 (Actual size 226642 Original size 451898)
    9D3A0 Module F2 Padded size 96988 (Actual size 96985 Original size 99894)
    B4E90 Module 20 Padded size 40480 (Actual size 40478 Original size 65536)
    BECC4 Module 20 Padded size 37088 (Actual size 37085 Original size 59392)
    C7DB8 Module 20 Padded size 35456 (Actual size 35453 Original size 57856)
    D084C Module 20 Padded size 35452 (Actual size 35452 Original size 57856)
    D92DC Module F5 Padded size 34944 (Actual size 34943 Original size 64194)
    E1B70 Module 20 Padded size 33296 (Actual size 33296 Original size 65536)
    E9D94 Module 21 Padded size 28884 (Actual size 28881 Original size 58662)
    F0E7C Module 21 Padded size 28544 (Actual size 28543 Original size 58740)
    F7E10 Module 21 Padded size 27828 (Actual size 27826 Original size 63385)
    FEAD8 Module 4 Padded size 22152 (Actual size 22150 Original size 35891)
    104174 Module 21 Padded size 20912 (Actual size 20909 Original size 51705)
    109338 Module 21 Padded size 20196 (Actual size 20194 Original size 47985)
    10E230 Module 21 Padded size 19116 (Actual size 19116 Original size 44972)
    1BBF3C Module 20 Padded size 13104 (Actual size 13102 Original size 20480)
    112CF0 Module 18 Padded size 6144 (Actual size 6141 Original size 16965)
    1BF280 Module 1E Padded size 2312 (Actual size 2309 Original size 20428)
    114504 Module 19 Padded size 1436 (Actual size 1436 Original size 4868)
    114AB4 Module 1A Padded size 1332 (Actual size 1330 Original size 9890)
    114FFC Module 6 Padded size 1112 (Actual size 1110 Original size 3072)
    1BFB9C Module 2B Padded size 840 (Actual size 839 Original size 1360)
    1BFEF8 Module 80 Padded size 144 
    1E0018 Module 15 Padded size 53920  (Unlinked)
    NVRAM at 1D0000 length 10000
    ROM Hole at 0 length 10
    ROM Hole at 1C0000 length F800
    There are unlinked blocks in module 80h
    Bootblock at 1F0000 length 10000
    Extended Bootblock at 1E0000 length 20000
    Boot block checksum is correct
    Extended boot block checksum is correct
    Main BIOS checksum is correct
    SLIC performed successfully. BIOS file is D:\TEMP\P5Q-ASUS-DELUXE-2301\P5Q-ASUS-DELUXE-2301_SLIC.ROM
    
    Check out the red lines, it inserts the SLIC XOR'd into the 1B module and removes the lock. (method2). This mod needs no special afudos (switches) to become flashed properly, it uses the SLIC XOR'D in the 1B module. (not FC)

    "The question is how to add a new pointer pair behind the existing SLIC address pointers to the inserted MSDM Table at RSDT/XSDT tables."

    By extending the RSDT/XSDT tables one more time and just appending the address bytes after the SLIC address bytes (also reversed order)... :) there are enough zero bytes to use as pointers...
    http://forums.mydigitallife.net/thr...-modded/page52?p=810882&viewfull=1#post810882

    RSDT (with SLIC pointer) 2Ch+4=30h (new table length) Its last 4 bytes must point to MSDM then.
    XSDT(with SLIC pointer) 34h+8=3Ch (new table length) Its last 8 bytes must point to MSDM then.


    I'll make an example / instructions using your 1b module with both tables included (SSV3) @weeked when I have spare time....:)
     
    Stop hovering to collapse... Click to collapse... Hover to expand... Click to expand...
  10. Yen

    Yen Admin
    Staff Member

    May 6, 2007
    10,938
    10,477
    340
    #11 Yen, Apr 11, 2014
    Last edited by a moderator: Apr 20, 2017
    How to add a MSDMTable to a already SLIC'ed AMI core 8 BIOS, which has been SLIC'ed with the SSV3 method:

    First all the files to study: https://app.box.com/s/8kav7e9b5c4l7t54zeve
    And here the MSDMTable I have used: https://app.box.com/s/k80prq499pq8nvmfpn5w


    Get your original BIOS and apply the SLIC using AMITool SSV3 method. Here I used the Dell 2.3 SLIC.
    The tool creates 1B_SLIC.BIN, this is the file you have to use with winhex. Example: P5Q-ASUS-DELUXE-2301.ROM

    Open 1B_SLIC.BIN with winhex, open your MSDMTable, which holds your key and sums to 00 already. (Example Windows Server 12 R2 RTM ServerStandard OEM:SLP key): MSDM.bin

    How to make the table ready to hold your key: http://forums.mydigitallife.net/thr...-VMware/page11?p=783505&viewfull=1#post783505
    (The offsets don't matter when you have the table only, it starts at offset 00 of course, relative offsets are the same, though.)

    Search for the AMIBIOS string. (You see the SLIC starts exactly 200h bytes in front of this string) and there is some space (00 bytes) between the SLIC and this string. Here it are 8Ah bytes exactly.
    To have a even value we place the MSDMTable 80h bytes in front of.

    [​IMG]

    The first 'blue' zero byte has to be the M of the MSDMTable!!!
    -Go to the MSDMTable at winhex, press crtl+A to mark the entire table.
    Edit--->copy block-->normally. Go back to the 1B_SLIC_BIN module, exactly to the first 'blue' zero byte.
    Edit-->clipboard data--> WRITE (data will be written to offset FEFEh.)


    [​IMG]


    MSDMTable has been placed. Now we need to call it from RSDT / XSDT by extending both tables and adding the address pointers. Each MSDMTable is 55h bytes long.

    Search for the RSDTTable at 1B_SLIC_BIN. (The first hit may not be the table, push F3)

    Code:
    Offset      0  1  2  3  4  5  6  7   8  9  A  B  C  D  E  F
    
    0004DF10            52 53 44 54 2C  00 00 00 01 00 44 45 4C      RSDT,.....DEL
    0004DF20   4C 20 20 50 45 5F 53 43 33 20 20 10 09 00 07 4D   L  PE_SC3  ....M
    0004DF30   53 46 54 97 00 00 00 00  00 00 00 00 F2 0F 00 00   SFT—........ò...
    0004DF40   00 00 00                                           ...
    The red bytes are the table length bytes in reversed order: 2C000000--->0000002Ch, length 2Ch add 4---->30h to extend the table that it can point to MSDM.
    The blue bytes point to the SLIC address: 00F20F00, reversed--->000FF200h means to FF200h (is correct since SLIC is located 200h bytes in front of the AMIBIOS string. (FF400h-200h=FF200h)

    Now calculate the MSDM address in virtual memory. AMIBIOS string is always mapped to FF400h, MSDM is 80h bytes in front of where we have inserted it: FF400h-80h=FF380h=000FF380h, reversed: 80 F3 0F 00

    Just replace those 4 bytes right after the blue bytes. Done, RSDT calls now MSDM as well.

    Code:
    Offset      0  1  2  3  4  5  6  7   8  9  A  B  C  D  E  F
    
    0004DF10            52 53 44 54 30  00 00 00 01 00 44 45 4C      RSDT0.....DEL
    0004DF20   4C 20 20 50 45 5F 53 43  33 20 20 10 09 00 07 4D   L  PE_SC3  ....M
    0004DF30   53 46 54 97 00 00 00 00  00 00 00 00 F2 0F 00 80   SFT—........ò..€
    0004DF40   F3 0F 00                                           ó..
    The same thing has to be done now at XSDT, but the addresses are 8 bytes long there, they just have 4 more (zero) bytes!

    Locate XSDT:

    Code:
    Offset      0  1  2  3  4  5  6  7   8  9  A  B  C  D  E  F
    
    0004E010            58 53 44 54 34  00 00 00 01 00 44 45 4C      XSDT4.....DEL
    0004E020   4C 20 20 50 45 5F 53 43  33 20 20 10 09 00 07 4D   L  PE_SC3  ....M
    0004E030   53 46 54 97 00 00 00 00  00 00 00 00 00 00 00 00   SFT—............
    0004E040   F2 0F 00 00 00 00 00 00  00 00 00 00 00 00 00      ò..............
    Add 8 to the table length byte: 34h+8=3Ch and modify it.
    MSDM address is the same, only longer: 000FF380h= 00000000000FF380h, reverse it--->80 F3 0F 00 00 00 00 00

    Code:
    Offset      0  1  2  3  4  5  6  7   8  9  A  B  C  D  E  F
    
    0004E010            58 53 44 54 3C  00 00 00 01 00 44 45 4C      XSDT<.....DEL
    0004E020   4C 20 20 50 45 5F 53 43  33 20 20 10 09 00 07 4D   L  PE_SC3  ....M
    0004E030   53 46 54 97 00 00 00 00  00 00 00 00 00 00 00 00   SFT—............
    0004E040   F2 0F 00 00 00 00 00 80  F3 0F 00 00 00 00 00      ò......€ó......
    Save all the changes 1B_MSDM.BIN. At any case, the original uncompressed length of the 1B module must NOT change, no matter what you modify!!! At this example it always remains 6E53Ah bytes!

    Get the original BIOS, open it with MMTool, replace its 1B module with 1B_MSDM.BIN and you'll have both tables.
    Module ID:1B, offset 0000, segment 0000 at MMTool, save the BIOS and flash it with Built in EZ flash. p5q-asus-deluxe-2301_slic_msdm.rom. Make sure you are running version 2301 (same version) already, do not upgrade directly with a modded BIOS here! It is NOT recommended, since it would trigger to flash the bootblock as well then.

    Some honest personal words one needs to know:
    The method is conform to ACPI specifications and Zhaoliang's SSV3 approach. TBH I have to mention that I personally have no practical experiences yet in adding 2 tables the same way. This is just a fact and does not mean that it does not work. There had been simply no interest so far in adding both tables. I am convinced that it does work, and I had been a member at the developing process that time, otherwise I would not post this method.

    There are experiences in VM BIOS, though, adding two tables to AMI BIOS'es 1B module (SLIC dynamically, MSDM Super static) and it has been confirmed to work.


    EDIT: Method confirmed at post #14 bellow.
     
    Stop hovering to collapse... Click to collapse... Hover to expand... Click to expand...
  11. Tito

    Tito Super Mod / Adviser
    Staff Member

    Nov 30, 2009
    17,213
    14,776
    340
    Thanks Yen, really helpful guide. Always learning the basic of bios mods from you. I have stickied this thread.

    :hug2:
     
    Stop hovering to collapse... Click to collapse... Hover to expand... Click to expand...
  12. Yen

    Yen Admin
    Staff Member

    May 6, 2007
    10,938
    10,477
    340
    You're welcome. There are not many left who were involved in the development of the basics and we have EFI already, so it's better to share, before I forget anything myself, lol. Enjoy. :hug2:
     
    Stop hovering to collapse... Click to collapse... Hover to expand... Click to expand...
  13. genuineintel

    genuineintel MDL Member

    Apr 28, 2009
    226
    23
    10
    Tried the msdm modded bios for Windows Server 2008 R2 Datacenter using the FUJITSU key. The MSDM table does show up in RWEverything ACPI tab and Windows remains activated. :worthy:

    So, I guess it's about time to UPGRADE to 2012 R2...... :tasty:
     
  14. Yen

    Yen Admin
    Staff Member

    May 6, 2007
    10,938
    10,477
    340
    I thank you for your trust to test 'my' mod / tutorial.:hug2:

    So we have finally a real confirmation.
     
    Stop hovering to collapse... Click to collapse... Hover to expand... Click to expand...
  15. 568822578

    568822578 MDL Novice

    Jun 24, 2014
    1
    0
    0
    really helpful guide very thanks