MITHaystack / digital_rf

Read, write, and interact with data in the Digital RF and Digital Metadata formats
Other
97 stars 30 forks source link

thor.py: Setting file_cadence_millisecs to a large value causes ValueError #50

Closed ravenspired closed 1 year ago

ravenspired commented 1 year ago

Hello, I would like thor.py to produce a single file rather than many chunks of files and a way I have been trying to accomplish this is by setting file_cadence_millisecs to a very large value. However, upon setting it to large values, thor.py refuses to proceed:

thor.py -m 192.168.10.2 -d "A:0" -f 1575420000 -F 0 -g 50 -b 0 -r 4000000 -n 1000000 --nolock --nosync ~

Main boards: addr=192.168.10.2 Subdevices: ['A:0'] Clock rates: [None] Clock sources: [''] Time sources: [''] Sample rate: 4000000.0 Device arguments: recv_buff_size=100000000,num_recv_frames=512 Stream arguments: Tune arguments: Antenna: [''] Bandwidth: [0.0] Frequency: [1575420000.0] LO frequency offset: [0.0] LO source: [''] LO export: [None] Gain: [50.0] DC offset: [False] IQ balance: [None] Output channels: [0] Output channel names: ['ch0'] Output sample rate: [None] Output frequency: [False] Output scaling: [1.0] Output subchannels: [1] Output type: ['sc16'] Data dir: /home/avoronov Metadata: {} UUID: None Local time: Tue 2023-07-11 12:24:55 EDT
Universal time: Tue 2023-07-11 16:24:55 UTC
RTC time: Tue 2023-07-11 16:24:55
Time zone: America/New_York (EDT, -0400) System clock synchronized: yes
NTP service: active
RTC in local TZ: no
[INFO] [UHD] linux; GNU C++ version 9.4.0; Boost_107100; UHD_4.4.0.0-0ubuntu1~focal1 [INFO] [X300] X300 initialization sequence... [INFO] [X300] Maximum frame size: 1472 bytes. [INFO] [X300] Radio 1x clock: 200 MHz [WARNING] [UDP] The recv buffer could not be resized sufficiently. Target sock buff size: 100000000 bytes. Actual sock buff size: 50000000 bytes. See the transport application notes on buffer resizing. Please run: sudo sysctl -w net.core.rmem_max=100000000 Using the following devices: ---- receiver channel 0 ------------------------------------------------------ Motherboard: X310 (192.168.10.2) | Daughterboard: TwinRX RX0 Subdev: A:0 | Antenna: RX1 | Gain: 50.0 | Rate: 4000000.0 Frequency: 1575420000.330 (+0.000) | Bandwidth: 80000000.0

Launch time: Tue Jul 11 16:25:02.000000 2023 (1689092702.0) Sample index: 6756370808000000 |ch0|start @ sample 0: 1689092702+0.0 (6756370808000000) Traceback (most recent call last): File "/home/avoronov/.local/bin/thor.py", line 1879, in args.func(args) File "/home/avoronov/.local/bin/thor.py", line 1873, in _run_thor thor.run(*runopts) File "/home/avoronov/.local/bin/thor.py", line 1052, in run dst = gr_drf.digital_rf_channel_sink( File "/home/avoronov/.local/lib/python3.8/site-packages/gr_digital_rf/digital_rf_sink.py", line 403, in init self._create_writer() File "/home/avoronov/.local/lib/python3.8/site-packages/gr_digital_rf/digital_rf_sink.py", line 413, in _create_writer self._Writer = DigitalRFWriter( File "/home/avoronov/.local/lib/python3.8/site-packages/digital_rf/digital_rf_hdf5.py", line 342, in init raise ValueError( ValueError: (subdir_cadence_secs1000 % file_cadence_millisecs) must equal 0

Is there either a way for either drf to record a file of an unlimited length, or to record for a very very large amount of time?

ryanvolz commented 1 year ago

ValueError: (subdir_cadence_secs*1000 % file_cadence_millisecs) must equal 0

This is the key part of the error message, and it's saying that you need to also set subdir_cadence_secs so that an integer number of files will go in each subdirectory. I'll suggest using -n 3600000 instead, since that will work with the default of -N 3600 and you have (3600 * 1000) % 3600000 == 0.

ravenspired commented 1 year ago

That makes sense. Thanks!