On 2022-03-14 12:51, Jim Palladino wrote:
Hi Marcus,

One of my coworkers created an "Issue" in the UHD github repo. If there is a different place to post a bug, please let me know.

Thanks,
Jim

Yup, that's the right place to do it.

Cheers

------------------------------------------------------------------------
*From:* Marcus D Leech <patchvonbr...@gmail.com>
*Sent:* Monday, March 14, 2022 12:45 PM
*To:* Jim Palladino <j...@gardettoengineering.com>
*Cc:* USRP-users@lists.ettus.com <USRP-users@lists.ettus.com>
*Subject:* Re: [USRP-users] Problem using IQ calibration coefficients with Rhodium DB
Thanks Jim.

Could you post a big report to the public bugtracker for UHD?



Sent from my iPhone

On Mar 14, 2022, at 12:24 PM, Jim Palladino <j...@gardettoengineering.com> wrote:


Hello,

I've found an issue with the Rhodium block controller code (rhodium_radio_control.cpp) where the daughterboard serial number is not handled correctly. If you look at line 452 here: https://github.com/EttusResearch/uhd/blob/master/host/lib/usrp/dboard/rhodium/rhodium_radio_control.cpp <https://urldefense.proofpoint.com/v2/url?u=https-3A__github.com_EttusResearch_uhd_blob_master_host_lib_usrp_dboard_rhodium_rhodium-5Fradio-5Fcontrol.cpp&d=DwMFaQ&c=euGZstcaTDllvimEN8b7jXrwqOf-v5A_CdpgnVfiiMM&r=XUEEtUEfpaAEGxRI-WGuqHauOvsPdD2NZkfwDnwpYx0&m=4y4iW8gYlTGeIcuCgmOIBCNL1vZvAuLaV7FGCVuBsqY&s=6xWl_A9mV4W5Z1Ym8jVpWSxjhzd3KR09iL1S6yKwf54&e=>

It looks like this:

        const std::vector<uint8_t> db_serial_u8 = get_db_eeprom().count("serial")
  ? std::vector<uint8_t>()
                                                      : get_db_eeprom().at("serial");

This code attempts to check for the number of instances of "serial". If it does find an instance of "serial", it creates an empty vector and assigns that to "db_serial_u8". If it does NOT find an instance of "serial," it attempts to assign the appropriate "serial" value to "db_serial_u8". I believe this is backwards, and the correct code should be:

        const std::vector<uint8_t> db_serial_u8 = get_db_eeprom().count("serial")
                            ? get_db_eeprom().at("serial")
                                  : std::vector<uint8_t>();

Before making this change and rebuilding UHD, RX IQ calibration coefficients (files generated from the "uhd_cal_rx_iq_balance" tool) were not getting properly loaded on an N320. After making this change, the calibration coefficients are loaded and working as expected. I can tell this both from debug messages and by looking at the FFT of received samples (reduced image when the calibration coefficient file is present).

I'm using UHD 4.1.0.5, but I see this issue still exists in "master" -- see the link above.

Thanks,
Jim

_______________________________________________
USRP-users mailing list -- usrp-users@lists.ettus.com
To unsubscribe send an email to usrp-users-le...@lists.ettus.com
_______________________________________________
USRP-users mailing list -- usrp-users@lists.ettus.com
To unsubscribe send an email to usrp-users-le...@lists.ettus.com

Reply via email to