WindSLIC - PCI Replacement ROM for SLIC Injection

Discussion in 'MDL Projects and Applications' started by truthinjection, Feb 22, 2010.

  1. truthinjection

    truthinjection MDL Member

    Aug 27, 2009
    247
    46
    10
    #121 truthinjection, Sep 24, 2011
    Last edited: Sep 24, 2011
    (OP)
    Sounds good. You just need a card with FlashROM and a utility to actually flash that ROM, and you should be good to go.
    Or, if you buy a ... 20-pack ... you can occasionally find them for $3 (per-card) off ebay. Now *that's* educational value. You can even wire a switch onto a card to disable the FlashROM so that you can turn it into a Development test card to prevent bricking.

    Now *that's* nutrition!
    -tij-
     
  2. fruttifresh

    fruttifresh MDL Novice

    Oct 1, 2011
    9
    0
    0
    Following Card works fine with WindSLIC (windslic-2011_01_22_01-beta)


    Intel Pro/1000MT Desktop Adapter
    vendor: 8086 ("Intel Corporation"), device: 1076 ("82541GI Gigabit Ethernet Controller")


    I was able to activate HP COMPAQ DC5700 SFF PC (Bios v2.07 plus latest Microcodes)

     
  3. Cool-T

    Cool-T MDL Novice

    Mar 6, 2011
    2
    1
    0
    #123 Cool-T, Oct 21, 2011
    Last edited: Oct 21, 2011
    Realtek NICs also seem to work fine with WindSLIC (latest beta). It has been flashed on the DIP-32 ROM.

    I use Realtek RTL8139/810x Family Fast Ethernet NIC (VID/DID: 10ECh/8139h) based on RTL8139C chip with the MSI H55-G43 motherboard.
     
  4. truthinjection

    truthinjection MDL Member

    Aug 27, 2009
    247
    46
    10
    Interesting. I had not found any Realtek-based NICs that even had ROMs on-board. Or did you manually flash onto an add-on ROM purchased separately from the card? What utility did you use to flash with? I think I remember Realtek having posted the 8139-compatible utility long ago, but the 8169-compatible utility was kind of a no-show last time I looked.

    But, glad it's working. Currently, I think it should work for just about every card that has a flashable ROM on-board (assuming you also have the flasher utility). Of course, various manufacturers have different checksums in their ROMs to validate them, so your mileage may vary.


    I've been trying to make improvements to WindSLIC, but getting the time together to fire it up and get a working VMware/QEMU setup on a PC has pretty much kept me from getting very far.

    As a matter of curiosity, for those using the newest versions, what version of PCI-BIOS does it say you have? Most physical machines all say PCI-BIOS v3.00 if they are even relatively modern, but all of the Virtual Machine (VMware, QEMU, and VirtualBox) environments all say "PCI-BIOS v2.10" if I can get them to boot to WindSLIC at all (darned picky VirtualBox).

    Theoretically, I think anything with PCI-BIOS 3.00 would be able to use PMM services so that the skanky Int-15H hook wouldn't be needed on those BIOSes.

    If any of my tinkering ever pays off, I may release something akin to "WndSLIC2".. It would mean that if you didn't have a PMM-capable BIOS, you'd have to use the old "WindSLIC", but if you had a newer board, you'd be able to use a more-modern/flexible WindSLIC2 with some additional features, like:
    1. Post Memory Manager (PMM) Support - I haven't started working on this, but it should be relatively simple, and would mean we didn't have to keep a skanky Int-15H handler around
    2. BootFirstDangit Support - I think I might be able to have WindSLIC's Init be smart enough to override the normal Initial Program Loader (IPL) "Boot First" selection in the BIOS. This would make it unnecessary to go into the BIOS to set WindSLIC to be first in the boot order. I haven't gotten very far on this one, but I may know more in the next little while.
    3. LockPick-for-Intel Support - Some of my (and later, nononsence's) mods to WindSLIC used the Intel CPU/Chipset specifications to unlock the write-protection on the SLIC-related areas of memory. It was always pretty rough, but it did work pretty well as a proof-of-concept. I know it works on older boards and it should work on the latest Core i7 boards, but there may be a middle group of original i7s that it doesn't work with. I dunno.
    Anyway, glad to see a non-Intel NIC work for somebody.
    -tij-
     
  5. Cool-T

    Cool-T MDL Novice

    Mar 6, 2011
    2
    1
    0
  6. nononsence

    nononsence MDL Addicted

    Aug 18, 2009
    809
    823
    30
    #127 nononsence, Nov 1, 2011
    Last edited by a moderator: Apr 20, 2017
  7. truthinjection

    truthinjection MDL Member

    Aug 27, 2009
    247
    46
    10
    #128 truthinjection, Nov 5, 2011
    Last edited by a moderator: Apr 20, 2017
    (OP)
  8. nononsence

    nononsence MDL Addicted

    Aug 18, 2009
    809
    823
    30
    I did find this code that details the procedure for reprogramming the MTRR's. I have only just started playing with it, so I'm
    not sure if I have unlocked anything yet.

    UEFI sets the CPU to 64bit protected mode with flat memory and paging, so I gave the WP bit a try, and toggling it made no
    difference.
     

    Attached Files:

  9. nononsence

    nononsence MDL Addicted

    Aug 18, 2009
    809
    823
    30
    I tried using RW everything to set the MSR for 0xF8000-0xFFFFF to write through, then wrote to the RSDP upon refresh the change disappeared.
    then I set 0xF8000-0xFFFFF to write back and when I wrote to the RSDP Windows blue screened, which I think is encouraging. The test CPU was
    an i7 920.
     
  10. foxyrick

    foxyrick MDL Member

    Aug 25, 2011
    111
    51
    10
    I just wanted to say thanks very much for this great tool!

    I have an old Dell Poweredge 2800 server that I wanted to play with Server 2008 on, and an Intel PRO/1000 MT Dual Port Server Adapter, ID: 8086h/1010h.

    It worked perfectly, after setting the 'Dell Workaround' in the file. Before that I got a blank screen when the system tried to load the OS.

    I now have Server 2008 R2 Enterprise activated :biggrin:

    A curious note: when the system boots and the NIC displays the WindSLIC notice etc, it says VID/DID is 8086/3586 (I think, something like that) instead of '8086/1010'. It doesn't seem to matter. When the system black-screened at first, I thought it might be a problem so I checked the assembled file in a hex editor and found the 8086/1010 in it, so I had entered it correctly. Anyway, it all works.
     
  11. truthinjection

    truthinjection MDL Member

    Aug 27, 2009
    247
    46
    10
    Good to know! Thanks!

    The listing on the bootup screen is for the "Root" PCI device of the system, if I remember correctly. Really right now it doesn't "do" anything, but certain features of older versions (and possibly future versions) used that information to decide how to place the data into the right memory areas. It's just cosmetic in the current versions, though.

    -tij-
     
  12. nononsence

    nononsence MDL Addicted

    Aug 18, 2009
    809
    823
    30
    #133 nononsence, Jan 2, 2012
    Last edited by a moderator: Apr 20, 2017
  13. ciompoboy

    ciompoboy MDL Novice

    Mar 24, 2010
    6
    0
    0
    Hi Everybody

    I just finish to flash my - Intel Pro/1000MT (VID/DID: 8086h,100Eh) with WindSlic.
    Now I see WindSlic as a boot option, and I set it as first boot option.
    But after boot screen sequence, the pc stop in a black screen with this write:
    (A)WindSLIC..
    -More-
    and blinking cursor

    If I press any key it write Going...
    and try to start windows, but can't go, and pc freeze in a black screen.

    What can I do?
    I made some mistakes?

    Thanks a lot for your support
     
  14. truthinjection

    truthinjection MDL Member

    Aug 27, 2009
    247
    46
    10
    Sounds right so far. What type of machine are you putting this into, though? Dells, specifically, have to have a workaround enabled in the code, or they sometimes do something like the symptom you're having.

    There's a configuration option in windslic.asm:

    BOOTSPLASH_USE_TIMELY_PAUSES = 1

    It's default set to 1. That causes it to pause. Changing that to 0 will prevent the pause, but it won't help you past the black screen.

    There is a another parameter in the source code in windslic.asm:

    WORKAROUND_1_DELL_VID = 0

    I would find that and enable that (set it to 1). Hopefully that's all you'll have to do. But, more information about the type of PC you're using this with would help a little.

    Thanks,
    -tij-
     
  15. ciompoboy

    ciompoboy MDL Novice

    Mar 24, 2010
    6
    0
    0
    Dear truthinjection,
    thanks a lot for your fast reply. :)

    I have a Fujitsu home desktop, with a G31M motherboard, and an Intel E6600 cpu
    An ATI X1600XT as video card, 2 Gb RAM DDR2 and I disabled on-board network chip.

    Now I will try if Dell workaround works with my configuration

    Thanks a lot
    Carlo
     
  16. LeoTheLion

    LeoTheLion MDL Novice

    Jul 12, 2012
    21
    1
    0
    These NIC's are also working:
    3COM 3C905C-TX (VID/DID: 10B7h, 9200h) with 64k Onboard-Atmel-ROM
    Olicom RapidFire-3140 (VID/DID: 108Dh, 0004h) with 256k Winbond-ROM (from an old MoBo)
     
  17. krypt0n

    krypt0n MDL Novice

    Jun 16, 2011
    10
    2
    0
    Intel has finally removed PROBOOT.EXE from their servers, which contains the ibautil.exe needed to do anything to the network adapters. They only offer PREBOOT.EXE now, which no longer contains ibautil.
     
  18. mastermattie

    mastermattie MDL Novice

    Jan 20, 2010
    6
    2
    0
    #140 mastermattie, Jan 3, 2013
    Last edited: Jan 5, 2013