SoftwareSerial link between 2 arduinos

So, I have been trying to get a simple echo to work, in which an Arduino Pro Mini is transmitting from its hardware serial, to a SoftwareSerial port using pins 6 and 5 on an Arduino Nano.

Here is my code:

#include <SoftwareSerial.h>

SoftwareSerial SSerial(6,5);

void setup() {
  Serial.begin(9600);
  SSerial.begin(9600);
  Serial.println("Starting...");
}

void loop() {
  if(SSerial.available()) {
    char strIn[24];
    byte len = Serial.readBytes(strIn,24);
    strIn[len]=0;
    Serial.print("len=");Serial.print(len);Serial.print(" msg=");Serial.println(strIn);
  }
  if(Serial.available()) {
    char strIn[24];
    byte len = Serial.readBytes(strIn,24);
    strIn[len]=0;
    SSerial.print(strIn);
  }
}

What I expect it to do:
Listen on the SSerial port for incoming data and capture a string 24 chars or less. Then print that string and its length to the hardware (Connected to my computer's USB) serial port.
And, also listen to the hardware serial, and transmit data I send thru my computer's serial port to the SSerial TX, therefore sending it to the hardware serial on the Arduino Pro Mini.

To be clear, this sketch is uploaded to the Nano and my USB cable is listening to the HW Serial on the Nano. The sketch uploaded to the Pro Mini is transmitting a 4 char sentence every 100 ms and should also echo back any data sent to it.

What's actually happening:
The if(SSerial.available()) executes but no data is read. len is 0 and a blank string is printed to my console.

I plugged the wires from the Pro Mini into the Nano's hardware serial pins (0 & 1) and I can see the data being sent just fine, it's my SSerial that's not working. I would really like this to work as I am trying to make a system for these two devices to communicate and need to be able to debug it by seeing commands sent and received on my serial monitor, without interfering with the serial link.

Why is SSerial.available() returning nonzero, when there is no data? It doesn't seem to make any difference whether the wires from the Pro Mini are actually plugged in to pins 6 and 5 on the Nano, by the way, the same behavior occurs when the pins are floating. So, I know that serial data is being sent over the TX wire from the Mini, but my Nano doesn't seem to notice, not when I try to use SSerial anyway.

So, is there something wrong with my code, or is it a hardware problem? AFAIK the only requirement for a SoftwareSerial link is that the pins used both be PWM capable, 5 and 6 on the Nano are indeed.

Both boards are using the same baud rate (9600, I tried 4800 too, and some others) and their grounds are tied together, and I did make sure that the RX is wired to the TX and vice versa.

What will eventually need to happen is, the Nano will send a command like "go:20", the Pro Mini will echo back that it got the command OK, the Pro Mini will then step a stepper motor a certain amount, and will then send to the Nano that it completed the command. It should be non-blocking, as in, the Nano can send another command before the first one completed, such as to move a servo or to stop the motor. So far this has been working when I'm typing the commands manually over a USB serial link to the Pro Mini. As perhaps the reader can guess, this is for a robotics project.
Another question I have is, would I2C perhaps be better suited for such an application? Would it be any faster or block less?

Eventually I intend to have both boards talking over their hardware serial lines without outside intervention or monitoring, the SSerial is really just for testing/dev.

Why is SSerial.available() returning nonzero, when there is no data? It doesn't seem to make any difference whether the wires from the Pro Mini are actually plugged in to pins 6 and 5 on the Nano, by the way, the same behavior occurs when the pins are floating. So, I know that serial data is being sent over the TX wire from the Mini, but my Nano doesn't seem to notice, not when I try to use SSerial anyway.

I strongly guess a wrong wiring. Is the TX of the Mini connected to pin 6 on the Nano and RX (Mini) to pin5 (Nano)? Do they have a common ground? If you have the connection the wrong way around you might have had a short circuit, so pin 5 and 6 may be fried. Try the same with a different pair of pins and make sure you don't wire the wrong way.

Have a look at the examples in Serial Input Basics - simple reliable ways to receive data. There is also a parse example to illustrate how to extract numbers from the received text.

The technique in the 3rd example will be the most reliable. It is what I use for Arduino-to-Arduino communication.

You can send data in a compatible format with code like this

Serial.print('<'); // start marker
Serial.print(value1);
Serial.print(','); // comma separator
Serial.print(value2);
Serial.println('>'); // end marker

You must have a GND connection between the two Arduinos.

...R