I took another look at the 4D magnetic Sudoku this afternoon. At least one cubie (J in my system - see below) has three numbers the same - all 6s, and they can't really be 9s unless that cubie doesn't follow the same number orientation convention as the other 26 cubies.
I needed to label the cubies somehow, and as there are 3x3x3 of them, it seemed natural to use the alphabet, plus one extra character to do it. As the computer program will index them from 0 to 26, inclusive, I used the ASCII character of the index plus 64 for the labels - so the first cubie is labelled '@'.
I chose to do the 14 orange cubies first, @ to M, followed by the 13 white cubies, N to Z.
I stood them with four numbers upright, and sorted them with the lowest number facing right, then resolved draws by sorting by back, left, and front faces in order.
This left the top and bottom faces where any 6s or 9s have an ambiguous orientation. It turns out that when the top and bottom numbers aren't 6 or 9, they either both have their tops pointing the same way, or opposite ways (180 degrees out) - they're never at 90 degrees to each other. As this didn't allow me to resolve between 6s and 9s on the top and bottom faces, I chose to call them all 6, for now, and logged their orientation as 0, 1, 2, or 3 (bottom facing right, back, left, front, respectively). I stored the blank face on cubies @ to D, and N to Q, as 0 (zero).
I made a Google Docs spreadsheet with the information, then cut out some little sticky backed labels and stuck on the actual cubies.
I think the next work, before I tackle the solver, is some code to render the cubies as graphics, as unfolded flat representations, and/or in 3D. Then, when I write the solver, I'll have a ready-made tool for it to display its solution(s).