Hello. My name is Ira, and today we are going to be setting up a Raspberry Pi phone system for prank calling. But before we do, here is a paragraph highlighting the history and my personal story with this PBX recipe. Feel free to skip ahead to the next paragraph if you wish. My youngest son, Felix, came to me one day and said “Daddy Ira…” (he calls me Daddy Ira) “…do you know the history of caller ID spoofing?” to which I replied, “No.” and continued to play online poker. The actual truth however, was I did. Caller ID spoofing started in the year 1732 in the small town of Lemmix, Vermont. A young inventor named Roderick Spoofing drew up plans to a machine that would send any numbers he wished to a remote box that was supposed to display different numbers. Like many inventions at the time, the true genius of this discovery would remain unrealized for centuries until the subsequent invention of the caller ID, the telephone exchange, and the telephone itself. Once these pieces were in place, the rise of caller ID spoofing was inevitable. Now that we know what caller ID spoofing is and where it came from, the question still lingers… what does caller ID spoofing SMELL like? The answer to this question is an interesting one. Since caller ID spoofing is purely digital and exists only in electronic form, caller ID spoofing has no natural aroma. Are you seriously reading this? For real? When you pull up a recipe online, do you actually read the blogger’s personal, bullshit story about the recipe instead of scrolling right past it? Nobody cares ‘Samantha’. Just tell me how to make this goddamn meatloaf. Jesus.
What you will need:
-A Raspberry Pi kit (The Raspberry Pi itself only comes with a board. A microSD card and power adapter are needed and are generally purchased separately. The following link is for a complete kit, but others are available) https://www.amazon.com/CanaKit-Raspberry-Complete-Starter-Kit/dp/B01C6Q2GSY
Additional items:
-A computer to load the OS onto the Raspberry Pi and to configure the system. (https://tinyurl.com/y6pejck5)
-Internet Access (https://www.verizon.com/?lid=//global//residential)
-A SIP client on another device (more on this later)
-A monitor or TV and a USB keyboard to plug the Raspberry Pi into temporarily -AND/OR- an extra ethernet slot in your router.
-A microSD card reader for the computer or an SD reader with a microSD adapter
The Process:
Step 1: Download the latest image of FreePBX for the Raspberry Pi and extract the .img file
Step 2: Download win32diskimager.
https://sourceforge.net/projects/win32diskimager/
Step 3: Insert the SD card into your SD card reader on your PC (you may get messages saying there are issues and you need to reformat. Ignore these for now)
Step 4: Run win32diskimager. In the Image File box, navigate to the .img for FreePBX.
In the Device pulldown, select a drive letter associated with your SD card. MAKE SURE THIS IS CORRECT. If you choose a wrong drive, it will wipe it. Be safe and eject any other USB drives. The software won’t select any installed hard drives or SSDs. (See FAQ at the end if you are having issues seeing your drive)
Step 5: Click Write. This will write the image to the SD card. This process usually takes several minutes.
Step 6: When the writing is complete, remove the SD card from the reader and insert it into your Raspberry Pi. If you are using a wired connection, plug it in now. Otherwise, plug in your monitor/tv and a USB keyboard to configure the system for wi-fi. Finally, plug in the power.
Step 7: Connecting wi-fi (If using wired, skip to next step)
Using the monitor/tv and keyboard, login to the terminal of your Raspberry Pi using ‘root’ as the username and ‘raspberry’ as the default password. Then enter these commands.
Install required packages: apt-get install wireless-tools wpasupplicant Run the raspberry pi config utility by typing the following: sudo raspi-config This will allow you to config your raspberry pi, including the wifi. Use the arrow keys to select network options, then follow the prompts on screen. Then restart your RPi: reboot |
Step 8: Determine your IP address. There are several ways of doing this. If you are plugged into a TV, it will display your IP address on the screen. You can also open a CMD window and type ping raspbx and press enter. It should display the IP address. Or you can log into your router to see the assigned IP.
Step 9: With your Raspberry Pi connected to your network, you can log into it with your computer or other device connected to the same network. Open a web browser and enter http://***.***.***.*** (substituting in your IP address for the Pi) or you can also try http://raspbx.
Step 10: FreePBX will ask you immediately to set an admin username and password. Make sure you remember this. If this is lost, your whole system will have to be reset.
Step 11: Click on the FreePBX Administration button to continue. The system will walk you through a few additional steps. You can handle this, right? You’re an adult. You got this.
Step 12: Once complete, you will be brought to the overview page. Here you will see some charts and other stuff. Leave this open, we will get back to this.
Step 13: We need to create a flowroute account (or any other SIP provider you choose). If you don’t have a provider yet, I suggest flowroute. They offer a free trial without the need for a credit card. Go ahead and create an account now (https://www.flowroute.com/) (Update: It appears Flowroute no longer offers the free trial. This may or may not return, but flowroute has been purchased by another company so who knows)
Step 14: Once your account is set up, click the “Interconnection” tab on the left, then the Registration tab at the top. Here, you will see your SIP username and password. DO NOT SHARE THIS WITH ANYBODY! Note these, we will need them soon.
Step 15: Setting up the connection between the Raspberry Pi and Flowroute. Under the Connectivity tab at the top, click Trunks (a trunk is the connection between your phone system and your provider). Click “Add Trunk” , then “Add PJSIP Trunk” in the pulldown menu. We will now create the trunk.
(UPDATE: Previous version of this guide had you use chan_sip instead of PJSIP. This has been discontinued from many SIP providers. If you had followed this guide before, delete your old trunk, add a new PJSIP trunk, then go to outbound routes and update your route to make sure it’s using the new trunk. Details in step 17.)
Step 16: Fill in the required information using the info below to guide you.
Username is from your SIP provider
Secret is the password from your SIP provider
SIP Server is the IP address or domain name your provider gave you
SIP Server Port should be 5060 (unless specified otherwise by your provider)
Everything else can be left as is.
Step 17: Now, we are going to set up how the phone system handles outgoing calls. In the Connectivity tab, click Outbound Routes. This will open the Route Settings tab. Here you can give it a Route Name, then under Trunk Sequence for Matched Routes, select the trunk name you created in the last step.
Step 18: Next, click on the Dial Patterns tab. This step shows your phone system how to handle phone numbers dialed. This step is easy, click the “Dial patterns wizards” button, then make sure 7 Digit Patterns and 11 Digit Patterns is selected. Uncheck everything else. Then click Generate Routes.
Step 19: Next, we are going to set up our extension. This is going to be for the phone that we will use to connect to our phone system. This can be a software SIP phone, or a physical SIP phone if you are fancy.
Under the Applications tab, click Extensions.
Step 20: Under the Add Extension dropdown, click Add PJSIP Extension.
Step 21: Add an extension number to User Extension. This can be any number. I used 300. Everything else can be left blank, but note the Password For New User. This will generate a password for this account. You can use this password, or type in a new one, but make sure it’s really, really good. If this is exploited, and they commonly are, people can make phone calls from your account. Not good.
Click Submit, then click the Apply Config button on the upper right. This will apply all the changes we made. Note, ANY change you make to your PBX system will make this button show up, and won’t take effect until you click it.
Step 22: Make sure everything is connected. Over in the Flowroute account page, in the Interconnection tab, click the Status tab at the top. Here, you should see a PoP listing your connection with IP address. If nothing is listed, your system is not connected and you need to go back and check your settings.
Step 23: Install your SIP client. There are many SIP clients you can use. There are many for PC, Android, iPhone, or physical desktop phones. This setup is going to be similar for each. I use X-Lite for PC in this demonstration, which can be downloaded here https://www.counterpath.com/x-lite-download/ (Update: X-Lite has been retired and its successor sucks. Now, I would recommend microsip. It’s basic, but free. (https://www.microsip.org/downloads)
Step 24: Configure your SIP client with your Extension number, server IP address and extension password. Leave Display name and Auth name blank. In X-Lite, this can be done in the Softphone menu, then in Account Settings. Username is the extension number, and domain is the IP address of the Raspberry Pi. Give it a test call. Make sure you dial 1 before the area code. You may need to adjust settings for your particular audio setup. Ensure you can hear the caller and they can hear you.
Step 25: Spoofing. You can change your outbound caller ID in the Connectivity tab under Outbound Routes.
Here you can see what the caller ID is set to, and you can change it by clicking the edit button on the right under Actions. Edit the outbound route you already made, don’t create a new one.
Change the number in the Route CID to any number you’d like. Then, click the Submit button on the bottom right. Finally, click the red Apply Config button on the upper right. Your caller ID is now changed. If no number is entered here, the Caller ID number you entered when setting up your Trunk will be used.
Step 26: Prank call those mofos.
FAQs and Common Issues
Q: I am having issues accessing my SD card on my PC
A: If you are having a hard time seeing or writing to your SD card, use SD Formatter to reset the card to a usable format. https://www.sdcard.org/downloads/formatter/
Q: What do I do with my Raspberry Pi when this is done?
A: Anything you want. This is a server that just runs, so put it somewhere and forget about it. Everything you need to do can be done using the web interface. As long as it is on and on your network, you will have prank-em-up fun times.
Q: Where can I learn more on how to use the other features in my PBX?
A: The FreePBX website has lots of documentation on how to use everything else. https://wiki.freepbx.org/display/FOP/End-User+Documentation
Q: I use a Mac/Linux/Ouiji board. Will this still work?
A: Yes! Since the Raspberry Pi is doing all the heavy lifting, the only thing that’s going to be different is how you write the SD card. Using a program like Etcher should do the trick. https://www.balena.io/etcher/
The other thing you should be aware of is the client you use to connect to FreePBX. You may use any SIP client to connect. Blink is a good one to use on mac. You can also find SIP clients for iOS and Android.
Q: Why do birds suddenly appear?
A: Those are flies and you need to take a bath.
TLDR
Great guide RBCP,
One problem though, with flowroute for the trunk SIP route I had to put us-west-or.sip.flowroute.com:5060 instead of just us-west-or.sip.flowroute.com or the IP address of the SIP provider. It would not recognize the connection without the port in the domain name.
Cheers
Yeah RBCP. Great guide RBCP. Thanks for taking ALL that time to put together this guide RBCP. YOU ARE AMAZING RBCP! ALL THANKS GO TO YOU R B C P!
You work too hard and are under appreciated.
This is amazing, thanks iregretjumping!
I spent hours setting this up and it doesn’t work.