I stumbled on this restriction again, and dug a bit deeper in the issue. It appears that the hardware is not limiting the baudrate, but the M5Stack library. More specifically, M5.begin(); Luckily, you can skip the UART init, and do it yourself like this: M5.begin(true,true,false); Serial.begin(2000000); Serial.flush(); And now it works for 2000000 baud.