Faster than 128000 Baud?

You could configure the atmega328 usart yourself, have a look to datasheet or google it, there is lot of info in the web.

In theory you could configure usart up to 2 Megabauds with 16 MHz clock, using asinchonous double speed:

BAUD = Fosc/(8*(UBRRn+1))

with UBRRn=0 : BAUD = 16/8 = 2 (0% error)

To calculate UBRRn (double speed):

UBRRn = (Fosc/(8*BAUD))-1

Example C code to configure Usart0 in atmega328, not tested and perharps errors, but can show you how it's done :

#define USART0_BAUD 115200 // Define desired baud rate

#define USART0_UBBR_VALUE ((F_CPU/(USART0_BAUD<<4))-1)

void USART0_Init(void)
{
    // Set baud rate
    UBRR0H = (uint8_t)(USART0_UBBR_VALUE>>8);
    UBRR0L = (uint8_t)USART0_UBBR_VALUE;
    
    // Set frame format to 8 data bits, no parity, 1 stop bit
    UCSR0C = (0<<USBS0)|(1<<UCSZ01)|(1<<UCSZ00);
    
    // Uncomment for double speed
    //UCSR0A |= (1<<U2X0);

    // Enable receiver and transmitter
    UCSR0B = (1<<RXEN0)|(1<<TXEN0);
}

One important thing is line isolation, at high speeds electric noise can produce lot of errors.

Best regards.