PC Engines APU3/APU4 with 4g/3g/LTE module

APU3/APU4 boards are ideal for building cellular connectivity routers. 

The usual use cases for LTE routers are:

  • Remote locations where fiber internet hasn't arrived yet
  • Redundancy. Ability to failover to LTE when the main WAN connection goes down
  • Yacht WiFi access point (LTE module + WiFi module)
  • Or just regular internet WAN, 4g networks are achieving high speeds these days and are a viable alternative to fiber connection.

Note, while 4G networks can achieve good speeds, pfSense and other BSD based operating systems don't have good drivers for LTE. On BSD systems the LTE throughput is around 10Mbit/s. 

OpenWRT achieves much better speeds - about 100Mbit/s on the same hardware. If you want to use LTE as a main connection, consider OpenWRT or other Linux-based operating system. 


Known working LTE modems

Here's a list of 3G/4G modems that have been tested with APU3:

Many other modems are also working well, but have not been tested. if you don't have a modem yet, consider buying one of the listed ones.

pfSense publishes it's own list of known working modems which you can find here: https://doc.pfsense.org/index.php/Known_Working_3G-4G_Modems  many of these modems will also work with APU, but we haven't tested them and don't make any compatibility guarantees. 

Linux operating systems (IPFire, OpenWRT, debian, Voyage) have much wider support for the LTE modems. 

Problems and workarounds

LTE modems differ in what AT commands they implement and how they expect to be initialized. There's always a little trial and error involved when working with a new modem to get it properly connected.

Multiple cuaUx.x interfaces on one modem

Once the modem is connected you will typically see more than one new device in /dev/

For example, for Huawei there are 5 interfaces present:

  • cuaU0.0
  • cuaU0.1
  • cuaU0.2
  • cuaU0.3
  • cuaU0.4
[2.4.3-RELEASE][root@pfSense.localdomain]/root: ls /dev/cuaU0.*
/dev/cuaU0.0            /dev/cuaU0.1.lock       /dev/cuaU0.3.init
/dev/cuaU0.0.init       /dev/cuaU0.2            /dev/cuaU0.3.lock
/dev/cuaU0.0.lock       /dev/cuaU0.2.init       /dev/cuaU0.4
/dev/cuaU0.1            /dev/cuaU0.2.lock       /dev/cuaU0.4.init
/dev/cuaU0.1.init       /dev/cuaU0.3            /dev/cuaU0.4.lock

In case of this Huawei modem, you need to use the first one (cuaU0.0) for setting up internet connection. Other interfaces can be used for issuing commands to the modem while it's connected or retrieving GPS coordinates. On other modems you may need to use different cuaUx.x interface.

LTE modem Init string

Some LTE modems require initialization strings to be issued before the modem can be connected. pfSense has a number of pre-set init strings, but these are often wrong. The default init string "AT&F&C1&D2E0S0=0M1" almost never works in our experience.

Some experimentation is often needed to get this right.

Modem not being detected

Some supported modems (for example HUAWEI ME909u-521) require minimum 20 seconds of power before they boot up properly. This means that if the operating system boots up quicker than the modem, modem won't be detected. 

This can be fixed by adding a delay in the operating system boot script.

Other settings

When configuring LTE modem for internet connectivity, one must know few things:

  1. Access Point Name or APN of the operator. Again, pfSense has number of pre-sets, but it's often wrong. 
  2. LTE Phone number (Typically *99# for GSM networks and #777 for CDMA networks)
  3. Init string (sometimes it's ISP specific)

See our other article on step-by-step pfSense configuration for HUAWEI ME909u-521


See how SIM slots are connected to the mPCIe ports. 

  • SIM1 is connected to J15
  • SIM2 is connected to J14

Note: J14 is typically used for mSata SSD drive. If you plan on connecting 2 LTE modems, you must install operating system on the SD card.