At first run, you add your file to the media store. Thus, you shouldn't have an error (except if you forgot to make the directory needed, in case it doesn't exist).
BUT, when you run your program again, your file is already stored in the mediaStore, and I think this is the problem with the command u = rm.AddToMediaStore(File.DirRootExternal & "/media/audio/ringtones", "limb2.mp3", "LostLimbs", True, True, True, False)
rm.SetDefault(rm.TYPE_RINGTONE, u).
Thus, in case this is not a bug of the object, you should catch the error of overwriting the same file, with try&catch and your command inbetween.