LimeSDR with SoapySDR python module

I’m trying to make a timed burst transmitter using LimeSDR with the SoapySDR python module. Calls to mysdr.hasHardwareTime() returns True but all subsequent calls to mysdr.getHardwareTime() return 0 ns. Example code:

import SoapySDR
from SoapySDR import *
import time

args = dict(driver="lime")
sdr = SoapySDR.Device(args)

print sdr.hasHardwareTime()

while True:
    print sdr.getHardwareTime()
    time.sleep(1.0)

All of this works on a USRP B200. Does LimeSDR really have a hardware timer? Am I doing something wrong?

getHardwareTime() works as expected after you start streaming (setupStream() and activateStream()).

EDIT: And if you deactivateStream(), it returns 0 again. After activateStream(), timer starts from beginning.

2 Likes

Thanks for your help. Confirmed that it works and will probably suit my application well.

I’m still a bit confused though. activateStream() and deactivateStream() have optional time parameters. How can one activate a stream at a certain time if the hardware timer isn’t running until the stream is activated? The MeasureDelay.py example uses this feature.