Rx pin not receiving from CH340g usb-ttl adapter

Hi, I have a very strange problem.

My goal is to let the Arduino (uno) communicate with another device through hardware serial via a usb to ttl adapter (it is this module).

Sending from the Arduino to my laptop (Arduino ide serial monitor) works fine.
Sending from my laptop to the Arduino does not work.
Serial.available() always returns zero.

Then I connected my logic analyzer in parallel to the Tx to Rx pin (rx on Arduino). I send some bytes over the hardware serial from my laptop (every 10 ms). Now the logic analyzer does not detect this signal at all, it just shows the RX pin is LOW (less than 1.8V).
Howver, the moment I pull the cable out of the RX pin from the Arduino, the logic analyzer sees the serial data coming in. Also, when I loopback the rx and tx pin on the CH340g adapter it reads the signal it sends, no problem.
When I use another USB adapter based on a FTDI chip, the Arduino reads the signal fine.
Also, when I use software serial to communicate the Arduino reads the signal fine.

I have absolutely no idea why the Arduino cannot read the signal on the hardware RX pin. Why is it LOW? The only explanation I have is that the RX pin is connected to GND and the signal bypasses the logic analyzer (which has an input impedance of 120K ohm.
Does anyone have an idea what's going on here? For me the strangest thing is that the software serial just works fine.

Howver, the moment I pull the cable out of the RX pin from the Arduino, the logic analyzer sees the serial data coming in.

That tells me you have either got the serial TX and RX mixed up or you have enabled hardware handshaking on the PC.

Does software serial do handshaking? Because that works without a problem.

Does software serial do handshaking?

No.

I have tested both hypothesis: I am not using serial handshake, neither have I interchanged the rx and tx pins. There must be some other problem.

Arduino code please...

Arduino code:

void setup() {
  Serial.begin(9600);
  Serial.println("Hello world!");
}

void loop() {
  if (Serial.available()) {
    Serial.write(Serial.read());
  }
  delay(10);
}

Python code:

 import serial
 import time
 ser = serial.Serial('/dev/ttyUSB0', 9600);
 
 
 while True:
     ser.write('a')
     time.sleep(0.01)

but also manually sending bytes to the arduino in the arduino serial monitor does not work.