I actually think that there is a problem with the UART driver. Most likely something to do with the CalcRawOffset() function in the UART class… it might be possible to figure out what “index” to use if the whole raw data set is read and plotted… then it should be possible to see what indexes match.
I examined exactly that part of the code, but i couldn’t figure out how indexing works… by UART driver you mean d_uart kernel driver written in C? or monobrick uart class?
I also tried recompiling d_uart module from git repository at https://github.com/mindboards/ev3sources
and replacing it with “your” d_uart module (same result)