I just ran the script unedited as-is and plugged in the SN, Model and ID codes from my SDS804X HD scope. I didn't do anything with the keygen variable.
The BW codes generated by the script match the codes I generated earlier and the 200 MHz code matches the code I used to upgrade my scope, which now identifies itself as a SDS824X HD. So the BW options look correct to me.
I have no need for the other options as I already have LA and AWG gear, so I have not tried those codes. But the ones generated by this script match the ones I generated earlier when I did my upgrade so I would assume they are also correct. The only difference is the codes generated by this script have lower case alphas, while the ones generated by the script I originally used are all uppercase (but again, same code). Not sure if that matters. I will try enabling those options tomorrow morning just for kicks to see if the scope accepts them (I assume it will).
I agree with others here that if you're going to put together a unified script, it would be preferable to somehow have the user select their model and then only display codes for the BW and options appropriate for that model. Displaying a full page of codes - most of which do not apply to the model requested - is likely to cause some confusion. So basically there should be some table that lists the models capable of being upgraded and the BW and option codes applicable to that model if possible.
But it is nice to have ONE script for everything.
Thanks!
Edit - I also have an SDS1104X-E that I can test tomorrow. It seems like both models use the same code scheme, so if it works for one it likely works for both. The only difference is they have different option code names.