シリアル通信しているデバイスの間にかまして、パケットをフィルタしたいんですが

デバイス - Arduino - ホスト
       |
     デバッグモニタ(PC)

シリアルが3系統必要になります。
HardwareSerial + SoftwareSerial*2を使えば解決できると思ったのですが、
全く受信できません(スケッチは以下の通り)

void loop()
{
s1.listen();
while (s1.available() > 0) {
int b = s1.read();
char buf[10];
sprintf(buf, "1:%d", b);
Serial.println(buf);
}
s2.listen();
while (s2.available() > 0) {
int b = s2.read();
char buf[10];
sprintf(buf, "2:%d", b);
Serial.println(buf);
}
}

同時受信を実現しているライブラリってないのでしょうか