diff options
author | Bernhard Tittelbach <xro@realraum.at> | 2011-08-23 23:41:22 +0000 |
---|---|---|
committer | Bernhard Tittelbach <xro@realraum.at> | 2011-08-23 23:41:22 +0000 |
commit | 0f6c3e99ef87a5888a13f9fd578813950370f918 (patch) | |
tree | 220a556391129c6ef2854f8ba2a0c3af573ae66b | |
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
-rw-r--r-- | doc/budgets/linkbudget.txt | 63 | ||||
-rw-r--r-- | doc/budgets/weightbudget.txt | 6 | ||||
-rw-r--r-- | doc/protocols/ground-rxtx.txt | 134 |
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 ? + + |