[BPI-R3] information

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?

I originally run this via lxc container.

However, this should also work (at least it is working right now on my Turris Omnia [just arm64 replaced with armhf, and aarch64 with armv7]):

mkdir /tmp/ubuntu
cd /tmp/ubuntu

wget https://cdimage.ubuntu.com/ubuntu-base/releases/22.04/release/ubuntu-base-22.04-base-arm64.tar.gz
tar zxf ubuntu-base-22.04-base-arm64.tar.gz
wget https://cdn.geekbench.com/Geekbench-5.4.4-LinuxARMPreview.tar.gz
tar zxf Geekbench-5.4.4-LinuxARMPreview.tar.gz

mount --bind /proc proc
mount --bind /sys sys

chroot . /bin/bash

echo nameserver 1.1.1.1 > /etc/resolv.conf
./Geekbench-5.4.4-LinuxARMPreview/geekbench_arm64

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

https://browser.geekbench.com/v5/cpu/18391168

SoC had only ~43°C maximum without heatsink

Thank you @frank-w.

The detection on ARM is not perfect, but I think results should still be valid.

The comparison to:

I’m actually surprised as those results are pretty good. Slower than RPI4, but still pretty good.

What pakages required by mpcie slot lte module if I build from official openwrt code?

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.
3 Likes

what would you use for the EC25-E or EP06 ?

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).

1 Like

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.

@finas

You should look at set of those packages installed additionally:

Unfortunately they are provided outside of OpenWrt main repo.

1 Like

Man this guy rocks! do you know if he is planning to submit the apps to be included on openwrt?

Probably unlikely. They are available for quite some time at this point. However, this would truly be best.

do you know how to add them to the feeds file so that they appear on the makemenuconfig menu?

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

Can this board actually handle a 2.5gb fiber connection? I’m certain it can handle 1gb

if you find an sfp (not sfp+) which does 2g5 over fiber :wink: have not found any…

Well they do exist, don’t they? What about 2 separate 1gb connections? Anyone tried it?

You have only 1 mac on the 2.5g “port” (left sfp). Same for p5 of switch (right sfp).

I meant connecting 2 wan connections separately to any of the ports and balance them with mwan3. I just want to know if that SoC can handle that

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.