First post, by LSS10999
I'm currently finding myself stuck on how to get this onboard network adapter working on certain OSes. So far I can get it working with Linux and Windows XP, but nowhere else (NT 3.5x and Vista/7 x64).
Unlike other 8255x network interfaces this one (compatible with 82559ER) has a Device ID of 1209h instead of the 1229h which prevented most known drivers from accepting it. As far as I've tested, drivers available for NT 3.51 (E100B.SYS) don't work with it -- can be installed, but it would throw an error on startup, likely due to it expecting a 1229h device but there's none.
For 82551ER/82559ER there's a different driver called E100E which has only NDIS4 version (E100ENT.SYS) and not NDIS3 one (that would be E100E.SYS per their naming conventions). On the other hand, there's no officially signed x64 drivers for 8255xER (1209h), so I can't even use it with Windows Vista or 7, whereas vanilla 8255x with 1229h still have NDIS5.x x64 drivers there. I tried adding the device ID in question into the driver INF and tried installing it with driver signature enforcement temporarily disabled -- no luck. Code 10.
I wonder to how much extent 8255xER differs from vanilla 8255x in terms of driver code. Is it just the PCI device ID difference or some significantly different code path? Hardware-wise it seems 8255xER is pin-compatible with vanila 8255x, though there are some SMB-related pins not present in 8255xER and perhaps that might be why a different device ID and driver was needed...
I also tried modding the EEPROM after referring to these datasheets [1] [2] [3]. However, for 82551ER/IT I'm getting contradictory information from these datasheets regarding whether it can change device ID or not. So far it seems not. I changed word 23h to 1229h from 1209h and it's still being detected as 1209h even after fiddling necessary bits in word 0Ah to any valid combinations.
Looks like the explanation in the 82551QM/ER/IT EEPROM map datasheet [3] might be the correct one -- that 82551ER/IT doesn't support changing PCI device ID via word 23h, only 82551QM does, despite the EEPROM map in 82551ER datasheet [2] stated otherwise. On the other hand, there's probably no need to change anything for 82551QM at all as it's already using 1229h, and that one does have the SMB-related pins absent from 8255xER, while also present in vanilla 82559, making it fully pin (and maybe software) compatible to 82559.
Just now I hacked into the E100B.SYS driver binary as well as the config (EPRO100.DLL), changing the mentions of device ID 1229h to 1209h and installed the driver as a 82557 in NT 3.51. The driver is not working, but it's a partial success -- the card is now picked up by the driver and the config, and it can pass first 3 tests until it fails at internal loopback. Don't know if I need to hack a newer NDIS3 driver version, or that there were indeed some difference in the code path for 8255xER requiring the specialized driver (E100E). Perhaps I'll have to look for the answer in their respective Linux drivers...