Here is a picture of the first decoded frames from the FUNcube satellite we had on terra firma at Martlesham this last weekend.The Spectravue plot to the right shows the satellite’s downlink received using a FUNcube Dongle. To the right hand side of the plot, the solid green ‘hump’ is the telemetry and the signal to the right of that being simultaneous transponded SSB voice traffic. There’s not much in the filter department on the transponder right now so the transponder noise floor stretches well beyond the 96kHz span shown here!
To the bottom left, old hands will recognise AO-40RCV – I’m using this to help me manually tune in the BPSK telemetry downlink in Spectravue as my decoder doesn’t currently have AFC. The decoder showing the demodulated frames (well, in raw hexadecimal after the forward error correction) is done by some code I wrote back in March at the top left of the shot. Nice that the coding and FEC part of the FUNcube specification has remained unchanged from its inception!
The basic telemetry specification is based heavily on AO-40’s FEC model. 256 bytes uncoded, 5200 bits coded. However the uncoded content structure is totally different with the frame shown here as packed binary hence the gobbledegook. Down “on the wire”, we’re also transmitting raw at 1200bps rather than Manchester at 400bps symbol rate as on AO-40.
Some raw detail for those of you with insomnia:
O 1200bps DBPSK channel bit rate (phase change -> zero, no phase change -> one)
O Tx: x/sin(x) compensated Beta=0.5 root raised cosine
O Rx: Beta=0.5 root raised cosine
O Each tlm block is 256 bytes (2048 bits)
O FEC encoding (http://www.amsat.org/amsat/articles/g3ruh/125.html) makes 5200 channel bits
O Although there is a 65 bit distributed sync vector/marker within the FEC, an additional 32 bit sync marker (0x1acffc1d) prepends the 5200 FEC’d bits sent MSB first. This prepended sync marker is now largely vestigial, although for low power receivers use of the 32 bit sync vector may be beneficial as it is much less CPU intensive at the expense of a dB or so of sensitivity.
O 768 bits preamble of zeros: technically not needed for demodulation, however lets you “hear” the signal and see it on a waterfall under low s/n conditions.
O Total channel bits = 768 (preamble) + 32 (vestigial sync marker) + 5200 (FEC bits) = 6000 bits, or exactly 5 seconds at 1200bps.
Some further info on the BPSK filtering used:
TX
Root raised cosine
x/sin(x) compensated
9600Hz sampling rate
600Hz roll off
Beta=0.5
length=71 taps (chosen as 65 taps [9 bytes] is recommended minimum, but it costs no more to make it up to 71 taps)
Hamming window
Sum of taps are “massaged” into signed 8 bit using a spreadsheet
4096 bytes ROM required
RX
Root raised cosine
No x/sin(x) compensation
9600Hz sampling rate
600Hz roll off
Beta=0.5
length=65 taps
Hamming window
Real time single precision floating point calculation used
And an audio example of what we can decode 100%:Noisy FUNcube telemetry, and here are the corrections performed for the audio:
Howard
Hi
Is there a Spectravue ‘RF Data’ wav file available for the ‘Spectravue plot’ shown?
Dave
Sorry, I didn’t press the record! D’oh!
Howard