Close
0%
0%

Raspberry Pi SDR Cyberdeck

A portable, rugged, self-contained system to suit all your RF SIGINT needs in every environment.

Public Chat
Similar projects worth following
This Raspberry Pi based SDR Cyberdeck is unlike any other as it is based around RF situational awareness.

- Ham radio monitoring
- Spectrum surveillance
- General coverage worldwide HF receiver
- Weather balloon tracking and ranging
- Signal identification
- Quick deployment/mobile operations
- Portable air traffic monitor
- AIS Marine traffic monitoring
- Remote SDR receiver (stream via network)
- Asset tracking
- Weather fax/teletype receiver
- Signals intelligence
- Portable hackstation

Many Cyberdecks that use Pelicases mostly use the Peli 1300 case, this cyberdeck takes it one step further and integrates everything into a super-compact Peli 1200 case. This shoebox sized unit easily fits into a backpack with room to spare. Official Raspberry Pi 7" touch screen. This unit is all about plug'n play, use the internal powerbank to power the unit, or hookup an external power source between 9-36V from which the internal powerbank can be additionally charged.

Raspberry Pi SDR Cyberdeck

The SDR Cyberdeck is a self-contained unit that allows the operator to adapt to any operational situation where RF monitoring is required. It features built-in GPS, dual channel Software Defined Radio, Real-Time clock, audio system, internal batterypack offering 8+ hours autonomy at normal usage, remote operation via an HTTP REST API, web dashboards for sensor telemetry, VNC for remote control and more...

Hardware

The HW is based around a Raspberry Pi 3 Model B sandwiched between passive cooling elements and a stack of dual Software Defined Radios (SDRs) and power switching, routing, signaling and a small audio system consisting of 2x 3W frontpanel speakers that is driven by the RPi audio 3.5mm jack output.

Unit shown in operation below during RF monitoring and surveillance of forest area during training operations. Left antenna is general wideband coverage, smaller stub antenna is an active helix GPS antenna.

Headless mode:

Spectrum monitoring in headless mode (left), desktop mode with shared session available on remote device (right.)

Software

The Raspberry Pi SDR cyberdeck runs on a software framework with at it's core an ASGI (Asynchronous Server Gateway Interface), in this case uvicorn. The ASGI interface connects to FastAPI which performs the function invocations in the Python threads which control the Devices, Processes and Applications. This allows for easy system manipulation via HTTP1.1 GET/PUT/POSTS methods. The Python threads controlling the processes can range from a commandline decoder to decode APRS via an audio interface, through to starting a VNC session or starting navigation/mapping software. The intention is to make complex application flow, configuration and control easily accessible via the Cyberdeck API interface (which performs HTTP requests to the server), therefore eliminating local commandline interaction with the system. In parallel system data is dumped to an influxdb database, and exposed via Grafana, allowing easy system monitoring over longer periods of time.

The software is still in development and actively maintained at is hosted at GitHub.

Remote Visualisation

Grafana serves as the entrypoint for any remote visualisation over longer periods of time, or general status monitoring. It can be used to view currents/voltages/temperatures and the status of different peripherals.

Remote Documentation

FastAPI has a handy feature where it serves an easy-to-use test interface on http://x.x.x.x:5000/docs. This can be used to test out methods and check if they have the desired effect on the system.

RCC

The remote control client is a simple Python application which uses PyQt5 and grid widgets which get populated based on the structured JSON data that is received via the Cyberdeck API. From this interface, devices can be switched on/off, status monitored, etc...

The native size of the GUI is intended for use on the Official Raspberry pi 7" touchscreen.

rpi_cyberdeck_schematics_v2.pdf

Adobe Portable Document Format - 1.30 MB - 01/11/2021 at 22:58

Preview

cyberdeck_frontpanel.svg

Frontpanel drawing, outside dimensions of panel: 237.5 x 182.9 mm

svg+xml - 86.46 kB - 08/14/2020 at 19:39

Preview

  • 1 × Peli 1200 case - color of your choice
  • 1 × Frame for Peli 1200/1300 case Can also be 3D-printed if you want to save some bucks
  • 2 × Hammond Manufacturing rack handle set 1427P1BK (frontpanel rack handles)
  • 2 × Hammond Manufacturing rack handle set 1427B2BK (side panel rack handles)
  • 2 × Miniature speakers type VIS K28.40-8

View all 19 components

  • Patchpanel

    Tom Mladenov01/11/2021 at 23:29 0 comments

    The last part of the integration consisted of the addition of the side interfacing panel - containing network connection, power and external GPS antenna connector. Early on in the design process, it was chosen to not put these interfaces on the front user panel, as the network and power interface need to be accessible when the unit is closed when operated in remote mode for example. 

    2 handles (Hammond mfg 1427B2BK) normally used for rack modules were used as connector protection rails if the unit is placed on the respective side. The connectors are mounted in a 2mm thick aluminium plate which is in turn bolted to the case after a back-supporting section was cut out. This has the advantage that another plate with different connectors could still be placed afterwards, or other connectors added, and not needing any modifications of the case itself.

    Finished panel showing the RJ45, GPS antenna and Power connector:

    The finished patchpanel is shown below.

    Connectors from left to right:

    1. Ethernet
    2. N-connector (for external GPS antenna)
    3. Multipurpose 14-pin PWR + IO
    4. 2x SMA (WLAN + auxiliary RF feedthrough)

  • Enabling APRS support

    Tom Mladenov11/03/2020 at 23:48 0 comments

    Support was added to monitor and view APRS (Automatic Packet Reporting System). The concept is that generic data provisioning services (APRS, etc) can be launched with one button without need to run commands or start servers/processes.

    A networked AGWPE engine was added to Xastir with localhost:8000 address.

    To get APRS data, rtl_fm is used to tune to 144.8 MHz (in Europe) and pipe the samples into direwolf which acts as a server and accepts clients connections on port 8000. Upon launching the service from the GUI, the following command is run:

    rtl_fm -M fm -d $INDEX -f 144.800M -s 24000 - | direwolf -t 0 -r 24000 -D 1 -B 1200 - & > /dev/null && echo $! > /home/pi/tmp/aprs.pid

     The .pid file is later used to stop the monitoring using:

    pkill -F /home/pi/tmp/aprs.pid

  • Operation mode concepts

    Tom Mladenov09/07/2020 at 20:20 0 comments

    This log entry covers the various operation modes that are currently being taken into account in designing the power routing and switching of the unit, as well as the usability and accessibility of the communications interfaces.

    To operate the unit, several operational scenarios have been defined and have been separated into user modes and power modes, which can each be combined with each other.

    User modes:

    • Local mode
      • User is in close proximity to the unit and interacts directly with the touch-panel
    • Remote mode - controller
      • Remote mode - (controller) is intended to be used when the user cannot access the unit directly and is closed, but is still in close proximity to the unit. For this purpose it is foreseen to design a small hand controller/handheld unit with a simple dot matrix LCD display to view frequency/mode/GPS info/altimeter/time/... This mode can be used when the unit is in a backpack for example or located in a vehicle without direct access but still required to be operated.
    • Remote mode - Ethernet
      • Remote mode - (Ethernet) is foreseen to be used when the unit is located relatively far away from the user (>10 meters). In this case an Ethernet link is established to the unit via a network cable and all unit operations can be carried out and monitored via a remote computer. Use cases include remote spectrum monitoring for example.

    In the remote modes, the initial setup consists of opening the unit, configuring the desired power mode and then powering the Raspberry Pi. The screen does not need to be powered, saving energy. The unit can then be closed and is ready for remote operations.

    Any of the above user modes can be combined with a power mode below.

    Power modes:

    • Run on internal power
    • Run on 5VDC external power
    • Run on 9-36VDC external power
    • Run on 5VDC external power + charge internal powerbank
    • Run on 9-36VDC external power + charge internal powerbank
    • Run on 5VDC external power + charge internal powerbank from 9-36VDC input
    • Run on 9-36VDC external power + charge internal powerbank from 5VDC input

  • Adding shielding

    Tom Mladenov09/01/2020 at 21:29 0 comments

    Shielding has been added to the inside of the unit using aluminium foil tape. The backside of the frontpanel makes contact with the aluminium tape strips that extend over the edges of the panel frame. An opening was left in the shielding for GPS antenna at the top.

  • GPS Module Integration

    Tom Mladenov08/14/2020 at 19:27 0 comments

    Bench tests indicated an active GPS antenna placed under the top of the Cyberdeck acquired plenty of satellites with good signal strength, hence the next step was an internal GPS module.

    The active patch antenna and corresponding NEO-6M receiver PCB conveniently had exposed PCB pads which were used to solder the 2 together forming a stack. An SMA connector was additionally soldered to the exposed pads on the receiver board to facilitate an external antenna when the unit is being used inside a vehicle for example. After some brackets and screws the unit is ready for integration. 

    2x M3 inserts were inserted into the inside of the panel frame and secured with bolts and locking washers. (Note the white silicone in the background for the waterproofed N-connector feedthroughs, maintaining the case's IP-rating).

View all 5 project logs

Enjoy this project?

Share

Discussions

Niyu wrote 07/12/2024 at 05:31 point

Hi Tom, I've been hard at work trying to get your software running. Would it be possible for you to generate a requirements.txt that includes versions for the packages so the software can be run with the same dependency versions as when everything worked?

I believe

pip3 freeze > requirements.txt 

should be one way to easily do it. Thank you in advance!

  Are you sure? yes | no

Mike wrote 01/09/2024 at 18:56 point

Hi Tom, 

I've spent the last couple of days putting my ideas on paper on how i'd like to build your project.  

Started installing the software today and have a question regarding InfluxDB, which version are you using, v1 or v2?

Additionally, I noticed on your Github page you mentioned you wanted to containerize the software, have you done so and did it work well?

  Are you sure? yes | no

Tom Mladenov wrote 01/09/2024 at 19:44 point

Hi Mike, yeah cool! For the influx it would be v1 at the time, although you should probably upgrade. I haven't had the time to really 'clean' things up SW wise and dockerize everything unfortunately. Good luck!

  Are you sure? yes | no

Mike wrote 01/10/2024 at 17:40 point

Hi Tom, thanks for the heads up on v1 of Influx.  I'm going to stick with your v1 setup until I feel more comfortable with the workings of your project. I'll then play around with upgrading and using docker.

Have another question for you.  Do you recall what version of Python was used for the project?  The module telnetlib has been deprecated and giving me some installation issues.

  Are you sure? yes | no

Niyu wrote 07/09/2024 at 00:09 point

Hello Mike,
Did you have good luck getting the software working and dependency issues resolved? I'm starting my own build based on Tom's, albeit stripped down, and was curious if you were able to get it functioning. 

  Are you sure? yes | no

hirsch wrote 12/22/2023 at 04:05 point

Very clean build, curious what you are using for antennas for your RTL SDRs. Looks like you switch from SMA to BNC with the panel mounts for those antennas is this to accommodate those antennas or another reason(I’m guessing for the Hz range)? Also, for your NEO-6M module, do you use the ceramic antenna or an external antenna? In my experience, the ceramic antennas are poor.

  Are you sure? yes | no

Tom Mladenov wrote 01/09/2024 at 20:00 point

Thanks a lot! The external RF panel mount connectors are N-connectors, not BNC. Yes the internal NEO6M module works just fine with the ceramic antenna inside the box looking to the outside, never had gps lock issues with clear sky view. That GPS module also has an SMA connector on the PCB for external antennas and I connected that as well to an external SMA antenna feed-through if I need to connect an external active GPS hockeypuck antenna.

  Are you sure? yes | no

Mist wrote 11/18/2023 at 00:58 point

Hey, just wondering, what air traffic monitoring software do you use for this?

  Are you sure? yes | no

Tom Mladenov wrote 11/19/2023 at 19:44 point

Hi, since I wanted something centralised I decided to inject ADS-B data into Xastir, you can do that also with AIS data: https://xastir.org/index.php/HowTo:Display_Aircraft_and_Ships

I settled on that rather than using 10 different applications for everything.
Hope that helps, Tom

  Are you sure? yes | no

Curtis Soldano wrote 08/05/2023 at 22:02 point

Love this build, amazingly tight execution. I've just started reading your logs and info and so many questions answered. :) Lot's of inspiration here, great work!

  Are you sure? yes | no

Bandit wrote 04/23/2023 at 22:50 point

I was wondering what you thought about instead of having independent speakers and supporting circuits you use a screen with built in speakers, they tend to have the circuit built into the back of the screen circuit and I think it just runs thru the hdmi port? I think that would be nice to to clear up panel space and allow for more ports if needed. but love your project, definitely taking some inspiration from your outside io and headless mode, very thoughtful for changing needs and situations.

  Are you sure? yes | no

pmattb00 wrote 02/01/2023 at 21:51 point

Pros and cons of using a RPi4 vs the 3b? Assuming power consumption is probably the biggest trade off.

  Are you sure? yes | no

Trent wrote 11/30/2022 at 16:52 point

I'll be trying to build this!  I ordered the case and the handle sets and will be having the frame done by a local laser engraver this week.  Looking forward to this journey!

  Are you sure? yes | no

Trent wrote 12/01/2022 at 17:58 point

And now I see just how difficult it is to score a Pi at any reasonable price right now - well, that will give me time to have the frame made and the the rest of the components together!

  Are you sure? yes | no

Charles Stevenson wrote 09/27/2022 at 18:19 point

Brilliant! I love the black and green top secret concept renderings and as everyone has said the craftsmanship is stellar.

  Are you sure? yes | no

Tom Mladenov wrote 10/03/2022 at 19:49 point

Thanks Charles!

  Are you sure? yes | no

Thomas Nichols wrote 08/22/2022 at 19:15 point

Really cool build, I was thinking of a similar project more focused towards the aviation field when I came across this. My one question is, and I may have just missed the explanation, what are you using the MPU6050 for?

  Are you sure? yes | no

Cybermage2019 wrote 08/18/2022 at 23:25 point

Nice and clean design....

What SDR did you end up using for this?

  Are you sure? yes | no

Tom Mladenov wrote 10/03/2022 at 19:49 point

Currently 2x RTL-SDRs are used.

  Are you sure? yes | no

cyzoonic wrote 08/05/2022 at 19:12 point

Very nice and clean. How did you do the white silk screening on the panel?

  Are you sure? yes | no

glen_bailey74 wrote 06/19/2022 at 03:11 point

That's really cool,very noice :)

  Are you sure? yes | no

Dewey wrote 12/28/2021 at 18:55 point

Beautiful work.  I have been stumped for a while as to how to make a nice looking remote control front panel.  I saw this project and had my answer.  Very nice. How did you cut the holes in that panel?

  Are you sure? yes | no

Djani wrote 09/30/2021 at 06:59 point

Nice work Tom, congrats. During the first lockout in 2020.  have made something similar ;) https://hackaday.io/project/171415-sdr-limetogo

  Are you sure? yes | no

Tom Mladenov wrote 09/30/2021 at 10:06 point

Cool! thanks for the comment and for sharing your work.

  Are you sure? yes | no

Vanco Ordanoski wrote 09/29/2021 at 17:18 point

Looks totally professional!

I'm totally amazed by the craftmanship and already started planning to build one for myself.

As an old radio-amateur, I was lloking into SDR.

  Are you sure? yes | no

Tom Mladenov wrote 09/30/2021 at 10:09 point

Thanks! Good luck with the build! Since mine was a rather ad-hoc build, putting construction plans together is quite tricky. Perhaps if I have more time, I'll come up with a more 'community compatible' version of it to help folks with theirs. For now it's mostly about sharing ideas and possible implementations of these things.

  Are you sure? yes | no

Chris Davidoff wrote 09/29/2021 at 17:07 point

This is amazing!

  Are you sure? yes | no

Tom Mladenov wrote 10/03/2022 at 19:50 point

Thanks Chris!

  Are you sure? yes | no

Simon Bell wrote 03/25/2021 at 23:38 point

I’m new to this so please bear with me. Looks cool but what exactly is it used for? 

  Are you sure? yes | no

Tom Mladenov wrote 03/29/2021 at 21:07 point

Hi, I listed some possible usages in the description.

  Are you sure? yes | no

gehmans15 wrote 02/16/2021 at 00:18 point

Is there a reason you chose 2 RTL-SDR's over something like a limesdr mini or HackRF one which both have higher frequency ranges? I understand general civilian and innocent users can generally get all they need in the range an RTL-SDR offers, but in the case of TX, with something like a HackRF I believe you could have a 2nd case with the appropriate bandpass filter, amp, and antenna's for other applications.

  Are you sure? yes | no

Tom Mladenov wrote 02/19/2021 at 08:00 point

The reason was mainly to have flexibility in terms of RX. With this configuration one can monitor 2 completely different frequency bands at once. Or either decode APRS or AIS with one, and monitor HF with the other SDR in direct sampling. Yes I could have perfectly used a limesdr mini as well, but the goal was to have at least 2 fully separate RX chains. There are also the power considerations, right now the unit is at a sweet spot of 20 hour stby time, and 9 hours intensive usage, and for the moment I am planning to keep this. But thanks for the idea!

  Are you sure? yes | no

Todd Christell wrote 09/29/2021 at 19:55 point

RSPDuo would be a nice, multi-frequency, dual band addition. 

  Are you sure? yes | no

Tom Nardi wrote 09/15/2020 at 06:29 point

Nice to see a variation of the popular Pelican "deck" that actually packs some additional hardware in there. I do wish the resolution on the official Pi display was higher though.

  Are you sure? yes | no

Tom Mladenov wrote 09/16/2020 at 20:22 point

Thanks Tom! So far the resolution has not bothered me, at least not during the general field-use this unit is intended for.

  Are you sure? yes | no

Similar Projects

Does this project spark your interest?

Become a member to follow this project and never miss any updates