No idea, you've not given any way to reproduce the issue nor a reference to past thread(s) about it.
Sorry, I thought it was a widely known issue. Unfortunately, I don't have a way for any Teensy dev to duplicate this without the SDR hardware. In a nutshell, however it seems that when I2S starts up for recording, the L/R sample order appears to be "random". That wouldn't matter in the slightest for the great majority of audio apps, but anything requiring quadrature processing of the stream has to have a known L/R (or I/Q) alignment. My reason for bringing it up here is because I would like to work on a SDR project, but since the detection/workaround code methods used here aren't 100% effective and rely on specific signal content to work, I'm reluctant to invest the time if the issue can't be resolved.
Having said all that, if the dev community believes a reliable fix or workaround to be
possible, I'm willing to invest some hours and hardware toward the solution. I have several SDR "front ends" in the lab and normal array of RF and digital test equipment used for this kind of development.
Specifically, there are two SDR projects affected that I know of so far:
(1)
https://github.com/DD4WH/Teensy-ConvolutionSDR/blob/master/Teensy_Convolution_SDR.ino
and
(2)
https://github.com/DerekRowell/AudioSDR/blob/master/DOC/AudioSDR.pdf
The latter gives a fairly concise description of the issue in Section 4.1 on Page 9, quoted here:
"Although not strictly a part of the audioSDR package, this audio block is necessary to
detect and eliminate a nasty bug in the Teensy 3.6 two channel I2S input through an audio
codec.3
The bug appears randomly (with about 50% probability) on program upload and (less
frequently) on power-up, and once present remains until a reload or a power cycle.
3I do not mean to imply that the bug is in PJRC’s software as it has been reported on many ARM MCUs
with different codecs.
9What happens is very simple: the system remains fully functional, but the samples in
the two I2S data streams from the codec become out alignment with each other,
by a single sample, or in other words a time delay of one sample is introduced between the I
and Q data. While this may be not important for many audio/music processing applications,
it completely destroys the essential phase relationships for quadrature SDR operation."
The code referred to above can be found beginning at line 73 in this CPP file:
https://github.com/DerekRowell/AudioSDR/blob/master/SRC/AudioSDRlib/AudioSDRpreProcessor.cpp
Thanks!
--jim