recently i have bought a CRS520 and a CRS504 and inserted a QSFP28 optical module (Q.B161HG.40.YZI / Q.B161HG.40.ZYI). It took about 5 Minutes to get the link shown up as “running”. So i thought, that the autosensing is the part that needs that time to get a sync between both ends.
So i setted 100G-baseSR4-LR4 as speed with full-duplex and fec to fec91 as Ethernet / FEC Documentation suggests.
But as i have setted fec91, the link went down and did not come up again.
I changed that setting to fec74 on both ends and the link went up.
Since that is a BiDi interface you must have one downlink variant on one end of the cable and one uplink variant on the other.
For example where one of the transceivers RX:1310nm + TX:1550nm then the other one (on the other end of the cable) must be: RX: 1550nm + TX: 1310nm otherwise it wont work.
This gives if you got two uplink variants (one at each end of the cable) it wont work.
Edit: BiDi = BiDirectional, uses a single LC simplex instead of a LC duplex to transmit. That is using a single fiber instead of one fiber in one direction and another fiber in the opposite direction.
Standards are there mostly for inter-vendor interoperability. In your case you have single vendor (one for SFPs and one for routers) so use whatever works for you.
Just keep a (mental) note just in case you have to replace any piece of equipment and things break then.
Seems like these FEC values gets common these days: 74, 91 and 108. While Mikrotik currently doesnt seem to support FEC108.
In http://forum.mikrotik.com/t/100g-bidi-er-40km-fec-91-no-link/177826/1 you wrote that you had the same BiDi on both ends of your cable which will explain why it currently doesnt work out for you since you need a downlink BiDi at one end and an uplink BiDi on the other end of the same cable.