 Ok, więc to będzie prezentacja o frekwencji hopuń dla SDR-based GSM Mobile Station. Frekwencja hopuń to to, że jest jeszcze trochę straszne dla niektórych ludzi. Próbowałem to rozpoznać, a will share my experiences with you. Pierwsza, bardzo krótka introdukcja o frekwencji hopuń. To jest frekwencja, która jest frekwencją frekwencji na radiu linku. Przez to prezentacja będzie szczególnie o ślubym wersji frekwencji hopuń. To znaczy, że więcej niż jedna z symbolów konsekutów jest transmitowana na same frekwencje. Jeśli tylko jedna frekwencja jest transmitowana, to zrozumiesz frekwencję kompletnie. Więc tutaj, jeśli masz mnóstwo frekwencji na niektórych frekwencjach, możesz jeszcze pozostawić dobre recepcje na tej spotkanie mobile stationu, i w tym sposób możesz trzymać frekwencję. W tym samym sensie, jest też mnóstwo frekwencji, które differają przez różne radiotalne, które są dostępne, ponieważ signal-to-noise-racio może wydarzyć się na niektóre radiotalne, na inne radiotalne to może być lepsze. Frekwencja hopuń w GSM, z punktu widzenia mobile stationu, to jedna zmiana frekwencja per frekwencję TDMA. I ta frekwencja hopuń jest wytrzymała w 0,52 gpp spec, i terminologii, która jest używana, czyli jest to mobile allocation, set radiotalne, które są allocowane przez pewne konekscje. To jest frekwencja hopuń, generator numer, też mobile allocation index offset, który jest okrewalentem kanału, w przypadku frekwencji hopuń. Jedna zmiana, jedna konekscja, jedna mobile allocation index offset, druga zmiana jest druga. Więc ten mobile allocation index offset i hopuń sekwencji numeru, razem z frekwencją, są używane do generacji mobile allocation index, który jest używany do selekcji frekwencji z frekwencji mobile allocation set. To jest algorytm, który wytrzymałem w TDMA. Nie chcę wytrzymać do tego, ale ważne jest, że na frekwencji hopuń zero jest jedna zmiana z frekwencji hopuń. W kontekście frekwencji numeru pozostawimy z frekwencji mobile allocation i po ostatnich frekwencjach od początku. W przypadku różnych hopuń sekwencji, generator numeru, wytrzymałeś tu rądu numer, który jest generowany z tej przystąpieniami z frekwencją i rądu numeru, który nie jest tutaj. Zresztą zresztą z rądu numeru pozostawimy z frekwencji. Wytrzymałem różne opcje na implementację frekwencji hopuń z względu na to, jak to jest implementowane w kategorii i wytrzymałem w analogu. To jest opiekanie w rądu analogu rądu, rądu na frekwencji. Wytrzymałem w digitalu rądu, który może być w rądu digitalnej formy generatora. Możesz wytrzymać w grze, wytrzymać na ból. Możesz też używać mnóstwo transmitorów, nie otrzymaj ich, tylko otrzymaj frekwencji. Możesz otrzymać wsparcie frekwencji, które są zainteresowane. Na analogu hopuń jest wytrzymać oszulatów lokalnych na analogu. To jest wielkie przykrożenie, że nie ma żadnych komputacji na pc lub na sdr wytrzymać. Ale trzeba oszulatów lokalnych z szybko utrzymającym opatrzeniem. Zresztą sdr musi być wytrzymać frekwencje w praktycznie definitych momentach. W swoim szczególnym sdr nie ma tych rzeczy, więc jesteś wytrzymający i nie ma analogu opatrzeniem. Możesz też opatrzywać w digitalnym domenie na pc lub na sdr jest wielkie przykrożenie, że możesz wytrzymać wytrzymać nie ma żadnego wytrzymańca. Ale trzeba komputacji na pc, bo musisz odtrzymać wytrzymający opatrzeniem. Zresztą jest wymienione z opatrzem sdr i pc. Możesz opatrzeć wytrzymać na sdr wytrzymający bardzo szybkie przykrożenie, ale limitowane przez szczególny algorytm który jest wytrzymał w FPGA. Więc jeśli nie chcesz wytrzymać wytrzymający inny. To wielkie przykrożenie, że nie ma komputacji wytrzymając ale też ma wiele opatrzem z sdr wytrzymający wytrzymający modernne opatrzce, nie jest wielki problem, np. za x310 usrp ma maksimum 160 megahertz i jest wystarczająco opatrzeć gsm 900 i gsm 1800 opatrzem jest 56 megahertz i jest wystarczająco opatrzeć gsm 900 i gsm 1800 opatrzem i wytrzymający opatrzem z sdr wytrzymający wytrzymający algorytm wytrzymający wytrzymający i opatrzem jest implementacje na pc np. w radio jest sztandalizacja opatrzem sztandalizacji sztandalizacji sztandalizacji usrp x300 ale też ma wiele komputacje niepotrzebne z opatrzem mobile z opatrzem base opatrzem base ale tutaj opatrzem mobile nie potrzebuje wszystkich kanałów tylko jedno więc nie muszę używać tego opatrzem potem możesz opatrzeć mnóstwo transmitorów żeby opatrzeć opatrzem mobile więc nie musisz opatrzeć jakichś lokalnych oszczelni ale to wzajemne koszty a tu jest dodatkowe opatrzem żeby wytrzymać wszystkich sdr preferujących sdr to powinien być zbierające sdr transmitorów i sdr rtl zbierające ich mnóstwo rtl a tu jest zbierający sdr zbierające koment mnóstwo sdr rtl zbierające zbierające zbierające zbierające zbierające jest zbierające frekwencje które mogą być zbierające i są zbierające ale dla FL2K nie wiem jakaś implementacja i nie chciałbym zbierającać wszystkie te rzeczy przed anym opatrzem nie chciałbym używać tego approaches ok zbierające testy zbierające i pierwsza była 11 lat zbierająca to jest właściwie historia zbierająca frekwencja zbierająca 8051 kompatible zbierająca 1 timer interwept frekwencja zbierająca gsm i mnóstwo tutaj widać transicjonalny period i jest około tdma i może być używane do moiby zbierające ale dautor board nie jest zbierająca to jest tylko record historyczny i dla modern sdr hardware wypracowałem testy wypracowałem zbierająca transmit port zbierająca do 30 db atenuatoru tutaj zbierająca zbierająca zbierająca usp hardware frekwencja zbierająca dsp frekwencja zbierająca zbierająca 50 milisek zbierająca zbierająca frekwencja zbierająca frekwencja zbierająca ale pewnie zbierająca frekwencja i testy 310 z ubx 160 db frekwencja zbierająca zbierająca 2 zbierająca to jest wypracowałem transmit periodu dla wielu opc na samym spotkaniu i możesz zobaczyć, że zmiany zaczynają zbierające 80 ms coś z 100 ms coś z 100 ms ale mogę powiedzieć że na pewno nie jest w porządku na przykład jeśli jedziemy do 100 jeśli jedziemy do 1.5 GHz to zmiany będzie bardzo świetne nie pamiętam dokładnie ale to jest 10 ms więc nie możesz od gsm 900 do gsm 1800 band w ten sposób ubx 160 db some things like 500 ms switching time but it's really varies depending on where you hop, where you change over which frequencies you change this is test for b210 and I put a different figure i w tej czerwonej strzele w rostrze wytrzymający cygnał. W tej czerwonej strzele w tej strzele są trwania. Jeśli jedziecie tylko jedno, to może nie tak długo, ale wytrzymając, że nie są synchroniczne, to nie ma znaczenia, które są rozszerwone. Wytrzymający cygnał nie ma znaczenia, żeby nie było znaczenia. To nie jest dobrze, bo B210 to naszym głównym targetem, więc może coś innego nam pomaga. To coś innego, co jest digitalne na SDR. To jest tak samo, jak na X310, ale w tej chwili masz jeszcze krótki czas trwania. To nie zero, ale nie potrzebujemy zero. W tej chwili masz wytrzymający cygnał jest około 15 mikrosekutów, więc nawet to będzie kilka razy dłużej. To jest jeszcze dobrze. To jest ten metod, który został używany. Wytrzymający cygnał, jak mówiłem, UHD wprowadzi wytrzymający cygnał, który pozwala na kontrolę w różnych setach USA-P, a wytrzymający cygnał w bardzo dokładnych momentach. Jak używamy gnu radio na implementację transcyfera, bardzo ważna rzecz jest, że załatwienie komandów, exposed to Ignoradio True, takes commands in stream tag API that is exposed in UHD sync. You can send stream tags to the input that have key ticks command and you can switch frequencies this way. You can also use command inputs in the USRP sync and source blocks and send messages that will control the frequencies this way. As for stream tags, they seem at first to be very convenient because you can just attach frequencies that you want to use for transmit and receive site to the transmitted burst, but what if situations where there is nothing to transmit and you still want to receive something. You won't be able to switch frequencies in this situation. So we decided to use messages and one best message can be used to control both transmit and receive frequencies. But in Mainline, Ignoradio, it cannot do it simultaneously, so I extended Ignoradio so it is possible but it's not in Mainline yet as of now. Implementation is based on addition of Ignoradio block that does frequency copying tracks current USRP time and generates with some advance frequency change commands to USRP source. And the format of this message is here. I'm putting it here because it wasn't very straightforward to find out this format and even example in Ignoradio got it wrong. This was flow grab that was used for the tests that I've shown. So there is some sine wave generator in Ignoradio and output to USRP sync. And here is hopping on Ericsson TX site done by Frequency Hopper. So for testing of frequency hopping implementation, I decided to use a recording of a call with frequency hopping that I had. Here is for the record description. Most important part is this mobile allocation and hopping sequence number zero. So there is simple hopping done in this case. And this is an overview of this recording after channelization. If you look at it, not much can be seen but I highlighted the frequencies from mobile allocation. So here you can see a little point that something is transmitted then on next frequency in next frame then in next frame on this frequency and then so on. So I selected only these channels from mobile allocation. And here you got whole frames and after zooming in even further to only time slot zero you get something like this. So I can do the hopping of this in octave and I did it to assemble the signal with following amplitude. So all of the interesting frames in one signal. And now can we play audio from this recording? Just for testing if it's a good test signal. Przyjmuje wiadomości. Ok. I can do it again. Ok, so this is some automatic response that voice box voicemail is full and doesn't accept any new messages. And so the signal is good for test. Now can we do the same as I did in octave but this time with use of USRP. And in this case wideband signal that I recorded previously was played again to USRP and received back by doing only receive side hopping, dehopping. And on this side there is this, here there is part for decoding and playing the sound of this recording. So this is missing in here. Now I will try to use USRP this time to play, to do dehopping and let's check if it will work. Przyjmuje wiadomości. Ok. It works. There are some clicks but yeah, yeah, yeah. Or overflow, I don't know. And yeah, so it works, it's great. On the receive side we've got working hopping with use of USRP B210. And now can we do the same on transmit side? So this time there is also transmit side hopping being done. And now a signal after dehopping is played. So this is now narrowband signal. If I run this flow graph, let's check how it will work. Przykażewania tego jest pełna i nie przyjmuje wiadomości. I there are even some decoded control messages from traffic channel printed here. Ok. So yeah, so frequency hopping definitely works. And now what is left to do? We have to somehow connect messages with hopping parameters from upper layers that will configure the hopping block. We need some way to automatically synchronize frame numbers and USRP time. And for this also what is important is synchronization of sample frequency with BTS. And for some devices like Lime SDRs or XTRX or USRP B200 Mini it might be easier because VTXO is tunable with use of a DAC. So you can tune it. The frequency of VTXO is closely synchronized with base station and you can treat your USRP source of time. But for other USRPs and other SDRs correction has to be done in software and at the moment it's still a bit painful. I got ideas how to do it. I got some half-baked implementation. And some difficulties are for example translating some events that are happening like frequency change moments to USRP time. Because it's not synchronized with frame clock so you have to do conversions. Another additional difficulty added by GNU Radio itself is that string tags position is not handled correctly by GNU Radio. When resample rate changes and we have to use resampler to change the sample frequency. So these cards implemented resampler that does tag propagation right. But there are still some pieces that need to be implemented. So this is the end. I only want to say that the work is sponsored by Annelette Foundation. This is a small foundation that funds open source projects that extends user privacy for private communication for open standards. And things like that. You can check on the web page of Annelette Foundation and the next deadline for submitting ideas is first gen. So the only short proposal is needed if you have something in mind. Feel free to submit it. So this is all. Thank you. So could you explain a bit more how all the frequency hoping is specified on the specs? Let's say so. Like how do you configure it? Like how many ARC ends or if they need to be one to each other. So the limitations or... You mean if they have to be somehow consecutive or... Yeah or like how many of them can you use or this kind of... Maximum 64. Nie wiem jakiejś limitacji. I don't know any other limitation. I probably in practice also in one... There should be in one band. But I'm not 100% person. Yeah, it's hard to say it's... Did you look at using the B210 fast hopping feature? I look at the datasheet but not think other than that. I tried to use what is available from A2s and didn't go into that yet. OK. If at some point you want to look at it, just ask me because I looked at it and implemented fast hopping already. And you can definitely get timing times, switching times under one time slot. So it's better than what was on that slide. You can get it synchronized. Yes, it's basically... I mean you need a custom FPGA image and some custom code and stuff like that. But I'm not sure how... The general idea is that to save the... Because by default B210 doesn't support time command at all. At least for the ADI. That's why you get random stuff. It only supports time command to the FPGA. This is a limitation of the chip itself. I mean it's a limitation of how they implemented the FPGA. Because the tuning algorithm they use for the ADI has a lot of back and forth between the host and the... OK, so everything goes through the post and this is the reason for this variation. Yeah, but what you can do with fast tuning is that you kind of preconfigure all the... You tune the FPGA to frequency one, you read all the registers, all the calibration registers, you tune it to frequency two, you read all the registers, you do that for all the frequencies you're predicting you're going to need to tune to. And then you can tell the ADI to... OK, so there's no limit on the number of... In hardware it can do 8. But if you want more than that what you do is that while you're using register set one from the host you load register set two in advance and then you use a time command to switch to register set two when you're ready. So you need just two of them. To do a ping-pong kind of thing. So the first time you played you manually decoded wideband capture. And then the second time... The second time was live decoding by the components. This was transmitted on the USRP. The same USRP, so I had at least perfect synchronization. I didn't have to do it myself. But yeah, it was done with use of RF hardware. Yeah, but I was sort of wondering where is the signaling for the frequency hopping in that wideband... No, everything is at this moment done by hand. So the synchronization I can show you here there is some skip hats just skipping some number of samples so the receiver gets first time slot on known position. And yeah, there is no synchronization yet synchronization itself is not... time synchronization is not that hard but keeping it over time it's more tricky. Okay. I'd like to do two questions for the MS if this code could run in a normal baseband GSM chip if it would be... if the chip would be capable I don't know, Calyps or any chipset. And as I see the frequency hopping is made in a deterministic way and the purpose is to improve the RF performance of the terminal. Yeah, there are some people that still claim that it has some impact on the security against snoping but it's it's not true. Yeah, it's deterministic. But this could be changed, right? You could have a key that only the two parties, let's say the BTS and then the frequency hopping would not be known by someone sniffing the channel so you could use for security. Just like military radio, the frequency hopping you don't know which frequency you go to unless you have the key. This could be easy to adapt to your code to the unknown... One issue with... I mean, if you do it when you go in the city but that's a problem with... An issue with a randomized algorithm like that is to guarantee there is no collisions between two... two MS talking. The algorithm that they came up with guarantees that of course all the allocation will... you don't lose any capacity and there is no collision ever despite the random nature... random nature. If you use a cryptographic key trying to ensure that two MS never conflict and talk at the same time at the same frequency that's gonna be a little harder to... The cost would be some capacity because you have to preserve... I'm thinking from another point of view maybe... If you use this kind of approach also in a more or less crowded spectrum without a license this could also make your calls work even if some frames get lost because it... It depends because... GSM channel coding was designed for some particular threads that are... You can find in GSM link and probably some other users transmitting on the same frequencies might not be one of them at least not some powerful transmissions that can jump your transmission. So, I just don't know maybe it could work. Do you think this can run in a normal baseband GSM chip? It already supports. Okay, thanks. The problem that it basically works inside baseband... We said your things are a bit more complex than with some highly optimized for GSM basements. In the phone you have the RF chip directly next to the baseband processor and in the calipso you have this TPU the time processing unit where you can basically issue commands to the RF on a digital level serial commands in parallel GPIO toggling synchronous to the GSM frame clock so you have this very direct link to control the RF chip and the RF chip is of course designed for GSM so it will have the fast retuning capability that is required so that's why it's so easy in a phone in quotes compared to an STR. There is also neighbor measurement task and you have to switch when faster like in case of frequency hoping you have a single TDA may frame to switch frequency but in case of neighbor measurement you only have like three time slots to switch to some particular ARFC and measure the power quickly probably try to decode synchronization burst and go back, that's the point and probably you can also do this neighbor measurement during the frequency hoping so that's a huge sequence of changing frequencies here. Also if you take a look at us we try to GPRS and specs and it even gets even more complicated in terms of what the phone has to do in terms of re-tuning and then not only that but also processing what it's seen on other frequencies and then get back in time to get back to where it's supposed to be and do what it's supposed to do then it's really quite impressive. GPRS is kind of TDA may inside TDA may ok, so thank you for your attention.