Unfortunately the geekbench binaries are dynamically linked against uClibc.
If I find more time for that I’ll try running it inside a uClibc container (as Debian uses glibc, OpenWrt uses musl the binary doesn’t run out-of-the-box on neither of them).
How did you actually run this on the Turris Omnia?
Geekbench has some detection issues (frequency and core-count) so maybe results are not right:
System Information
Operating System Debian GNU/Linux 11 (bullseye)
Kernel Linux 6.1.0-rc1-bpi-r3-r3 aarch64
Model Bananapi BPI-R3 (sdmmc)
Motherboard N/A
Processor Information
Name ARM ARMv8
Topology 1 Processor, 1 Core, 4 Threads
Identifier ARM implementer 65 architecture 8 variant 0 part 3331 revision 4
Base Frequency 0.00 Hz
Memory Information
Size 1.94 GB
Unfortunately there is not just one way to interface LTE modems with Linux (in terms of drivers), and there are at least three ways to control them from OpenWrt’s user space. Which of them is best depends on the modem and the use-case.
Let’s start with the most common contemporary modem USB driver interfaces:
simple serial interface: there are a couple of different standard and non-standard drivers used to interface cellular modems using the classic Hayes/AT command set as defined in the ETSI GSM standard. Install kmod-usb-acm, kmod-usb-serial-option, kmod-usb-serial-sierrawireless, kmod-usb-serial-qualcomm to cover most of them.
USB Mobile Broadband Interface Model (MBIM): A standard interface to mobile broadband modems defined by joint group of industry players including Ericsson, Microsoft and Nokia. Most modern modems intended for use in the Microsoft universe come with support for this interface. Install kmod-usb-net-cdc-mbim to make use of this interface with OpenWrt.
USB Communication Device Class (CDC) using the sub-class Network Control Model (NCM): A generic way to control modems exposing an USB-Ethernet adapter. Install kmod-usb-net-cdc-ncm.
Huawei CDC/NCM: The way Huawei interpreted and amended the above standard. Install kmod-usb-net-huawei-cdc-ncm
Qualcomm’s QMI protocol: Install usb-net-qmi-wwan
Samsung Kalmia based LTE USB modems: Install kmod-usb-net-kalmia
Now if you thought that every modem supports exactly one of those interfaces, well, it’s not that simple.
Most modems support a subset of the above list, many allow switching between different interface modes or even allow (and sometimes require…) simultaneous use a combination of them (Qualcomm-based modems typically expose GPS and management interfaces as serial ports, plus either QMI or MBIM for mobile broadband, for example).
Note that some recent Qualcomm 5G modems are connected via PCIe rather than USB and use yet another proprietary protocol called Modem Host Interface (MHI). They are not compatible with the R3 as the mPCIe slot with SIM card connected only exposes USB 2.0 pins (and not PCIe).
Also note that there are some historic vendor-specific USB modem driver interfaces which I won’t even mention as nobody should be using them in new designs.
Anyway. Now with all those kernel modules installed you will still need a way to setup the modem to connect to the Internet (never mind voice calls, SMS, … for now. But it’s all possible as well). And also for this there are several ways:
simply use Hayes/AT interface to dial and connect like if it was an analog modem from the 1990s and use PPP protocol, like in the good old days. This works with most modems and require little to no extra software support compared to classic telephone-line connected analog modems, but performance is not great. In OpenWrt this mode can be used by installing the wwan and comgt packages.
use protocol-specific minimal OpenWrt tools:
umbim to setup MBIM compatible modems
use comgt-ncm for CDC/NCM compatible modems
use uqmi to setup QMI compatible modems
For all of the above there are also LuCI packages (luci-proto-3g, luci-proto-ncm, luci-proto-qmi, …)
Instead of using any of the above ways to manage the modem you may also use ModemManager which is the common way to use cellular modems in the systemd/dbus world. Also for this there is a LuCI frontend called luci-proto-modemmanager. Be sure to build ModemManager with the protocol options needed for your modem (by default those options are not enabled, ie. you need to build from source and e.g. select MODEMMANAGER_WITH_QMI and/or MODEMMANAGER_WITH_MBIM to have them). Using ModemManager has the advantage of there being a dedicated persistent process watching and managing the modem state. This is particularly important for modems in mobile setups which do not auto-reconnect in case of network loss.
If it’s in a fixed installation for mobile broadband Internet access then I’d go with uqmi and luci-proto-qmi. Read the respective modem documentation to learn if the modem needs to be switched to QMI mode and if so, how to do that. The EC-25 is known to work well in auto-reconnect mode, so the same setup should also be sufficient for mobile setups with occasional signal loss in uncovered areas, carrier changes/roaming, … I don’t know how the EP06 performs in mobile setups, if you experience any problems with reconnecting after signal loss or change of carrier, try using ModemManager (and luci-proto-modemmanager) instead (and make sure to build the modemmanager package from source with option to enable QMI set).
I have a bunch of gl.inet xe300 that have the EP06 modem and they are installed in places with very unstable gsm coverage. I made a custom openwrt build for them with uqmi and luci-proto-qmi and they reconnect without any issues.
The only thing I miss is that there is no information about signal quality of band or whatever in the luci page. not sure if I am missing some package or if it’s just like that.
can you please open new topic for openwrt/lte-card related things? this thread was intended for some generic board/hw information. making own thread for specific questions make them easier to find in future for other users having same questions/problems
Afaik you can do this always as it is a software thing. Did this some time ago…you have to care about the same way for tcp-sessions else sessions will be terminated when used from other ip address. Fair you have to define multiole routing tables (for multiple default routes) and do some marking for conntrack.