How to make receive "cleaner" packets LimeSDR

Hi everyone, I found a work around with the TCP related questions just by using a TCP Server & Client to write to a .txt file and have the contents inside the .txt file to be transmitted over VIA GNU Radio.

The issue or really not an issue but was wondering how does one clear this up more? The message sent was “THIS IS A HOMELANDER TEST”. I can confirm that BITS AND PIECES are within this .txt file sometimes the letter is lowercase sometimes the whole word is not formed. How can I make this more consistent and remove all that “randomness”.

«j‘J‰	>d	.ld	ᬭ艈ˆªD…꺋Ȗʈ0b쌠““QSS‘w€Q݃•TȒ4ȐL“ӑWS‘‘TÁ—ARU̒Ԉ䠙xSёSS‘QPŽTõ±RüТh8&3—ঠ¯ © ("‰ª*$$©À4‰° %¦‹砧¦2­ª.‰Š
j$$©ž$­€`P #糳 s™TˆTł•T薖ȐӔSS“p(™ʄr2œJȰKaәSS‘TˆPTUœŠöȔHSҗs S‘TˆT”‘TȓTȑHי[[›@ˆ	À󈔐VŠvHJ1‘ђS‘›TˆTՆXȖP谈둓S•T¨@\ѠŸQȒTȐ ˉ󔓐T¨”T׃5TȒQHHӑs[“T镐TԂݘN蓔ȐÁP Ca™L ƃ ‚RBVHx:ӝSCѵUŽT܂•4ȊTȑH±ӑSS‘T¨UՂ•VHRTȐHӑSQӑ1Tˆ“T׈‘RTȒDȰH“ӑS򙑕5\ՋTȗTȐIšӁR0ӑ]ˆ
PׂD蒞͐J“SQSґTˆU"•ȘT̐h“˙SP€2"= ߖ0@©1ˆd6— ¦(G 09:õF•\蒖ɐXёSS‘DQTՂՔTȘ]€  #¶¢– ‡ȕ™Tբ—RԨT钍Ӱ÷S•Ԁ1TՂ•TˆȐeՉI0񁆀€.j…Z‰	 d)$œ$		© )ˆ(؈ŽD
¦jȞ,Ȑ~ÁPHّsS‘L€‘^ՂÁTȤa’ Q/²²¦ ¥&¨*"©ª*£-©¶$鑠°`'¦򦡧&*©*#9®W’"$©’$©” $'¦£¦2µ*"­*&¨‚a8$ ¹„&¨ §碆 §"#頊&	ª®$.±˜,©ذ-§†¢" ¯""©8* ‰«($©$©°(”$a& 搣"!¡ª*i†*$$©$©“0¤f†¢† §b#©+öªh$¤¨˜”ȑI2ӑSˆԥ	0L`.d‰H騩™)ȈºD¨ªb‰O‰	tdȐhёQ1S‘T TՊ՚Ztȓ\̐H¸ӚSѓTˆUQDђDȒĬLBSӑRpBP92	\ɈJ‰)*dK
d($		Àੌ)ˆ‰«@ˆˆk‰*d	+FH4
‰騱À9Ȩªˆ‰"j…À‰*f	*d
4訩ˆ)ȈªDˆªiJ‹*d	.D%ȉ驩ˆ(숪Šˆªj…J‰‰*d	*&	$	ˆ騨(ɈªD
ˆªjB‰	(4&ö0)鸭Œ(航D/LU7¥¤•7•0 𔔠䢏!ÀU´ -BBšJ˜"	BzjbNr"ª•¢¢š RË∝
)B[j+b
z²8‘"œ ¢vN™J™	2pzn*j~# Dq=B¶dDH™J)Bzj*n
r*±²*º ²BB™J¹
‰Bzª*b
s"*񂢪ž S¦RJ™aꉂYBz*"cŠr ª*¦u1`”P„¶G‰	JBxkªŽ"#*š¢9 %l¡¤.…¡=519LQMPQ¡$LɥLᄕ%=5±1:—H€U퐹й%L¥L!951)ÀAQEP¹Q15΃¥H€ՠ=m104LQO@)Q%%L‰%ć¡!=•1%95ʁP)с¡N€-蠄… =<9a<‘‘BUMP!Q!%\e?51¬`˕nֹ!$%M 51a9nÁqœMP(Q!%l 6„ @¡ž›‚ˆ‚œˆ
¤@¨Š®¨T8&aNÁ#=58HQM@©a `M$ˆ.! =­8b
9‚@…оF B‚@B œ	‹@|&("{"
‘ª*š [º
K™ƒJ™2	RZjrrcJ’/k򒩣񘲆	r:h&⋲&>⸚€Q󠀀h	cc<1U)!ѕMpiQ!@‘$L…$€"=z&c„91•HAUMX8Y!%L%N€Á0¿09ˁMЫѵ%X¡¥D‘!=7e19H‘QOX©!¥L¡…#9·19HSMP+A)l¡¥L…!xU“ 
œÀȄ@ªŠ¦¬¨°’¢@ҦG‚ÀšŠš¢œ¨Š¤@¨Š«¨®˜“¦@‚¦@‚@›ŠŠ˜‚žŒŠ Á賢 )i) ́±b@‚@ž–Š˜£œ Š¤ ¨ª¯-v(ƒ瀒&RAОšŠ˜‚ŒˆŠ$ ¨Š¦($’’¦@š栋d›ŽŠ˜†œˆŠ¤A0‹
P+a±%FcŒ!=a9?1(Á՗oTiѡ7萆lE€%=51;HÁU„mx)¹¥<…%N€ …!=5•3}dAQ

Q%ѡ%l$¡=1a91@qIP)Q!5L'LÁl<9;…HqEqƒ́#‘q<511H±UU
p)U!%nȇ¡ 79…p󖸔¨Ж¤@À§@‚b–žŠ˜‚œŒ
<P¸Š¦¸©РŒ%΁ Á2Š¼Š¤b¨Š¶(–:°Z¦ ƒ¢`†šŠ؂ˆš¤@¸¦¨¸²¦@¢¦@‚ÿʪ֌
栠Φ(¨˜’¢@҆@‚Dž›Šš‚œˆŠ¤@¨Š.¸ ”‚¦A¦À†@šžˆ˜€Œ¨Š¤@¨Ž¢¨ª’−¢D `žš¢˜¢œˆŠ Pª
§ (Ғ¦`’¦H‚@˜ŠŠ‚šʄ@芶ª¨š¦D¦‚H“žšª¸¦̌۴p¢ªfˆ¨°’¦B—¦`‚jЎ†Žœ‚‚µ@¨Ȧ蔬€‚¦ ’¦@‚h˜žš‡˜Á숚¤Bhe–0e(˜$@˜‚D‚@ÀWšŠž¦œŠ¤@¬Š樆 ’怒¶@‚`µž˜š€Œȋ¤ ¨Š¤¨T萲†`’†H‚DšŠšŠœˆŠ¤P¨ˆ¦¨¨Ң@’§ Á@ˆ¾_Š<DNDDR,TœT
THIS°IW$A HcͅLADWES TEӔ+THIS$ɗ a"HOMeTANDER pe˔▨IR MӠ	 HMMuHA_pfEP
TLAS Ix ¡ MgŅFA΄ER TEQT
THIS Is:Q`HOMŌ΄ER!TOWB\jJӠIS A HmOŌANDGR¨WW†
ԈIӠhS A HOOŌANDDR ECXŠdHOQ IS"A2IOMElaNDFP LMsT
TB̓ Iu"Q!HGE…a&b©£"¨ª%*¤ ©’ © ˜$7¦¢†(¡+"¹ ©£Ţ$ « Oa a$hO¬ŒCNTER TEVTkTHIS$IS!A HO
ELANTMRhVOSP
TJHx IS `"HOOEEANDb14eqtL@*û MY ‚¤'¦ª¦ §ª©*¢¨ㅨ„°kԠ-’  $e&򦠭" ¨*b©**&$‰&	!€$#£!¶0g"#+0DGxIe iW¨`OM\AgEER \UCֈ@§`&A¢0žŠŠ˜‚œŒ’¤@(Š¦ (РI%NÀ‚ ’™ŠœˆŠ¤@¨Š¦ª4¸gDЦ@‚@‘žšŠ˜^ƀ„sW*RJIS4iC A(BoMJNTER"pGSŠDHY’ ۱@ϏAΡER TõST
XW XC SašKNG2 TQTĈIR IS¡A°IOMELAjFER0UUSP
^@I[ W A!HNMDlANDU’ DEST
\HE[ IӠA HOEglANER tDQ\
T HQ!HS A!HoMEHAnAq`DDST
UI[0MS€a HmEE\ANEr ESF
TD\R¡YS0ÁX́NANŒ(TMSPˆTJISIS!A.hOIELAπR"EԚVhIS iS(A JOM‘ߤGҠPeZԊPHIS8IQ!A¡HLANLE" TSP
THIs"HS$A HOMŌÁNFERpT囔FTH	$Mà! 'MaLoD!0VDSTd!0훀A(HOMEMÁ^DER$TEST
eIHӠAY A0IOMEL@NEZ$TESTThɋ0	{ 0ag悦 §""«ª"©¨.$i°2t€HR󑛐W‘T€tÁ&:T̞THPDRӑQW،˜DFCՒ Tȓ@¨  ƒ��)ȈªDšˆ¨nJ‰	+T
.d 		)¨©)ȚªE
ˆªjƒZ‰Iªd	d%ù¨¸̀˜€¿F”e\±¥E„ŲD2Dš„��䆕²Y5H±…„ѳ…2„õԔĔ炗"u½L°`Ą!w½dZ ö𕤌򢻘¢:š䲳jJ™†Jø €b>¢*b
~#rАϟM)Q!1L‘%„!)Ɨ‘¸¨ R'ª¨‚¦B’²@¢@”›šŽ؂Œ‰Žˆ¦dU¨€š¦L’®@ƒ@€žڏ˜ž€ °P삒̖¬Ж†ÀS¶@Š`ŽҊ˜ǜˆš„@(Š¦¬ž®˜¶@Ҡ@‚@šª˜‚œŠэi!7oUL…ž˜¢ŒˆŠ @¨
¦¨蒃¢a“@†„ŽšŠ˜‚ȋ%HºŠf¸4¨P’¦h§@ @ƒ–žŠZœ‡䡥EӔTHIS0IS b€L]nj@*E$TESQ
VHmZ A3 A2ɏͅLQNDP TMWT
TɭS 	S0A ZOÍnDEJ TES\
PȉS ISa$HOMǵNDEr UlQUNDhA_ IG A$ȏEIQNDIR PEST
ԈIS¡AS I HGEgMAFĂBh<PSTHIS ES  HOLDLANčr VERœªh	W`Is Q¡H_N@̃OdES \EvV
8D +˜ ™ 0&'§¢¦2§ ¹¢"-ª…’TȒtʔґSRՑP̅̕R²ed‰*|$	)鬩Š-ÁŒªL
€»h†H‰+d	d‰4Eᬩˆ)Ȁ¢D
ˆªjJ…	)d	ª䠦‰©婨	ȅ¥:@E=@¥Ԇ•2•#&„��䠕 aDG7 µDƅ0„0$¤��䠝qV}5@¥D„•5D•2„��䠆ચҢBJ‘J™	ƒBjj9a9—UȁQUMP)P1%Ω$‰!=5%=HÁQAQá¥„!=71¹UȁPE-y  ¥D@žžŠ˜Š„ˆŠ¬@ªŠ"¨”¨’¶@™¢@ƒ@Ÿ‹(†   ܅c”THIq IS A \OLENANUDҢT
QP
\Hȳ(-[ C9IOME\Af䅁 \E1N
T(AS"i[ퟀ�W/VT TE[T
THMv m0Q0Š

Here is the block diagram that has been used:

This is why real radio designs have a protocol layer in the mix. You are taking the data and dumping it into the modulator with no forward error correction, no framing structure, no synchronization patterns, and are disappointed when it doesn’t make it out the other side. That’s like taking a raw egg, slapping a stamp on it, and dropping it into a mailbox, and being surprised that you don’t get it delivered.
Yes, in a perfect simulation with no noise, no timing errors, and no timing requirements it might work. But in the real world you will see the results you are getting.
At a minimum, you need a block that can take a number of incoming bytes, apply at least one level of forward error correction (e.g. Hamming code), ideally interleave them with a relative prime interleaver and apply a second level of error correction, then add a header, a synchronization pattern, and THEN send that to the modulator. On the receive side, you need something to look for that sync pattern, check the header, apply the FEC, and then pass on the file.

1 Like

Thank you for the reply and the further enlightenment, forogt to mention that I am no RF engineer and have little to zero knowledge of the RF field :sweat_smile:

Is there any resources where I can learn these techniques of error correction, framing, synchronization?

Ill try playing around with some blocks that mention what you say and try researching some of theses words, thank you once again for the reply!

There are entire college degrees on the subject, but: you might look at the LiquidSDR pages https://liquidsdr.org/ - and go over what he has written about the various blocks there. One of the blocks in LiquidSDR is a packet generator - feed it bytes, and it does all the items I listed for you. I don’t know if anybody has wrappered that for GnuRadio or not.
And really, the packet stuff is more Coding Theory and Signal Processing than RF - to me, RF is VSWR, gain, IQ Imbalance, phase noise and the like, Signal Processing is more FFTs, FIRs and correlations, and Coding is Hamming, Reed/Solomon, interleavers, and error distances.

Thank you, ill give it a look over. Curious as to why the FM examples never use these techniques that you mentioned and another article I found they apparently developed an inhouse protocol havent used it either [RF Testing Methodology by NCC Group] any particular reason they arent using it either? And is this the standard practice to be transmitting and receiving data ?

I’ve been doing radio test system design for 30+ years, and I’ve NEVER seen anybody NOT use a protocol layer to move data over the air. I have seen cases where the radio is a dumb modem, a la Bell 202, and the protocol is “outside” the radio system (think using XModem over an RF link) but there is always a layer for error correction and detection.
As to why some examples are simple - possibly because they are only focusing on the physical modulation layer, and are not wanting to go into the upper layers?
And don’t feel bad: I am consulting with a bunch trying to get their own SDR program running, and I am constantly having to explain things like this to them.

Thank you!