Something a tad absurd, but not all that new: “high-speed” boards - and also these - not rarely have a problem with low baud speeds. What works, however, is to tell the board some “useable wrong” speed, which, however, is accepted by a terminal as the “correct” baud rate. How do you find such interesting “wrong” speeds? By trying out all speeds of a reasonable range, and having set your terminal to the desired speed, and simply seeing “what works” - I wrote a while ago, if anybody needs this, such a program which tries to print its present baud rate at different baud rates:
void setup() {
int i;
for(i=1; i<28800; i++){
// Open serial communications and wait for port to open:
Serial.begin(i);
while (!Serial) {
; // wait for serial port to connect. Needed for native USB port only
}
Serial.print("\n\n");
Serial.print("XXX");
Serial.print(i);
Serial.print("YYY");
Serial.print("\n\n");
Serial.end();
}
}
void loop() { // run over and over
}
For 300 baud I found these regions:
95?
1516?
2012?
1216?
And quite certain:
2013-2014
2991-2996
5823-5846
600 baud is commonly not a good idea for Arduino, as for some boards, as the Zero, a 600 baud signal is seen as “reset” (yeah, WHAT a genius idea…); however, the ranges accepted in TeraTerm and in the Windows CMD-test described below were exactly the same (a tad strange).
An interesting problem I found was that the terminal sometimes got “reset”. To get a “clean” log, you might do, e.g. with 1200 baud on Windows’ CMD.EXE:
mode com3: baud=1200 parity=N data=8 stop=1
type com3: >> data.log
And then reset the board, so it starts “spitting serial prints”.
You will have to press Ctrl-C after all is tested to return to the prompt.
You can then issue further mode-commands. For 1200, 2400 and 4800 I found nothing, so this trick does not necessarily “always” work.
By default, the “lowest correct” speed (i.e. where these tricks are not needed) for this board seems to be 9600… which is pretty high if you ask me.