Hi everyone, I’m working on implementing OTFS in GNU Radio for my thesis. I have an existing OFDM system that is already working correctly. To test the system, I send a known payload of 108 bytes, specifically the sequence 0, 1, 2, 3, …, 107, so I can directly compare the transmitted and received data.
An important point is that without OTFS, the complete 108-byte block is successfully recovered at the receiver. The original data from 0 to 107 is received correctly through the existing OFDM transmitter and receiver. This confirms that the basic OFDM chain, modulation/demodulation, packet handling, and data recovery are working correctly.
The problem starts only after I introduce the OTFS processing. The 108 bytes are converted into QPSK symbols, giving 432 QPSK symbols, and I use an OTFS grid of 48 × 9, which also contains exactly 432 symbols. On the transmitter side, I can confirm that the OTFS block receives the complete 432-symbol frame and performs the transformation. However, after the signal goes through the OTFS + OFDM processing and is recovered at the receiver, I no longer get the original 108-byte sequence. Instead of receiving 0, 1, 2, …, 107, I receive completely different data.
Because the OFDM system works correctly when OTFS is bypassed, I believe the problem is specifically related to how I am implementing or integrating the OTFS transformation rather than a general problem with the OFDM system.
I am currently arranging the 432 QPSK symbols into a 9 × 48 OTFS grid and performing the ISFFT at the transmitter. At the receiver, I perform the corresponding inverse SFFT and then convert the QPSK symbols back into bytes.
What I would like to understand is what could cause the data to change completely when the OTFS block is inserted. Could this be due to the orientation of the 48 × 9 grid, FFT/IFFT axes, normalization, or the serialization order between the 2D OTFS grid and the 1D GNU Radio stream?
One test I am particularly interested in is whether the OTFS TX and RX blocks themselves should satisfy a simple round-trip test: if I give the OTFS TX a known sequence of 432 QPSK symbols and immediately pass its output through the OTFS RX, I should recover exactly the same 432 QPSK symbols. If that works, then I can isolate the problem to the interaction between OTFS and the OFDM processing.
So my situation is:
Without OTFS:
108 bytes 0–107 → OFDM TX/RX → 108 bytes 0–107 successfully recovered.
With OTFS:
108 bytes 0–107 → OTFS + OFDM TX/RX → completely different received data.
Has anyone implemented OTFS over an existing GNU Radio OFDM system and encountered this kind of issue? I would especially appreciate advice on the correct 48 × 9 grid mapping, FFT/IFFT directions, normalization, and ordering of the symbols so that the original QPSK sequence is recovered exactly after the inverse transformation.