Is your timing for V2 based on the Type 1?
The V1 matched more closely with Type 3 especially on RingEdge. I did not get to try on Lindbergh but I don't think it will be any different.
Even on the Digital I/O there was a slight lag in receiving a signal. Not sure if that helps the difference in both but it was something I noticed between the two.
The thing is that I never really had a means of measuring timing for a stock I/O, so nothing was done to ensure my timings matched. Even within my V1 code iterations, I eventually introduced something that made the RE stop working, because I had to go back pretty far for a version that worked. When timing started being a concern is when Lindbergh testing (I purchased a Lindbergh well into development of the Mega JVS, iirc) started showing that it wasn't pairing.
I noticed the failure happening during the initialization commands, so I started messing with adding delays to some of those replies and got it working. The introduction of a delay variable came about from that (I had this in some V1 sketches), and really only got applied to some of the initialization replies, and not the regular digital read, analog read and coin replies.
Functionally the V2 is mostly the same as V1 except for a major reassignment of pins. There was an addition of SD card reading and a header for a display (though display functionality was added in V1 code), but neither of these should have added any processing time to the JVS protocol because the cycles needed for driving both of these is done outside of JVS communication (unless switching profiles once communication has already been established).
Then I added software debouncing to the V2 code, which likely would have added some additional time to the digital switch reading, but I'm honestly not sure what negative impact that might have had.
Once I started building out profiles with the profile editor (this DID come about in the time of V2 boards) and I added in mappings for analog channels, I ended up leaving a lot of my profiles with all 8 channels mapped. I suspect that the the Lindbergh was having a similar issue to what I'm seeing in RE, but somehow the initial delays did something to make it work, in spite of potentially overlong responses for analog polling.
At any rate, with the current code I have for the V2, where there are no artificial delays added in, I went back and tested on the Lindbergh and it seemed to pair with it just fine.
A prior odd issue I was having is that Mario Kart Arcade GP2 would sometimes boot with 99 credits. I isolated the issue to the MEGA JVS, but didn't know why. I went back and tried Triforce with the new code and am not seeing that issue in the few times I reset MKAGP2.
I'll do some more testing on all the platforms I have, but I think I may have landed on what's going to work for all of them.