As a bit of a networking nerd, I’m always on the hunt for cheap and powerful hardware that I can toss VyOS on. The WYSE 5070 thin client is my latest find.
For a while now, I’ve been looking for a replacement to a Supermicro E200-9B that I had an “accident” with. By “accident”, I mean I killed the box by messing around on it with a FlashCat.
I wanted something that was similarly low power usage, and I wasn’t really looking to spend too much, especially since it was my own silliness that killed the last one.
The Hardware
After a bit of hunting, I found the Dell WYSE 5070.
This is a Intel Pentium Silver DDR4 platform based on the J5005. There are two versions, the thin and the thick version, with the latter having room for a PCIe card. I found some for $60 locally, but they can easily be found online for only a little more.
The versions I bought were the thin version, which only have a single Realtek NIC. But they have USB-C on the front, which means a second gigabit NIC can easily be added. And as I’m running VyOS, Realtek NICs aren’t a problem at all.
The Goods
Inside, the version I have came with:
- A single Realtek NIC. This isn’t a problem for me because I have a managed switch for router-on-a-stick.
- Three DisplayPorts
- A variety of USB ports. Don’t ask me about revisions as that USB naming scheme is a mess that I can’t be bothered to look up. I do know there is a USB-C port at 5Gbps. The other USB ports are blue, meaning better than USB2.0.
- Serial port. It would have been nice to turn this into a console redirection port for a sort of out-of-band access, but I couldn’t figure it out.
- 16GB eMMC storage. I’m pretty sure I could just install straight to this, but for now I wanted to leave it intact in case I wanted to play with ThinOS. Though I do know that it’s generally recommended to skip eMMC storage for anything that might do lots of writes, like a firewall logging a bunch.
- 4GB of DDR4 RAM. Officially these only support 8GB, but I added another 8GB for a total of 12GB.
Apparently 16GB and even possible 32GB will work, which I have sticks for, but I haven’t had a chance to rearrange things to test.Confirmed. Currently running 32GB in it without an issue. - To further revise, it looks like it might be picky about 16GB chips. I currently have CT16G4SFD8213 in mine.
- An M.2 storage slot. I tossed a Crucial MX500 in here because eventually this thing might become a tiny VM Host. Plus, I got it cheap on Black Friday.
A peek inside and this thing is surprisingly expandable.
- Towards the left, you see the blue USB internal header that could be used for an internal USB drive.
- The top has the unused M.2 WiFi slot.
- Above the battery, you can see the PCIe header which would be populated if this was the thick version of the box.
- And then of course the M.2 SSD and extra RAM that I added.
Power Consumption
The idle power consumption on this device is amazing:
The highest usage I saw was during boot where it hit a whopping 15 watts. Oh, and I’m dangling an additional SSD off a SATA wire to use temporarily as a boot drive since I was doing other testing with this server, so that 5.7 watts includes this guy:
VyOS
Installing VyOS is pretty standard. In this case, I just used Etcher to put the latest VyOS Rolling ISO on a USB, and ran through the quick install.
As mentioned above, I’m just doing a router-on-a-stick setup with the single onboard NIC, but I also tested out a USB-C Gigabit Ethernet adapter and it worked identically.
Config
The config I used was almost verbatim from the VyOS Quick Start Guide, except I’m using VLANs and a static WAN IP. In my case, VLAN10 is the “WAN” and VLAN2222 is my test LAN here.
firewall {
all-ping enable
broadcast-ping disable
config-trap disable
ipv6-receive-redirects disable
ipv6-src-route disable
ip-src-route disable
log-martians enable
name OUTSIDE-IN {
default-action drop
rule 10 {
action accept
state {
established enable
related enable
}
}
}
name OUTSIDE-LOCAL {
default-action drop
rule 10 {
action accept
state {
established enable
related enable
}
}
rule 20 {
action accept
icmp {
type-name echo-request
}
protocol icmp
state {
new enable
}
}
rule 30 {
action drop
destination {
port 22
}
protocol tcp
recent {
count 4
time 60
}
state {
new enable
}
}
rule 31 {
action accept
destination {
port 22
}
protocol tcp
state {
new enable
}
}
}
receive-redirects disable
send-redirects enable
source-validation disable
syn-cookies enable
twa-hazards-protection disable
}
interfaces {
ethernet eth0 {
duplex auto
hw-id 6c:2b:59:3c:f7:4e
smp-affinity auto
speed auto
vif 10 {
address 10.0.10.234/24
firewall {
in {
name OUTSIDE-IN
}
local {
name OUTSIDE-LOCAL
}
}
}
vif 2222 {
address 10.222.222.1/24
}
}
loopback lo {
}
wireguard wg0 {
address 10.172.24.60/24
peer edge {
allowed-ips 10.172.24.1/32
endpoint 10.0.10.1:2224
pubkey ****************
}
}
}
nat {
source {
rule 100 {
outbound-interface eth0.10
source {
address 10.222.222.0/24
}
translation {
address masquerade
}
}
}
}
protocols {
static {
route 0.0.0.0/0 {
next-hop 10.0.10.1 {
}
}
}
}
service {
dhcp-server {
shared-network-name LAN {
subnet 10.222.222.0/24 {
default-router 10.222.222.1
dns-server 10.53.53.53
domain-name internal-network
lease 86400
range 0 {
start 10.222.222.98
stop 10.222.222.200
}
}
}
}
ssh {
port 22
}
}
system {
config-management {
commit-revisions 100
}
console {
device ttyS0 {
speed 9600
}
}
host-name vyos
login {
user vyos {
authentication {
encrypted-password ****************
plaintext-password ****************
}
level admin
}
}
name-server 10.53.53.53
ntp {
server 0.pool.ntp.org {
}
server 1.pool.ntp.org {
}
server 2.pool.ntp.org {
}
}
syslog {
global {
facility all {
level info
}
facility protocols {
level debug
}
}
}
time-zone UTC
}
Tests
I ran a number of different tests to try and show how this thing might perform in real world usage.
Speedtest
The first test was just a normal speedtest. If someone were going to install this for their primary firewall and router, this is probably the first thing they would do:
As I’ve mentioned a few other times, this is basically gigabit on my network. And what was the CPU doing during this?
With about ~70% usage on a single core out of four, this little J5005 doesn’t do too terribly.
File Copy – CIFS
For this test, I copied a single large file from a fileserver elsewhere on my network over an CIFS mounted share.
97.2MB/s or 777Mbps is pretty admirable for a simple file copy.
And the CPU usage on the WYSE 5070 during the copy:
Again, with only 60% usage of a single core, I think that shows this thing has lots of room for growth.
Simple iperf3
A simple iperf3
gives us gigabit performance:
[email protected]:~$ iperf3 -c 10.0.10.1 -P2
Connecting to host 10.0.10.1, port 5201
[ 4] local 10.0.10.234 port 32910 connected to 10.0.10.1 port 5201
[ 6] local 10.0.10.234 port 32912 connected to 10.0.10.1 port 5201
[ ID] Interval Transfer Bandwidth Retr Cwnd
[ 4] 0.00-1.00 sec 57.2 MBytes 480 Mbits/sec 0 209 KBytes
[ 6] 0.00-1.00 sec 56.9 MBytes 478 Mbits/sec 0 198 KBytes
[SUM] 0.00-1.00 sec 114 MBytes 958 Mbits/sec 0
- - - - - - - - - - - - - - - - - - - - - - - - -
[ 4] 1.00-2.00 sec 55.9 MBytes 469 Mbits/sec 0 209 KBytes
[ 6] 1.00-2.00 sec 55.7 MBytes 467 Mbits/sec 0 198 KBytes
[SUM] 1.00-2.00 sec 112 MBytes 936 Mbits/sec 0
- - - - - - - - - - - - - - - - - - - - - - - - -
[ 4] 2.00-3.00 sec 56.1 MBytes 471 Mbits/sec 0 209 KBytes
[ 6] 2.00-3.00 sec 56.1 MBytes 471 Mbits/sec 0 198 KBytes
[SUM] 2.00-3.00 sec 112 MBytes 941 Mbits/sec 0
- - - - - - - - - - - - - - - - - - - - - - - - -
[ 4] 3.00-4.00 sec 55.7 MBytes 467 Mbits/sec 0 209 KBytes
[ 6] 3.00-4.00 sec 56.1 MBytes 471 Mbits/sec 0 223 KBytes
[SUM] 3.00-4.00 sec 112 MBytes 938 Mbits/sec 0
- - - - - - - - - - - - - - - - - - - - - - - - -
[ 4] 4.00-5.00 sec 54.3 MBytes 456 Mbits/sec 1 228 KBytes
[ 6] 4.00-5.00 sec 58.2 MBytes 488 Mbits/sec 0 240 KBytes
[SUM] 4.00-5.00 sec 113 MBytes 944 Mbits/sec 1
- - - - - - - - - - - - - - - - - - - - - - - - -
[ 4] 5.00-6.00 sec 54.7 MBytes 459 Mbits/sec 0 228 KBytes
[ 6] 5.00-6.00 sec 56.9 MBytes 477 Mbits/sec 45 240 KBytes
[SUM] 5.00-6.00 sec 112 MBytes 936 Mbits/sec 45
- - - - - - - - - - - - - - - - - - - - - - - - -
[ 4] 6.00-7.00 sec 53.8 MBytes 451 Mbits/sec 0 228 KBytes
[ 6] 6.00-7.00 sec 57.7 MBytes 484 Mbits/sec 0 240 KBytes
[SUM] 6.00-7.00 sec 111 MBytes 935 Mbits/sec 0
- - - - - - - - - - - - - - - - - - - - - - - - -
[ 4] 7.00-8.00 sec 54.2 MBytes 455 Mbits/sec 0 228 KBytes
[ 6] 7.00-8.00 sec 58.2 MBytes 488 Mbits/sec 0 240 KBytes
[SUM] 7.00-8.00 sec 112 MBytes 942 Mbits/sec 0
- - - - - - - - - - - - - - - - - - - - - - - - -
[ 4] 8.00-9.00 sec 52.2 MBytes 438 Mbits/sec 0 230 KBytes
[ 6] 8.00-9.00 sec 59.8 MBytes 502 Mbits/sec 0 247 KBytes
[SUM] 8.00-9.00 sec 112 MBytes 940 Mbits/sec 0
- - - - - - - - - - - - - - - - - - - - - - - - -
[ 4] 9.00-10.00 sec 51.7 MBytes 434 Mbits/sec 0 230 KBytes
[ 6] 9.00-10.00 sec 59.8 MBytes 501 Mbits/sec 0 247 KBytes
[SUM] 9.00-10.00 sec 111 MBytes 935 Mbits/sec 0
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval Transfer Bandwidth Retr
[ 4] 0.00-10.00 sec 546 MBytes 458 Mbits/sec 1 sender
[ 4] 0.00-10.00 sec 545 MBytes 457 Mbits/sec receiver
[ 6] 0.00-10.00 sec 575 MBytes 483 Mbits/sec 45 sender
[ 6] 0.00-10.00 sec 574 MBytes 482 Mbits/sec receiver
[SUM] 0.00-10.00 sec 1.09 GBytes 941 Mbits/sec 46 sender
[SUM] 0.00-10.00 sec 1.09 GBytes 939 Mbits/sec receiver
And similar CPU usage to the other tests, 50% usage on a single core:
WireGuard
If you read through the config above, you’ll notice I dropped in the config for a WireGuard tunnel to my main router.
Even though WireGuard isn’t 100% vetted yet, it’s enough that I believe it will be officially part of the Linux kernel soon. And hopefully these results will demonstrate why:
[email protected]:~$ iperf3 -c 10.172.24.1 -P2
Connecting to host 10.172.24.1, port 5201
[ 4] local 10.172.24.60 port 36752 connected to 10.172.24.1 port 5201
[ 6] local 10.172.24.60 port 36754 connected to 10.172.24.1 port 5201
[ ID] Interval Transfer Bandwidth Retr Cwnd
[ 4] 0.00-1.00 sec 54.3 MBytes 456 Mbits/sec 0 281 KBytes
[ 6] 0.00-1.00 sec 53.9 MBytes 452 Mbits/sec 0 283 KBytes
[SUM] 0.00-1.00 sec 108 MBytes 908 Mbits/sec 0
- - - - - - - - - - - - - - - - - - - - - - - - -
[ 4] 1.00-2.00 sec 53.5 MBytes 449 Mbits/sec 0 281 KBytes
[ 6] 1.00-2.00 sec 53.5 MBytes 449 Mbits/sec 0 283 KBytes
[SUM] 1.00-2.00 sec 107 MBytes 898 Mbits/sec 0
- - - - - - - - - - - - - - - - - - - - - - - - -
[ 4] 2.00-3.00 sec 53.5 MBytes 449 Mbits/sec 0 293 KBytes
[ 6] 2.00-3.00 sec 53.5 MBytes 449 Mbits/sec 0 283 KBytes
[SUM] 2.00-3.00 sec 107 MBytes 898 Mbits/sec 0
- - - - - - - - - - - - - - - - - - - - - - - - -
[ 4] 3.00-4.00 sec 53.7 MBytes 451 Mbits/sec 0 293 KBytes
[ 6] 3.00-4.00 sec 53.7 MBytes 450 Mbits/sec 0 283 KBytes
[SUM] 3.00-4.00 sec 107 MBytes 901 Mbits/sec 0
- - - - - - - - - - - - - - - - - - - - - - - - -
[ 4] 4.00-5.00 sec 53.3 MBytes 447 Mbits/sec 0 293 KBytes
[ 6] 4.00-5.00 sec 53.4 MBytes 448 Mbits/sec 0 310 KBytes
[SUM] 4.00-5.00 sec 107 MBytes 895 Mbits/sec 0
- - - - - - - - - - - - - - - - - - - - - - - - -
[ 4] 5.00-6.00 sec 53.3 MBytes 448 Mbits/sec 0 293 KBytes
[ 6] 5.00-6.00 sec 53.3 MBytes 447 Mbits/sec 0 310 KBytes
[SUM] 5.00-6.00 sec 107 MBytes 895 Mbits/sec 0
- - - - - - - - - - - - - - - - - - - - - - - - -
[ 4] 6.00-7.00 sec 53.7 MBytes 451 Mbits/sec 0 293 KBytes
[ 6] 6.00-7.00 sec 53.6 MBytes 450 Mbits/sec 0 310 KBytes
[SUM] 6.00-7.00 sec 107 MBytes 900 Mbits/sec 0
- - - - - - - - - - - - - - - - - - - - - - - - -
[ 4] 7.00-8.00 sec 53.0 MBytes 444 Mbits/sec 0 293 KBytes
[ 6] 7.00-8.00 sec 53.0 MBytes 444 Mbits/sec 0 310 KBytes
[SUM] 7.00-8.00 sec 106 MBytes 889 Mbits/sec 0
- - - - - - - - - - - - - - - - - - - - - - - - -
[ 4] 8.00-9.00 sec 54.0 MBytes 453 Mbits/sec 0 415 KBytes
[ 6] 8.00-9.00 sec 53.8 MBytes 451 Mbits/sec 0 415 KBytes
[SUM] 8.00-9.00 sec 108 MBytes 904 Mbits/sec 0
- - - - - - - - - - - - - - - - - - - - - - - - -
[ 4] 9.00-10.00 sec 53.5 MBytes 449 Mbits/sec 0 415 KBytes
[ 6] 9.00-10.00 sec 54.0 MBytes 453 Mbits/sec 0 415 KBytes
[SUM] 9.00-10.00 sec 107 MBytes 902 Mbits/sec 0
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval Transfer Bandwidth Retr
[ 4] 0.00-10.00 sec 536 MBytes 450 Mbits/sec 0 sender
[ 4] 0.00-10.00 sec 535 MBytes 449 Mbits/sec receiver
[ 6] 0.00-10.00 sec 536 MBytes 449 Mbits/sec 0 sender
[ 6] 0.00-10.00 sec 534 MBytes 448 Mbits/sec receiver
[SUM] 0.00-10.00 sec 1.05 GBytes 899 Mbits/sec 0 sender
[SUM] 0.00-10.00 sec 1.04 GBytes 897 Mbits/sec receiver
Getting 900Mbps on a $60 thin client? That’s pretty amazing in my book.
Finally we are stressing the CPU a bit, 60%, 35%, 25%, 25% on the various cores:
I think the screen on my kill-a-watt is dying as I’m having a heck of a time photographing it. But this 12.7 watts is the power usage when testing WireGuard, which is about the most amount of stress I was able to put on this little server:
Conclusion
It’s amazing that these things are going for only $60. Well, a bit more since I added the extra drive and RAM. And this is for hardware that according to Dell, was manufactured in March of 2019. Practically brand new!
For the price and feature set, I would DEFINITELY recommend this device for anyone looking for a capable VyOS host. I’m really tempted to try and source a thick version now so I can toss a 10 gigabit NIC in one and see how it performs.