I've found that: char *protocolMyMessage2Serial(const MyMessage &message) { (void)snprintf_P(_fmtBuffer, (uint8_t)MY_GATEWAY_MAX_SEND_LENGTH, PSTR("%" PRIu8 ";%" PRIu8 ";%" PRIu8 ";%" PRIu8 ";%" PRIu8 ";%s\n"), message.getSender(), message.getSensor(), message.getCommand(), message.isEcho(), message.getType(), message.getString(_convBuffer)); return _fmtBuffer; } We put in the print "message.getEcho()", but this isn't echoed message. I think we should put "message.getRequestEcho()" here.