 Hey everyone, today I'll show you how to setup a Raspberry Pi Cubesat Simulator. Now this setup might go a bit quick, so feel free to pause and go back if you need to. I've also posted these instructions on github so you can copy and paste the commands. The first step is to download the Raspin OS and write it to the microSD card that will act as the Raspberry Pi's hard drive. I use Rufus for this, but there are many other tools capable of writing the operating system to the card. Be careful when you're writing to the card that you don't accidentally nuke your hard drive, just make sure that the microSD card is selected. Once this step is complete, you'll want to eject your microSD card and then reinsert it back into your computer, so that a drive called boot appears. Next create a blank text file called ssh.txt. Then you'll want to remove the .txt extension so that the file is just a plain SSH file, as you can see in this picture. This simply enables SSH on your Raspberry Pi, and this will allow you to access it without a monitor, keyboard, or mouse. Now once the file is created, eject the microSD card and insert it into your Pi, then connect networking and then power to the Raspberry Pi. Once connected to power, your Raspberry Pi will boot up. We'll now attempt to find it on your local network. Open up a command prompt and type ipconfig as you can see in this screenshot. Hit enter and look for the line dnssuffix. There might be a lot of information here and so you might have to scroll up. But as you can see for mine, it's local domain, and the default gateway is 192.168.11.1. You'll now attempt to ping the Raspberry Pi by issuing the following command. Replace local domain with your dnssuffix, and with luck you'll receive a ping back. For my system, I'll type ping raspberrypi.localdomain. Once you have the IP address of your Raspberry Pi, you'll install putty or another SSH client of your choice. You'll then use the default credentials Pi and Raspberry to log in all lowercase. Now that you have secure access to your Raspberry Pi through SSH, the first thing you'll want to do is to change your password and make sure your Raspberry Pi is fully up to date. Keep in mind this process may take a while, so be patient. I'm going to skip through this long process in the interest of time. However, when your Raspberry Pi is done upgrading and updating, I would recommend copying and pasting the commands from GitHub to get everything installed properly. Copying and pasting the commands from GitHub will install a variety of useful tools, including the kubesat simulator software, the FM transmitting software, the signal decoder, and signal encoding software. I've included a bit of the manual steps here to illustrate the process, however this is fully covered in the written instructions and it might save you a lot of time and a lot of typing. I'm going to cut the software installation there, just to save time. Next we'll want to run sudo raspi config. This command will allow us to customize our Raspberry Pi just a little bit. We can do a couple things here. We can change our password, change the hostname of the Raspberry Pi, connect the Raspberry Pi to Wi-Fi, set the local time, and expand our operating system to use all of the space on the microSD card. Once you've finished with your customizations, navigate to finish and then reboot the Raspberry Pi. I connected my Pi to Wi-Fi, added the antenna to the left side, fourth pinned down, and connected the Pi to a portable battery. If you check out the GitHub repository, there's a clear example for how to place the antenna. However you may not even need it at all depending on how far away your FM receiver is from the Raspberry Pi. Now you should be able to run the following command within the kubesat sim directory. You'll see that the program is playing the cw.wav file and by default will broadcast on 107.9 FM, however this can easily be changed if there's already a station on that channel. In this next screen clip, you'll see my Balfang radio tuned to 107.9 picking up the cw.wav sound file that's being played. If you manually decode the Morse code, you'll notice that it is satellite telemetry information. This process would be tedious to do manually. Luckily computers are great at doing this kind of work. Now that we know we can transmit a signal, we'll next install the software required to decode the telemetry information, in addition to the software used to encode our own messages. Before installing, run a CD or change directory to make sure that we're in the right Pi home directory, so I'll issue that command right now. As you can see, we're in the Pi home directory. We can next run an LS command or list command to see what other directories or files are currently in the home directory, and you can see we have the desktop folder as well as the cubesat sim folder that we just installed. For this next step, I highly recommend copying and pasting the commands from GitHub. So now we're going to copy the command for the program multi-mon-ng, hit enter, and it should take care of everything, as the command is completely combined together. This shouldn't take too long. I'm going to do it in real time, and there you go. It brings you back to the home directory, and everything's all built. If we issue an LS command, you'll see that now we have the folder multi-mon-ng, which is now installed. We'll now copy the additional command to install the CW encoder, and again, I'll just hit enter, and it should take care of everything in real time. And now we can see that we have cubesat sim, CW wave, desktop, and multi-mon-ng, all successfully there and installed. In this next step, you'll be required to use your RTL-SDR or your software-defined radio. It's typically best to shut down your Raspberry Pi and then plug in the RTL-SDR into the USB port of the Raspberry Pi to prevent any power issues or brownouts. Once you've plugged in your software-defined radio into your Raspberry Pi, you should be able to reconnect power and then boot everything up just as before. As you can see, I have two windows open to putty that we're going to use to access the Raspberry Pi. Now, if you're a normal Linux user, you can feel free to use Tmux or Screen. Sometimes it's just easier for anybody who's new to Linux to open up two screens so that they're going to have two different command windows on the same system. We are going to use one putty session to transmit and the other one to receive a message. So, all we're going to do is copy and paste from GitHub just like before. In order to listen to the sound that's being transmitted, we're going to CD into the multi-mon-ng and build directory. Again, copy and paste this from GitHub. Now that we're in this directory, we can copy the next command, which you'll see here in a second. This will use the RTL-SDR to receive on FM. On 107.5 FM, that M stands for megahertz. The dash S is the sample rate. Always keep this as 48,000. I'm not going to explain that right now, but just keep that number the same. We're going to pipe this output to multi-mon-ng, and we're going to accept raw format, and we're going to use the Morse underscore CW encoder, and we're going to accept input from dev standard input. So, when you run this command and you hit enter, you'll see it'll start up with all the settings. Now we'll just leave this right now and we'll go to the next window. Again, copy and pasting from GitHub. We are going to CD into the CubeSatSim directory. So, CD CubeSatSim, and you can do tab to tab complete. Now we're going to transmit the same CW.Wave file that we did before. If you have your Baufang or another FM radio on, you'll hear this. As you can see, I've added an additional flag, which is .freq, which stands for frequency. So, this will play on 107.5, as that's a clear station in my neighborhood. As you can see, it's transmitting just as before, and if we go to this other screen, we should see that it starts decoding a message. So, if you let this play out for a while, which I will do, I'll let it pause, you'll be able to see that this is telemetry information, or I should say sample telemetry information that will be coming from satellite. And if you were listening to this on your Baufang, you'd be hearing a significant number of just Morse code sounding encoded transmissions. I'll pause it right now. As you can see, after a while, there's a lot more telemetry information. Now, I'm not going to go into the specifics of what this telemetry data is, since it's just a sample, but I thought it would be next kind of neat to show you how to transmit your own Morse code encoded signals. Now, in the next step of this, I am going to show you how to create your own message and how to encode your own text into a WAV file message. So, we're going to CD to make sure we're back in the home directory, which I've already done. Now, we're going to CD into the CW WAV directory. You can see that now we're in that directory issuing the ls command. And now, I'm going to copy and paste some sample text from GitHub. And so, you can see this is around the echo command. And anything in between the double quotations, it will put into that message.txt file. So, issuing that command, we don't get any output, but if we are to cat that same message.txt folder, we'll see sample message to transmit. The next step of this is going to be to convert that message.txt file into a message.WAV file or an audio file. So, again, I'll copy from GitHub. So, now I'm going to execute the CW WAV command with a sample rate of 48,000. Don't worry about it, just always make sure that's 48,000. The output file is going to be message.WAV, and the text that we're going to use is the file message.txt. We're going to hit Enter, process the file message.txt. If we ls, we can now see in that light blue that there's a message.WAV file that we can now play. I'm going to now CD up a directory. So, cd.dot. And now, cd back into the cubes at sim directory. And now, I'm going to issue a very similar command to what we did previously that played the sample command. Only this time, you'll notice that the audio file is now the message.WAV file that we just created. So, now if I hit Enter on this, it'll be in transmitting. And if I fire back up our software to find a radio, with any luck, we should see our sample message shortly. So, you can see it had a little bit of error at the beginning, but now that we're actually in it, we can see that it's decoding it properly. Now, this may seem a little lame that you're sending and receiving a message on the same Raspberry Pi. However, you can set this up on multiple Raspberry Pies or on multiple computers, and you can essentially take this and send messages back and forth between two different devices. And this is really just to get your feet wet and show you how you can decode incoming signals using an RTL-SDR and also how to transmit FM signals basically just to test out your knowledge of how things are encoded and how different signals are processed and created. Hopefully, you've enjoyed this, and I would recommend that if this all makes sense to you, to try and play with the AFSK encodings that are also provided in the CubeSat SIM directory. It's a different type of message encoding, and it might be a little interesting to look at it and see if you can decode it.