Thank you for joining.
So my latest presentation will be about efficient USB for new Linux on a wide-band receiver.
So today I put my affiliation as Associate Professor at University of France Conte because
this project actually started last summer when I was asked by my colleague, can you prepare
a new training for our master's students and, originally, my objective because I've always
been using USB over RS or RS2 for two of emulation over USB and maximum you're going
to get with CDC something like 100 kilo sample per second.
And so on the one hand I wanted to learn how to have high-band with data transfer on Linux
and well, you need a good reason to do this and I had for a few years on my desk this evaluation
board of a GNSS receiver chip, it's called the Max2771 and I'll show you how good a paper
weight it makes after you learn how to use it and afterwards I still wanted to prepare my
master's students project so I continued I pursued the project and I'm going to show you
what it ends up being.
So what actually do we need high-band with data transfer?
So my research activity is in time and frequency transfer and you might know they
global navigation satellite systems are basically a set of 7080 atomic clocks in space that
you can use for comparing your clock for sharing information between time and system.
So if you look at the current constellations and this is stolen from the European
state agency Navipedia webpage the legacy L1 GPS is your course average signal is about two
megahertz wide already if you look at Galileo E1 you already see that there's something here
that it's expanding frequency and now we have additional bands so we use to have the military
band in L2 now we have civilian band in L2 and in E5 and L5 we have this huge band with
allocated to navigation satellites in what they call lower bands so E5 and L5 is used for
high-run notifications and so I wanted to be able to grasp these signals now of course
you're going to tell me if you just get a B210 you're going to get the band with and that's it and of
course I couldn't use 50 or 20 B210 in my lab sessions we just want to have a project so
I needed to make something that was interesting to develop and that would meet the requirement.
Secondly if you just look at the roll band with if you just estimate what you should be a
theoretical band with that's one number it's the one on the left but when I play with my SDRs
I can actually decode GNSS signals with such lower sampling rate and so I wanted to have a
better understanding about the signals I wanted to understand how come that the 24 megahertz band
with signal I can actually sample it 8 mega samples per second and get something so that's the
real story about it and secondly you need to introduce some sort of iF band with because you're
noisy on base bands well iF means that you need even more band with because you're going to shift
your useful signal from radio frequency band to an iF signal and then you're going to sample the iF
signal back to base band and so you need to have the band with plus the intermediate frequency as a band
with so so these are really the challenge why we do want band with. I also show you that well
it's a GNSS receiver but iRidium is just a few hundred megahertz or a few tens of megahertz above
GPS and if you give a bit of flexibility to your VCO well we're going to get a region with it and
an iRidium is as you can see here 20 megahertz wide so you need something of a band with to
record a iRidium as well so so these are really the reasons for going for higher band with.
So originally I was looking on the web I've been using GPS for quite a while GPS L1
and one thing that I've been struggling with just because it's not the background of the
lab I come from is Galileo Galileo is using a different modulation scheme BPS GPS is super simple
it's a binary phase shift king so you just flip the phase 0 pi and it's super simple to look at.
Now Galileo is using this binary offset carrier which is a bit well I'm going to show you I
spend quite a lot of time waiting to realize how buck was working and since I did not know how
buck was working I could not estimate what was the minimum bandwidth for receiving these signals.
And I was looking at these at these slides from 10 for university of cyborg and cyborg tells
that the minimum bandwidth is generally twice the chipping rate for simple codes and for buck codes
it's twice the sum of a chipping rate and offset code so if a practical bandwidth for Galileo is
eight megahertz but I can actually decode Galileo with two mega sample per second so what's the
difference between what I'm saying and what cyborg is saying so so that was the reason why I wanted
to learn how to do these things and I'm going to show you about this. So just as a quick reminder
for the news of you who are not familiar with GNSS global navigation satellite systems I'm only
going to focus on European Galileo and American GPS because Russian blown us is kind of different
it's a frequency division multiple access it's not it's not usable for time transfer or hardly
usable for time transfer and and Baydo is just a mess so I'm not looking at Baydo so so if we look
at it very quickly you have all these guys broadcasting so so the Americans have been broadcasting since
the eighties we've got a NAFTAR system everyone is broadcasting on the same kind of frequency of
1,000 one gigahertz 575 to 42 gigahertz and so the Americans are flying 20,000 kilometers away
with a period of period of the rotation period of 12 hours and they've been living happily
until the Europeans said hey we want our constellation as well and when the Europeans said
we want our constellation the American said okay you can broadcast with the same frequency but just
blown above our signal just leave our signal alone and so the Europeans had to invent
use a different kind of of modulation scheme and this is where we're going to see that the
book modulation is going to be used actually when I looked at the literature I realized that book
had been created by the Americans but it's the one being used by the Europeans so all these guys
are broadcasting to the Europeans our 23,000 kilometers away the Americans are 20,000 kilometers away
everyone is talking on the same frequency and so you need to differentiate these signals and so
the classical approach is code division multiple access where each one of these guys is embedding each
bit each message that is being broadcast in a series of chips so it makes a difference between
bits and chips but actually binary states and so everywhere every satellite has been
allocated a unique sort of random sequence which is the chip chip length and so we will need
intensively cross correlations because assumption is you know what this code is if you don't know
what the code is it's super difficult to decode you can get some signature as I'm going to show you
but if you really want to get time stamping you need to know what the code is so cross correlation
as a quick reminder is looking on the signal x of a pattern p with a time delay tau and you just
slide the pattern p over the time delay copy of x and if you look it's energy accumulate and if you
want to look at energy accumulate you take the integral over the duration of of a chip duration
now one thing that is very important is that the cross correlation is a linear function and if you
linear it means that if you get the signal from two satellites with weights a and b well
satellite x with weight a and satellite b with weight y and you know which satellite is associated
with which pattern then you will get each individual signature so even though you're
on the ground you're receiving the sum of all these voltages you can see the recovery
information from each satellite and if you flip the phase because you introduce a bit state or a
well from the linearity the weight that you put inside the cross correlation can be extracted
after cross correlation so the linearity of the cross correlation is very important and if you ever
start reading either two multi-tacassus, a pocket as the arcode or genesis as the arc you will see
that there's many many five four-inch fast-frequency forms and you need to remember the relationship
between the cross correlation and the full-frequency form the four-inch form of a correlation is the
product of a four-transformer the signal times a complex conjugate of a four-transform of a pattern
this is very important because it transforms your end squared algorithm into the end log n
and make your computation load much weaker so bpsk we have a total random sequence the phase
is flipping and that's super easy and on the other hand your pins are using buck so as I was visiting
last December my colleague Siddly Prontar at East Isaac I told him I'm desperate I cannot
understand what this uh buck code is can you tell me something and he said no I'm not going to
tell you anything just read the Bible and he gave me the URL of the Bible so if you want to know
what Galileo it broadcasting and if you want to understand what buck is just read the dog and the
documentation is super clear I took for you here information so binary offset code so if you just look
at the raw data and I'm not going to talk about the pseudo random sequence generation I'm just using
a very nice repository uh from University of Catalonia and Barcelona where they have all the codes
as MATLAB file so you just load the MATLAB file you get all the code so forget about how we generate
the pseudo random sequences but the pseudo random so the binary code is just you flip the phase so no
frequency offsetting and you can just analyze the spectrum of these of these uh code after you've
interpolated for a sampling rate so the GPS L1 is running at 123 mega sample per second you
sample your data at FS so you just need to read resample your code at the rate right number of
chips uh bits per chip a sample per chip now in buck modulation you're told that each one of your
codes is actually multiplied by a carrier and this carrier frequency are given in the document
it's 120 for megahertz and 60 megahertz so rather than having just one uh message that you want to
modulate the pseudo random sequence and that you send on your BPSK output now you've got the second
mixer here that will of frequency offset your your your your your carrier and this is actually the
implementation I'm using in octaves to simulate my buck modulation and why is this useful because now
you can actually plot the wave shape of the wave that you wrote class in the buck modulation
and first of all you see that your buck modulation correlation is narrower than the uh BPSK
correlation so that's a nice thing if you want to do timing analysis but most importantly you
understand here why the American told the Europeans you have to use buck and not BPSK the Americans
GPS is a red curve here and you know that if your BPSK modulated it's a given sample rate
it's a given chip rate the first news here would be at chips megahertz so here we have the
BPSK GPS L1 your broadcasting at 120 free mega cheaper seconds your first new year is at one megahertz
and minus one megahertz the Europeans were said we're told to use buck and buck was shifted at a rate of
120 free megahertz per seconds it was shifted by 120 free megahertz meaning that you're putting the
new of a European signal right where the maximum of the American signal is and hopefully
the Europeans are not disturbing too much the Americans in broadcasting their signal
so this tells you also that you can live with a one megahertz sampling rate and remember we're
working with complex numbers so one megahertz sampling rate is two megahertz bandwidth for GPS
because you use most of the energy of BPSK but if you try to do the same with Galileo
well you see that your lobes are hardly included in these bandwidth and so you will have a hard time
recording Galileo with the same bandwidth when you're using for GPS L1 if you do this a bit faster
so you simulate what's happening at 24 mega sample per second you see here the buck modulations
key here you have a six megahertz sorry here you have a six megahertz offset here you have a
120 free megahertz offset and here here here at the GPS L1 so all of these to tell you to justify
why we want to have a fast sampling rate we want more bandwidth to record this data and so we
have these chips from another devices originally from maximum which is a max 2771 and so my objective
was to learn how to use the max 2771 and to interface to a USB to efficiently transfer data to Linux
that's the outline of the project I wanted to complete now actually you might if some of you
are investigating GNSS you might know Tomogita Casu for his work on the RTK lib and Tomogita Casu
seems at least published since 2021 an amazing project which is called the Pocket HDR and since
whenever since I've seen this project on the GitHub I've been dreaming of getting a Pocket HDR
but Tomogita Casu is working at the University of Marine Lab in Tokyo and he's not just his job
he's not to manufacture board so he's giving away over designs but I never went through all the
hassle of reproducing in the lab so that was a good opportunity for me to learn how to use this max 2771
so just to show you I did an exhaustive investigation I'm not going to get in the details
but this is using a B210 preliminary investigation x-axis is a sampling rate y-axis is a
constellation type and if you record data I value sampling rate basically because Galileo is
sampled at 123 or is a book at 123MHz offset and you have a second offset at 6MHz
all the sampling rate below 2MHz and each one of his colored dots sorry this in the x-axis you've
got the satellite index the satellite number in the y copy you've got the frequency shifts of
the Doppler shift and each one of his dots is the magnitude of a correlation so each one of his
dots is a satellite now you see that on GPS the dots look broader than on Galileo that's because
the code length of Galileo is four times longer it's four thousand chips instead of one thousand
so the codes are narrower in Galileo and basically in the low sampling rate you don't get the six
megahertz both offset but once you get above 10MHz you start see the Galileo satellite as well
so I start looking extensively at the impact of the sampling rate and I was kind of disappointed
that there was no real impact on the signal to noise ratio so the faster you go once you go beyond
the low width well you just integrate more and more noise and the signal to noise ratio is not
improving so much so so you just need to have enough bandwidth but not more than needed so that
that was initial analysis before getting to the max 2771 so now I had this evaluation board that I
had both just before COVID and initially I was thinking okay I have plenty of time during COVID
I'm going to learn how to use this I plugged in the board hoping to see virtual zero port no
zero port okay that's a bad start for Linux so then you've got this chip here this microphone
controller that is provided by Max and I see this is a max 2771 you've got so they've got what they
called the upper band and the lower band because the L1 band and L5 band that at one point
2DHz and 1.6DHz are too far too far apart to be recorded by single HDR so you must select
your HDR and you tune it either to upper or lower band so this is why you have more than a few
SMA so this is the lower band this is the upper band that I'm sampling and then you go through
a low noise amplifier and then you go through the mixer and you get your samples okay so no
zero port okay that's a bad start so I download the I try to to look at the data I couldn't find anything
so basically that's I put the way until I got this project work on and then the new thing is
since I initially looked at there was this very nice web page explaining how you can sniff
USB and how you can reverse engineer and unknown protocol so I started doing this and surely enough
to just look at the debug functionality of the Linux kernel and you can very nicely see all the
streams coming out of this of his guide here and basically you see that when you run the
proprietary software from another device in the virtual box the Linux kernel is intercepting
all the USB communication you see the stream the proprietary software is pinging the board every
second the board is answering I'm here and when you want to change the register the software just
sends what I now know is known as a vendor request so you send the stream for the USB telling I want
to change this register with this value super easy to reverse engineer so I wrote the software for Linux to
drive this max 2731 board I could read set the registers I could look with the oscilloscope
at the i2 outputs and then I search for the button on the graphical user phase from another device
that says stream data and there is no such button so I asked the other device support where is
the stream data button and I didn't even expect an answer and surprisingly enough after a week I
got an answer from another device remember this was initially done by maximise and another device
both maximum so I'm not saying this is due to a lot of device but well it's a fact that I was
to yeah initially we thought that we would stream the i2 data but we never went and we never
finished a firmware so you do have a couple of registers that allow you to connect the i2 path to the
macro controller but there is no software for reading so there's no need okay so that's why I'm
telling you just save your 532 euros and don't buy a paperweight because what you buy here is just
a USB to a SPI converter for 500 euros okay so I was quite disappointed I had wasted having
euros of taxpayers money on these works why do I continue now okay so you throw away the
micro controller you cut the traces you just throw it away you connect this and you take
Tomoji Takasu who is much more efficient than maximise and other device because he did
something with works and Tomoji Takasu taught me about about the fx12p so the
fx12p is a cypress chip also known as uezy usb and this chip will hold a micro controller
a big micro controller which I know quite well it's got the parallel to usb interface and because
it's got a micro controller it's always a big bang SPI interface which is exactly what Tomoji
Takasu did okay so let's throw away this stupid micro controller and let's take Tomoji Takasu's project
so Tomoji Takasu's project is yard is made of two max 2771
however if you want to do some spoofing analysis I'll show you in the end because you want to look
with two antennas at the same signal or if you want to have one signal you have the upper band
one signal to the lower band so then you set them to a different frequency band
the output of these eight to three converter are two bits each two bits for IQ is four bits per
max 2771 we've got two max 2771 we can feel the eight bits of the parallel commutation
with the eight bits of the eight to the converter and these eight bits are actually interleaved
so you know that they're exactly simple at the same time also because one max 2771 is a slave
of the clock of the other one so we've got coherent synchronous acquisition up to 48 mega
sample per second actually the max 2771 can go up to 44 mega samples per second but that's
really nice I mean we get 40 mega sample per second I too interleaved from two boards so that
that was looking very exciting so the first thing I did is I took Tomoji Takasu software and I
learned how to use it so that was an opportunity for me to learn how to use sorry sorry so
yeah these are interfaces of Tomoji Takasu sorry so yeah this board here on Tomoji Takasu's
board he puts his own ethics to LP and when I was looking friends buying an ethics to help people
cheap bear cheap was twenty euros from far now if I go on alley express I can get with no
charge for shipping for less than five euros an assembled board from alley express so sorry for
far nail but so I got twenty of these of his board and they have the ethics to LP it's they're all
working very well actually so much for the pro quality of trans product they all work perfectly
except for little detail actually in a second so what this board has is got the ethics to LP it's
got a few GPU pins it's just got a regulator and so the first thing we learned was to very simple things
toggle a GPU this kind of stuff now why did we have to learn how to use this 851 core on the
ethics to LP because Tomoji Takasu is working on windows with a cable proprietary compiler
and he's limited because kale gives you a free version which is limited to a firmware side and of
course I'm not going to use a proprietary software there's no the way I'm going to do this so
I need the first thing I needed was to translate Tomoji Takasu software to SDCC and to do this
because you know that when you're translating from one compiler to the other the thing that never
translate is interrupted so I need to learn how to work with interrupt vectors and how to
how to get the basic operation on the 851 so it always very well I translated Tomoji Takasu
software into the right language of SDCC so the small device see compiler for those of you who are
not familiar and nothing was streaming and luckily for me Tomoji Takasu had the exact same problem
that the Chinese board is working very well except that some of them they have made a mistake in
writing well unfortunately it's the reading write pins that they miss marked so actually just
have to be aware that if you take some of his cheap Chinese boards some of them have a write
writing and some of them have the wrong one and unfortunately mine had the wrong one and once you understand
this it works super well so we end up learning how to do a few things then we need to learn how to
communicate and leave USB is now wrapped in Python so you implement what I now learn to be called
vendor request which are basically commands that you send from the USB bus to be interpreted by
the 851 this would be your commands for setting the GPIOs or for setting the SPI and you implement
this talking in in USB sorry in Python so super easy to to implement so now we have something that
is more or less functional which allows us to stream data but RV's data actually functional so I
will be quickly took me a couple of months but the chip we've got the internals you have the
local oscillator you've got some tutoring capability you can stream some real data so real data
means even spectrum you can stream some complex data so that the spectrum is right and you see that
if I shift the tire frequency by a few hundred kilohertz indeed the rate is shifting and this is
made so much easier with Tomoji Takasu's pocket conf software that I'm going to show you in a second
because instead of reading over registers and setting manual over registers Tomoji Takasu did
all the hard work of telling okay I want this setting for the intermediate frequency I was this setting
for the local oscillator and he just sets all the bits properly and that's working super nice
now the problem with this is when I was plotting these charts I was recording plotting
I made a mistake the setting so I do a new recording I play I plot again and I think
Chronos is not fun I mean anyone who's doing MATLAB or new pie knows that I think Chronos
processing is not fun so I wanted to do this with new radio of course and I think too many
people are forgetting that the core of Unix varies the pipe now I was watching these videos
from Brian Chronigan and then he's richy about the design original design of Unix
and very reminded the very beginning of the video a core aspect of Unix is pipes where you have
simple programs that talk to each other through the operating system and not a big bulk
program that does everything wrong so let's do it like this let's say that Tomoji Takasu is right
into a file it's a file I write to a file for and the file for is a file input from new radio
so initially what Tomoji Takasu does is he decodes the data you know it's two stream
for the 2017 and so I created two files and it happens that if you take one new radio flow chart
with two inputs and one output from pocket SDR writing to two files there must be a raised
condition somewhere that the flow chart never starts streaming because the file for only
starts sending data when both ends are connected so I ended up doing two streams and I was
really happy about it because I needed to run two times new radio to plot this chart which
actually look really good I mean this this is the signal this is the auto gain control on the
others input that was loaded on on a 50 ohm load and it looks good but okay I wanted to find a solution
and the only way you can stream the pocket SDR output on a single file is to use the
minus R the row output but if you send the row output well you get the row data so 0123
which are not a bit state but are the row data so let's see if I can get this working so this is
actually my flow chart and the novelty is because you've got four bits for each max 2771
you're going to convert the 8 bits the byte input into nipples for bits then you convert the four
bits iq so i0 i1 q0 q1 into the 16 possible states so if you want to have equities instead
to the rate minus 3 minus 1 plus 1 plus 3 so this is what your chunks the symbol is doing
and once you convert the row data into voltages you have your two streams that you de-interleaf
so if all goes well I'm gonna configure the two max 2771 with the L1 then you can check
that everything is going well by checking the configuration with no option it plots the output
and we can check that both so this is actually the real value that can be read so they're both on the
L1 then then I can run this guy so pocket dump is dumping the data from pocket is r minus r to get the
row data and I send this to a cipher so I have to just show you that this is indeed a row a name pipe
so this is your name pipe that was created using mpff and it's my dump is guy here and
play my new radio flow charge with the same name pipe as the input over here
okay some this screen over here so I need to get this on the way here okay so at the moment there's
no input signal so this is just the rules stream now I connected a puto as r so the puto as r is
just next to here I'm not limited by the same thing rate because this flow charge is going to change
the local oscillator of the puto as r so here we go and you see that already the puto as r is a
bit noisy and if I move around my frequency you do get real time output from your max 2771
only one channel is connected the other one is loaded on a 50 ohm load so this makes the analysis
so much easier because now you have an interactive interactive discussion with your system
and if you don't want to have the funny little shape when you're changing frequency let's just
because I had averaging on okay so that's that's how you can actually super easily interface anything
that talks over as it's aside with new radio just use the name pipe if you want to reproduce
this at home just make sure that first of all you put a this blocker because we are routing
five volt to power the active antennas through the SMA here but if you look at the schematic of
the puto as r the balloon over here is actually this is coupled to ground so the first time I did
this of course the power supply collapsed because I chose to continue the five volt of my max
2771 of a FX12P and secondly you need to make sure that you activate enough remember these are
designed to receive GPS GPS nominal power is minus 130 dBm on the surface of earth now you get
some margin and the compression point of this board is given at minus 100 dBm if you feed it anything
above 100 minus 100 dBm you will start seeing compression the amplifier will compress and you will
see nonlinear behavior so you need because the puto as the r the minimum power you can output
so at full power it's 10 dBm you can have maximum 89 dB attenuation so your minimum output power
of the puto as the r is minus 179 dBm so you must have here I have a 20 dB attenuation to
avoid having unwanted previous modes right so now we are at the point where we know how to use
the puto as the r with it's 2771 we know how to use the scripts from tomato tacaso and we know
how to interface to be radio so now what is the well of course if you're working with GNSS you
would like maybe to be able to position yourself so this is my board on the balcony outside my lab
that's a GPS active antenna only connected to one side and well what makes analyzing this board
when you don't know if it's working or not super complicated is if you remember a GPS satellite
is broadcast in 50 watt and it's 20,000 kilometers away so if you just look at energy conservation
you get something on the surface of your bed of minus 177 dBm but if you integrate turbo noise
so just the fact that you have a 50 ohm load at room temperature your turbo noise is minus 120
sorry your turbo noise is minus sorry this the signal you get is the 50 watt output minus
182 dB losses and on the other hand you've got the turbo noise which is your noise flow minus
174 dBm plus a bandwidth and so basically the GPS signal is 15 dB below the turbo noise so you
cannot see it on a spectrum analyzer so you really need to process the data to see them so you
got various means even if you don't know how GPS works you've got tricks where you can actually
take the auto correlation by taking the auto correlation where the signal is frequency shifted by
the Doppler shift but the Doppler shift if you look at yourself similarity is acting on both
reference and the measurement signal so the Doppler shift will go away so the auto correlation
will show you heat spaced by the chip rate so the rate at which the data are being broadcast
by the GPS and the second trick that you can use that what's talked to me by problem is that if you
actually square the signal because we're using bps k signal your phase which is 0 pi by squaring
it's going to be 0 2 pi and you will see this nice cw signals and each one of the signals is
satellite broadcasting at a different offset frequency because they all exhibit different Doppler
shift so you can have codeless decoding that already tells you okay we're getting something I
don't know if I can decode it but I can get something so you run the record and you run a
pocket this is what my mobile phone was telling me this is what pockets are cost telling me
and you've got gps signal 11 25 28 and you've got gps 11 25 28 so we got consistent measurements
between the pocket SDR and our mobile phone you can do this for e1b you can also do this for e1c
so yeah the pocket SDR seems to be working on the side notes because iridium is just a few
megahertz above GNSS and maybe for those of you who attended CCC you might have seen the latest update
of second Schneider about GR iridium well you just take a gps antenna you get rid of the
past future they're showing how they have the XC antenna but I'm still using my patch antenna
and actually you can change these to a pocket SDR it's not obvious because you've got not
a two-bit quantization and iridium is not benefiting from the post compression of CDMA so it was
not really obvious that the pocket SDR with it's too big I actually would be able to receive
Galileo signals at iridium signals but what you do see is that you can tune the max 271 in the
iridium band and these are 24 hours of if you look at how it works you've got the iridium ring
access so IRAA messages that tell you where the beam is and where the satellite is in space
this is a spectrum that you get from iridium and if you go decoding you don't get that many messages
I must admit it's working much much worse than a B210 but I'm talking about a 20 euro board not
a 2000 euro board so you get what you pay for and so that's for example a couple of
archives messages that I got over 24 hours of recording iridium using the max 2731 and these
match the flight radar tracks of a plane flying from Milado to Torino it's a remember well
well basically over Italy and there's no way a plane flying over Italy in line of sight of
the sun is the friend so that's obviously an archives message that was received through iridium
okay so now we know how to post-process data with GenesisDR we know how to run this through
iridium but maybe we would like to get something real time we want to have a real-time GPS and if you
want to do real-time processing I'm sure pocketed the art and do it but I'm familiar with Genesis
as DR from the Barcelona guys from Carlisle and his group in a technical diversity of Barcelona
so just how do you interface the max 2731 of pocketed DR with with the GenesisDR you've got the
you can read from the file you've got a byte to short that converts the input byte into something
that's usable then you can eventually remove the frequency offset the intermediate frequency that
you introduce to get rid of baseband signal and when you run this either you do it using the
frequency translating feature filter or because we've just seen that we need to press with new
radio you can actually take the outputs of the pocketed DR frequency translate using new radio
and then output I tried outputting in a file using the might of a main pipe trick a second time
and somehow it doesn't work well at all you can not somehow there's something wrong by using an
input pipe and an output pipe so I use an input fifo and the output I took with 0m2 output and it
actually happened the GenesisDR knows how to read 0m2 so actually this is my flow chart for real-time
processing and if you run this you get your real-time processing after let's end two minutes you get
your first position and then you got your output from GenesisDR which is a correct location
Barcelona is located six degrees east 47 degrees north okay so now we are able to run GenesisDR
on the pocketed DR and we get real-time messages so far we've just done the same as we did with
all our other receivers now some of these data have been stored on IQ engine and very important
whenever you're storing binary streams make sure that you time tag or that you tag what you did
what was the data format what was the game what was the receiver otherwise I mean you're generating
40 megabyte per seconds you're generating something like 60 gigabyte per hour so you don't want to
feel your disk with data that you don't remember what they are so CIMF is providing a framework
for making this so here we have complex integer 8 bits it's recording the E1 band and if you want to
play yourself you will find on the IQ engine size that you can run for over processing I if at the end
you someone wants to see it you can run the data to get an IQ engine I wanted to do a demo
but I'm running out of time so you can actually do a cross correlation you can do the auto correlation
you can do a squaring and everything I showed you using post processing in MATLAB you can do very
easily in or nicely in Burego so as I was doing this I wanted to cross correlate the signal I was
recording with the data stream that I collected on the MATLAB data set and then I wanted to
upload these codes marklish man told me but I don't want to put some code that we can regenerate
can to do the generation of a code by yourself rather than putting the data on IQ engine.org
and surely enough because it's all written the generators are written Python and you can
irrade your you've got the Python block well you can actually copy paste in the Python block
the generator that you find on the guitar and if you just look at what it looks like
I just took the I don't talk much Python but I can just copy paste and you take the Python
block to generate the code and instead of keeping the streams as a binary file you actually regenerate
so you can actually do all your analysis and gradient we generate the data and you can actually
do because you've got access to the raw IQ stream you can actually do much more clever things
for example when you're looking at the GNSS signal from two antennas well you know that in a
genuine consolation all the signal should be coming from different direction so if you take the
difference of the phases from the two antennas you should have all phases from all satellites
detected by the frequency offset of a Doppler shift at different phases
but if you're under spoofing meaning that you have a single emitter broadcasting all the
constellation signals there is one thing you can spoof its physics the phase difference between
two antennas is determined by the plane wave angle of arrival and so this is your spoofing detection
using the max 2771 dual board you've got all the phases coming from the same place and that's
makes really nice because it's low power really small as a spoofing detector so this tells you
that you can use the two bits a two-week converter for spoofing detection now another thing is time
transfer as I was visiting my colleague at a tech we were collaborating GNSS antennas and it came to
me that what is a time delay of this chip can I reproduce on the chip what we did with
he's on real data on real signal so you've got these two outputs you take your your max 2771
you connect them to the same antenna so same location you feed them the same data you generate
sort of random signal yes sort of ranges and my colleague GNSS and his friends from the
juris project they made an amazing set of tools that allow you to manipulate Rinex files so you
have the output of GNSS R whose tender format is Rinex and using the tools from the home you can actually
operate do operations on these Rinex files for example you can make a difference between two files
and if you take the difference between two Rinex files of a collocated system which also happens
to be clocked by the same signal you just got something which is a time delay between one receiver
with respect to the other basically we have something like six nanosecond and standard deviation
of about five nanosecond between the two to the ranges you can do a lot of things you can actually
generate using the Jill rest tools you can actually convert the Rinex into a CSV which allows me
to do statistics to load them in octaves to do much more okay so this was done between two max 2771
I actually did the comparison with a U-blocks receiver and somehow because the U-blocks and the
genes in the max 2771 are not clocked by the same source you see that the total ranges are drifting
over time but surprisingly enough and this I don't have the answer if anyone knows all of the
total ranges from the U-blocks receiver with respect to the max 2771 all the satellites each different
satellite was offset backends I don't know what the 16L second is and I don't know why but here
you have one satellite so the range is super stable when to remove a linear drift and all the satellites
are off by 16L seconds so I play but I can measure a time offset of six nanosecond plus or minus four
nanosecond using these total random sequences am I right well what I did is okay then we can put a
bit of cable between one and ten and the other and can we actually measure the length of the cable
using the signals well yes you can actually you initially I had two SMA connectors then I took
all the cable that could find the lab so two meter four meter five that eight meters and
these are the measurements the crosses the bold lines are the mean value and you see that actually
you get results that are consistent with speed of light in a quadro cable of 20 cm per nanosecond so
yes you can measure a cable then using a dual GPS receiver so this actually concludes
this project outcome we can actually assemble a high bandwidth low bit resolution dual frequency
dual coherent receiver so many amazing paths one of them is all radios radios astronomy all
telescopes it's something that you can reproduce and you can even do a university so this concludes
everything I had to tell you if you are curious about some of the topics I still have to make a
bit of advertisement so as of end of year we released some textbook about new radios some of the
topics I discussed here are including the book so feel free to enjoy it as much as I enjoyed
writing it and with this I thank you for attention