Netgate Discussion Forum
    • Categories
    • Recent
    • Tags
    • Popular
    • Users
    • Search
    • Register
    • Login

    Speedtest CLI. Run speedtest on pfSense box

    Scheduled Pinned Locked Moved pfSense Packages
    167 Posts 52 Posters 136.8k Views
    Loading More Posts
    • Oldest to Newest
    • Newest to Oldest
    • Most Votes
    Reply
    • Reply as topic
    Log in to reply
    This topic has been deleted. Only users with topic management privileges can see it.
    • GertjanG
      Gertjan
      last edited by

      Nice !

      But keep in mind :

      @jimp said in Speedtest CLI. Run speedtest on pfSense box:

      No, because speed testing from the firewall itself is inaccurate and unreliable. We don't want to encourage people to rely on bad data. See my previous response on this thread.

      @raidarray said in Speedtest CLI. Run speedtest on pfSense box:

      how can i improve it?

      By adding the option to select the server being used to test ?
      Default, speed-test used the closed server on "the list".

      No "help me" PM's please. Use the forum, the community will thank you.
      Edit : and where are the logs ??

      1 Reply Last reply Reply Quote 0
      • provelsP
        provels @icewraithuk
        last edited by provels

        @icewraithuk said in Speedtest CLI. Run speedtest on pfSense box:

        I use this to keep my ISP honest, which is a trick in itself :) For those that are interested here's my hack:

        Very cool. Greetings from the Future!

        EDIT - What fun! I was able to combine instructions from both @icewraithuk and @raidarray and throw this chart into the Dashboard using the dark theme. It runs the CLI speedtest against the lowest ping server every 10 minutes, posts to Thingspeak and the Dashboard reads back the Public feed.

        Screenshot_1.png

        Live Chart

        Peder

        MAIN - pfSense+ 24.11-RELEASE - Adlink MXE-5401, i7, 16 GB RAM, 64 GB SSD. 500 GB HDD for SyslogNG
        BACKUP - pfSense+ 23.01-RELEASE - Hyper-V Virtual Machine, Gen 1, 2 v-CPUs, 3 GB RAM, 8GB VHDX (Dynamic)

        0daymaster0 1 Reply Last reply Reply Quote 2
        • K
          kcallis @icewraithuk
          last edited by

          @icewraithuk Am I missing something or does one have to have a university or company email account? It definitely did not seem to like the gmail account!

          provelsP 1 Reply Last reply Reply Quote 0
          • provelsP
            provels @kcallis
            last edited by provels

            @kcallis I just used an Outlook.com account. BTW, the post above from @icewraithuk was posted 2 years ago and it was his only post ever on the forum.

            PS - I found a cool chart in the ThingSpeak forums with a chart template that consolidates the CSV data produced by @icewraithuk 's method that I managed to modify to show my upload/download/ping data all in one chart, but you'll need to muddle through the edits manually. There are notes in the .html file that tell you where to put your info. Not saying it's the best data set, but a fun excercise anyway.
            https://community.thingspeak.com/forum/announcements/thingspeak-live-chart-multi-channel-second-axis-historical-data-csv-export/

            Screenshot_1.png

            Peder

            MAIN - pfSense+ 24.11-RELEASE - Adlink MXE-5401, i7, 16 GB RAM, 64 GB SSD. 500 GB HDD for SyslogNG
            BACKUP - pfSense+ 23.01-RELEASE - Hyper-V Virtual Machine, Gen 1, 2 v-CPUs, 3 GB RAM, 8GB VHDX (Dynamic)

            1 Reply Last reply Reply Quote 0
            • 0daymaster0
              0daymaster @provels
              last edited by

              @provels That is rad but it seems like running speedtest every ten minutes would be quite a burden on your WAN connection. Can you post the PHP you used for the widget? Thanks.

              provelsP 1 Reply Last reply Reply Quote 0
              • provelsP
                provels @0daymaster
                last edited by provels

                @0daymaster I run the speedtest every 30 minutes now, but it's just me, so who cares? You pretty much need everything in this thread to do what I did.
                1 - Install speedtest-cli on the FW. Run some tests from the shell to get a feel for it.
                2 - Setup a Thinkspeak.com account and do the @icewraithuk edits to the speedtest.py file (make @cukal 's edits for Mbps instead of MB if you wish).
                3 - Now you should be able to send the data to Thinkspeak to generate the graphs. Format them in the style/colors as you wish. You'll use the
                Read API Key to post the data you'll add to the widget.
                4 - Then just use @RaidArray 's instruction to add the URL for your chosen Thingspeak graphs and to create the widget you can load from the FW homepage.
                5- You can DL the html file from the Thingspeak forum post and edit it in a text editor to make it useful for your data. I didn't incorporate it into the FW homepage, though. I now also use a Windows version of speedtest-cli (Google) running as a scheduled task on an inside server so the tests actually run through the FW rather than from it
                All credit goes to everyone else. I just managed to screw some parts together, in spite of myself.

                Peder

                MAIN - pfSense+ 24.11-RELEASE - Adlink MXE-5401, i7, 16 GB RAM, 64 GB SSD. 500 GB HDD for SyslogNG
                BACKUP - pfSense+ 23.01-RELEASE - Hyper-V Virtual Machine, Gen 1, 2 v-CPUs, 3 GB RAM, 8GB VHDX (Dynamic)

                1 Reply Last reply Reply Quote 0
                • J
                  joeontherun
                  last edited by joeontherun

                  Just want to have my input here took me a while to figure my way around all the coding but with a bit of persistence i got my 15 min speed checker working & managed to get it working in pfsense will attach screen shot for you to see well chuffed with the outcome just want to say thanks to all that inputted information to make this happen,

                  It would be nice to drop all 3 data UL DL & Ping in to the 1 graph i tried to do it but it just got to complicated

                  Thanks

                  speedtest cli.PNG

                  provelsP 1 Reply Last reply Reply Quote 0
                  • provelsP
                    provels @joeontherun
                    last edited by provels

                    @joeontherun Nice work! Just duplicate what you did for your "Speed Checker" graph. Create the graphs on Thingspeak, create the .inc files pointing to the links and the .php widgets! Then smile! Can help as needed, but I think you got it! :)
                    e753ab60-bb3c-417f-a2f5-e4e284b08203-image.png

                    Peder

                    MAIN - pfSense+ 24.11-RELEASE - Adlink MXE-5401, i7, 16 GB RAM, 64 GB SSD. 500 GB HDD for SyslogNG
                    BACKUP - pfSense+ 23.01-RELEASE - Hyper-V Virtual Machine, Gen 1, 2 v-CPUs, 3 GB RAM, 8GB VHDX (Dynamic)

                    1 Reply Last reply Reply Quote 0
                    • J
                      justheretohelp
                      last edited by

                      The link for how to make a widgit with speed test is dead.

                      Anyone have a instruction for how to get speedtest in the GUI?

                      provelsP 1 Reply Last reply Reply Quote 0
                      • provelsP
                        provels @justheretohelp
                        last edited by provels

                        @justheretohelp
                        Create speedtest.inc in /usr/local/www/widgets/include
                        This will add the Speedtest entry to the pfSense Dashboard widget choices.

                        <?php
                        /* File     : /usr/local/www/widgets/include/speedtest.inc
                         * Author   : Zak Ghani
                         * Date     : 10-03-2019
                         * 
                         * This software is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES
                         * OR CONDITIONS OF ANY KIND, either express or implied.
                         * 
                         */
                        
                        $Download_title = gettext("Speedtest - Mbps");
                        
                        ?>
                        

                        Then create speedtest.widget.php in /usr/local/www/widgets/widgets

                        <?php
                        /* File     : /usr/local/www/widgets/widgets/speedtest.widget.php
                         * Author   : Zak Ghani
                         * Date     : 10-03-2019
                         * 
                         * This software is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES 
                         * OR CONDITIONS OF ANY KIND, either express or implied.
                         * 
                         * URL Choices :    https://www.bing.com/widget/t/speedtest
                         *                  https://www.measurementlab.net/p/ndt-ws.html
                        
                         */
                        
                        require_once("guiconfig.inc");
                        
                        ?> 
                        
                        <iframe 
                            src="https://www.bing.com/widget/t/speedtest"
                        width="498"
                        height="500"
                        frameborder="0"
                        >
                        </iframe>
                        

                        When you copy the code, be sure to get it all, the windows scrolls. You may need to mess with the pixel height/width of the object.
                        Think that's it...

                        Peder

                        MAIN - pfSense+ 24.11-RELEASE - Adlink MXE-5401, i7, 16 GB RAM, 64 GB SSD. 500 GB HDD for SyslogNG
                        BACKUP - pfSense+ 23.01-RELEASE - Hyper-V Virtual Machine, Gen 1, 2 v-CPUs, 3 GB RAM, 8GB VHDX (Dynamic)

                        1 Reply Last reply Reply Quote 1
                        • R
                          RaidArray
                          last edited by

                          Sorry about the dead links. In the middle of moving websites. @provels has it spot on coding wise.
                          Should be able to get the instructions back on line within the next few days.

                          luckman212L 1 Reply Last reply Reply Quote 0
                          • luckman212L
                            luckman212 LAYER 8 @RaidArray
                            last edited by

                            @RaidArray Are those instructions back up online somewhere by chance?

                            1 Reply Last reply Reply Quote 0
                            • M
                              MarcO42
                              last edited by MarcO42

                              Hi,
                              this long discussion was nearly wat I'm locking for.
                              But in the end I build it on my own...and maybe someone is interested in this. Here is what I did:
                              I have mounted a USB drive (not really necessary for everybody) and build a script that can called by cron.
                              This script is parsing the response from speedtest-cli on directly on the WAN interface and writes a log file. From this log file I took the last 7 lines (cron is running every day) and create a /usr/local/www/js/speettest_cli.js as data file for my chart from https://www.chartjs.org.
                              And here is the result:
                              0e8cb483-3fab-4221-b978-39dfeb42c13c-grafik.png

                              The tooltip is a mouse over and you can also hide single elements like this:

                              d18f6f55-5479-4dcb-af1e-b43731d6c5ca-grafik.png
                              The fact that you see only the 03.03. and 04.03. is that I created yesterday and these are just placeholder until the new data arrived.

                              Here you can finde all files.

                              speedtest.zip

                              Feel free to use it. Think everyone have to adapt all the paths in the \usr\local\bin\speedtest.sh
                              Also in this file you have to set you place for the speedtest...like speedtest-cli --server 16688

                              Cheers
                              MarcO

                              P 1 Reply Last reply Reply Quote 4
                              • L
                                lastb0isct
                                last edited by

                                Does anyone have the speedtest.py still? I can't seem to find it.

                                provelsP 1 Reply Last reply Reply Quote 0
                                • luckman212L
                                  luckman212 LAYER 8
                                  last edited by

                                  @lastb0isct Have you tried...

                                  # pkg search speedtest
                                  # pkg install py27-speedtest-cli
                                  

                                  if pkg gives you a Shared object "libcryptoauth.so.3" not found, required by "pkg" error, try

                                  # pkg-static install py27-speedtest-cli
                                  
                                  1 Reply Last reply Reply Quote 0
                                  • provelsP
                                    provels @lastb0isct
                                    last edited by

                                    @lastb0isct said in Speedtest CLI. Run speedtest on pfSense box:

                                    Does anyone have the speedtest.py still? I can't seem to find it.

                                    It comes with the package when you install it. SSH to your box and run:

                                    pkg search speedtest
                                    
                                    [2.4.4-RELEASE][root@fw.workgroup]/root: pkg search speedtest
                                    py37-speedtest-cli-2.1.1       Command line interface for testing internet bandwidth
                                    
                                    

                                    Then run

                                    pkg install py37-speedtest-cli-2.1.1
                                    

                                    Have fun!

                                    Peder

                                    MAIN - pfSense+ 24.11-RELEASE - Adlink MXE-5401, i7, 16 GB RAM, 64 GB SSD. 500 GB HDD for SyslogNG
                                    BACKUP - pfSense+ 23.01-RELEASE - Hyper-V Virtual Machine, Gen 1, 2 v-CPUs, 3 GB RAM, 8GB VHDX (Dynamic)

                                    A 1 Reply Last reply Reply Quote 0
                                    • L
                                      lastb0isct
                                      last edited by

                                      Where does the speedtest.py live after installation?

                                      provelsP 1 Reply Last reply Reply Quote 0
                                      • provelsP
                                        provels @lastb0isct
                                        last edited by

                                        @lastb0isct said in Speedtest CLI. Run speedtest on pfSense box:

                                        Where does the speedtest.py live after installation?

                                        /usr/local/lib/python3.7/site-packages

                                        Peder

                                        MAIN - pfSense+ 24.11-RELEASE - Adlink MXE-5401, i7, 16 GB RAM, 64 GB SSD. 500 GB HDD for SyslogNG
                                        BACKUP - pfSense+ 23.01-RELEASE - Hyper-V Virtual Machine, Gen 1, 2 v-CPUs, 3 GB RAM, 8GB VHDX (Dynamic)

                                        1 Reply Last reply Reply Quote 0
                                        • A
                                          adamoutler
                                          last edited by

                                          Run
                                          pkg search speedtest
                                          py37-speedtest-cli-2.1.1 Command line interface for testing internet bandwidth
                                          We can now see the package we need to install
                                          pkg install py37-speedtest-cli-2.1.1
                                          then run with
                                          /usr/local/bin/speedtest

                                          1 Reply Last reply Reply Quote 1
                                          • A
                                            aln
                                            last edited by

                                            I've created a widget to run speedtest directly from your pfSense dashboard
                                            https://github.com/aln-1/pfsense-speedtest-widget

                                            provelsP A A A 4 Replies Last reply Reply Quote 4
                                            • First post
                                              Last post
                                            Copyright 2025 Rubicon Communications LLC (Netgate). All rights reserved.