 My name is Robin Getz. I'm actually with analog devices. Today I'll be talking about the little SDR that we made, primarily targeted education. What I'll be talking about is, you know, just a little bit about the software support and then doing some dumb little things with it because it is kind of a unique device at its price point and the performance is actually very good which means you can actually do some interesting things with it. But it does have its downsides and I'll go over that as well. So in terms of why analog devices does this, so analog devices is a $5 billion semiconductor company. We actually make the chips that go inside here so we kind of look at this as a valuation platform for some of our devices. We put it in a nice plastic box because we really target this for students, for learning. It's really not meant as a professional software-defined radio platform. That's why we did call it Pluto because it is the Dorf SDR. So it captures IQ, it's 12 bits, 65 kilosamples per second to 61.44 megastamples a second, 200 kHz to 20 MHz of signal bandwidth, sends it to a PC over USB 2. And right now it's still at a $99 introductory price. As soon as they are in stock for more than two months, the price will go up to $149. And for people who have ordered them, we have run into some manufacturing issues. We had a first couple thousand in stock and they sold out much faster than we thought they would. So what's inside it? There's basically a 9363, which is kind of a feature down version from the 9361, which is found in a lot of the USRPs. And a Zinc Single Core 7010, which is again, it's an FPGA plus single core arm. And then really it has DDR3 flash, the USB-FI. So one of the reasons that we did this as well was just to see how small of a design and how slim down of a design that we could do. So we basically got things down to 72 parts on the bomb. That's actually, we can make it relatively cheap. I do have a version not, so this is a non-functioning version, so there's no point in stealing it. You can have a little passage around as long as I get it back in the back. So all of the design is open, the Gerbers are open, the Schematics are open, the Allegro files are all posted. It passes FCC and CE tests, and I'll talk about what that really means to us in a second. And it does actually achieve data sheet specs. And is compliant to the USB spec in terms of the power that consumes. So when I say passes FCC and CE, what does that mean? To the manufacturer, this is a capture and playback device. It's not a radio. The end user makes it a radio by passing a waveform through it. And radios need certification. Playback capture devices need to accept interference and not cause interference. So in terms of the FCC, people who are familiar with that, all we verify is that when you blast it with EMI, it doesn't cause problems, and it doesn't emit things that it shouldn't. When you turn it into a radio, when you plug it into GNU radio or into MATLAB or your favorite environment and start pumping waveforms through it, it's up to you to make sure that it doesn't violate your local laws, whatever they may be, because it is very different country to country. Which is why when we ship this, we also include an SMA cable so that if you're doing something at a frequency that you're not sure of, you can actually just tie the receiver to the transmitter and see what kind of imperfections those kinds of things you can get. Because basically what the FCC says is use good engineering practice. If they find you aren't using good engineering practice, they will find you $15,000 a day. And I'm sure at each different country, there's a similar kind of thing. So this is actually the device that's inside, the RF device. So it has LNA mixers, amplifiers, internal analog filters before the ADCs, digital half bands and a programmable 128 tap fur, and then there's the FPGA and the ARM processor and USB and all those things. But it has a lot of things in here to actually correct the imperfections that we're talking about in the last talk. So it actually has like an IQ correction, DC correction, all those kinds of things built right into the chip. And this is what the performance looks like. So this is basically connected to $500,000 of test instrumentation and getting an EVM of MINI's 46 dB. So it's hard to tell here, but this is actually 64 QAM. And EVM is the measurement of how close the actual dot is to exactly where it should be. And EVM turns out to be about minus, or plus or minus about 0.5%. So it's very, very accurate, both on the receive side and, or sorry, the receive side and the transmit side. It is a learning tool for education. It's, we spec the temp range from basically 10 to 40. The parts that we use in here are 0 to 70. But the oscillator inside has like a third-order polynomial from 0 to 70. So we specify it from like 10 to 40 because then it's in the linear range and it's easier to correct. The FP, it is just USB 2.0. And the FPGA size is tiny. So we use about 40% of the LUTs and I think it's about 80% of the DSP slices in here. Although we are moving from poly, inside here is a DDS. So if you want to send a tone or do something like that, you can just tell the device to send a tone. You don't actually have to create it in your waveform generator and go from there. The software stack is based on IIO. So when you plug this into your laptop, and I'll show this in a second, it shows up as multiple different devices. It shows up as native IIO, which has been talked to, various Fosnum talks in the past. It shows up as serial, it shows up as Ethernet, it shows up as mass storage. And you can put this, if you brick the device for some reason or put a kernel in here that doesn't boot, it'll recover into DFU mode so that you can then load back the kernel, or a working kernel. So if I can take this and plug it in and bring a console up, bring it over to this side. So let me see. And the root password is where I am, super narcissistic, so the password is always analog. So it comes up as a USB mass storage device, this is a SCSI device, and up there at the top was the ACM device, the serial. So what we can do is we can run Kermit, your favorite serial console and just tell it to connect to TTY ACM0 and type in the password of analog. Type in root, analog, and here's this actual device here, I can check that by uname minus a and I can see it's Linux on Pluto, I can cat proc CPU info, cat proc CPU info, and I can see it's a single core Zinc, and so I can play with it from there, I can get out of Kermit, I can bring up my filer and it shows up as a mass storage device if I want to update the firmware, I just take my firmware file, throw it on here and then do eject, and then it'll automatically update the firmware, so you don't have to use DFU, there's no special tools to install or anything like that. If I want to find out what's actually running on the device, I can look at the info file, which brings us up over here, so I'll move that over again, and it tells me a little bit about the device as well as where to get started, it tells me that I'm using the latest firmware release, what all the different versions are, what version of U-boot, configuration settings, so that's how it comes up on the network. One of the things that you can do as well is connect Wi-Fi dongles to it, so the most popular Raspberry Pi Wi-Fi dongles, we can just plug in to the USB piece, we can plug in the battery and it'll boot up and get on the wireless network, and then it can send stream basically anywhere across the internet, which is kind of neat. As well as wired Ethernet, if you're using a wired Ethernet adapter, which supports most of those as well, from the default firmware. Let's see, let's go back to... Okay, so some of these kind of use cases, it'll hook up to your host, and that can be Linux Mac Windows or embedded Linux. It can connect up to your thumb drive, which is awesome, I actually have one of these, I had to buy it. Power from your battery or your USB solar power, LAN, and this is just a LAN power adapter for PoE, Wi-Fi with a car cigarette lighter, and we support all of these kind of use cases in the default image. One of the things that we don't do that could be done is you could actually plug in a USB speaker and power it, and then you know, use your FM radio or whatever you wanted to decoder to get direct audio from the Linux side. So, one of the applications is the IO oscilloscope. That is called OSC, and which is just a small GTK application. Oh, that's up over here. So, it basically lets you play with the super basic pieces of things. So, you know, I can go to FMcoms because it was based on a few FMC boards that we had made and changed all the receive settings, the transmit settings. And it gives you basically access to every different piece of the device, including like the FastLock profiles I was talking about in one of the previous talks, like there's the quadrature correction, those kinds of things. And it has too many, there we go. So, let me just quit out of here because you can kind of see what it's trying to do. Let's get back to the right slide. So, it's also supported by GNU Radio. So, let me, and this is a little demo that I showed at the GRCon. So, this is basically, it has GNU Radio blocks there's a sync block and a source block and I can run this and, oh, here we go. And it shows up Phosphor. But one of the things that it does is, so on the top block I have a TXLO and it's receiving the same frequency as it's transmitting it because it's at, I put this harmonic because one of the things inside, almost all SDRs is, in order to get that least amount of jitter is we like to take the clock, turn it from a sine wave into a square wave. So, inside the device itself, the LOs that are running around at 1 GHz or 6 GHz are square waves. And what is something you should probably never do with the square wave is put it into a mixer because you're going to have all these kind of harmonics. Square waves are infinite harmonics of sine waves. So what we can do is we can actually come here and change the harmonic and we can look at the third harmonic that we're transmitting at. And this is actually what we're transmitting at 3 GHz. And this is not on this device. This is actually the same front end is actually on the B200 Mini. It'll do kind of the same thing. And the reciprocal is true. So basically we're transmitting at 1 and we are receiving the third harmonic of the transmitter. So I can also transmit at 1 GHz and show you that if I put in basically the third harmonic of the receiver, the third harmonic of the receiver is going to be 1 GHz where I'm transmitting. So I get to receive when I'm supposed to be receiving at 333 MHz, I receive at 333. I receive at 1 GHz. I receive at the fifth harmonic. Every odd harmonic I'll be receiving all of those frequencies all at once. And hopefully I'm close enough that the signal I'm looking at is actually loud enough. But let me come back to the flow graph. Hit the stop and close. So that's a new radio. It also supports GRQX. There we go. So GRQX also supports SDR Angel, which for those people who are unfamiliar is all written in C and C++ cross-platform. It actually works pretty well. Supports MATLAB for those people who want to do that. For us, the most important thing is the textbooks and the content. So if you are an educator, we actually do have textbook material for labs and those kinds of things. It does run embedded Linux like I showed inside. It has about a two-second boot time, build route, busy box. There is a button on the case. So if it does get bricked for some reason, doesn't want to boot, you push the button, plug it in, and it'll go into DFU boot mode. Building up the firmware images are pretty standard, as long as you have all the prerequisites available for you, which are pretty specified on our wiki. Building up the file system, busy box, adding files. So one of the things we can do right now, if I can turn it this way, is so what I've done is, on the default image, I have dump 1090. And what I'll do is I'll cross-compile that for ARM, transfer it over to the device, and then run it directly on the device. So I think I've already cross-compiled it. So it's sitting here. I just have to scp it over. Oh, that's not it. scp dump 1090 to route at 192.168.2.1. Oh, there we go. So now if I... Oh, yep, sorry. Yeah, okay. So every time you boot the device up, it gets a random key for SSI or for SSH, and then you have to either remove the key all the time or tell it not to keep track. And that's usually what I do. And the password again was analog. And then I can SSH to analog. And this is the Pluto. And I can CD into route. And I can see the dump 90. And I can run dump 1090.net. And it's starting to run here. I can go back to my browser. I can do 192.168.2.1.80. And there it is. And it's starting to see airplanes. And if I click on it, it'll tell me what the airplane is, just like dump 1090. So dump 1090 again is running on here. The only thing that's going across is actually just Ethernet traffic. And if I'm really concerned about things, I can flip back over here, bring up another terminal and SSH over here again and run top. And I can see that it's 80% of one core. The only core. Yeah. Let's see. So I can quit that and quit this. But let's see. Back to here. So QRX, Matlab. Oh yeah, I guess it was a little ahead of this. So one of the other things that can be done is, it is very cross-platform. Oh, this didn't turn out very well. It does run on Windows as well. All these things will run on Windows. The docs are available, but like all engineering projects, documentation always needs work. So if you do have questions about stuff, feel free to ask. Support model is all online on ADI's Engineer Zone. One of the things you can do is because this is an OTG device, like we talked about, there's an auto-mounter that's on here. You can run scripts directly from the USB drive. So you plug this in. Plug this into the battery. And what it'll start doing is, it'll start running all the run-me scripts that you have on here. So it'll come up and it'll start blinking and it'll mount the thumb drive and just keep going. So you can then rewrite the button daemon to do whatever you want to do, like capture things at this frequency store onto the mass storage device and then put this into your pocket or backpack and kind of run around while you do your wireless survey. And it's only this big, which is pretty interesting. So this is the default file for the input daemon and you can basically reroute it so that anything you want, you can do no problem. So one of the things that we did was basically just to set up a CW so that you would start broadcasting from the CW and then we'd use this as a target for our angle of arrival type tests and those kinds of things. The other thing that we did was cell phone jammers are becoming more popular. Everybody loves to have a cell phone. Nobody likes to listen to everybody else's conversation. But cell phone jammers, there's like, I literally counted about 25 different websites selling cell phone jammers online. Super illegal. Yeah, super surprising, actually. I called the signals right away. No, this is their description. You know, the handheld selectable cell phone signal jammer and Wi-Fi jammer and GPS jammer. Yeah, the website is called jammers.com. But, you know, so that's their version of the world. The FCC version of the world says, if you do this, you will go to jail. Because it's, you know, jammers interfere with everybody from law enforcement to 911 calls to these kinds of things. And what's happening is that there have been some retail stores in the United States that have been found using these because they don't want people to pricecheckamazon.com when they're in the toy department. So you can use this to see where those things go because we actually did buy one of these. We, you know, figured out how it worked in our end process of actually just making a jammer detector so that you can, when you don't need to see these signs to go ahead. So I think this is where I'll probably wrap things up. If anybody does have questions or wants to see it working, I think at, no, no, no, I was going to say it's 430. There's the bring your own radio piece. I wanted to give a plug for that. Is that 430 or is it? No, it's 5. 5? No, it's 430 because we have to finish at 5. Okay, so it's at 430. So I'll have this and be playing with it and everybody wants to come. You can definitely have a look. Can you bring like 20s? Unfortunately, yeah. I didn't have very many, so. The other thing, a lot of people ask the output power. We limited, we didn't put an amplifier on here. It only comes out at 0 dBm and I don't want people doing dumb things by accident. So what we do have for people who are, can use good engineering principle is we do have basically a half watt little amplifier that'll plug right on here and be powered from USB or any SDR from that matter. And, but this has a 2.4 gig soft filter on it. So it doesn't, it won't broadcast anything and that way you don't have to worry about the third harmonics or anything like that. So, but anyway, does anybody have any questions? Yeah. See if you run software inside the sync itself. Because I mean lots of USB SDRs have the problem with USB latency if you're interested in low latency. So what kind of latency you can see in this device? So the latency, so Lars could probably talk better but the latency is probably determined by the length of one buffer. So depending upon how many samples you want in a buffer, so all this is based on pretty standard infrastructure in terms of, you know, the radio device itself is a device. It's connected to a DMA and then you DMA that into memory and you would get notified when that DMA transaction was complete. No, without USB. Without USB, yeah. Yeah, yeah. So with USB, so what ends up happening is the buffers go into memory from being captured. That happens with DMA. And then from there it's just pointers get passed around. So the overhead of actually using the infrastructure and getting things over USB, the limit is USB. It's not CPU, mem copy or anything like that. Yeah. Like your analog ICs, it has a separate RX and TXLO. Correct. Is there any way to have a single LO for that or use a sequential network analyzer? The, yeah, so let me see. I think it was like, does this work here? Yeah, okay. So if the question was, oh, I gotta go back up, sorry. The question was in the device, how many LOs are there and is there any way to tie the LOs together? So in the device, there are two separate LOs. They can be driven externally, but on this device there's a transmit SMA and a receive SMA and these balls on the device are not pinned out. I think on a device like some of the USB RPs, these would be available for people. We're going to have to drop that. Yeah, yeah. Yeah, absolutely. Thank you very much. Okay. Thank you.