Sì la F() si aspetta un char* ma passato direttamente e non per referenza, per cui
Serial.println(F("MARIO"));
funziona
char* mario = "MARIO";
Serial.println(F(mario));
non funziona.
Prima di riscriverti la funzione, fai prima ad usare PROGMEM.