Mark-XP Posted March 13, 2023 Posted March 13, 2023 (edited) Hello! Many of the newer motherboards come (ore came) with an Intel I219-V GbE LAN on it (alt least until they were replaced with the newest 2,5+ GbE chips). Having had achieved a nice XP installation on my "new" GA-Z170-D3H and a Win7 install beside - with the properly working "(2) i219-V" LAN device there - i started searching the web for infos related to the I219 and XP. First stumbled across this site - point 7 - where Embedded-drivers for the i217-V were listed. [The link (on upload.ee) has expired however, i've got this pack and could upload it here... but not necessary, see below] Togeher with a promising hint: "If exactly your network card is not in the driver (e1d5132.inf) explicitly, it must be added by replacing the DEV_ID of the neighboring, close in name. " Quite optimistic with that, i isolated the Pro1000 driver files and modded it for my '(2) i219-V' / 8086_15B8 (same identifier as in Win7), started the driver-installation, it kind-of-worked, but it ended up with an error: > PCI bus 0, Device 31, Function 6: Code 10 - The device can't be started. Astonishingly enough: Some users have seen exactly this error with the i219-V in Windows 10 too! (https://www.google.de/search?q=i219-V+Windows+code+10) Now, let's take a look at the situation in Windows7 where the i219-V works nicely on the same board: The i217, i218 and i219 Win7-drivers can be easily found on the web (eg. here ). I found out, that in the relevant e1d6232.inf all the devices I217-V, I218-V and the I219-V are treated absolutely identically. And they all share the same 'Registry Settings' section well. So i searched further and found another page (https://www.vogons.org/viewtopic.php?t=46865&start=20), where user b_w (hello b_w, are you here too??) offers a *modded* driver - for the "Intel Ethernet Connection (2) I218-V". Examinating the e1d5132.inf there, i found it modded (for his 15A1 / (2) i218-V ) the same way as i did it for my 15B8 / (2) i219-V described above. But halt! In the driver folder of that driver.7z there is a modded e1d5132.sys too! The difference - compared to the original e1d5132$.sys - are 2 bytes, at position 0x138 and 0x139. But also with this new, modded e1d5132.sys the driver installation ends with the same error 10. So the .sys driver seems to correspond with the devices in the .inf driverfile?! At this point i had to make a break, for the first... and decided to start this topic. Please note: 1) This Intel i219-V LAN can be found on quasi every second mainboard (or even more) - getting it working in XP would imo mean e big leap for their XP-usability. 2) 1) implies, that newer Mini-ITX HW (with an i219) could be considerbale for an XP-build as in this case no extra PCI-LAN is necessary, Additional links: - The i219-V Product specificaten page i219 product brief: https://cdrdv2.intel.com/v1/dl/getcontent/333229 i219 datasheet: https://cdrdv2.intel.com/v1/dl/getcontent/612523 - The i218-V Product specificaten page Datasheet and Product-brief for the i218 Edited March 13, 2023 by Mark-XP typo 1
Mov AX, 0xDEAD Posted March 13, 2023 Posted March 13, 2023 (edited) 21 hours ago, Mark-XP said: Examinating the e1d5132.inf there, i found it modded (for his 15A1 / (2) i218-V ) the same way as i did it for my 15B8 / (2) i219-V described above. But halt! In the driver folder of that driver.7z there is a modded e1d5132.sys too! The difference - compared to the original e1d5132$.sys - are 2 bytes, at position 0x138 and 0x139. But also with this new, modded e1d5132.sys the driver installation ends with the same error 10. So the .sys driver seems to correspond with the devices in the .inf driverfile?! e1d5132.sys has more difference, DEV_ID=1559/155A(I218-V/I218-LM) replaced few times to 15A1(I218-V2) position 0x138 and 0x139 - updated e1d5132.sys checksum this hack is simple - force driver to use I218-V software code for I218-V2 hardware, sucess depends on how little hardware is different, first linux driver does same thing https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=191192 e.g. no real software changes, only new DEV_ID added Edited March 13, 2023 by Mov AX, 0xDEAD
Mark-XP Posted March 14, 2023 Author Posted March 14, 2023 48 minutes ago, Mov AX, 0xDEAD said: e1d5132.sys has more difference, DEV_ID=1559/155A(I218-V/I218-LM) replaced few times to 15A1(I218-V2) position 0x138 and 0x139 - updated e1d5132.sys checksum this hack is simple - force driver to use I218-V software code for I218-V2 hardware, Many thaks for your reply, Sir @Mov AX, 0xDEAD! But did you mean: e1d5132.inf has more differences (as the .sys does not contain any "218")? e1d5132.sys is program-code, what is it's source? the e1d5132.inf ? And the checksum (stored in e1d5132.sys) is of the .inf ? How is it calculated? Sorry for the many questions, (after decades of SW-developing) I'm absolut newbie to this specific topic and it's hard to find comprehensive descriptions in the www...
j7n Posted March 15, 2023 Posted March 15, 2023 There are differences at 2910, 21370, 3137C, 28362. The source of the program code is held by Intel. You can use PE Tools by NEOx to update PE checksum. The checksum is the sum of all 16-bit words of the sys file excluding the checksum in a 16-bit unsigned integer, and the file size. 1
Mark-XP Posted March 15, 2023 Author Posted March 15, 2023 (edited) Thanks a LOT @j7n , and welcome to the topic! So in the modded e1d5132.sys (for the i218-V) we have the four differences: 2910: 3D 59 15 -> 3D A1 15 21370: F9 59 15 -> F9 A1 15 2137C: F9 5A 15 -> F9 A1 15 28362: F9 59 15 -> F9 A1 15 What's so interesting: 15 59 was the primary identifier of the i218-V, and 15 5A primary identifier of the i218-LM in the driver offered once by intel in a ProEmbSW12 Embedded-driver-package (which was later removed as stated earlier here, point 7). These 4 identifiers were apparently changed to 15 A1 - the identifier of the i218-V (v2) according to the e1d5132.inf! Now, in fact of knowing nothing about the .sys driver, i could change the e1d5132.inf (from 15A1 / i218-V (v2) -> 15B8 / i219-V (v2) ) replace the Bytes A1 15 to B8 15 in the 4 locations of e1d5132.sys (i218 id -> i219 id) recalculate it's checksum, update it and try my luck... But prior i have to get the tools and do some preparations... (this type of hacking is rather new for me) Edited March 15, 2023 by Mark-XP
Mark-XP Posted March 15, 2023 Author Posted March 15, 2023 9 hours ago, j7n said: The checksum is the sum of all 16-bit words of the sys file excluding the checksum in a 16-bit unsigned integer, and the file size. Since filesize doesn't change, i tried to calculate the the checksum change manually: 3 * (A1 - 59) + (A1 - 5A) = 11F is exactly the difference of the both checksums at 0x138 (3E C5 - 3D A6) . Very nice @j7n, it even seems i do not have to utilize PE tools... And: Sorry Master @Mov AX, 0xDEAD, i hadn't yet reached the level neccessary to understand your wise reply above...
Mov AX, 0xDEAD Posted March 15, 2023 Posted March 15, 2023 6 minutes ago, Mark-XP said: Since filesize doesn't change, i tried to calculate the the checksum change manually: 3 * (A1 - 59) + (A1 - 5A) = 11F is exactly the difference of the both checksums at 0x138 (3E C5 - 3D A6) . Very nice @j7n, it even seems i do not have to utilize PE tools... there is many cheksum tools, i attached one checksum.exe
Mov AX, 0xDEAD Posted March 15, 2023 Posted March 15, 2023 (edited) 1 hour ago, Mark-XP said: What's so interesting: 15 59 was the primary identifier of the i218-V, and 15 5A primary identifier of the i218-LM in the driver offered once by intel in a ProEmbSW12 Embedded-driver-package (which was later removed as stated earlier here, point 7). 1) at offset 2137C numbers 1559 and 155A used as equation range Quote if ( id >= 0x1559 && id <= 0x155A ) if you have new 15B8, only patching 155A is enough, but author of patch changed both numbers, it is OK 2) i think one offset is missing: Quote if ( id > 0x151E ) { if ( id <= 0x155A ) <- missed 2909 { if ( id < 0x1559 && id != 0x1525 && (id <= 0x1539 || id > 0x153B) ) <- 2910 offset return; goto type_21; } if ( id == 0xF0E1 ) new 15A1 is not <= 0x155A, so we never reach goto type_21; line Edited March 15, 2023 by Mov AX, 0xDEAD
Mark-XP Posted March 15, 2023 Author Posted March 15, 2023 (edited) Many Thanks @Mov AX, 0xDEAD: meanwhile i tested the 15B8 [(2) 219-V] patched e1d5132 but it ended with error code 10 again. Now i'll analyse your (disassembled?) code and read the linux approach you mentioned above. At a first glance: we do not know if the 15A1 (i218) driver of b_w really ever worked! (if anybode here has a mb with a 218-V...) But i'll try to implement and test your idea later! Edit: i inserted 2909 (155A -> 15B8), reverted 2910 to as it was (1559), reverted 21370 (to original 1559) but did 2137C (15A1 -> 15B8). The result unfortunately remains the same: Code 10. Now @Mov AX, 0xDEAD, what means 28362 then (may i kindestly ask )? Since we let the two changes regarding id 15 59 unchanged, maybe the manipulation here is wrong or unnecessary too? Edited March 15, 2023 by Mark-XP test result added
Mov AX, 0xDEAD Posted March 16, 2023 Posted March 16, 2023 11 hours ago, Mark-XP said: Now @Mov AX, 0xDEAD, what means 28362 then (may i kindestly ask )? Since we let the two changes regarding id 15 59 unchanged, maybe the manipulation here is wrong or unnecessary too? Quote if ( *(_BYTE *)(a1 + 0x2430) > 2u || (id = *(_WORD *)(a1 + 9256), id == 0x155A) || id == 0x1559 ) v4 |= 1u; this is 28362 offset, need patch too, you can patch 155a or 1559, no matter p.s. can you share final e1d5132.sys ?
Mark-XP Posted March 16, 2023 Author Posted March 16, 2023 (edited) Thanks @Mov AX, 0xDEAD! And for sure, here it is: e1d5132.219.sys Edited March 16, 2023 by Mark-XP
Mark-XP Posted March 16, 2023 Author Posted March 16, 2023 (edited) Now i thought a little about the situation and remembered, that the i219-V is working well on the Win-7 (64) partition of the system disk. Having learned a little bit about the .sys drivers i took a look at the Win7-Version and that made me somewhat pessimistic: since in Win7 e1d62x64.sys the are 5 occurancies of B5 15 (id of 1219-V). in ,our' Version we've got only three. (In the 32-bit e1d6232.sys i counted even 6). So i conclude that there is done a bit more (in the Win7 driver) to get it working. Hence i'm less otimistic about the feasibility of this ,project' and beg you, Sir @Mov AX, 0xDEAD, not to waste too much time and efforts with it! Nevertheless, here is the Win7 (32) versions of the driver (for a swift view): e1d6232_Win7.sys Edited March 16, 2023 by Mark-XP typo
George King Posted March 31, 2023 Posted March 31, 2023 @Dietmar Have you looked on this? Seems like interesting way to get i219-V in XP. 1
Dietmar Posted March 31, 2023 Posted March 31, 2023 @George King This attempt will not work. The i219 is very much different from i218, i217.. The only way is, to use the Win7 driver. But for this you need ndis6. I made a try with Vista Longhorn 5048. I has ndis6. There was only one missed dependency Dietmar
Mark-XP Posted December 31, 2023 Author Posted December 31, 2023 On 3/31/2023 at 9:29 PM, Dietmar said: But for this you need ndis6. Or you nead a board with a second "< i219" LAN chip on it, like my ,new' GA-Z170N-WiFi God bless that wise (or simply miserly?) taiwanese engineer who decided to put that extra, slightly outdated (or simply cheaper?) i211 on it! No need for an old Realtek-PCI-LAN, and no need to replace its modern 11ac 867 WiFi with an aged M2 6235. This Skylake i5-6600 (non T) system running idle consumes about incredible 1.1 W only (XP) and 0.8 W only (Win7) - at least according to HWMonitor 1.28 - utilizing the integrated HD530. That would mean approximately 1/6 of power input compared to my current IvyBridge-i5 rig ! So, God bless @Mov AX, 0xDEAD, @Dietmar, @Ramsey, @Kai-Schtrom and everyone else who made this possible too! A happy new 2024!
Recommended Posts
Please sign in to comment
You will be able to leave a comment after signing in
Sign In Now