Nur eine Bemerkung, die nichts mit dem Problem zu tun hat:
while (Serial2.available()) {
Serial3.write(Serial2.read());
}
ein while ist hier nicht sinnvoll, die Zeichen treffen so langsam ein, dass man garantiert immer nur eines sieht.
Lass loop den nächsten Test anleiern, verwende einfach
if (Serial2.available()) {
Serial3.write(Serial2.read());
}
gilt natürlich genauso für die andere Richtung.