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 -- [email protected]
To unsubscribe send an email to [email protected]