Unifi HD wired low speed, high CPU usage

Hi, as you know unifi hd has IPQ8064 SoC, it has two ethernet ports. Using an older device, the Zyxel NBG6716, I can get 950 megabits of speed from the wired ethernet port, while I can only get 500 megabits of speed with unifi HD. And in the meantime, I see that the CPU usage is 100%. Wifi is off, firewall is off, dnsmasq is off, there is automatic dhcp assignment, I performed the test as a switch. What is the reason why such a powerful device cannot exceed 500 megabits between two ethernet ports? There are two AR8033 chips in the device. Is the problem caused by them? I feel like something is set up wrong, otherwise there is no way a device of this power could be any worse than a device with a 720 mhz MIPS processor.

I tried with irqbalance, still the same. I assigned the ethernet ports to the second core by entering the command (echo 2 > /proc/irq/39/smp_affinity), still the same. I tried old versions of openwrt, still the same. I compiled @acwifidude's build myself for NSS packages but unfortunately the device doesn't work with it.
@Ansuel @nalx Shouldn't this device be able to reach" wired" gigabit speed even without NSS?

I have attached a video showing the situation.
Video

Ipq8064 devices should hit 940mbps on wired LAN to LAN speed testing. I’d test with iperf with a client on each LAN port to confirm this and get the most accurate results. If you aren’t getting this speed then there is something wrong with the hardware or the configuration.

If you are having the device do any WAN to LAN routing, you are testing via wifi, or if the device is generating traffic it’ll max out below full line speed (and use 100% CPU).

Thank you for your answer. I have five Unifi HDs produced in different years. And it's the same situation in all of them, so I can say it's not a hardware issue. I also tested with iperf, same result. My configuration is standard I don't change anything, the only changes I've made are to disable firewall and disable dnsmasq so that there is no load. So it automatically gets the ip address. As I showed in the video I shared, I am connected by cable and wifi is disabled on the device.

Why don't you include this device in your github build with NSS? I can't access the device when I compile it myself I need to recover with TFTP.

It sounds to me like it's probably an AR8033 PHY issue. Something is wrong with openwrt. I'd appreciate it if anyone else using this device could confirm it.

I don’t personally have that device and would need someone to test the .dts changes. If you look at similar ipq8064 devices and know how to adjust .dts files - I’d be happy to include it if you can get it working with NSS.

Getting NSS working probably won’t help your issue though. If you are only getting half speed LAN-LAN speed testing then something is problematic. The hardware with OpenWrt should have no problems performing line speed as a “switch”. I’m not sure if there is a speed issue with that device.

I am faced with an interesting situation: the first supported version of the device is 21.02.0, in the version the second ethernet port does not work. In version 21.02.2, the second port is working and I can reach gigabit speed between the ports. I'm accessing the luci interface very slowly in version 22.03.3, I can't even test the lan speed. In the last Snapshot version, there is the situation I mentioned about this issue. I wish I could understand the dts replacement thing you are talking about. I can only test it, I'm a beginner at this stuff. Thank you for your interest and response. I hope an experienced developer using this device will fix this issue.

How are you testing the lan speed?

  • Main <-> Secondary?
  • Main/secondary <-> wifi
  • main/secondary/wifi <-> device itself?

What tool(s) are you using to test?

Unifi HD wifi is completely off, I connect the poe port to the output on the device's own poe adapter and connect the lan port there to the x86 router. I connect the secondary port on the device to the laptop. NAS storage is connected to my x86 router. I'm testing it by downloading from there. When I do the same test with the Zyxel NBG6716 (wired), I can reach 970 megabits. The NBG6716 is a MIPS 720mhz single core device.

My purpose for doing this is: I can get 500 megabit speed on Unifi HD with wifi. But when I saw that it couldn't reach gigabit speed wired, I realized that there was a problem. Maybe if this problem is solved, it will be able to go over 500 megabits wirelessly.

Let's take a look at your network file:

Please copy the output of the following commands and post it here using the "Preformatted text </> " button:
grafik
Remember to redact passwords, MAC addresses and any public IP addresses you may have:

cat /etc/config/network

By default 1 port would be LAN and the other WAN - even with dhcp and firewall off all traffic would still go through the CPU.
Move both ports into the LAN zone and br-lan bridge and test again.

1 Like

This is my network setting. It was already like this in the original, I just changed the static ip setting to dhcp.


config interface 'loopback'
	option device 'lo'
	option proto 'static'
	option ipaddr '127.0.0.1'
	option netmask '255.0.0.0'

config globals 'globals'

config device
	option name 'br-lan'
	option type 'bridge'
	list ports 'eth0'
	list ports 'eth1'

config interface 'lan'
	option device 'br-lan'
	option proto 'dhcp'

@jdwl1o1 Openwrt comes with LAN setup as standard. There is no WAN.

There are two AR8033 PHY in the device. There is no switch.

So in other works the the CPU would have to do bridging in software, in which case it isn't surprising at all to be CPU limited (and those 500 MBit/s are roughly withing expectations for that).

1 Like

thanks for your answer. is this normal? if it's normal, I can reach gigabit speed in version 21.02.2, what might have changed in the next version?