SoftawareSerial library does not work with Arduino Nano Every.

Hi there!
I’ve been making some pcbs based around an Arduino Nano and Nano Every and a SIM800l coreboard module.
The code i made works great with an Arduino Nano but not with the new Nano Every.
I tried to find the problem by using the built-in led on the board.
My problem is the serial communication using the SoftwareSerial library.
Here is the code:

#include <SoftwareSerial.h>
SoftwareSerial sim(10, 11);
int _timeout;
String _buffer;
String broj1 = "FIRST PHONE NUMBER GOES HERE";
String broj2 = "SECOND PHONE NUMBER GOES HERE";
String fault = "Imam greska Vlez 1";
String pozar = "Ima pozar Vlez 1";
String fault2 = "Imam greska Vlez 2";
String pozar2 = "Ima pozar Vlez 2";
String faultkraj = "Vo red sum. Vlez 1 ";
String pozarkraj = "Nema pozar Vlez 1";
String faultkraj2 = "Vo red sum. Vlez 2 ";
String pozarkraj2 = "Nema pozar Vlez 2";
bool imasignal3 = 0;
bool imasignal4 = 0;
bool imasignal5 = 0;
bool imasignal6 = 0;
void setup() {
  _buffer.reserve(50);
  delay(1000);
  pinMode(LED_BUILTIN,OUTPUT);
  for (int i = 3; i <= 6; i++)
  {
    pinMode(i, INPUT);
  }
  delay(10000);
  digitalWrite(LED_BUILTIN,HIGH);

  sim.begin(9600);
}


void loop() {
  if (digitalRead(3) > 0)
  {
    if (imasignal3 < 1 )
    {
      digitalWrite(LED_BUILTIN,LOW);
      poraka(broj1, fault);
      delay(1000);
      poraka(broj2, fault);
      delay(1000);
      imasignal3 = 1;
      digitalWrite(LED_BUILTIN,HIGH);

    }
  }
  if (digitalRead(4) > 0)
  {
    if (imasignal4 < 1 )
    {
      digitalWrite(LED_BUILTIN,LOW);
      poraka(broj1, fault2);
      delay(1000);
      poraka(broj2, fault2);
      delay(1000);
      imasignal4 = 1;
      digitalWrite(LED_BUILTIN,HIGH);

    }
  }
  ////
  if (digitalRead(5) > 0)
  {
    if (imasignal5 < 1 )
    {
      poraka(broj1, pozar);
      delay(1000);
      povik(broj1);
      delay(1000);
      poraka(broj2, pozar);
      delay(1000);
      povik(broj2);
      delay(1000);
      imasignal5 = 1;

    }
  }
  if (digitalRead(6) > 0)
  {
    if (imasignal6 < 1 )
    {
      poraka(broj1, pozar2);
      delay(1000);
      povik(broj1);
      delay(1000);
      poraka(broj2, pozar2);
      delay(1000);
      povik(broj2);
      delay(1000);
      imasignal6 = 1;

    }
  }
  //////////////////
  if (digitalRead(3) < 1)
  {
    if (imasignal3 > 0 )
    {
      poraka(broj1, faultkraj);
      delay(1000);
      poraka(broj2, faultkraj);
      delay(1000);
      imasignal3 = 0;

    }
  }
  if (digitalRead(4) < 1)
  {
    if (imasignal4 > 0 )
    {
      poraka(broj1, faultkraj2);
      delay(1000);
      poraka(broj2, faultkraj2);
      delay(1000);
      imasignal4 = 0;

    }
  }
  ////
  if (digitalRead(5) < 1)
  {
    if (imasignal5 > 0 )
    {
      poraka(broj1, pozarkraj);
      delay(1000);
      poraka(broj2, pozarkraj);
      delay(1000);
      imasignal5 = 0;

    }
  }
  if (digitalRead(6) < 1)
  {
    if (imasignal6 > 0 )
    {
      poraka(broj1, pozarkraj2);
      delay(1000);
      poraka(broj2, pozarkraj2);
      delay(1000);
      imasignal6 = 0;

    }
  }



  if (sim.available() > 0)
    Serial.write(sim.read());

  delay(2000);
}

/////////////////////////////////////////////////////////////



String _readSerial() {
  _timeout = 0;
  while  (!sim.available() && _timeout < 12000  )
  {
    delay(13);
    _timeout++;
  }
  if (sim.available()) {
    return sim.readString();
  }
}



/////////////////////////////////////////////////////////////



void povik(String broj)
{
  sim.print (F("ATD"));
  sim.print (broj);
  sim.print (F(";\r\n"));
  _buffer = _readSerial();
  Serial.println(_buffer);
  delay(10000);
  sim.println("ATH");
}



/////////////////////////////////////////////////////////////



void poraka(String broj, String tekst) {
  sim.println("AT+CMGF=1");
  delay(100);
  sim.println("AT+CMGS=\"" + broj + "\"\r");
  delay(100);
  sim.println(tekst);
  delay(100);
  sim.println((char)26);
  delay(100);
  _buffer = _readSerial();
  delay(100);
}

/////////////////////////////////////////////////////////////

The copper traces on the pcb are connected correctly and there is a common ground.
The SIM card in the SIM800l module has enough credit to make a call and text.
I tried testing it with an Arduino Nano and it works.
Arduino Nano Every has a problem.
If you can help me please reply to this thread!

use Serial1 on RX/TX pins

I plan on adding an option for the arduino to send data about what it is doing over the serial 1 port.
Plus the pcb is already made. Anything else that might be able to help me? Thanks.

Hello HobbyMen,

Apparently you can assign a hardware serial to any pin on the Nano 33 IoT using the UART object. I found that here: c++ - SoftwareSerial for Arduino Nano 33 IoT - Stack Overflow

Now I have never tried it myself but that might be worth exploring for the Every or maybe purchase an IoT...

Hope that somewhat helps.
Matt

the ATmega4809 has 4 Serials with mux. for example UART1 is configured to PC4 and PC5 (TX and RX pin of the board).
UART3 can use PB0 and PB1 (pins 9 and 10)
but your pins 10 and 11 are on different ports so no chance

you can assign a hardware serial to any pin

That's not true even on the nano33-iot. You gave extra ports that can be assigned to SOME other pins, but not ANY other pins.