Tuesday 14 May Streaming Data and Observations - SETIatHCRO/grhack GitHub Wiki
Switch:
Source IP:
Destination IP and Port:
Observing Cycles every hour Time logs show that changing sources takes about 90 seconds. Changing sources and tuning takes about 150 seconds, e.g., data for 0329+54 are good at about XX:12:30.
Time | Source | Center Tuning Frequency |
---|---|---|
XX:00 | GPS Satellite | 1570 MHz |
XX:10 | 0329+54 | 1400 MHz |
XX:20 | Crab Pulsar | 1400 MHz |
XX:30 | Cas A | 1400 MHz |
XX:40 | W3OH | 1400 MHz |
XX:50 | W3OH | 6660 MHz |
Beamformer Packet Data Format
Data are streamed in 4160 byte packets consisting of a 64 byte header (described below) and 4096 bytes of time-series payload, as 2048 complex time samples (8br+8bi). The packet rate is 51.2 kHz, for a total sample rate of 51.2 kHz * 2048 = 104.8576 MHz. Streaming data look like:
<64 byte header><4096 bytes data><64 byte header><4096 bytes data><64 byte header><4096 bytes data>....
Beamformer Packet Header
typedef struct _packetHeader
{
uint8_t group, version, bitsPerSample, binaryPoint;
uint32_t order;
uint8_t type, streams, polCode, hdrLen;
uint32_t src;
uint32_t chan;
uint32_t seq;
double freq;
double sampleRate;
float usableFraction;
float reserved;
uint64_t absTime;
uint32_t flags;
uint32_t len;
}PacketHeader;
Detail on Packet Header
[uint8] group Packet Group "PTG"
# SONATA Definition (March 22, 2010)
# Name: packet group (ATA,Casper,...)
# Size bytes: 1
# Data type: unsigned int (used as enum)
# Values: 0 -> 255 (0 = ATA/Sonata)
# Default: 0
[uint8] version Packet Version "PTV"
# SONATA Definition (March 22, 2010)
# Name: packet version
# Size bytes: 1
# Data type: unsigned int
# Values: 0 -> 255 (0 = first version)
# Default: 0
# Note: Incremented by 1 for each header change
[uint8] bitsPerSample "BPS"
# SONATA Definition (March 22, 2010)
# Name: bits per sample
# Size bytes: 1
# Data type: unsigned int
# Values: 8 or 16
# Default: 8
# Note: For complex values, this refers to only 1/2 of the sample.
# E.g., a "16 bit complex sample" occupies 32 bits of space.
[uint8] binaryPoint Binary Point Position "BPP"
# SONATA Definition (March 22, 2010)
# Name: binary point position
# Size bytes: 1
# Data type: unsigned int
# Values: 0 -> 255
# Default: 0
[uint32] order Endian Magic Number "EMN"
# SONATA Definition (March 22, 2010)
# Name: endian magic number
# Size bytes: 4
# Data type: unsigned int
# Values: 0xaabbccdd
# Default: same
# NOTES:
# This holds the endian magic number header value
[uint8] type Packet Type "PT"
# SONATA Definition (March 22, 2010)
# Name: packet type (payload data type)
# Size bytes: 1
# Data type: bit mask
# Values: Bit 0: (0=integer / 1=float)
# Bit 1: (0=unsigned / 1=signed)
# Bit 2: (0=real / 1=complex)
# Other fields TBD.
# Default: 0x06 (integer, signed, complex)
[uint8] streams Number of Streams "NS"
# SONATA Definition (March 22, 2010)
# Name: number of streams
# Size bytes: 1
# Data type: unsigned int
# Values: 1 -> 255
# Default: 1
[uint8] polCode Polarization Code "PC"
# SONATA Definition (March 22, 2010)
# Name: polarization code
# Size bytes: 1
# Data type: unsigned int (used as enum)
# Values: 0 = LCIRC, 1 = RCIRC, 2 = XLINEAR, 3 = YLINEAR
# Default: 2
[uint8] hdrLen
# SONATA Definition (WCB April 16 2010)
# Name: header length (samples)
# Size bytes: 1
# Data type: unsigned int
# Values: 0 -> 255
# Default: Version 1.7 Packet Header: 64
# Notes: Indicates the length of the header
[uint32] src data source "DS"
# SONATA Definition (March 22, 2010)
# Name: data source
# Size bytes: 4
# Data type: unsigned int (used as enum)
# Values: 0 = beamformer, 1 = channelizer, other values TBD
# Default: 0
[uint32] chan Channel Number "CN"
# SONATA Definition (March 22, 2010)
# Name: channel number
# Size bytes: 4
# Data type: unsigned int
# Values: 0 - 255
# Default: 0
[uint32] seq sequence number "SN"
# SONATA Definition (March 22, 2010)
# Generated internally by FPGA
# Name: sequence number
# Size bytes: 4
# Data type: unsigned int
# Values: 0 - max(uint32)
# Default: 0, at startup
# Notes: Sequence number begins at 0. At 51,200 Hz packet rate, rolls over every 23.3 hours
[double] freq Sky Frequency "SF"
# SONATA Definition (WCB April 16 2010)
# Name: frequency
# Size bytes: 8
# Data type: double
# Values: 0 -> max double
# Default: 0
# Note: Field meaning depends on context, e.g.,
# beamformer packets: sky freq in MHz
# channelizer: center freq in MHz
# NOTES: This register holds two fields, which represent the low word
# and high word of a double. The first register holds the low word,
# and the second register holds the high word. Note the following demo
# code illustrates how to separate a double precision number into the
# appropriate high and low words. Also note that this separation must
# happen outside of the context of the register holder, as split doubles
# are not a supported data type.
# ==/ Demo Code /==
# fsky_high = [fsky].pack("G")[0..3]
# fsky_low = [fsky].pack("G")[4..7]
# ==/ End Demo Code /==
[double] sampleRate Sampling Rate "SR"
# SONATA Definition (WCB April 16 2010)
# Name: Sampling Rate
# Size bytes: 8
# Data type: double
# Values: 0 -> max double
# Default: 0
# Note: Field meaning depends on context, e.g.,
# beamformer packets: sky freq in MHz
# channelizer: center freq in MHz
# NOTES: This register holds two fields, which represent the low word
# and high word of a double. The first register holds the low word,
# and the second register holds the high word. Note the following demo
# code illustrates how to separate a double precision number into the
# appropriate high and low words. Also note that this separation must
# happen outside of the context of the register holder, as split doubles
# are not a supported data type.
# ==/ Demo Code /==
# fsky_high = [fsky].pack("G")[0..3]
# fsky_low = [fsky].pack("G")[4..7]
# ==/ End Demo Code /==
[single float] usableFraction
# SONATA Definition (WCB April 16 2010)
# Name: Usable bandwidth
# Size bytes: 4
# Data type: Float
# Values: 0 -> 1
# Default: Version 1.7 Packet Header: 0.6875
# Notes: Based on the accuracy of the fractional delay filters
[single float] reserved
# Reserved
[uint64] absTime
# SONATA Definition (March 22, 2010)
# Generated internally by FPGA
# Name: absolute packet time
# Size bytes: 8
# Data type: unsigned int
# Values: 0 - max(uint64)
# Default: 0, at startup, then synced to system time
# Notes: Consists of 32 bit whole seconds and 32 bit fractional seconds
[uint32] flags
# SONATA Definition (March 22, 2010)
# Name: Status flags
# Size bytes: 4
# Data type: bit flags
# Values: Bit 0: (1 = good data, 0 = bad)
# Other bits: TBD
# Default: 0x0001
[uint32] len
# SONATA Definition (March 22, 2010)
# Name: data length (samples)
# Size bytes: 4
# Data type: unsigned int
# Values: 0 -> max unsigned int
# Default: Beamformer: 2048
# Channelizer: 1024
# Notes: If packet type is complex, total payload size in
# bytes = [data length in samples] * ([bits per sample]/8) * 2
# E.g., 1024 complex samples * (16 bitspersample/8) * 2 = 4096 bytes
Proposed commands for GNU Radio control block
ssh obs@tumulus
ataephem <source name>
ataephem casa
java.lang.RuntimeException: Could not generate DH keypair
some unhandled exception - Invalid NORAD number: -1
AntUtil: Found casa at ra,dec = 23.39077778,58.80777778
Writing ephemeris to file casa.ephem.
ataephem xxx
java.lang.RuntimeException: Could not generate DH keypair
some unhandled exception - Invalid NORAD number: -1
The source, xxx, was not found or no tracks generated.
atatrackephem <ant name> <source name>
atatrackephem 1a,1b casa.ephem -w
ATTENTION: The ephemeris starts at 2019-05-15T06:59:57.869Z
with (Az/El) coordinates: (22.45, 16.56)
The antennas are prepositioning.
Pre-positioning antenna(s)...
The tracked object does not set during ephemeris period.
Sending trajectory to antenna(s)...
Waiting for antennas to acquire source...
Starting with: [ant1a, ant1b]
After dead removal: [ant1a, ant1b]
Ready for final tracking: [ant1a, ant1b]
Slowpoke ant1a current offsets: dAz = 13.493614, dEl = -0.012542725
Slowpoke ant1a current offsets: dAz = 4.68915, dEl = -6.313324E-4
Source acquired.
atagetazel <ant name>
atagetazel 1a
ant1a 22.452 16.569
atagetazel 6f
ant6f: Antenna ant6f does not exist (!open && !known).
atasetazel <ant name> <az> el>
atasetazel 1a 22 19
You have new mail in /var/mail/obs
atagetazel <ant name>
atagetazel 1a
ant1a 22.457 16.562
atagetazel 6f
ant6f: Antenna ant6f does not exist (!open && !known).
atasetskyfreq <a or b or c or d> <freq in MHz>
atasetskyfreq c 2000
atasetskyfreq x 2000
lox: Invalid LO "x"
atagetskyfreq <a or b or c or d>
atagetskyfreq c
2000.0
atagetskyfreq x
Invalid LO "x"
atagetradec <ant name>
atagetradec 1a
ant1a 20.078304088431512 61.10602072091836
atagetradec x
antx: Antenna antx does not exist (!open && !known).
atasetfocus <ant name> <freq in MHz>
atasetfocus 1a 2000
(returns nothing)
atasetfocus 1a x
could not parse "x" into focus value
You have new mail in /var/mail/obs
atasetfocus x 4000
antx: No antenna or group with name antx.
autoattenall.sh
autoattenall.sh
(no output)
atalistants -l
1a 1b 1c 1d 1e 1f 1g 1h 1j 1k
2a 2b 2c 2d 2e 2f 2h 2g 2j 2k 2l 2m
3c 3d 3e 3f 3g 3h 3j 3l
4e 4f 4g 4h 4j 4k 4l
5b 5c 5e 5g 5h