portapack-mayhem / mayhem-firmware

Custom firmware for the HackRF+PortaPack H1/H2
GNU General Public License v3.0
3.22k stars 530 forks source link

Adding Rx IQ error phase CAL to SPEC Audio_App #1963

Closed Brumi-2021 closed 6 months ago

Brumi-2021 commented 6 months ago

Hi , this PR is adding small feature : Rx IQ phase error CALIBRATION , to the Audio App RX ,( inside the submenu SPECTRUM. )

Special thanks to @NotherNgineer , who taught me to save / restore that Rx CAL variable to /settings/rx_audio.ini , and helped me to finalize that job . (and also thanks to @kallanreed , for writting all those save/restore settings functions) .

This feature actually has negligible effect in most of receiver use cases . And in that sense is more an advanced experimental engineering feature , than a real practical user benefit . But as it was already available in the max2837 / max2839 IC, let's add it as a minor advanced feature .

It actually can improve (8 to 10 dB's from worse CAL point to the best one ) the receiver Image Reject Ratio only in the Receiver Applications that are using Zero IF-frequency tuning , like : a-) Spectrum mode inside Audio_rx Application (we are applying that Rx CAL feature here in that PR)
b-) and Looking glass (it could be added also there in future PR ) .

It will not have any benefit to the other Receivers that are using Freq offset tuning (to avoid DC spike ) , like : a-) Capture App b-) or the rest of WFM, NBFM , AM audio receivers.

Let me show you, a practical set up to allow and test that Rx IQ phase error CAL feature . It is easy if you have some other reference RF signal generator (or a second TX Hackrf ).

The way to validate that RX IQ ERROR PHASE CALIBRATION , Set up : (see below pictures)

1-) You need to use a RX receiver App with that PR , using an App that uses central freq IF tuning ==> going to Audio RX and select SPEC mode , and keeping the blue selected SPEC cursor , we move the submenu cursor , going to the additional feature field , to adj. Rx_IQ_CAL . You need to start the set up to 0 CAL (min value)

2-) Then , we transmit with a closer second Hackrf TX a carrier with some +xx freq.offset from central (example if the BW is 5Mhz , you can start with a +2 Mhz offset tx) , and place some other Hackrf receiver close enough to just receive strong signal (but adjusting the TX side not so strong to not produce intermodulation , otherwise re-adjust reducing tx or rx ) , and not so weak , till just getting the carrier +freq. clean (desired carrier signal) , and its bare visible Image mirror Signal (in the other symetrical -xx mirror freq . (unwanted Image signal to be minimized)

3-) Then adjust Rx IQ phase CAL till minimizing the received Image "mirror" signal .

We have already validated in both platforms : RX Hackrf r9 (max2839), and RX old Hackrf <=r6 version (max2837)

image

image