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

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

Reply via email to