Dear OPNsense Team,
I am a long-time user and admirer of your firewall project. Recently, I purchased a network device that includes a Marvell AQC113C-B1-C 10GbE network controller. Unfortunately, I noticed that this chip is currently not supported in OPNsense.
As I understand that OPNsense relies on FreeBSD's network stack, I would like to ask if there are any plans — or possibility — to support this chip in future releases, should FreeBSD include support. According to community sources, this chip is already supported in Linux but not yet in FreeBSD.
If there's anything the community can do (e.g., testing, submitting requests upstream to FreeBSD, or encouraging Marvell to release a driver), I'd be glad to help.
Thank you for your continued work on this amazing project.
Best regards,
Jacker
Well that's sad. I saw a very minimalistic port of the Linux driver some years back, but this was right in the middle of the Marvell purchase. The code review was pretty sad, too - just "what is an Aquantia?" and complaints about formatting. The driver (https://github.com/Aquantia/aqtion-freebsd (https://github.com/Aquantia/aqtion-freebsd)) appears to have advanced little. I'd hesitate to even try to make a plugin driver like the Realtek. Perhaps a (re-?) port of the NetBSD or OpenBSD drivers...?
I second that motion!
Have you tried fetching the driver and installing the driver from freebsd.org?
It has been working fine for my AQC107 NIC.
Try this driver:
Download driver
fetch https://pkg.freebsd.org/FreeBSD:14:amd64/latest/All/aquantia-atlantic-kmod-0.0.5.1402000_3.pkg
Install driver
pkg install aquantia-atlantic-kmod-0.0.5.1402000_3.pkg
List your available interfaces. Aquantia Atlantic (Marvell) AQtion interface should be listed as aq0.
ifconfig
A feature request does already exist for FreeBSD https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=282805. It is not worked on though.
Would running Opnsense on a VM (Linux Hipervisor) work for you?
Quote from: jacker on July 25, 2025, 01:51:31 AMIf there's anything the community can do (e.g., testing, submitting requests upstream to FreeBSD, or encouraging Marvell to release a driver),
I have added the device IDs and the speed init of AQC113/113C/113CA/113CS to the 14.3-RELEASE port of the driver (taken from OpenBSD, not more :)). Would you happen to be able to test it on a basic FreeBSD 14.3-RELEASE installation. Or of course if are able to, compile it yourself for a 14.3-RELEASE based installation.
The module doesn't compile for FreeBSD 15+, there are open tickets for it.
As usual: be careful installing stuff from the internet, don't put it on your prod machine.
The code/diff and the PKG file can be found: https://git.sr.ht/~patient0/FreeBSD-ports/refs/AQC113
Direct link to PKG file :https://git.sr.ht/~patient0/FreeBSD-ports/refs/download/AQC113/aquantia-atlantic-kmod-0.0.5.1403000_4.pkg
Edit: typo and extend to mention that if can of course compiled by the user itself.
Sadly, the AQC113 doesn't yet fully behave under Linux either. I got an integrated one with the UGREEN DXP4800+ but it doesn't work with virtual interfaces. I lost connectivity when I tried to bond it in primary/failover with the 2.5GbE interface and it did the same when I tried to add a VLAN in TrueNAS. Some users over at Proxmox report similar things: https://forum.proxmox.com/threads/unable-to-reach-10gbps.148878/
It might work as a physical NIC only without layering, but it seems 10G line rate is not guaranteed.
I suppose I should dig into this before asking, but: Have you got the latest firmware? I don't know if the Linux driver (or packages) includes it. The OpenWRT instructions for the Linksys MX8500 included the firmware upgrade (the firmware in that case being loaded under U-Boot, IIRC). The Marvell flash utility is Windows only.
It's possible that UGREEN include an updated driver on their NAS OS (or they just don't test advanced networking functions), but AFAIK it's not possible to update it in TrueNAS unless/until they ship an updated kernel with upstream fixes. IIRC, I had come across some comments that the driver is not well maintained or was never completed since Marvell acquired Aquantia... but I really don't know.
Sorry, you asked about firmware. No I haven't yet come across an update package for that. I probably also don't have access to UEFI updates because UGREEN doesn't publish them; at least not that I could find.
I think I was premature with my observation because of a routing issue that @Patrick M. Hausen has clarified for me. I now have the AQC113 working in a layered setup under a Linux machine. Hopefully the FreeBSD support will also be in a good place.
The AQC113C works in Linux but with caveats, however it gets improved. It would work fine as an access port. VLANs, Bonding and RSS had problems. But as for Linux it will get fixed fast compared to FBSD.
For FBSD, well thats another story. There is an official request to have these NICs working on FBSD, even an early implementation of the driver. But it does not work on FBSD 14. And on the driver no work was done for some time from FBSD. So it integration is very very very slow.
The only positive thing about these NICs and FBSD is, we could say, people starting noticing it and would like to have them in a workable state on FBSD.
Regards,
S.
I've been working on adding aq2 (e.g. aqc113c) support to the abandoned FreeBSD driver.
https://github.com/albb0920/aqtion-freebsd-aq2
The patches are mostly written by LLMs, but it is already quite functional.
If anyone is interested in testing this, here's a guide on how to install on OPNsense
https://github.com/albb0920/aqtion-freebsd-aq2/wiki/OPNsense-Installation-Guide
Quote from: albb0920 on February 15, 2026, 12:09:55 PMI've been working on adding aq2 (e.g. aqc113c) support to the abandoned FreeBSD driver.
https://github.com/albb0920/aqtion-freebsd-aq2
The patches are mostly written by LLMs, but it is already quite functional.
If anyone is interested in testing this, here's a guide on how to install on OPNsense
https://github.com/albb0920/aqtion-freebsd-aq2/wiki/OPNsense-Installation-Guide
Firstly thank you for your work! Much appreciated you did pick it up.
I am already running that driver on my OPN LAB device, which contains the aqc113c.
So far all looks working surprisingly well.
I plan to put the device into PROD by next week and test PROD traffic on it with various combinations.
- LAGGs
- VLANs
- Netmap
- RSS
- Offloading
One funny thing about this driver is it supports already more features than its cousin counterpart on Linux. Which made me laugh.
If you are working on the driver may I ask for a Feature?
Would it be possible to add this function to the driver?
These NIC have DOM, they can measure Temps directly on them.
Linux drivers have these temp measurements.
Device-1: Aquantia AQC113C NBase-T/IEEE 802.3an Ethernet [Marvell Scalable
mGig] driver: atlantic v: kernel pcie: gen: 3 speed: 8 GT/s lanes: 2
port: N/A bus-ID: 01:00.0 chip-ID: 1d6a:14c0 class-ID: 0200
temp: 43.0 C
Device-2: Aquantia AQC113C NBase-T/IEEE 802.3an Ethernet [Marvell
Scalable mGig] driver: atlantic v: kernel pcie: gen: 3 speed: 8 GT/s
lanes: 2 port: N/A bus-ID: 02:00.0 chip-ID: 1d6a:14c0 class-ID: 0200
temp: 41.0 C
Regards,
S.
Quote from: Seimus on February 15, 2026, 01:03:00 PMWould it be possible to add this function to the driver?
These NIC have DOM, they can measure Temps directly on them.
Linux drivers have these temp measurements.
Thanks for testing it!
I hope I understood your question correctly.
Temperature sensor measurements are exposed through sysctl,
I haven't figured out how these can be wired to OPNsense dashboard though.
Quoteroot@usb:~ # sysctl -a | grep aq | grep phy_temperature
dev.aq.1.phy_temperature: 46
dev.aq.0.phy_temperature: 42
Quote from: albb0920 on February 15, 2026, 03:33:44 PMI hope I understood your question correctly.
Temperature sensor measurements are exposed through sysctl,
I haven't figured out how these can be wired to OPNsense dashboard though.
Quoteroot@usb:~ # sysctl -a | grep aq | grep phy_temperature
dev.aq.1.phy_temperature: 46
dev.aq.0.phy_temperature: 42
Oh shoot! I totally forgot to check via sysctl. So its already there and working! Awesome <3
To show it on the GUI there are several ways but both of them need manual intervention.
1. Widget - but this would have to be created
2. RRD graphs, you can add custom graphs but you will need to manually configure them
Have a look at already created ones for RRD
https://github.com/opnsense/core/blob/master/src/opnsense/scripts/health/library/OPNsense/RRD/Types/Temperature.php
https://github.com/opnsense/core/blob/master/src/opnsense/scripts/health/library/OPNsense/RRD/Stats/Temperature.php
Regards,
S.
I put my my LAB device into PROD to test it. I wanted to test on my deployment that has LAGGs as well netmap usage.
I found few critical things that are not working. Here are my findings
The working part:
AQ driver loads after boot
NICs get proper MACs
LLDP works per port, properly sending packets
LACP/LAGG can be established, all LACP based flags are properly exchanged and peers are established
The not working part:
When setting VLAN over the LAGG created on AQ no traffic passes
Looks like for some reason when configuring a VLAN over a LAGG created on the AQs traffic is not being passed. I tried with mixed LAGG (intel + AQ) as well non-mixed LAGG (only AQ).
Regards,
S.
I don't see a firmware blob. Any idea of the version on your device? The driver has:
aq_log("MAC F/W version is %d.%d.%d",
hw->fw_version.major_version, hw->fw_version.minor_version,
hw->fw_version.build_number);
...but I didn't look at where aq_log logs. I have a Linksys appliance (MX8500) with an AQC113 (I believe), and OpenWRT includes (instruction to acquire) a firmware blob (loaded by U-Boot), v5.6.5. I also didn't see a firmware loader offhand; I didn't check the OpenBSD or Linux drivers.
You can get it from pciconf
# pciconf -llcvVBa aq1 | grep Version
VPD ro V1 = 'Bundle Version: 1.3.37'
VPD ro V2 = 'Fw Version: 1.0.124'
# pciconf -llcvVBa aq0 | grep Version
VPD ro V1 = 'Bundle Version: 1.3.37'
VPD ro V2 = 'Fw Version: 1.0.124'
...And I was wrong about the MX8500. It has an AQR114C, a transceiver without MAC. (I guess the IPQ8072A has at least one big MAC.) Not precisely comparable. The Marvell linux driver package does not seem to have binary blobs, either. Crud - driver firmware load would be nice (given the availability of the updater).
I found for the AQC113C instructions how to upgrade the firmware. However I didn't try this out yet.
https://gist.github.com/coronas2k/c7d3a37ca04da2f15783da3cc8cf3702
Maybe you could see if the same process is working as well for the 114C.
Regards,
S.
Quote from: pfry on February 22, 2026, 04:01:51 PMdriver firmware load would be nice (given the availability of the updater).
I've implemented host boot in my fork.
You'll first need to customize the firmware to have MAC/PHY suitable for your board.
(This is more or less trial and error, unless you're lucky that your board is in the updatedata.xml distributed in OEM firmware update package)
https://gitlab.com/-/snippets/5969424
Then it's quite straight forward (Details in README (https://github.com/albb0920/aqtion-freebsd-aq2/blob/master/README.md#host-boot))
* Package the firmware as a KLD
* Install it
* Enable forced host boot
This is in deed quite a nice feature, as it eliminate the risk of bricking NICs with bad firmware
My NIC came with 1.5.42 which I don't have any problem with though.