Success! ...maybe ...probably... NOT! (See update below)
I was able to modify the SX6018 .bin firmware image to enable high power transceiver support on ports 1-12. Unfortunately, one of my transceivers has a bad laser so link won't come up but here's what the host side says:
This shows that it is receiving light on all four channels (wavelengths) from the switch. I was getting all zeros before the firmware mod. Hopefully, when I receive a replacement for the bad transceiver I will be able to declare success completely.
The firmware .bin is made of a number of section which you can see when using flint's (v)erify command.
While there is a section called "FW Configuration" that contains a zlib/deflate compressed copy of the ascii ini file it's there for documentation/decoration only and has no effect on the switch. I first tried modding that section and confirmed it using the flint 'dc' command but the change made no difference.
The real config is in the "Configuration" sections and the ones we're interested in are in the 2nd one. That section contains register settings in the form of 32-bit triplets (address, value, bitmask). When mlxburn generates a firmware from an .mlx file and .ini it apparently parses the .ini and maps the directives to register settings. Without the .mlx it's nearly impossible to tell how to map one to the other.
Fortunately, the SX6012 has 2 firmwares, one with all ports enabled for high power and the other with just 5 ports. I was able to diff the register settings to figure out which registers, and which values, were responsible for the power setting. Interestingly, the pattern of those registers matched the SX6018 but only for the first 12 ports. The upper 6 ports must be in a separate register block somewhere else with totally different values.
PM me if you'd like to try this firmware. I was only able to burn the firmware using flint on the switch itself. Doing it from an ib card seemed successful but when the switch rebooted it reverted back. I also tried making an mfa file that could be uploaded via the web ui but that very nearly bricked the switch! Doing it the hard way (flint on the switch) is very reliable and what I recommend.
Update: I received the replacement transceiver and the switch won't bring up link. I can get link card-to-card with these but not with the switch. The page below seems to indicate that the switches are vendor locked for LR4 modules. Perhaps the Cisco BiDi modules will work because they aren't LR4.
https://community.mellanox.com/s/article/lr4-support-on-mellanox-switches
I was able to modify the SX6018 .bin firmware image to enable high power transceiver support on ports 1-12. Unfortunately, one of my transceivers has a bad laser so link won't come up but here's what the host side says:
Code:
Laser tx bias current (Channel 1) : 50.094 mA
Laser tx bias current (Channel 2) : 50.914 mA
Laser tx bias current (Channel 3) : 70.986 mA
Laser tx bias current (Channel 4) : 53.386 mA
Transmit avg optical power (Channel 1) : 0.7611 mW / -1.19 dBm
Transmit avg optical power (Channel 2) : 0.7412 mW / -1.30 dBm
Transmit avg optical power (Channel 3) : 0.0000 mW / -inf dBm
Transmit avg optical power (Channel 4) : 0.7539 mW / -1.23 dBm
Rcvr signal avg optical power(Channel 1) : 2.9937 mW / 4.76 dBm
Rcvr signal avg optical power(Channel 2) : 4.0408 mW / 6.06 dBm
Rcvr signal avg optical power(Channel 3) : 2.3897 mW / 3.78 dBm
Rcvr signal avg optical power(Channel 4) : 3.6674 mW / 5.64 dBm
The firmware .bin is made of a number of section which you can see when using flint's (v)erify command.
While there is a section called "FW Configuration" that contains a zlib/deflate compressed copy of the ascii ini file it's there for documentation/decoration only and has no effect on the switch. I first tried modding that section and confirmed it using the flint 'dc' command but the change made no difference.
The real config is in the "Configuration" sections and the ones we're interested in are in the 2nd one. That section contains register settings in the form of 32-bit triplets (address, value, bitmask). When mlxburn generates a firmware from an .mlx file and .ini it apparently parses the .ini and maps the directives to register settings. Without the .mlx it's nearly impossible to tell how to map one to the other.
Fortunately, the SX6012 has 2 firmwares, one with all ports enabled for high power and the other with just 5 ports. I was able to diff the register settings to figure out which registers, and which values, were responsible for the power setting. Interestingly, the pattern of those registers matched the SX6018 but only for the first 12 ports. The upper 6 ports must be in a separate register block somewhere else with totally different values.
PM me if you'd like to try this firmware. I was only able to burn the firmware using flint on the switch itself. Doing it from an ib card seemed successful but when the switch rebooted it reverted back. I also tried making an mfa file that could be uploaded via the web ui but that very nearly bricked the switch! Doing it the hard way (flint on the switch) is very reliable and what I recommend.
Update: I received the replacement transceiver and the switch won't bring up link. I can get link card-to-card with these but not with the switch. The page below seems to indicate that the switches are vendor locked for LR4 modules. Perhaps the Cisco BiDi modules will work because they aren't LR4.
https://community.mellanox.com/s/article/lr4-support-on-mellanox-switches
Last edited: