[USRP-users] GPSDO on usrp2

Nick Foster nick at ettus.com
Tue Jun 5 10:13:49 EDT 2012


This is very strange. 15kHz is more offset than you should see from the
Firefly device even if it has no GPS signal.

Can you verify that:
1) the offset changes when you select an internal reference (set the GPS
EEPROM setting to none), and
2) use a signal generator or another known RF source to verify this 15kHz
offset? At this point I'm starting to suspect kal is leading you astray.

--n

On Tue, Jun 5, 2012 at 2:46 AM, Dario Lombardo
<dario.lombardo.ml at gmail.com>wrote:

> What I can see now is both ref_locked and gpd_locked. But if I run kal I
> still have 15kHz of offset.
> Which further steps can I do?
>
> On Tue, Jun 5, 2012 at 10:56 AM, Haris Kremo <hkremo at jp.toyota-itc.com>wrote:
>
>>  Dario,
>>
>> Putting aside the error below, the GPGGA sentence claims your device is
>> locked to the satellite signal. It sees 9 satellites and in conjunction
>> with Google maps claims you are in Torino.
>>
>> http://aprs.gids.nl/nmea/#gga
>>
>> From what I understand, ref_lock tells whether the internal USRP clock is
>> locked to the GPSDO or an external reference.
>>
>> Hope that helps,
>>
>> H.
>>
>> On 6/5/2012 4:39 PM, Dario Lombardo wrote:
>>
>> Ryan
>>
>>  it compiles and runs perfectly. There's the output
>>
>>  $ ./test_gpsdo
>> linux; GNU C++ version 4.5.1 20100924 (Red Hat 4.5.1-4); Boost_104400;
>> UHD_003.004.002-128-g12f7a5c9
>>
>>
>>  Creating the usrp device with: ...
>> -- Opening a USRP2/N-Series device...
>> -- Current recv frame size: 1472 bytes
>> -- Current send frame size: 1472 bytes
>> -- Found a Jackson Labs GPS
>> -- Setting references to the internal GPSDO
>> -- Initializing time to the internal GPSDO
>> Using Device: Single USRP:
>>   Device: USRP2 / N-Series Device
>>   Mboard 0: N210r4
>>   RX Channel: 0
>>     RX DSP: 0
>>     RX Dboard: A
>>     RX Subdev: RFX900 RX
>>   TX Channel: 0
>>     TX DSP: 0
>>     TX Dboard: A
>>      TX Subdev: RFX900 TX
>>
>>
>>  Querying gps_time sensor...
>> Sensor output: GPS epoch time: 1338881388 seconds
>>
>>
>>  Querying gps_locked sensor...
>> Sensor output: GPS lock status: locked
>>
>>
>>  Querying ref_locked sensor...
>> Sensor output: Ref: unlocked
>>
>>
>>  Querying gps_gpgga sensor...
>>  ensor output: GPS_GPGGA: $GPGGA,072949.00,4506.7212,N,0740.3228
>> ,E,2,09,1.1,271.7,M,47.2,M,,*5C
>>
>>
>>  Querying gps_gprmc sensor...
>>  ensor output: GPS_GPRMC: $GPRMC,072950.00,A,4506.7212,N,0740.3228
>> ,E,1.1,0.0,050612,,*03
>>
>>
>>  Querying gps_gpgsa sensor...
>> Error: LookupError: Path not found in tree: /mboards/0/sensors/gps_gpgsa
>>
>>  Which output should be taken into account, gps_locked, or ref_locked?
>> If ref_locked, I think that the "clear view of the sky" should be
>> improved... since a small roof out of my window could partially hide the
>> sky. I can try to move my equipment to the courtyard. Should it be useful?
>>
>> On Mon, Jun 4, 2012 at 8:57 PM, Ryan Connelly <
>> ryan.connelly.6742 at gmail.com> wrote:
>>
>>> The GPS antenna should have a clear unobstructed view of the sky. Also
>>> if the GPS antenna has a little metal dimple on one of its sides, it
>>> has to be facing up towards the sky.
>>>
>>> Here is a C++ program written by someone a while back to check GPS
>>> sensors. I don't know if it still works but that gives you an idea of
>>> how to query the sensor info. One of the sensors outputs the GGA info
>>> as an NMEA string. Here's a link to read the string:
>>> http://www.gpsinformation.org/dale/nmea.htm#GGA
>>>
>>>
>>> ---------------------file:
>>>
>>> test_gpsdo.cpp--------------------------------------------------------------------
>>> --------------------example compile: g++ -luhd
>>> -lboot_program_options-mt test_gpsdo.cpp -o test_gpsdo -------
>>> --------------------example usage: ./test_gpsdo --args
>>> "addr=192.168.10.2"-----------------------------------
>>>
>>> // author: Anonymous ( based on
>>> http://code.ettus.com/redmine/ettus/projects/uhd/repository/revisions
>>> //
>>> /6bd7281f83d5311675847b31746525841657c057/entry/host/examples/test_pps_input.cpp
>>> )
>>> // date: 2012/02/16
>>> // purpose: access gpsdo information (by querying all the gpsdo
>>> sensors) and output results to console
>>>
>>> #include <uhd/utils/thread_priority.hpp>
>>> #include <uhd/utils/safe_main.hpp>
>>> #include <uhd/usrp/multi_usrp.hpp>
>>> #include <boost/program_options.hpp>
>>> #include <boost/format.hpp>
>>> #include <boost/thread.hpp>
>>> #include <iostream>
>>> #include <complex>
>>>
>>> namespace po = boost::program_options;
>>> int UHD_SAFE_MAIN(int argc, char *argv[]){
>>>
>>>   uhd::set_thread_priority_safe();
>>>
>>>   //variables to be set by po
>>>   std::string args;
>>>
>>>   //setup the program options
>>>   po::options_description desc("Allowed options");
>>>   desc.add_options()
>>>       ("help", "help message")
>>>       ("args", po::value<std::string>(&args)->default_value(""),
>>> "single uhd device address args")
>>>   ;
>>>
>>>   po::variables_map vm;
>>>   po::store(po::parse_command_line(argc, argv, desc), vm);
>>>   po::notify(vm);
>>>
>>>   //print the help message
>>>   if (vm.count("help")){
>>>       std::cout << boost::format("UHD Test PPS Input %s") % desc <<
>>> std::endl;
>>>       return ~0;
>>>   }
>>>
>>>   //create a usrp device
>>>   std::cout << std::endl;
>>>   std::cout << boost::format("Creating the usrp device with: %s...")
>>> % args << std::endl;
>>>   uhd::usrp::multi_usrp::sptr usrp = uhd::usrp::multi_usrp::make(args);
>>>   std::cout << boost::format("Using Device: %s") %
>>> usrp->get_pp_string() << std::endl;
>>>
>>>       //query gpsdo sensors and output to console
>>>       //gps_time sensor
>>>       std::cout << std::endl << "Querying gps_time sensor..." <<
>>> std::endl;
>>>       uhd::sensor_value_t val_gps_time =
>>> usrp->get_mboard_sensor("gps_time",0);
>>>       std::cout << boost::format("Sensor output: %s") %
>>> val_gps_time.to_pp_string() << std::endl << std::endl;
>>>       //gps_locked sensor
>>>       std::cout << std::endl << "Querying gps_locked sensor..." <<
>>> std::endl;
>>>       uhd::sensor_value_t val_gps_locked =
>>> usrp->get_mboard_sensor("gps_locked",0);
>>>       std::cout << boost::format("Sensor output: %s") %
>>> val_gps_locked.to_pp_string() << std::endl << std::endl;
>>>       //ref_locked sensor
>>>       std::cout << std::endl << "Querying ref_locked sensor..." <<
>>> std::endl;
>>>       uhd::sensor_value_t val_ref_locked =
>>> usrp->get_mboard_sensor("ref_locked",0);
>>>       std::cout << boost::format("Sensor output: %s") %
>>> val_ref_locked.to_pp_string() << std::endl << std::endl;
>>>       //gps_gpgga sensor
>>>       std::cout << std::endl << "Querying gps_gpgga sensor..." <<
>>> std::endl;
>>>       uhd::sensor_value_t val_gps_gpgga =
>>> usrp->get_mboard_sensor("gps_gpgga",0);
>>>       std::cout << boost::format("Sensor output: %s") %
>>> val_gps_gpgga.to_pp_string() << std::endl << std::endl;
>>>       //gps_gprmc sensor
>>>       std::cout << std::endl << "Querying gps_gprmc sensor..." <<
>>> std::endl;
>>>       uhd::sensor_value_t val_gps_gprmc =
>>> usrp->get_mboard_sensor("gps_gprmc",0);
>>>       std::cout << boost::format("Sensor output: %s") %
>>> val_gps_gprmc.to_pp_string() << std::endl << std::endl;
>>>       //gps_gpgsa sensor
>>>       std::cout << std::endl << "Querying gps_gpgsa sensor..." <<
>>> std::endl;
>>>       uhd::sensor_value_t val_gps_gpgsa =
>>> usrp->get_mboard_sensor("gps_gpgsa",0);
>>>       std::cout << boost::format("Sensor output: %s") %
>>> val_gps_gpgsa.to_pp_string() << std::endl << std::endl;
>>>
>>>       return 0;
>>> }
>>>
>>> -----------------------------------------------------------
>>>
>>>
>>> On Mon, Jun 4, 2012 at 2:19 PM, Dario Lombardo
>>> <dario.lombardo.ml at gmail.com> wrote:
>>> >
>>> >
>>> > On Mon, Jun 4, 2012 at 8:03 PM, Nick Foster <nick at ettus.com> wrote:
>>> >>
>>> >> I guess I suspect that you aren't getting a valid GPS signal.
>>> >
>>> >
>>> > It's what others have suggested. But I don't know how to improve it.
>>> >
>>> >>
>>> >> I'd suggest doing a little coding and checking the GPSDO lock status,
>>> >> probably easiest to modify the UHD examples.
>>> >
>>> >
>>> > Can you suggest one to start from?
>>> >
>>> >>
>>> >> What antenna are you using?
>>> >
>>> >
>>> > It's a GPS/GSM antenna (antennas are packed together, with separate
>>> cables
>>> > to go to the board).
>>> >
>>> >>
>>> >> Does it have a clear view of the sky?
>>> >
>>> >
>>> > More or less. I'm in a building and the usrp is in my office. Inside
>>> the
>>> > building I can't get the GPS signal, but I can get it close to my
>>> window (I
>>> > mean with other GPS equipments). I don't know how clean the GPS signal
>>> must
>>> > be caught.
>>> >
>>> > _______________________________________________
>>> > USRP-users mailing list
>>> > USRP-users at lists.ettus.com
>>> > http://lists.ettus.com/mailman/listinfo/usrp-users_lists.ettus.com
>>> >
>>>
>>> _______________________________________________
>>> USRP-users mailing list
>>> USRP-users at lists.ettus.com
>>> http://lists.ettus.com/mailman/listinfo/usrp-users_lists.ettus.com
>>>
>>
>>
>>
>> _______________________________________________
>> USRP-users mailing listUSRP-users at lists.ettus.comhttp://lists.ettus.com/mailman/listinfo/usrp-users_lists.ettus.com
>>
>>
>>
>> _______________________________________________
>> USRP-users mailing list
>> USRP-users at lists.ettus.com
>> http://lists.ettus.com/mailman/listinfo/usrp-users_lists.ettus.com
>>
>>
>
> _______________________________________________
> USRP-users mailing list
> USRP-users at lists.ettus.com
> http://lists.ettus.com/mailman/listinfo/usrp-users_lists.ettus.com
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.ettus.com/pipermail/usrp-users_lists.ettus.com/attachments/20120605/25348d7e/attachment-0002.html>


More information about the USRP-users mailing list