I used something called GetDataBack at an old MSP. If the file system is supported, it might work. It takes an extremely long time to run… just fyi. I usually duplicated the troublesome drive beforehand to an identical or larger sized one just in case.