nRF24L01+ big noise when sending data from arduino to raspberry

Hello, once again I'm asking about nrf24 module, I have two with external antennas and trying to setup communication, and site raspberry -> arduino is working great almost no noise, but other way around arduino -> raspberry is just bad almost every message is wrong. Like this.

Hello world
lw~~0sld
lw~~0{|t
lw~~0{|d
lw~~0sld
lw~~0{~t
lu||o world
Hello world
lw~~0{|t
lw~~0s|d
lu||o world
lw~~0{|d
lw||o world
Lu|lo world
Hello world
lw~|0world
lw~~0wsld
lw~~0osld
Hello world
lw~~0wosld
Lu|lo wosld
lw~|0world
Hello world
Lu|lo world
lw~~0{|d
Hello world
Hello world
lw~~0osld

Im powering nrf24 through 12 -> 3,3V 3A step down so I don't think there is a issue.

My transmitter code(Arduino)

#include <SPI.h>
#include "RF24.h"

bool radioNumber = 0;
RF24 radio(7,8);

byte addresses[][6] = {"1Node","2Node"};

bool role = 0;

void setup() {
  Serial.begin(115200);
  
  radio.begin();
  radio.setChannel(125);
  radio.setPALevel(RF24_PA_MIN);
  radio.setDataRate(RF24_1MBPS);
  if(radioNumber){
    radio.openWritingPipe(addresses[1]);
    radio.openReadingPipe(1,addresses[0]);
  }else{
    radio.openWritingPipe(addresses[0]);
    radio.openReadingPipe(1,addresses[1]);
  }

  radio.stopListening();
}

void loop() {
    
    char text[] = "Hello world";
       if (!radio.write( &text, sizeof(text) )){
        Serial.println(F("failed"));
     }
 
    delay(2000);
}

And my receiver code(raspberry)

#include <cstdlib>
#include <iostream>
#include <sstream>
#include <string>
#include <unistd.h>
#include <RF24/RF24.h>

using namespace std;
RF24 radio(22,0);
bool radioNumber = 1;
const uint8_t pipes[][6] = {"1Node", "2Node"};

int main(int argc, char** argv)
{
    radio.begin();
    radio.setChannel(125);
    radio.setPALevel(RF24_PA_LOW);
    radio.setDataRate(RF24_1MBPS);
    radio.setRetries(15, 15);
    radio.printDetails();
    if (!radioNumber) {
        radio.openWritingPipe(pipes[0]);
        radio.openReadingPipe(1, pipes[1]);
    } else {
        radio.openWritingPipe(pipes[1]);
        radio.openReadingPipe(1, pipes[0]);
    }

    radio.startListening();
    while (1) {
        char a[32] = "";
        if (radio.available()) {
                while (radio.available()) {
                        radio.read(&a, sizeof(a));
                        cout << a << endl;

                }
        }
    }
        return 0;
}

Can I do something about it? Why sending the same string from raspberry to arduino is working but from arduino to rasoberry is not?
I'm using this lib GitHub - nRF24/RF24: OSI Layer 2 driver for nRF24L01 on Arduino & Raspberry Pi/Linux Devices

Either the Arduino transmission has some trouble or the raspberry has receiver problems.
Are both the Arduino and raspberry nrf24 powered the same way?

No, only that one connected to the arduino is powered by step down. One connected to the raspberry is powered from 3,3V GPIO pins. I read that arduinos have problems powering nrf24 modules thats why I powering this that way. I don't have second arduino to check if arduino -> arduino communication is clear but if there was a reciever problem wouldn't it be visible if I send data from raspberry to arduino? I have used same code to do this. But I still learning this stuff so I may miss a lot of stuff.

Transmitting needs much more current then recieving. As Your Arduino nrf24 is well supported, as I think, it ought to work.
Have You verified that the message received in the Arduino is correct? I wonder if the raspberry transmission could deliver corrupted messages.

In the Arduino code You have a delay(2000). Are You really sure that the raspberry coops with that?
Test a delay, some minute, and check if anything changes.

TracerP:
arduino -> raspberry is just bad almost every message is wrong. Like this.

Hello world

lw0sld
lw
0{|t

The nRF24 has inbuilt error checking. I'm surprised to see that sort of error. If a message is garbled I would expect the message to be rejected and not passed to the RPi. Perhaps you have a faulty nRF24.

...R

Railroader:
Have You verified that the message received in the Arduino is correct? I wonder if the raspberry transmission could deliver corrupted messages.

Sorry, I was quite rambling yesterday.
Sending from raspberry to Arduino works fine without errors.
Sending from Arduino to raspberry gives output as I quoted in my first post.
So so raspberry was sending good messages and maybe Arduino is sending corrupted but how do I check it?

Railroader:
In the Arduino code You have a delay(2000). Are You really sure that the raspberry coops with that?
Test a delay, some minute, and check if anything changes.

Sure, why not? Raspberry is always waiting on connection in loop so I don't think so.

Robin2:
The nRF24 has inbuilt error checking. I'm surprised to see that sort of error. If a message is garbled I would expect the message to be rejected and not passed to the RPi. Perhaps you have a faulty nRF24.

...R

I replaced one connected to Arduino with other nrf24, one without external antenna only pcb, and output was the same. Later today I'm going to switch modules and test it again then and post the results.

TracerP:
I replaced one connected to Arduino with other nrf24, one without external antenna only pcb, and output was the same. Later today I'm going to switch modules and test it again then and post the results.

Have you two Arduinos so you can test the nRF24s without using the RPi? I don't have an RPi but I have never had any trouble like you are having with communication between two Arduinos.

...R
Simple nRF24L01+ Tutorial

Robin2:
Have you two Arduinos so you can test the nRF24s without using the RPi? I don't have an RPi but I have never had any trouble like you are having with communication between two Arduinos.

...R
Simple nRF24L01+ Tutorial

Sure I can try that.

So I tested it like @Robin2 said with 2 arduinos and it working flawless, no errors at all. So the problem is in the rPI itself? Do you know what the issue may be? I'm out of ideas what it could be.

Ok I got it. Robin your footer is gold. I read more of the documentation of this library and spotted that in RF24 constructor you can pass SPI bus speed, default value is 10000000 I set it to 8000000 and everything is working like a charm. So my constructor looks like that RF24 radio(22,0,8000000); //this is receiver site(rPI). Thank everyone for help and sorry for trouble.

Good to see you have a solution.

...R

Well done! Your respocivness and Your work, testing the given suggestions, payed out quickly.