The IPFire wiki recommends using 4G modems via PPP, while this works it comes with performance penalties (nowadays LTE cat.19 goes up to 1.6 Gbps and 5G is being deployed). Modems support more modern ways of establishing network connectivity:
MBIM: the standard used by most vendors because it is necessary to be compatible with Windows. On Linux the driver is cdc_mbim and the userspace tools are in libmbim.
QMI: supported by a subset of vendors. The driver is qmi_wwan and the userspace tools are in libqmi.
Vendor specific: Huawei and many other vendors offer their own specific protocols.
All of them work more or less the same:
- Use usb_modeswitch to select in which mode the modem should work.
- The kernel should pick the new USB device, load the proper module and create a network interface (ie. wwan0).
- Use a userspace tools to establish connectivity (MBIM/QMI) or send an AT command (vendor specific). This is mostly to provide a PIN and the APN just like with PPP.
- Use DHCP on wwan0 to get an IP.
I have been playing with these different modes on IPFire and I managed to get it to work with PPP, MBIM and Huawei vendor specific protocol. As far as I can tell the kernel already has required modules, so IPFire only misses the userspace tools and a bit of sugar in the interface to make the process seamless. There are even tools like ModemManager that abstract away the differences between modems.