summaryrefslogtreecommitdiff
path: root/doc
diff options
context:
space:
mode:
authorBernhard Tittelbach <xro@realraum.at>2011-08-23 23:41:22 +0000
committerBernhard Tittelbach <xro@realraum.at>2011-08-23 23:41:22 +0000
commit0f6c3e99ef87a5888a13f9fd578813950370f918 (patch)
tree220a556391129c6ef2854f8ba2a0c3af573ae66b /doc
parent- included satellite name into tracker telemetry table (diff)
ground-rxtx / linkbudget
git-svn-id: https://svn.spreadspace.org/mur.sat@150 7de4ea59-55d0-425e-a1af-a3118ea81d4c
Diffstat (limited to 'doc')
-rw-r--r--doc/budgets/linkbudget.txt63
-rw-r--r--doc/budgets/weightbudget.txt6
-rw-r--r--doc/protocols/ground-rxtx.txt134
3 files changed, 203 insertions, 0 deletions
diff --git a/doc/budgets/linkbudget.txt b/doc/budgets/linkbudget.txt
new file mode 100644
index 0000000..5ee15e6
--- /dev/null
+++ b/doc/budgets/linkbudget.txt
@@ -0,0 +1,63 @@
+LinkBudget:
+
+FIXME FIXME
+
+%%\[ \frac{C}{N_0} = EIRP - Losses + (G/T) - k - B = 7.8 dB\] %B=12kHz
+%\[ \frac{C}{N_0} = EIRP - Losses + (G/T) - k - B = 3.6 dB\] %B=20kHz
+%%\[ \frac{C}{N_0} = EIRP - Losses + (G/T) - k - B = -3.3 dB\] %B=40kHz
+%\hspace{9cm}(optimistic !!)
+%%\[ \frac{C}{N_0} + B = -3 +4 -(1 + 135 + 0.6 + 3) + 6 -(-222) -81.5 = 7.8 dB \]
+%%\[ \frac{C}{N_0} = 7.8 dB \]
+%\begin{description}[xxxxxxxxxxxxxxxxx]
+%\item[TxPower] $0.5W = -3 dBW$
+%\item[Rx G/T] $6dB$
+%\item[AntennaGain] $4 dBi$ ($~65\% $ of time)
+%\item[FSPL] $310km$,$434Mhz$ $\rightarrow 135dB$ % $-20log_{10}(310km) -20log_{10}(434Mhz)-32.45 = -135 dB$
+%\item[Sky Thermal Noise] $4^o C \rightarrow -222dBJ/K$ % $k=10 log_{10}(kTB) = -222dBJ/K$ (at $4\angle C, 1 Hz N_0$) %noise at normalized bandwith = 1 Hz
+%%\item[Bandwidth] $B=12KHz=81.5dBHz$ %$B=20*log10( 12kHz [Hz]) = 81.5 [dBHz]$
+%\item[Bandwidth] $B=20KHz=86dBHz$
+%%\item[Bandwidth] $B=40KHz=92dBHz$
+%\item[$L\rightarrow C$ polarisation] $-3dB$
+
+
+$\frac{C}{N_0}=EIRP - Losses + (G/T) - k - B $
+70cm: %\[ \frac{C}{N_0} + B = -3 +4 -(1 + 135 + 0.6 + 3) + 6 -(-222) -81.5 = 7.8 dB \]
+downlink 70cm: $\frac{C}{T}= (10*math.log(0.5,10) + 8.3) - (1 + 135 + 0.6 + 3 ) + 6 - 81.5 = -209.8 dB$
+
+
+
+k=-228.6 dB (J/K) -> 1K
+
+Noise: $N=N_0 B=k T B$
+Carrier Power: $C=\frac{P}{4 \pi R^2} G_r A_{eff}
+Antenna Gain: $\roh \frac{\pi^2 D^2}{\lambda^2}$:
+$EIRP = P_T * G_T$
+Free Space Loss: \lbracket\frac{4 \pi R}{\lambda}\rbracket^2
+
+$\frac{E_b}{N_0}=\frac{C}{N}\frac{B}{r}
+
+Transmission Power: 10 log10( [W])
+
+Antennagain Sat:
+wavelength: 2m / 70cm
+antenna length: ~0.5m (wenn nicht faltbar ~0.25m)
+(2m/0.5m = 1/4 -> gain: ~ 2 dBi)
+2m/0.25 = 1/8 -> gain: < 2 dBi
+(0.7m/0.5m = 1.5 -> gain: 3.01 dBi)
+0.7m/0.25m = 3 -> gain: 4.47 dBi
+
+aktuell: 2m: 2dBi 70cm: 4.4dBi
+
+Antennagain Boden:
+ Gain: 6 dBd / 8.3 dbi
+ G/T: 8.3 - 1 + 25 - 4 - NoiseTemp = 8.3 - 2 = 6
+
+Loss:
+ Alignment-Loss: 0,2..1dB
+ FreeSpaceLoss (AntennaAparture + spreading of radiated power) = 20*log10(d [km]) + 20*log10(f [Mhz]) + 32.45 =
+ 2m: 82.3dB + 43dB = 125dB
+ 70cm: 82.3dB + 52.7dB = 135dB
+ Atmosphärendämpfung: <1dB (0.6dB)
+ Polarisation Linear(send) auf Circular(Empfang): 3dB
+ Bandbreite: 20*log10( 12kHz [Hz]) = 81.5 [dBHz]
+
diff --git a/doc/budgets/weightbudget.txt b/doc/budgets/weightbudget.txt
new file mode 100644
index 0000000..3a3c5c0
--- /dev/null
+++ b/doc/budgets/weightbudget.txt
@@ -0,0 +1,6 @@
+WeightBudget:
+
+max 0.75kg
+Transciever ~ 80g (nach Ausbau)
+Scanner ~ 60g (nach Ausbau)
+???
diff --git a/doc/protocols/ground-rxtx.txt b/doc/protocols/ground-rxtx.txt
new file mode 100644
index 0000000..58c3212
--- /dev/null
+++ b/doc/protocols/ground-rxtx.txt
@@ -0,0 +1,134 @@
+Protokoll:
+
+self made downlink protokoll:
+
+* intelligenter Image Dump
+* Audio Memory Dump
+* Image Bewertungs Index Dump
+* Telemetrie und Counter Dump
+* random Text-Message Dump (wenn Power da ist)
+
+encapsulated in:
+* CCSDSC Frames
+ GMSK (braucht ~10kHz Bandbreite)
+* BPSK 1000 (QPSK 500)
+* Turbo-Codec (if licencse allowed)
+ Reed-Solomon
+
+alt:
+* Nix, raw data via FSK31 (or hither)
+* Turbo-Phi-Code
+* FX.25
+* AX.25
+(depends on content and configuration Flags)
+
+
+Frame:
+Option 1:
+GMSK(CCSDSC(Data,Reed-Solomon))
+Option 2:
+GMSK(CCSDSC(TurboCode(Data)))
+Option 3:
+BPSK500(CCSDSC(TurboCode(Data)))
+Option 4:
+BPSK500(CCSDSC(Data,Reed-Solomon))
+...
+
+
+
+Protokoll:
+Downlink:
+
++--------------------+-----------------+-------+
+| Data Frame Type ID | Frame Type Data | CRC32 |
++--------------------+-----------------+-------+
+
+
+Downlink Frame Types (Frame Type Data):
+* Memory Area Dump Start (new DumpID (inc) , from Address)
+* Random Text Message Start (new DumpID)
+* Image Data Start Frame (new DumpID, Image ID, from Offset)
+
+* DataDump (current DumpID, Packet ID, Data Length, Data))
+
+* Image Metadata Single Frame (Image ID, file size, Quality Factor, DCT-Coefficients Mean, DCT-Coefficients StdDev, simplified rgb image historgram [3 colours * 64 division * 8 Bytes])
+
+DataDump (current DumpID, Packet ID, Data Length, Data))
+Image Metadata Single Frame\\(Image ID, Quality Factor, DCT-Coefficients Mean, DCT-Coefficients StdDev, simplified historgram)
+
+Note:
+ new DumpId with every "Start"-type frame. Only HARD requirement: dumpid must be different from previous dumpId
+ PacketID increments with every frame and resets to 0 with "Start"-type frame
+ DumpId ensures that DataDump streams can be differentiated if in-between StartFrame goes missing
+
+
+most errors should be corrected by FEC
+if Recieve Error of Frame still happens:
+* rerequest memory area with offset
+* rerequest ImageID (w/offset)
+* rerequest whole Dump by explicitly repeating command (can't request dumpid since they are not meant to be uniqe)
+
+
+Uplink Todo ??
+ ?? ability to resend commands in queue before execute -> QueueSlots and "Insert Command into QueueSlot#" instead of "Append Command"
+ contra argument: fading signal will propably wane slower than it takes to fill command queue. so sending full command queue multiple times is
+ more likely to succeed than sending single commands multiple times.
+
+Uplink Commands:
+* Clear Command Queue
+* Append Command WriteConfigArea (Data, CRC32)
+* Append Command DumpMemoryArea (StartAddress, Length)
+* Append Command WriteMemoryArea (StartAddress, Length, Data, CRC32)
+* Append Command AppendNewTextMessage (Length, Data, CRC32)
+* Append Command GetImageMetaData (from ImageID, NumImages)
+* Append Command GetImage (ImageID, fromOffset, max Data to transmit or 0 for all data)
+* Append Command Send Random Text Message
+* Append Command WaitDuration and switch off transciever (Seconds)
+* Append Command WaitUntil and switch of Transc (TimeOfDay)
+* Execute Command Queue (Num Commands, ExecSeqNum, MAC(Full CmdQueue Contents incl Data . Num Commands . ExecSeqNum))
+
+
+Note:
+ Password should be random and 160 bit long
+ MAC(x) = sha1(password . sha1(x . password))
+ Satellite keeps track of highest last used ExecSeqNum and rejects lower
+ Stored ExecSeqNum get's reset to 0 on CRX Reset-Settings
+
+ single commands usually don't carry CRC checks, because they are only ever executed as a whole cmd queue.
+ so it's enough to have integrity check in the last cmd. This also saves bandwidth.
+ As a side effect, the amound of uplink data to be integrity checked becomes dynamic (i.e. on bad link, just send less commands at once)
+
+To Consider:
+ maybe CRC32 SHOULD be added to every Clear/Append command, and every append command should be ack in TTX,
+ so it can be resend on transmission error and execute command has then higher chance of succeeding ?
+ downside: uplink would be much much slower if (optional) we wait for TTX Acks
+ upside: execute command has higher chance of executing
+
+Never: substitute sha1 of individual crc32 with sha1 of whole contents in execute command
+
+
+Attacks:
+
+ Substitution Attack:
+ should not be possible since MAC is calculated over full CmdQueue contents
+
+ Repeat Attack:
+ should be hard, because Nonces are not reusable, unlesss attacker also manages to reset cpu via dtmf
+
+ Man-In-The-Middle Attack:
+ no two way handshake, so no better than other attacks
+
+ Brute Force:
+ can capture uplink stream and brute fore password at home
+ thus password should utilize full bit range and be sufficiently long e.g. 32 byte random number
+
+ Denial Of Service:
+ If password cracked, nonces can be used up
+ Uplink Channel can be actively jammed
+ Append Command can be inserted after our ClearCmdQueue, making sure ExecuteCmd won't suceed
+
+
+To Consider:
+ Does Arm Cortex M3 have enough speed/power for RSA | DSA | ECC-DSA ?
+
+