PlutoWeb: Custom firmware for the PlutoSDR that enables you to Run OpenWebRX, dump1090 etc directly on the device

GitHub user unixpunk has been working on a custom firmware image for the PlutoSDR called 'PlutoWeb' (more info available on their website as well). The firmware allows you to run a web interface on the PlutoSDR and this allows you to run server programs such as OpenWebRX, Dump1090 and streaming servers like SoapyRemote. Because the PlutoSDR has a built in processor, this firmware can turn the SDR into a fully standalone device.

The PlutoSDR is an Analog Devices $99 RX/TX capable SDR with 20 MHz of bandwidth and a 325 MHz to 3.8 GHz frequency range that is software hackable to 56 Mhz of bandwidth and a 70 MHz to 6000 MHz frequency. It has an on board Xilinx Zynq Z-7010 FPGA, which has a built in dual core ARM Cortex-A9 processor as well. It has been out of stock for a while, but was recently restocked and can be purchased directly from Analog Devices, or via Arrow, DigiKey or Mouser.

If you're interested we previously did a review on the PlutoSDR, and have notes on enabling the software hack and setup available on this blog.

PlutoWeb Web Interface Running on the PlutoSDR.
PlutoWeb Web Interface Running on the PlutoSDR.


  1. Glen Langston

    Thanks to everyone for all their work in getting OpenWebRx PlutoWeb and the firmware
    online and documented.

    I did get the OpenWebRx to run, but only by using ip address
    other links give me errors.
    I could see the FM signal I was interested in, but there does not seem to be a normal “wideband” FM mode for audio output, only narrow band which is no good for radio stations.
    Any suggestions?

    • unixpunk

      Ya, OpenWebRx doesn’t have a broadcast FM demodulator. I’d say to use LeanTRX but that’s also unusable to broadcast FM, not enough CPU power on the pluto.

      I’m open to suggestions, but they would have to be existing solutions outside of OpenWebRx, unless its added there in the future.

      As of now, you could install SoapySDR, SoapyRemote if using ethernet or SoapyPlutoSDR for USB, CubicSDR (or other) and put PlutoWeb into SoapyRemote mode and use CubicSDR as the front-end. It supports broadcast FM. Keep the sample rate low, will get choppy if too high.

  2. radiomaniac

    Great, I just bought a pluto sdr, currently waiting for it to arrive. I think I will learn a lot with this. I need to read a lot to understand how it works and how to operate it etc.

  3. Anonymous

    Anyone having a how-to-do-it for newcomers? I put the dfu file on the mass storage but no love showed to me….
    And whats the local name to access the websdr?

    • unixpunk

      Sorry, no, at least not yet. First put the boot.frm on the mass storage and eject it, then wait. Once its done and back up, put the pluto.frm on the mass storage and eject it. Then it should boot, reboot once and be ready to go. If using USB, just enter the IP into your browser. HTH

      • Mike

        Perhaps you could as a minimum indicate what to install, in what order, and put a pointer to the online advice? Had a look at Github and noted firmware 22 days old but newer files, before I try this is it likely you will build an update?

        • unixpunk

          The post you just replied to has the info..those files are in the plutoweb/images directory. Beyond that you’ll need to learn to fish and find a guide about how to flash those files. Either you’ll flash all 3 dfu files boot, pluto, u-boot (in order) with dfu-util OR you’ll drag and drop the 2 frm files into the pluto’s USB mass storage device, boot first, then pluto, ejecting the device between each.

          As for an update to the image, yes likely will be within a week. Hoping for Twitch to make some changes to the webui to show some of the new settings I’ve added to the config.txt for openwebrx / and possibly also an initial install of leansdr / leantrx as someone has already requested. The newer files aren’t major changes, the current image works fine, as always, submit bugs via github Issues page. 🙂

          • Mike

            Thanks – will try that on my spare pluto. How do I know when it’s done I wonder. When it re-appears in file manager I assume.

            • Mike

              Wow – it worked. WBFM would be nice…. currently receiving ADS-B with no problems at all apart from the “for development purposes only” in google maps. One bug? Whenever I start the web server and click the kink, I get socket error and advised to refresh the page, then it works perfectly.

            • Mike

              I tried 2.7 but I get an unresponsive device after a very long flash time. I can recover it with the update.bat utility. Tired twice. I see there is an update. Maybe an issue with the latest firmware version? I have one of the early batch of Plutos.

                  • Twitch

                    Just copy the boot.frm file to mass storage eject let it do it’s thing then flash the Pluto.frm and it should work. If not then you may have to use dfu-util to flash.

                    • Mike

                      That is exactly what I did in the first place. It doesn’t work via mass storage, at least not for my Pluto.

              • LamaBleu

                HI, flashing is less than 4 minutes, LED quick blinking . It works, no problem.
                Flashing NEVER worked for me copying the boot.frm/pluto.frm to the mass storage. Pluto switching to DFU mode at reboot.
                But the good new is flashing ALWAYS worked using DFU files. ( ‘sudo dfu-util -a firmware.dfu -D pluto.dfu’ from Linux) .
                Hope this can help.

                • Twitch

                  Yeah for some reason the mass storage doesn’t work all the time. I even have this issue with their official firmware. If you are going from a lower firmware it fails almost 100 percent of the time for me. If you don’t have dfu utility installed you should because this will allow you to recover your device upon a bad flash and not end up with a brick

                  • Mike

                    I booted into Ubuntu and wrote the firmware – interesting that it worked this way and not the normal way. The previous version was fine in mass storage.

                    • Mike

                      Updated to latest firmware just now. Tried to run the Leantrx DATV beacon. Got this:

                      Running /cgi-bin/leantrx/dvbtx.cgi?action=run&standard=DVB-S&cr=1/2&cstln=QPSK&symbrate=333e3&interp=2&rrc_rej=10&destination=leaniiotx&devindex=0&bufsize=65536&nbufs=32&freq=2449e6&autorun=off
                      leantsgen | leandvbtx –cr 1/2 –const QPSK -f 2 –s16 –power -4 –rrc-rej 10 -v | leaniiotx –bufsize 65536 –nbufs 32 -f 2449e6 -s 666000 –bw 333e3 -v
                      Using AD936x FIR interpolator x4
                      Setting RF bandwidth 333 kHz
                      Interpolation: ratio 2/1, rolloff 0.350000, 21 coeffs
                      ** IIO: out_voltage_filter_fir_en failed with Unknown error -22

                    • unixpunk

                      Have you made sure that openwebrx or dump1090 isn’t running? You need to set the PlutoWeb to use ‘none’ or ‘SoapyRemote’ for the running program first. Aside from that, you’d have to ask the author of leansdr.

                    • Mike

                      Bit odd – I wasn’t running either but it seems I have to run SoapyRemote for it to work – then it doesn’t work very well, maybe because the signal is so weak. Not sure but the constellation received is quite poor and does not lock. Any way of allowing us to set the TX power parameter?

                    • unixpunk

                      If you mean that leantrx should have a field for TX power, you can ask them to add it, but that’s not something I could do. If you know what option on the command is TX power, I can edit the cgi to force specific values, I think. Open an issue on github if you have specifics.

  4. Val

    Great to see some progress on PlutoSDR projects. It’s an awesome SDR (I own both Pluto and HackRF so I can compare sensitivity and stuff like that) which desperately needs more software. It has a lot of potential for sure.

    • unixpunk

      There are resources online to help with flashing the pluto, that’s beyond the scope of the project and I suspect these comments. Flash all the files in order and you should be set then. You should still be able to get to DFU mode again by holding the reset button and applying power.

      • Bernd

        DFU restore works fine.
        But i cant get that firmware to work. i tried DFU and Mass Storage. DFU flash works, but bootloop again.
        Something is wrong with your image.

        • unixpunk

          Have it running on several units. All i can suggest is you flash boot.dfu, pluto.dfu and then uboot-env.dfu. That should work. Sometimes the bootloader is not up to date and once you flash it, then you can flash pluto.dfu on its own next time and it will work. HTH

  5. unixpunk

    Also, thanks @admin for the post! I’m looking to add a how-to of exactly how I cross-compiled software and built the firmware in a post to soon as well. I’ll drop you a note then if you’re interested.

    • Timmy

      On paper it should be possible, but it would not my direction of choice. FYI: I don’t own a PlutoSDR.
      1 install the Analog Devices windows IIO driver (PlutoSDR-M2k-USB-Drivers)
      2 Install gnuradio on windows (can be done via the PothosSDR binaries for windows which include it with Soapy)
      3 configure Soapy to see the PlutoSDR (SoapySDRUtil –find or SoapySDRUtil –probe=”driver=plutosdr”)
      4 Use all the preexisting gnuradio “Digital Television/ATSC” blocks to do whatever you want with ATSC, but you will probably need a ts file (search for “transport stream test patterns” in your search engine of choice) for an easy beginning.

      Hint: access it with soapy via: driver=plutosdr,hostname= or just driver=plutosdr if it is at the default IP address.

    • Timmy

      I’m curious, what OS do you think should be running on the 667 MHz Cortex-A9 CPU inside the Xilinx Zynq Z-7010 FPGA on the PlutoSDR, which only has 512 MiB of RAM and 32MiB of flash.

    • unixpunk

      It is based around and runs on Linux, however Twitch (aka ImDroided) created the webUI to aid those who do not know Linux, this way you don’t need to SSH in and use the file to change things around. You can also edit the config.txt on the USB mass storage device to change settings. In addition, there are ways in Windows to flash the PlutoSDR with a new firmware, so you could flash it and never use Linux while still using the features on the firmware.

      Hope that helps!

  6. Twitch

    Awesome our project made it here. We’re looking for more software that will work with the Pluto so we can include it in the image. If you know anything with plutosdr support please head over to GitHub and let us know.

Post a comment

You may use the following HTML:
<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>