57600 baud rate inaccuracy in arduino uno

westfw:
You can't change Fosc just by changing code; you have to change the physical crystal/resonator attached to the chip.
18.432MHz would probably be a better choice, but you'd probably still need to change a lot of other Arduino code.

With the usual 16MHz resonator, 57.6kbps should be THAT far off (about 2.1%, whereas async communications will normally allow a combined error of up to 5%.) WormFood AVR BRG calculator

Now, it turns out that the Ardunino code contains a hack that causes 57600bps to be LESS accurate than it could be, in the name of backward compatibility. If the normal bitrate isn't close enough, try using:

   Serial.begin(57601);

57600 baud with a 16.0 crystal comes out very close:

[b]Enter crystal frequency: 16
Crystal frequency is     16.000000
Enter serial baud rate : 57600

F_CPU MHz :     16.000000
UBRR  reg :     34 (0x0022)
UBRRH reg :      0   (0x00)
UBRRL reg :     34   (0x22)
U2X bit   :    SET
Baud      :  57600
Actual    :  57142.857
Pct error :     -0.794%
[/b]