Some years ago, I built my parents (who are full-timing) a Peplink/Crandlepoint alternative due to the higher cost and closed-source nature of those solutions. What I ended up going with was based on a commercial-off-the-shelf router, the Turris Omnia, which I stuck a 4G LTE (Telit LM940) modem in. All said and done, I spent somewhere around 40-50% less in cost than a comparable Peplink. For the first few years, it worked well... but it's been getting especially bad lately -- both speed-wise and in terms of connection stability.
I wrote it off as the carrier (Verizon) moving to 5G and went to look at what options were available mid last year. The Peplink BR1 Pro 5G with X62 modem is/was going for $999.99 before tax/shipping, which still felt a bit steep today for what you get. It was also disappointing to see that Peplink is now using Quectel (Chinese) modems rather than something designed in the West -- the former BR1 Pro 5G modem used a Sierra Wireless X55 modem IIUC. Mix in with the fact that they do not seem to support upgrading the modem, it does not have the software support I want (Wireguard), etc... no thanks!
So I did something similar this year and went full-bore custom. Ended up building a system using:
* Mini-Box M300 case with 80W PicoPSU (DC/DC converter)
* Supermicro A3SEV-4C-LN4 motherboard (Intel Atom x6425E quad-core processor, up to 3GHz turbo)
* Sierra Wireless EM9291 PCI-e (Qualcomm Snapdragon X62)
* Qualcomm WCN6855 PCI-e (2x2 WiFi-6E)
Hardware-wise, the only thing I regret is not having a better solution to mount the modem onto the motherboard. However, it's a small price to pay -- everything about the hardware is standard! SATA ports, replaceable DIMMs, PCI-e lots (2xM.2 and a fat PCI-e), etc. The Atom processor is even capable of in-band ECC for the DRAM!
In particular, I can now just upgrade the modem, and only the modem, when it inevitably becomes obsolete/EOL and keep the rest of the hardware unchanged. Here's a side-profile view of the case with 2 SSDs mounted on top showing that it's still fairly compact:
All loaded with 1 SSD, the WiFi 6E and 5G radios, 16GB RAM, etc. - it pulls just under 9W at idle from an AC brick.
Moreover, it's running a bog-standard Linux distribution (Debian GNU/Linux "bookworm" with a 6.6 LTS kernel)! By day, I'm a cloud engineer, so having something that's readily administrable and not behind some proprietary UI/CLI is a huge win for me. e.g. due to the genecity of the platform, I was able to spin up something on my parents laptops that dumps a backup of their files periodically to the SSD on the router, and from there I periodically sync the router's backup to an offsite one. Using the router as an intermediary data tank works well as I can do the offsite backup pull off-hours and their laptops don't have to be running for it to all work.
It's also nice knowing that the majority of the software in the router will receive software/security updates essentially for perpetuity and not subject to a vendor EOL'ing the platform.
For the antenna, we went with a Panorama White MAKO Dome Antenna (LP-IN2443-W) run to the roof, which I understand is fairly common here.
All said and done, it did require a good bit of technical know-how to get going -- and was rougher than what I expected... in particular:
* Patches to the Linux kernel to add support for the EM9291 (X62) modem. As of now, only EM9191 (X55) is supported.
* A connection manager to manage the data sessions for the modem and maintain the kernel's routing tables. It's perhaps possible to use the already existing modem-manager software, but I wanted something a little more tightly integrated with the modem than what its feature set offered, and Sierra Wireless (the modem manufactuer) provides a QMI SDK with the modem, so why not...
* A lot of time banging my head on iptables (Linux firewalling)...
The real challenges I faced were the (still yet) dropped connections from Verizon. After much hair pulling, I found out the hard way that Verizon will drop your entire cellular data session if you route them any packets with a source address other than that for which the modem is assigned. I had a SNAT setup so that, in theory, should not have happened... but in some cases, packets without a connection tracking state would sidestep the NAT due to an oversight on my part. As a result, Verizon will get a packet whose source address was one behind the NAT and they'd kill the connection. Something to check if you are getting unexpectedly dropped connections from your provider.
All said and done, I've got it just about to the point where we get maintain the same IPv4/v6 address for >24 hours and there are no drops (fingers crossed...). I'm so tickled that it just works! Short of the modem/BIOS firmwares and QMI SDK/libraries, everything is open-source at its core! I did a speedtest run earlier today and clocked 90Mbps downlink at the park we're currently staying at whereas (using the same provider/data plan), a Pixel 4a 5G cellphone inside the rig was struggling to pull 1Mbps on the same speedtest.
I'm hoping to be able to share all the configuration/software involved if anyone has the necessary background to pick it up and make it work -- let me know. It should be possible to do a cost-reduced version.
I wrote it off as the carrier (Verizon) moving to 5G and went to look at what options were available mid last year. The Peplink BR1 Pro 5G with X62 modem is/was going for $999.99 before tax/shipping, which still felt a bit steep today for what you get. It was also disappointing to see that Peplink is now using Quectel (Chinese) modems rather than something designed in the West -- the former BR1 Pro 5G modem used a Sierra Wireless X55 modem IIUC. Mix in with the fact that they do not seem to support upgrading the modem, it does not have the software support I want (Wireguard), etc... no thanks!
So I did something similar this year and went full-bore custom. Ended up building a system using:
* Mini-Box M300 case with 80W PicoPSU (DC/DC converter)
* Supermicro A3SEV-4C-LN4 motherboard (Intel Atom x6425E quad-core processor, up to 3GHz turbo)
* Sierra Wireless EM9291 PCI-e (Qualcomm Snapdragon X62)
* Qualcomm WCN6855 PCI-e (2x2 WiFi-6E)
Hardware-wise, the only thing I regret is not having a better solution to mount the modem onto the motherboard. However, it's a small price to pay -- everything about the hardware is standard! SATA ports, replaceable DIMMs, PCI-e lots (2xM.2 and a fat PCI-e), etc. The Atom processor is even capable of in-band ECC for the DRAM!
In particular, I can now just upgrade the modem, and only the modem, when it inevitably becomes obsolete/EOL and keep the rest of the hardware unchanged. Here's a side-profile view of the case with 2 SSDs mounted on top showing that it's still fairly compact:
All loaded with 1 SSD, the WiFi 6E and 5G radios, 16GB RAM, etc. - it pulls just under 9W at idle from an AC brick.
Moreover, it's running a bog-standard Linux distribution (Debian GNU/Linux "bookworm" with a 6.6 LTS kernel)! By day, I'm a cloud engineer, so having something that's readily administrable and not behind some proprietary UI/CLI is a huge win for me. e.g. due to the genecity of the platform, I was able to spin up something on my parents laptops that dumps a backup of their files periodically to the SSD on the router, and from there I periodically sync the router's backup to an offsite one. Using the router as an intermediary data tank works well as I can do the offsite backup pull off-hours and their laptops don't have to be running for it to all work.
It's also nice knowing that the majority of the software in the router will receive software/security updates essentially for perpetuity and not subject to a vendor EOL'ing the platform.
For the antenna, we went with a Panorama White MAKO Dome Antenna (LP-IN2443-W) run to the roof, which I understand is fairly common here.
All said and done, it did require a good bit of technical know-how to get going -- and was rougher than what I expected... in particular:
* Patches to the Linux kernel to add support for the EM9291 (X62) modem. As of now, only EM9191 (X55) is supported.
* A connection manager to manage the data sessions for the modem and maintain the kernel's routing tables. It's perhaps possible to use the already existing modem-manager software, but I wanted something a little more tightly integrated with the modem than what its feature set offered, and Sierra Wireless (the modem manufactuer) provides a QMI SDK with the modem, so why not...
* A lot of time banging my head on iptables (Linux firewalling)...
The real challenges I faced were the (still yet) dropped connections from Verizon. After much hair pulling, I found out the hard way that Verizon will drop your entire cellular data session if you route them any packets with a source address other than that for which the modem is assigned. I had a SNAT setup so that, in theory, should not have happened... but in some cases, packets without a connection tracking state would sidestep the NAT due to an oversight on my part. As a result, Verizon will get a packet whose source address was one behind the NAT and they'd kill the connection. Something to check if you are getting unexpectedly dropped connections from your provider.
All said and done, I've got it just about to the point where we get maintain the same IPv4/v6 address for >24 hours and there are no drops (fingers crossed...). I'm so tickled that it just works! Short of the modem/BIOS firmwares and QMI SDK/libraries, everything is open-source at its core! I did a speedtest run earlier today and clocked 90Mbps downlink at the park we're currently staying at whereas (using the same provider/data plan), a Pixel 4a 5G cellphone inside the rig was struggling to pull 1Mbps on the same speedtest.
I'm hoping to be able to share all the configuration/software involved if anyone has the necessary background to pick it up and make it work -- let me know. It should be possible to do a cost-reduced version.