How do I use the librespeed-go package?

I want to measure the speed between a wifi client and my AP. I think the librespeed-go package would do that, so I installed it. But I can't figure out how to use it.

I saw in https://github.com/openwrt/packages/blob/openwrt-22.03/net/librespeed-go/files/librespeed-go.config that it uses port 8989, so I tried https://192.168.1.2:8989 but it was unable to connect (LuCI is at https://192.168.1.2/cgi-bin/luci/) . I also tried some other URLs and poking around in the LuCI interface. It appears in Software and Startup, but I didn't see it anywhere else. I tried clicking the Start button in startup and also rebooting the entire thing, but neither seemed to make any difference.

I don't see any mention of "speedtest" in the system log or the kernel log.

I've never installed many packages in OpenWRT, so it might just be something obvious that I'm missing.

My device is a Netgear R7800 running OpenWrt 23.05.3 r23809-234f1a2efa / LuCI openwrt-23.05 branch git-24.073.29889-cd7e519 and operating as an access point only.


Also, as an aside, the description librespeed-go in the LuCI software tab is not particularly informative:

I think that comes from here, perhaps we could just swap the first and second lines?

I'd be happy to send in a PR for that, if that is indeed the correct fix.

Most routers/ APs (and neither is the r7800/ ipq8065) are not fast enough to source data for speed tests like this at wire-/ WLAN speed on the device itself, so it's usually pointless to install tools like that on the router. What you want to do instead, would be testing the throughput you get from a wired system connected to the router to (one of-) your wireless clients, iperf3 is a customary approach for this.

Ok, that's interesting. I still feel like the package ought to do something, though, or else we should get rid of it.

For a bit more context, I recently ordered a GL-MT6000, but everything on my wired network is currently at 1 gigabit. I do have a PC on my network with librespeed installed on it, and I can get ~940mbps to it over a wired connection, and a bit less over wifi. I mainly wanted to see if I'd be able to get > 1Gbps over wifi with the MT6000, but I figured I'd try it with my R7800 while I'm waiting for the MT6000 to arrive.

Netgear advertises "the single fastest available WiFi connection to any one device, up to 1.73Gbps, and a total of 2.53Gbps". I've never hit anywhere near that, but I was curious if I could exceed 1Gbps if the data was coming from the device. It sounds like not, from what you're saying.

I'll also try out iperf3, but I still think we should take a closer look at the librespeed-go package and either improve or get rid of it.

I figured it out! I had to ssh into the r7800 and run the command librespeed-go - after that the server started up on port 8989 and I was able to connect to it. So I think there's an issue with it's initscript, but it otherwise works.

I was about to get about 8-900Mbps over a wired connection, a touch slower than I could get from the PC on the same network, but not as bad as I was aftraid of.

My wifi speed is slower, only 25~30mbps download (although over 100 upload) in my initial testing, but I'm also way across the house. However, iperf3 was able to hit just over 100mbps in both directions on the same wifi connection, so I'm not sure what to make of that.

hi,

have you started the service? service librespeed-go start ? also there is config file too, /etc/config/librespeed-go, have you customized it to your environment in case defaults do not fit?

have you started the service? service librespeed-go start ?

No, at least not via the command line. I kind of thought that's what the Start button in LuCI does, though (?)

I first went to System > Startup > Initscripts (https://192.168.1.2/cgi-bin/luci/admin/system/startup) and clicked the Start button. That didn't seem to do anything. Then I rebooted, and it still wasn't started. I clicked it again after rebooting and it still didn't start.

Then I ssh'd in and ran the command librespeed-go and I was then able to use it (although it stopped once I closed the ssh connection).

also there is config file too, /etc/config/librespeed-go, have you customized it to your environment in case defaults do not fit?

I did not make any configuration changes, the defaults are apparently fine when I start it manually.

The fact that it's listed on the Initscripts tab, but doesn't actually start during init is what makes me think the initscript is broken.

it is not broken imho but set to not start unless you explicitly allow it.

check config file

config librespeed-go 'config'
	option enabled '0'

enabled should be set to 1 otherwise it will not start if you press Start or use the corresponding cli command service.

1 Like

Hum.. that feels like a poor default. Especially when it essentially breaks the UI.

Ok, I put up a PR at https://github.com/openwrt/packages/pull/24012 that should hopefully fix both of the issues here.

Apparently the correct way to enable it is to ssh in and run uci set librespeed-go.config.enabled='1'. Edit: this doesn't seem to actually work. I'm not sure why.

I don't understand why that's not the default value, though.

because how the package should know if you use the default port for something else? it is up to you to verify if defaults are ok for your environment and will not harm another service may use the same port for example. so this is not a bug. there are many similar services which require explicit approval before usage, it is quite normal. otherwise people would complain why this package hijacks the port when it should run a different service.

this is one correct way

1 Like

Just wanted to post a quick followup here.

  • Half of my PR got merged in, so the description in LuCI will be better.
  • But the half to enable it by default upon installation got rejected. Apparently that's just the way OpenWRT does things. Kind of feels like a normalization of deviance to me.

Lastly, I got my GL-MT6000, and it is absolutely fast enough to source data for speed tests - it can max out a 2.5Gbps wired connection:

1 Like

Just to be clear, your SRC and DST IP are on the same network. This is why your device was fast enough, as the CPU did not have to pass traffic thru the firewall (costing CPUs).

Sometimes people wanna test hosts across WAN-to-LAN. This is the use case slh likely had in mind when he responded to you.

Glad you got it working!

1 Like

Can you please clarify what is the supposed way to start the server?

By running luci set librespeed-go.config.enabled='1'?

To be honest, I'm still not sure. I read that luci set ... command in some documentation somewhere, and I thought it worked, but I think I had also started it manually.

I've rebooted the router since then, and librespeed-go is no longer running, and the Start button in System > Startup > Initscripts still doesn't seem to work, so I'm apparently still missing something. Maybe you have to manually create a config file somewhere?

I wish it were better documented and/or just worked correctly from the start.

For the moment, the only thing that I know how to do is ssh in and run the command librespeed-go.

1 Like

Ok, based on grrr2's comment and my own poking around, I think I figured it out.

You have to ssh in and edit /etc/config/librespeed-go, changing the enabled value to '1'.

After that, you should be able to start it with the Start button in System > Startup > Initscripts, and I think it will automatically start when the system reboots.

3 Likes