This script will run a self-test on all be2net interfaces during boot. For my Emulex OCe11102-N-XI (IBM branded, FRU 49Y7942) this results in the interface being initialized and being available to use as a 10GBe NIC on my Arch Linux and Manjaro boxes.
Mind: I have not tried this with headless boot, yet. But it works well on my desktop machine.
Maybe there should be some module magic to actually do this right, but it's old hardware and I'm only using this at home. So I don't feel like peskering Kernel people with this.
This trick was discovered by Jurriaan Pruis. Thanks for blogging about it!
You might want to first try manually initializing the card, just run the self-test using ethtool -t $interface
(repeat for all ports/SFP+ slots).
On the first try the command fails, but the card is then silently initialized and you should see the link go up (that is, if the device is connected to something).
If this fails and you have a multi-port card, make sure to run the command for the correct port!
See the end of the blog article for details.
Mind that I had success with the pre-installed firmware version 4.2.433.3 (run ethtool -i $interface
to see your firmware version)
I only dared to upgrade to 4.6.281.8 to avoid bricking the card.
You can find that version, among other, newer versions, at ftp://download2.boulder.ibm.com/ecc/sar/CMA/XSA/.
Just check the elx_fw_cna
files:
Each elx_fw_cna_*_linux_32-64.bin
is a self-extracting updater, containing the firmeware file.
Just pass -x some_temp_dir
and it will self-extract without running anything else.
Jurriaan linked to an HPE ISO. That contains an even newer firmware version.
Updating the firmware then works just as Jurriaan describes:
- Copy the
firmware/oc11-[...].ufi
to/lib/firmware
- run
ethtool -f $interface oc11-[...].ufi
Careful, heed this instruction from broadcom when updating from a version prior to 10.0.803.37 to that version or newer:
You must perform the firmware update procedure twice to ensure that the flash regions are properly configured, and you must reboot the system after each firmware update.
Usage:
- Install the card, connect a DAC and boot your machine.
- Make sure it shows up in
lspci
. When runningsudo lspci -vv
, mine reports part number49Y7941
and FRU49Y7942
. - Install the script as
/opt/initialize-emulex/initialize-emulex.sh
(feel free to pick another location, but remember to adjust the unit file) - Install the systemd unit file as
/etc/systemd/system/emulex-initialization.service
- Reload systemd and enable the file:
systemctl daemon-reload && systemctl enable emulex-initialization.service
- reboot the system
Your interface should now be automatically up&running after booting.