There was a 2.11 for IOM3, did you confuse this with IOM6 perhaps?
Here is a linux version of fwdownloader (scroll to bottom):
Document Display | HPE Support Center
You have to unpack the rpm. The getstatus binary has a slight bug, it tries to call "usleep 100 ; rm -f" which doesn't exist on Arch. You can binary patch it to "sleep 0.1 ; rm -f" (two spaces before the semicolon) to do about the same. Otherwise it leaves files laying around in /tmp. Although one has to ask why the binary doesn't just call libc functions for this, instead of executing a shell command. getstatus is more accessible to list components of enclosures than perhaps sg_ses.
Sources of firmware are the mentioned Microsoft StorSimple USM 3.38 from the update catalog. Of value is the XF001 midplane V10, should you ever need to upgrade or downgrade. But like I said, don't touch if you are not 110% certain you need a known bug fixed. Also has version 3.11 for the original DS4246 580W PCMs. StorSimple only has two PCMs, but you can binary-diff the files and only two bytes differ, so in theory you could extend these to four PCMs by counting them up +1 and +2. Again, would only ever upgrade to pull a downlevel component up to a certain revision.
Lenovo has lnvgy_fw_storage_d12xx.d3284-5.2.0.174_windows_x86-64.zip (simple login suffices) for their D1212 etc. Inside is a Python 2.7 "Py2Exe" Windows binary. Extract with
GitHub - extremecoders-re/pyinstxtractor: PyInstaller Extractor also using Python 2.7. You will find many firmware components for things like PCM, midplane, sideplane, fans and also the SAS canisters. Again, would only ever upgrade with one of these files if you have hardware which you know came from such a Lenovo device. If you look into an update file, it usually starts with GEMF and in bytes 12-16 there is an identifier. If you try to cross-flash something that doesn't match what you have, you are sniffing into hard-brick land... unfortunately you can't usually use sg_read_buffer to dump firmware and check the identifier, so you need to look into the firmware file that was originally flashed into the component you want to update.
Finally there is HPE with deep-EOL 3PAR StoreServ 7000 which had the M6720. Another Xyratex 24 LFF 4U type shelf. Word on the street is you couldn't even get an update like HPE_3PAR_INFORM_OS_RLS_3.3.2_QR482-11525.iso from them if you paid them. Assuming you are or were a paying subscriber, and lucky, you could unpack the file until you find some .deb files titled *ebodfw*.deb. Contains an XF001 V18 midplane update, presumably for newer PCMs and the later 12G canisters. The file ebod.cfg shows what needs to be done in theory. DS4246 is their DCS1 while I think the DS2246 is their DCS2. Look for "curr_gen=1" in the relevant section to see the latest revisions. Again, would only ever use these if you had that exact hardware from surplus or your employer's recycling bin. Lenovo talks about "regular" and "flip-flop" and 3Par about "alternate mapping" and I have no idea if that could be compatible with a DS4246.
All in all I suggest you use the getstatus or sg_* utilities to check if the shelf has consistent firmware revisions in all components, sensors are all green and then just use it as-is.