Jump to content

Marvell (Aquantia) 10 Gb Ethernet support thread


d5aqoep
498 posts in this topic

Recommended Posts

1 minute ago, d5aqoep said:

You simply have to install 10.13.3 and that macOS version has a bug which re-writes your card's Subsystem ID to Apple one. Then it will continue to work with patch given by Mieze. Or if someone can create a FakePCIID injector kext to be used along with FakePCIID.kext and we will be able to use our unmodified cards like they do with Broadcom based wifi cards.

Yes, I know this. Please note I’m asking to use a real Mac with an unmodified MacOS. 

Link to comment
Share on other sites

I continued reverse engineering checkConfigSupport() and found some really surprising results.

  1. With my flashed ASUS card the hash value checks are bypassed but it first reads the global chip identification register (according to what I learned from the Linux driver's source code).
  2. Next it tries to retrieve the NIC's "built-in" property from IORegistry.
  3. In case the "built-in" property is found, it compares the value of the global chip identification register with 0x102, which seems to be the value matching the flashed cards and the chips is refused with the error message "AppleEthernetAquantiaAqtion) AssertMacros: !b0Chip". This is quite strange as the ASUS card also uses a B0 revision chip but it looks like Apple found a way to distinguish their hardware from flashed cards. 
  4. If the "built-in" property isn't found, the check of the global chip identification register is skipped and the NIC will be accepted without further tests. This opens up a new opportunity for a patch which may even survive driver updates. Replacing the string "built-in" with something else by a Clover patch also causes the driver to accept the chip and even the error message disappears (I can confirm that this works!).

By the way, I don't think that it would be possible to use the driver in combination with vanilla ASUS cards (without Apple firmware flash) as the driver seems to depend on Apple's firmware. Earlier versions of the driver even failed to retrieve the NIC's permanent MAC address on vanilla ASUS cards and I have no reason to assume it would be different under 10.13.4. Another point is that Apple offloads mDNS to the NIC in sleep which requires special firmware usually missing in 3rd-party cards.

Mieze

 

  • Thanks 1
Link to comment
Share on other sites

3 hours ago, Mieze said:

I continued reverse engineering checkConfigSupport() and found some really surprising results.

  1. With my flashed ASUS card the hash value checks are bypassed but it first reads the global chip identification register (according to what I learned from the Linux driver's source code).
  2. Next it tries to retrieve the NIC's "built-in" property from IORegistry.
  3. In case the "built-in" property is found, it compares the value of the global chip identification register with 0x102, which seems to be the value matching the flashed cards and the chips is refused with the error message "AppleEthernetAquantiaAqtion) AssertMacros: !b0Chip". This is quite strange as the ASUS card also uses a B0 revision chip but it looks like Apple found a way to distinguish their hardware from flashed cards. 
  4. If the "built-in" property isn't found, the check of the global chip identification register is skipped and the NIC will be accepted without further tests. This opens up a new opportunity for a patch which may even survive driver updates. Replacing the string "built-in" with something else by a Clover patch also causes the driver to accept the chip and even the error message disappears (I can confirm that this works!).

By the way, I don't think that it would be possible to use the driver in combination with vanilla ASUS cards (without Apple firmware flash) as the driver seems to depend on Apple's firmware. Earlier versions of the driver even failed to retrieve the NIC's permanent MAC address on vanilla ASUS cards and I have no reason to assume it would be different under 10.13.4. Another point is that Apple offloads mDNS to the NIC in sleep which requires special firmware usually missing in 3rd-party cards.

Mieze

 

Did clover inject that "builtin"?

/* preprocessor definitions for global mif identification */
#define HW_ATL_GLB_MIF_ID_ADR 0x0000001cu

What is mif?

Edited by ydeng
Link to comment
Share on other sites

7 hours ago, Mieze said:

By the way, I don't think that it would be possible to use the driver in combination with vanilla ASUS cards (without Apple firmware flash) as the driver seems to depend on Apple's firmware. Earlier versions of the driver even failed to retrieve the NIC's permanent MAC address on vanilla ASUS cards and I have no reason to assume it would be different under 10.13.4. Another point is that Apple offloads mDNS to the NIC in sleep which requires special firmware usually missing in 3rd-party cards.

Mieze

 

Sorry Mieze, I didn't explain very well before:

My plan is to buy one ASUS XG-C100C, flash the Apple firmware using a Hackintosh (and macOS 10.13.2 -> 10.13.3), and then use it in a real Mac mini (with an unmodified 10.13.4 macOS install), using a Thunderbolt external case (with a PCIe expansion slot).

 

My problem now is I should't use Clover in a real Mac, so I'm looking for alternatives. Please Mieze, would be possible to force the AppleEthernetAquantiaAqtion be recognized as 90909090 9090 instead of 0f84c003 000 in another way instead of using Clover? Maybe some permanent modification than can be used in a real Mac? Maybe something like this? https://forums.macrumors.com/threads/modify-retail-intel-10gbe-nics-to-use-small-tree-macos-drivers.1968456/

Thanks!

Link to comment
Share on other sites

9 hours ago, vicmarto said:

Sorry Mieze, I didn't explain very well before:

My plan is to buy one ASUS XG-C100C, flash the Apple firmware using a Hackintosh (and macOS 10.13.2 -> 10.13.3), and then use it in a real Mac mini (with an unmodified 10.13.4 macOS install), using a Thunderbolt external case (with a PCIe expansion slot).

 

My problem now is I should't use Clover in a real Mac, so I'm looking for alternatives. Please Mieze, would be possible to force the AppleEthernetAquantiaAqtion be recognized as 90909090 9090 instead of 0f84c003 000 in another way instead of using Clover? Maybe some permanent modification than can be used in a real Mac? Maybe something like this? https://forums.macrumors.com/threads/modify-retail-intel-10gbe-nics-to-use-small-tree-macos-drivers.1968456/

Thanks!

Actually my post wasn't related to your question at all because the way you asked really makes no sense:

  1. Technically speaking, there is always a way to make it work.
  2. My findings are just a snapshot in time and with the next update the situation might be different.
  3. The major advantage of using a real Mac is to have a system which is working out of box but how much of this advantage are you willing to sacrifice?

There is no need to use Clover. You may disable SIP on your Mac and install a manually patched version of the driver but it's up to you to decide if it's really worth the effort?

Mieze

Edited by Mieze
Link to comment
Share on other sites

3 hours ago, Mieze said:

Mieze

To install the diag driver in Windows, any previous driver needs to be completely uninstalled and then Windows will accept Diag driver. This helps to re-flash updated stock firmware and also change subsystemID to original for warranty purposes.

Link to comment
Share on other sites

11 hours ago, Mieze said:

Actually my post wasn't related to your question at all because the way you asked really makes no sense:

  1. Technically speaking, there is always a way to make it work.
  2. My findings are just a snapshot in time and with the next update the situation might be different.
  3. The major advantage of using a real Mac is to have a system which is working out of box but how much of this advantage are you willing to sacrifice?

There is no need to use Clover. You may disable SIP on your Mac and install a manually patched version of the driver but it's up to you to decide if it's really worth the effort?

Mieze

I see now. Thank you very much Mieze.

Link to comment
Share on other sites

Getting another ASRock X299 professional gaming motherboard with built-in Aquantia 10Gig nice later today.

Can I directly run 10.13.4 with@mieze patch? Or should I run 10.13.3 first?

Any particular steps to follow to have the nic working?

Sent from my SM-G950F using Tapatalk

Link to comment
Share on other sites

6 hours ago, jya said:

Getting another ASRock X299 professional gaming motherboard with built-in Aquantia 10Gig nice later today.

Can I directly run 10.13.4 with@mieze patch? Or should I run 10.13.3 first?

Any particular steps to follow to have the nic working?

Sent from my SM-G950F using Tapatalk
 

First install 10.13.3 and reboot multiple times till your ethernet card starts working. Then install 10.13.4 and use mieze patch.

Link to comment
Share on other sites

First install 10.13.3 and reboot multiple times till your ethernet card starts working. Then install 10.13.4 and use mieze patch.
I already have macos installed on my ssd, and that would be 10.13.4.
What about just using the Windows drivers? Last time that's all I needed to get the nic working on 10.13.3 (otherwise it always showed up as the cable was unplugged)

Sent from my SM-G950F using Tapatalk

Link to comment
Share on other sites

1 hour ago, jya said:

I already have macos installed on my ssd, and that would be 10.13.4.
What about just using the Windows drivers? Last time that's all I needed to get the nic working on 10.13.3 (otherwise it always showed up as the cable was unplugged)

Sent from my SM-G950F using Tapatalk
 

Not going to work. Installing 10.13.3 is a requirement to get your card to work. No shortcuts.

Link to comment
Share on other sites

 
There are options:  The Startech 10GBE card ST10GSPEXNB, The Chelsio 10GBE card, both of which have their own macOS drivers.   There is also the X540-T2 card, which you would have to buy used, and there is a flash process to get it ready for macOS, then you could the Smalltree drivers on it to use it on the macOS.  The fact that each of these cards have separate drivers specific to the macOS means you've got a better chance that the cards will continue to work on future versions of the macOS.  They all also produce Windows drivers, but I'm not sure what versions of Windows they might support.
The other option is to try and find an installed version of 10.13.3 that you boot to.  You might find the install file somewhere, get a used or second hand good quality drive and install it just for the purpose of flashing the Aquantia card with 10.13.3.  But, there's no guarantee that the Aquantia 10.13.4 patch will continue to work on the next versions of the macOS.
Once the Aquantia is flashed, you have to use the Apple Boot camp drivers in Windows 10, if you use Windows that is.  No Windows 8 at this point (God I hate that operating system - but I will use Windows 10).  The Windows 10 Boot camp drivers that work with the 10.13.3/4 flashed Aquantia can be found earlier in this thread.   
This is on an ASRock X299 professional gaming motherboard. It's not a separate card.
Last time I got this motherboard for test, the nic didn't work until I booted into Windows. Loaded apple bootcamp drivers for the Aquantia card and after that once I Rebooted into macos it all worked.
So I was under the impression that it's the windows driver thst made it all work.

Anyhow, I found a usb disk where I had set-up 10.13.3 and I have a spare m.2 disk to install it on.

Sent from my SM-G950F using Tapatalk

Link to comment
Share on other sites

13 minutes ago, meaganmargaret said:

Well, good luck!  Hope you can find a work around.  But if you can't, you could always still install one of the other cards I mentioned.

But for your sake, hopefully you can get the built-in Aquantia to work.

Thanks... but not thanks :)

I don't have anything using 10gig network here... So if that doesn't work, I'll just use the intel i219 also present on that motherboard.

I have 10.13.3 running on a SSD here, ready to test :) I'll report tomorrow when the motherboard arrives....

I wonder though, once 10.13.3 has flashed the Nic and changed the subsystem-id, are there ways to get back to the original firmware and Ids?

Link to comment
Share on other sites

So, I finally removed the Aquantic Card. After a few day I already get "Check NVRAM" Message on Bios Post. There must be some Code in Apple-Firmware what my Mainboard (ASUS Prime X299 Deluxe) don't like. :/ 

Edited by TECH_ATTACK
Link to comment
Share on other sites

5 hours ago, TECH_ATTACK said:

So, I finally removed the Aquantic Card. After a few day I already get "Check NVRAM" Message on Bios Post. There must be some Code in Apple-Firmware what my Mainboard (ASUS Prime X299 Deluxe) don't like. :/ 

In BIOS enable CSM and under CSM options disable the execution of network and other option ROMs.

Edited by Mieze
Link to comment
Share on other sites

6 hours ago, TECH_ATTACK said:

No, I don't want to enable CSM. Is bringing some other problems and boot times is almost 3x times longer. But anyway, thank for your tip.

I thought execution is disabled in non CSM mode (efi)

No, it isn't but without CSM the mainboard's UEFI tries to execute only EFI compatible ROM images. Unfortunately Apple's EFI ROMs aren't UEFI compatible which causes the problem.

Link to comment
Share on other sites

Well, just to report that the procedure recommended yesterday worked. Booted under macos 10.13.3 about a dozen time after which the AQC107 was recognised. I then booted 10.13.4, card seen but unplugged. I then enabled the clover patch that renamed the IO property, rebooted... And all working

Thank you guys

Link to comment
Share on other sites

On 11.4.2018 at 8:57 AM, Mieze said:

No, it isn't but without CSM the mainboard's UEFI tries to execute only EFI compatible ROM images. Unfortunately Apple's EFI ROMs aren't UEFI compatible which causes the problem.

I just dont understand why it is working perfect for maybe 30x times of Boot and then it stop working (with check NVRAM). If i remove Card and then reinsert card it is workign for a long time again until, some day, same error occurs.

Link to comment
Share on other sites

3 hours ago, TECH_ATTACK said:

I just dont understand why it is working perfect for maybe 30x times of Boot and then it stop working (with check NVRAM). If i remove Card and then reinsert card it is workign for a long time again until, some day, same error occurs.

Have you done the standard procedure of resetting your BIOS? Even updating your BIOS to latest version can help if it is outdated.

Link to comment
Share on other sites

5 hours ago, TECH_ATTACK said:

I just dont understand why it is working perfect for maybe 30x times of Boot and then it stop working (with check NVRAM). If i remove Card and then reinsert card it is workign for a long time again until, some day, same error occurs.

Reverse engineering Apple's EFI ROM may answer your question but it might also be a bug in the mainboard's UEFI firmware. Looks like the code is writing data to the NVRAM and causes a mess. Are you using Clover with emulated or native NVRAM?

Mieze

Link to comment
Share on other sites

  • 1 month later...

The macOSUpd10.13.3.pkg contains the following files:

- AppleEthernetAquantiaAqtion.kext

- AppleEthernetAquantiaAqtionFirmware.kext 

- AppleEthernetAquantiaAqtionFirmwareDev.kext 

 

What would happen if I'd (temporarily) replace my kexts with the ones from the 10.13.3 pkg?

Would that trigger the firmware update on my Asus XG-C100C?

Edited by Zyphrax
Link to comment
Share on other sites

5 hours ago, Zyphrax said:

The macOSUpd10.13.3.pkg contains the following files:

- AppleEthernetAquantiaAqtion.kext

- AppleEthernetAquantiaAqtionFirmware.kext 

- AppleEthernetAquantiaAqtionFirmwareDev.kext 

 

What would happen if I'd (temporarily) replace my kexts with the ones from the 10.13.3 pkg?

Would that trigger the firmware update on my Asus XG-C100C?

No it doesn't trigger firmware update even if you replace the kexts in any versions higher than 10.13.3. I have tried it in 10.13.4 and failed.

I have also tried this: Installed 10.13.3 and deleted AppleEthernetAquantiaAqtionFirmware.kext & AppleEthernetAquantiaAqtionFirmwareDev.kext. Installed Asus XG-C100C and booted into macOS. The firmware still got updated regardless. So AppleEthernetAquantiaAqtion.kext is the one which performs firmware upgrade.

 

But you can always try the kext replacement method which you suggested and report here. :)

Edited by d5aqoep
Link to comment
Share on other sites

My friend has a hackintosh and I was asking for him. He doesn't want to go back to 10.13.3, because everything else is working fine, this high speed ethernet card not working is just an inconvenience.

 

I don't really understand why we can't use the old kexts under the new OS. Maybe if we would just replace the binary part (`Contents/MacOS/AppleEthernetAquantiaAqtion`). The system is probably performing a check that the kext is compatible by checking the info.plist. @d5aqoep Have you tried something like that?

Edited by Zyphrax
Link to comment
Share on other sites

×
×
  • Create New...