Arduino Nano V3 and GPS NEO-6M

Hi community!

I'm a newbie in Arduino, and will very much appreciate your help.

I made a project on the Arduino Uno: GPS + OLED screen to display location, time, etc - IT WORKS FINE
now I got a new Arduino NANO v3 card and I want to make exactly the same project.

The problem: when everything is connected to Nano (simply identical wiring, no changes) I am not getting any info from GPS module (leb blinks - so it has a fix). Reconnecting to UNO - it works ...

UPDATE:
it seems that SoftwareSerial is the problem: it returns garbage .... playing with BAUD rate does not help ...

additional info: it seems I have a Chinese clone of Nano v3 with (USB-serial chip: CH340G)
(to make serial prompt work I need to specify SerialMonitor.begin(BAUD) speed x4 time larger than in the Serial Monitor)
I have tried different BAUD rates for GPS module - NO changes

Any advise? I have already twisted my brains on the issue.
Thanks

My code below:

#define I2C_ADDRESS 0x3C
#include <math.h>
#include <stdio.h>
#include "SSD1306Ascii.h"
#include "SSD1306AsciiAvrI2c.h"
#include <TinyGPS++.h>
#include <SoftwareSerial.h>
#define ARDUINO_GPS_RX 3
#define ARDUINO_GPS_TX 4
#define GPS_BAUD 38400
#define gpsPort ssGPS
#define SerialMonitor Serial
#define I2C_ADDRESS 0x3C
TinyGPSPlus tinyGPS;
SoftwareSerial ssGPS(ARDUINO_GPS_TX, ARDUINO_GPS_RX);
SSD1306AsciiAvrI2c oled;

void setup()
{
  SerialMonitor.begin(38400);
  gpsPort.begin(GPS_BAUD);
  oled.begin(&Adafruit128x64, I2C_ADDRESS);
  oled.setFont(System5x7);
  oled.clear();
}

void loop()
{
  static const double LONDON_LAT = 51.508131, LONDON_LON = -0.128002;

  printDateTime();
  printGPSInfo();
  printAltVelCourse();
  printSat();

  smartDelay(1000);
  oled.setCursor(0, 0);
}

void printGPSInfo()
{
  SerialMonitor.print(tinyGPS.location.lat(), 6);
  SerialMonitor.print(",");
  SerialMonitor.print(tinyGPS.location.lng(), 6);
  SerialMonitor.print(",");
  SerialMonitor.print(tinyGPS.course.deg());
  SerialMonitor.print(",");

  oled.print(tinyGPS.location.lat(), 6);
  oled.print(" "); oled.println(tinyGPS.location.lng(), 6);
}


static void smartDelay(unsigned long ms)
{
  unsigned long start = millis();
  do
  {
    while (gpsPort.available())
      tinyGPS.encode(gpsPort.read());
  } while (millis() - start < ms);
}
void printDateTime()
{
  char buff1[50];
  sprintf(buff1, "%02d:%02d:%02d   %02d.%02d.%02d",tinyGPS.time.hour(), tinyGPS.time.minute(), tinyGPS.time.second(),tinyGPS.date.day(), tinyGPS.date.month(), tinyGPS.date.year());
  oled.println(buff1);
  Serial.println(buff1);
}

void printAltVelCourse()
{
  oled.print("Z:");oled.print(tinyGPS.altitude.meters(),  1); 
  oled.print(" C:");oled.print(tinyGPS.course.deg(), 0); 
  oled.print(" V:");oled.println(tinyGPS.speed.mps(),1); 
}

void printSat()
{
  oled.print("Sat:");oled.print(tinyGPS.satellites.value(),tinyGPS.satellites.isValid()); 
  oled.print("  HDOP:");oled.print(tinyGPS.hdop.hdop(), 2); 
}