Not a minute offline - Choosing an industrial LTE router

    Industrial LTE Termit CR41P router, with antennas Triad MA-2697

    In many systems, connection to the Internet is critical, and even a few minutes of downtime can be expensive, for example, in ATMs, alarms, monitoring and access control systems.
    Such systems usually use several Internet connections and automatically switch between different channels if the main channel is unavailable.

    I was tired of inventing failover on USB modems myself , and I wanted to delegate this to a separate smart piece of hardware. I decided to compare several industrial routers to find out if they live up to their name and how much better they are than my crutches. The article will compare routers of manufacturers iRZ, Termit, Robustel.

    Basic requirements for routers:

    • 2 SIM-cards and automatic switching between operators - the router should automatically detect the loss of communication on one operator and switch to the backup. This is especially important for mobile systems when cellular coverage is not perfect.
    • Ethernet connection - the main system should see only the default gateway, and should not know about the modem subsystem on the router side and channel switching, therefore no USB.
    • Support for modern VPN protocols: IKEv2 and OpenVPN - for ease of administration, and in order not to depend on real IP addresses, routers must be able to VPN. At the same time, support not only obsolete PPTP and L2TP, but also modern protocols.
    • (Optional) GPS support, the availability of GPIO, serial RS-232/485 interfaces - these functions are not required for our tasks, but we will also consider them as a bonus, which may be useful to someone.

    The problem of homemade crutches


    Zyxel router with two USB modems, mounted on the wall.  Wires from external antennas are connected to the modem.Wi-Fi router with two USB modems (Photo: Dmitry Bevza dgl.ru)

    Failover - emergency switching of the Internet channel to the backup, in cases of inaccessibility of the main one.

    Usually, to reserve Internet channels, I used a household Wi-Fi router with OpenWRT firmware, and the mwan3 package . It allows you to configure automatic backup and balancing between several Internet channels, including between a wired connection and a USB modem.

    The main drawback of this approach is the heterogeneous equipment and flimsy design of external USB-modems. I liked the Huawei E3372h modems with HiLink firmware (Ethernet emulation). These modems are quite stable and cheap, but when external antennas are connected, the whole structure becomes very flimsy. The antenna’s hard wires create a lever, and modems get out of the USB port, and the CRC9 antenna connector itself is not as reliable as the SMA, because it does not have a screw mount.

    Modem Huawei E3372h.  The antenna connector in USB modems does not allow reliable fixation of external antennas.  They are easy to pull
    Assemblies on external USB modems are very fragile: antenna connectors are not fixed, modems fall out of ports

    The design of two USB modems with external antennas had to be very hard to fix, but physical damage and dropping out of ports were still the main problem. This solution is suitable for static installation in hard-to-reach places, but it is absolutely not suitable for installation in a car or in an electrical panel on a DIN rail.

    Sometimes the USB subsystem hung in the routers, and modems became unavailable. I had to write a watchdog script that would separately monitor the availability of modems, in addition to mwan3, which monitors the availability of the Internet. At some point, I was tired of it, and I began to look for a solution in one box, where all the problems had already been solved for me.

    Model Comparison Chart


    Industrial routers are more expensive than household routers, even with the separate purchase of modems. Therefore, the main criterion for choosing models for the review was the cost. Additional features like Wi-Fi, GPIO pins and GPS are not needed in our case, but we will still compare them as options that affect the cost.

    Model2 SIMWired WANLAN portsWifiGPSPrice
    Termit CR41P
    ⁣⁣⁢⁢ ✓4≈13 000 ₽
    Robustel r2000
    2XX≈12 000 ₽
    iRZ RU22W
    4≈15 000 ₽

    Testing methodology


    The main task of the compared routers is to provide uninterrupted Internet in any conditions, therefore we will compare how well the router switches to the backup channel in case of problems on the main one. To do this, we will simulate a loss of communication, and measure on the server side how quickly the router was able to reconnect.

    As a target host, a small TP-Link MR3020 router will be connected to each tested router, which will act as a computer with a payload. It will run OpenVPN connected to the server. Monitoring will be launched on the server, monitoring the availability of the address inside the VPN tunnel.

    That is, on the server side, one fixed IP address will be monitored assigned to mr3020 via a VPN tunnel. Regardless of which channel the traffic on the router goes through, the monitoring server will interact with one address. Accordingly, if the address is available, this means that the router has successfully switched the channel, and there is Internet in the network behind NAT.
    In order to restore the OpenVPN tunnel as quickly as possible, on the server side, set the keep-alive option to the minimum values, and disable encryption:

    cipher none
    ping 1
    ping-restart 4
    

    Keep in mind that it takes time to reconnect the VPN, and in reality the Internet is recovering faster than can be seen on the graphs. However, such a test allows a more honest assessment of the fact of channel switching, as it shows that the clients behind the router were able to restore TCP connections and return to normal operation.

    Test bench layout.  The MR3020 router acts as a computer with a running VPN client.  The remote server is monitoring the IP address of the VPN client.
    A TP-Link MR3020 is connected to each router, with a running VPN tunnel. A working Internet is considered to be the availability of the IP address 10.0.0.1 on the server side

    PingPlotter - monitoring program


    The monitoring program and the OpenVPN server are located on the same physical computer as the VPN server. I will monitor the MultiPing utility using regular ICMP Echo requests. The request interval is 1 second - this allows you to see on the graph even short-term inaccessibility of the host.

    PingPlotter program for monitoring host availability.  Analogue console MTR.
    The PingPlotter program draws convenient ping graphs showing the delay and packet loss.

    I admit, I tried for a long time to choose a monitoring system. I tried zabbix, cacti, bash + rrdtool scripts, but it all seemed too complicated for my tasks. As a result, I found the excellent PingPlotter program and its simplified version without route tracing - MultiPing. The program allows real-time monitoring of a group of hosts with a resolution of up to 1 second, and draw detailed graphs.

    Antenna



    Broadband antenna Triad MA-2697, suitable for the basic ranges of cellular communications

    In order to exclude different reception quality due to different antennas, the same Triad MA-2697 antennas will be connected to all routers . According to the manufacturer, the antenna is broadband, and works in the bands GSM-900 \ 1800 MHz, 3G-2100 MHz, Wi-Fi-2400 MHz and 4G WiMAX-2600 MHz. I will not check the quality of the antenna. Even if it is bad, all routers will work in the same reception conditions.

    Mobile operators


    MegaFon and MTS SIM-cards will be installed in each router, with the usual tariff for individuals. The megaphone will be selected as the main, MTS standby. There is no logic in such a priority, the choice is random. At the test site, both operators have equally good LTE coverage.

    Disadvantages of the test bench


    All routers connected at once on the table.  A whole bunch of wires and antennas.
    Test stand deployed on the table

    Since the test stand is stationary in the room, the quality of coverage of the cellular network does not change. In such conditions, it is impossible to artificially simulate poor coverage when there is a cellular network signal, but packet losses are too large. In a good way, it was necessary to place a stand on a train or car, and carry it to places far from the city. Then it would be possible to compare how well the built-in modems work with a bad signal.
    In our case, we can only recreate a complete loss of communication on the main channel, and watch how quickly the router switches to the backup one.

    Termit CR41P


    The router is provided by Digital Angel (digitalangel.ru)


    SoC : Atheros AR9344 rev. 3
    RAM: 128MB
    Flash memory: 16MB
    Wi-Fi: 802.11n (2.4GHz)
    Modem : Quectel EC25-E (LTE Cat 4)
    Firmware : based on OpenWRT 05.15.1
    USB Host
    MicroSD
    DIN rail mount
    GPS / GLONASS: 3V active antenna
    Serial interfaces: RS-232/485
    I / O pins : 2 digital inputs (0-3V / 0-30V, galvanically isolated), 1 analog input (0-24V), 1 digital output (30V, 250 mA open collector), 1 relay output (40V, 4A SPST)



    To install the SIM card, you need to unscrew the four screws and remove the back cover.

    Well, this is an occasion to consider the insides in more detail. clickable The modem part is made in the form of a shield that is worn on the main board. In the corner you can see the relay for a powerful load output to the I / O pins. The most feature-rich router in the review. It has a wired WAN, and also allows you to use Wi-Fi in the station (client) mode, as a separate WAN. That is, it can have four backup Internet channels. The web interface immediately issues LuCI from OpenWRT. This can be seen both in the design, which they did not try to disguise, and in the paths in the URL. In my opinion, this is rather a plus, as it makes it easy to finish the system for yourself. Industrial functions added to firmware: Modbus, VRRP










    , MQTT. Through Modbus and MQTT, you can control basic functions, get network status, GPS coordinates, temperature, switch profiles, reboot the router, manage I / O pins.

    Monitoring of Internet channels is done through the multiwan package , which is called obsolete in the OpenWRT wiki. Instead, mwan3 is recommended.

    Overview of the web interface and additional features

    I / O conclusions


    I / O pins are managed via the web interface, you can immediately see the status and rename each pin. This will not replace a full-fledged microcontroller, but may be suitable for simple automation. For example, open the door or raise the barrier by SMS, MQTT or HTTP request, perform an action when the sensor is triggered, and send a notification about it. Quite interesting functionality that allows you to get by with one device.

    Trigger configuration interface for the analog input of the Termit CR41P router
    Trigger configuration interface for analog input. You can specify the voltage range in which the trigger will work, or configure it to trigger when you exit the range

    Serial Interfaces RS-232/485


    Physically, the RS-232 interface is made in the form of a DB9 connector (COM port), and RS-485 is in the form of a removable terminal block. In the web interface, you can select four port operation modes:

    • System Console - SSH Access
    • Serial over IP - forwarding a serial port over the Internet
    • Modbus Gateway - Modbus TCP <-> RTU Converter
    • NTRIP client - data transmission from GPS

    Selection of the operating mode of serial ports in the Termit CR41P router
    Choosing a serial port operating mode

    GPS


    Модуль GPS встроен в чип модема и доступен как USB устройство. Позволяет отслеживать координаты устройства и синхронизировать системные часы по GPS, при этом роутер может быть NTP-сервером и предоставлять точное время для устройств в сети, даже без интернета. Есть функция Geofencing, позволяющая задать географическую зону в качестве триггера, который срабатывает при посещении зоны или ухода из неё. Может быть полезно для роуминга, при покидании домашнего региона. Зону можно определить только одну, и только в радиусе от точки, то есть зона всегда представляет собой круг.


    Настройка географической зоны для срабатывания триггера

    Вывод dmesg
    [0.000000] Linux version 3.18.44 (gediminas @ gediminas-H110M-S2H) (gcc version 4.8.3 (OpenWrt / Linaro GCC 4.8-2014.04 r40569)) # 14 Fri May 25 15:09:41 EEST 2018
    [0.000000] MyLoader : sysp = 30fe861a, boardp = 21046795, parts = 5c8953fe
    [0.000000] bootconsole [early0] enabled
    [0.000000] CPU0 revision is: 0001974c (MIPS 74Kc)
    [0.000000] SoC: Atheros AR9344 rev 3
    [0.000000] Determined physical RAM map:
    [ 0.000000] memory: 08000000 @ 00000000 (usable)
    [0.000000] Initrd not found or empty - disabling initrd
    [0.000000] Zone ranges:
    [0.000000] Normal [mem 0x00000000-0x07ffffff]
    [0.000000] Movable zone start for each node
    [0.000000] Early memory node ranges
    [ 0.000000] node 0: [mem 0x00000000-0x07ffffff]
    [ 0.000000] Initmem setup node 0 [mem 0x00000000-0x07ffffff]
    [ 0.000000] On node 0 totalpages: 32768
    [ 0.000000] free_area_init_node: node 0, pgdat 803802b0, node_mem_map 81000000
    [ 0.000000] Normal zone: 256 pages used for memmap
    [ 0.000000] Normal zone: 0 pages reserved
    [ 0.000000] Normal zone: 32768 pages, LIFO batch:7
    [ 0.000000] Primary instruction cache 64kB, VIPT, 4-way, linesize 32 bytes.
    [ 0.000000] Primary data cache 32kB, 4-way, VIPT, cache aliases, linesize 32 bytes
    [ 0.000000] pcpu-alloc: s0 r0 d32768 u32768 alloc=1*32768
    [ 0.000000] pcpu-alloc: [0] 0
    [0.000000] Built 1 zonelists in Zone order, mobility grouping on. Total pages: 32512
    [0.000000] Kernel command line: board = TLT-RUT900 console = ttyS0,115200 rootfstype = squashfs, jffs2 noinitrd lpj = 1370112 quiet loglevel = 3
    [0.000000] PID hash table entries: 512 (order: -1, 2048 bytes)
    [0.000000] Dentry cache hash table entries: 16384 (order: 4, 65536 bytes)
    [0.000000] Inode-cache hash table entries: 8192 (order: 3, 32768 bytes)
    [0.000000] Writing ErrCtl register = 00000000
    [0.000000] Readback ErrCtl register = 00000000
    [0.000000] Memory: 125728K / 131072K available (2611K kernel code, 155K rwdata, 552K rodata, 256K init, 189K bss, 5344K reserved)
    [0.000000] SLUB: HWalign = 32, Order = 0-3, MinObjects = 0, CPUs = 1, Nodes = 1
    [0.000000] NR_IRQS: 83
    [0.000000] Clocks: CPU: 550.000MHz, DDR: 400.000MHz, AHB: 200.000MHz, Ref: 40.000MHz
    [0.000000] Calibrating delay loop (skipped) preset value ... 274.02 BogoMIPS (lpj = 1370112)
    [ 0.000000] pid_max: default: 32768 minimum: 301
    [0.000000] Mount-cache hash table entries: 1024 (order: 0, 4096 bytes)
    [0.000000] Mountpoint-cache hash table entries: 1024 (order: 0, 4096 bytes)
    [0.000000 ] NET: Registered protocol family 16
    [0.000000] MIPS: machine is TELTONIKA TLT-RUT900
    [0.450000] pca953x 0-0074: interrupt support not compiled in
    [0.450000] i2c-gpio i2c-gpio.0: using pins 17 (SDA) and 16 (SCL)
    [0.450000] Switched to clocksource MIPS
    [0.450000] NET: Registered protocol family 2
    [0.450000] TCP established hash table entries: 1024 (order: 0, 4096 bytes)
    [0.450000] TCP bind hash table entries: 1024 (order: 0, 4096 bytes)
    [0.450000] TCP: Hash tables configured (established 1024 bind 1024)
    [0.450000] TCP: reno registered
    [0.450000] UDP hash table entries: 256 (order: 0, 4096 bytes)
    [0.450000] UDP-Lite hash table entries: 256 (order: 0, 4096 bytes)
    [0.450000] NET: Registered protocol family 1
    [0.450000] PCI: CLS 0 bytes, default 32
    [0.460000] futex hash table entries: 256 (order: -1, 3072 bytes)
    [0.460000] squashfs: version 4.0 (2009/01/31) Phillip Lougher
    [0.460000] jffs2: version 2.2 (NAND) (SUMMARY) (LZMA) (RTIME) (CMODE_PRIORITY) © 2001-2006 Red Hat, Inc.
    [ 0.460000] msgmni has been set to 245
    [ 0.460000] io scheduler noop registered
    [ 0.460000] io scheduler deadline registered (default)
    [ 0.460000] Serial: 8250/16550 driver, 1 ports, IRQ sharing disabled
    [ 0.460000] console [ttyS0] disabled
    [ 0.480000] serial8250.0: ttyS0 at MMIO 0x18020000 (irq = 11, base_baud = 2500000) is a 16550A
    [ 0.480000] console [ttyS0] enabled
    [ 0.480000] bootconsole [early0] disabled
    [ 0.480000] ar934x-hs-uart.0: ttyATH0 at MMIO 0x18500000 (irq = 14, base_baud = 2500000) is a AR934X UART
    [ 0.500000] m25p80 spi0.0: found gd25q128, expected m25p80
    [ 0.500000] m25p80 spi0.0: gd25q128 (16384 Kbytes)
    [ 0.500000] 7 teltonika partitions found on MTD device spi0.0
    [ 0.500000] Creating 7 MTD partitions on «spi0.0»:
    [ 0.500000] 0x000000000000-0x000000020000: «u-boot»
    [ 0.500000] 0x000000020000-0x000000030000: «config»
    [ 0.500000] 0x000000030000-0x000000040000: «art»
    [ 0.500000] 0x000000040000-0x0000001630ac: «kernel»
    [ 0.500000] 0x0000001630ac-0x000000f70000: «rootfs»
    [ 0.500000] mtd: device 4 (rootfs) set to be root filesystem
    [ 0.510000] 1 squashfs-split partitions found on MTD device rootfs
    [ 0.510000] 0x000000b30000-0x000000f70000: «rootfs_data»
    [ 0.510000] 0x000000040000-0x000000f70000: «firmware»
    [ 0.510000] 0x000000f70000-0x000001000000: «event-log»
    [ 0.520000] libphy: ag71xx_mdio: probed
    [1.110000] ag71xx-mdio.1: Found an AR934X built-in switch
    [1.140000] eth0: Atheros AG71xx at 0xba000000, irq 5, mode: GMII
    [1.730000] ag71xx ag71xx.0: connected to PHY at ag71xx-mdio.1: 04 [uid = 004dd042, driver = Generic PHY]
    [1.730000] eth1: Atheros AG71xx at 0xb9000000, irq 4, mode: MII
    [1.740000] TCP: cubic registered
    [1.740000] NET: Registered protocol family 17
    [1.740000] bridge: automatic filtering via arp / ip / ip6tables has been deprecated. Update your scripts to load br_netfilter if you need this.
    [1.740000] Bridge firewalling registered
    [1.740000] 8021q: 802.1Q VLAN Support v1.8
    [1.750000] VFS: Mounted root (squashfs filesystem) readonly on device 31: 4.
    [ 1.750000] Freeing unused kernel memory: 256K (803a0000 — 803e0000)
    [ 5.030000] usbcore: registered new interface driver usbfs
    [ 5.030000] usbcore: registered new interface driver hub
    [ 5.030000] usbcore: registered new device driver usb
    [ 5.050000] SCSI subsystem initialized
    [ 5.050000] ehci_hcd: USB 2.0 'Enhanced' Host Controller (EHCI) Driver
    [ 5.050000] ehci-platform: EHCI generic platform driver
    [ 5.050000] ehci-platform ehci-platform: EHCI Host Controller
    [ 5.050000] ehci-platform ehci-platform: new USB bus registered, assigned bus number 1
    [ 5.060000] ehci-platform ehci-platform: TX-TX IDP fix enabled
    [ 5.060000] ehci-platform ehci-platform: irq 3, io mem 0x1b000000
    [5.080000] ehci-platform ehci-platform: USB 2.0 started, EHCI 1.00
    [5.080000] hub 1-0: 1.0: USB hub found
    [5.080000] hub 1-0: 1.0: 1 port detected
    [5.080000] uhci_hcd: USB Universal Host Controller Interface driver
    [5.090000] usbcore: registered new interface driver usb-storage
    [5.400000] usb 1-1: new high-speed USB device number 2 using ehci-platform
    [5.550000] hub 1-1: 1.0: USB hub found
    [5.550000 ] hub 1-1: 1.0: 3 ports detected
    [5.830000] usb 1-1.1: new full-speed USB device number 3 using ehci-platform
    [6.620000] mount_root: loading kmods from internal overlay
    [ 7.080000] jffs2: notice: (339) jffs2_build_xattr_subsystem: complete building xattr subsystem, 0 of xdatum (0 unchecked, 0 orphan) and 0 of xref (0 dead, 0 orphan) found.
    [ 7.080000] block: attempting to load /tmp/jffs_cfg/upper/etc/config/fstab
    [ 7.130000] block: extroot: not configured
    [ 7.240000] jffs2: notice: (336) jffs2_build_xattr_subsystem: complete building xattr subsystem, 0 of xdatum (0 unchecked, 0 orphan) and 0 of xref (0 dead, 0 orphan) found.
    [ 7.430000] block: attempting to load /tmp/jffs_cfg/upper/etc/config/fstab
    [ 7.480000] block: extroot: not configured
    [ 7.480000] mount_root: switching to jffs2 overlay
    [ 9.980000] random: ubusd urandom read with 18 bits of entropy available
    [11.260000] NET: Registered protocol family 10
    [11.410000] ntfs: driver 2.1.31 [Flags: R / O MODULE].
    [11.430000] Initializing XFRM netlink socket
    [11.430000] NET: Registered protocol family 15
    [11.440000] tun: Universal TUN / TAP device driver, 1.6
    [11.440000] tun: © 1999-2004 Max Krasnyansky
    [ 11.500000] l2tp_core: L2TP core driver, V2.0
    [ 11.500000] l2tp_netlink: L2TP netlink interface
    [ 11.510000] gre: GRE over IPv4 demultiplexor driver
    [ 11.510000] ip_gre: GRE over IPv4 tunneling driver
    [ 11.540000] ip6_tables: © 2000-2006 Netfilter Core Team
    [ 11.580000] nf_conntrack version 0.5.0 (1968 buckets, 7872 max)
    [ 12.110000] lp: driver loaded but no devices found
    [ 12.130000] ppdev: user-space parallel port driver
    [ 12.290000] u32 classifier
    [ 12.290000] input device check on
    [ 12.290000] Actions configured
    [ 12.330000] Mirror/redirect action on
    [ 12.460000] cdc_acm 1-1.1:1.0: This device cannot do calls on its own. It is not a modem.
    [ 12.460000] cdc_acm 1-1.1:1.0: ttyACM0: USB ACM device
    [ 12.460000] usbcore: registered new interface driver cdc_acm
    [ 12.460000] cdc_acm: USB Abstract Control Model driver for USB modems and ISDN adapters
    [ 12.470000] usbcore: registered new interface driver cdc_wdm
    [ 12.500000] Loading modules backported from Linux version v4.4-rc5-1913-gc8fdf68
    [ 12.500000] Backport generated by backports.git backports-20151218-0-g2f58d9d
    [ 12.690000] Ebtables v2.0 registered
    [ 12.730000] ip_tables: © 2000-2006 Netfilter Core Team
    [ 12.820000] Netfilter messages via NETLINK v0.30.
    [ 12.850000] usbcore: registered new interface driver usblp
    [ 12.890000] usbcore: registered new interface driver usbserial
    [ 12.890000] usbcore: registered new interface driver usbserial_generic
    [ 12.890000] usbserial: USB Serial support registered for generic
    [ 12.960000] xt_coova: ready
    [ 13.050000] xt_time: kernel timezone is -0000
    [ 13.050000] usbcore: registered new interface driver ark3116
    [ 13.050000] usbserial: USB Serial support registered for ark3116
    [ 13.060000] usbcore: registered new interface driver belkin_sa
    [ 13.060000] usbserial: USB Serial support registered for Belkin / Peracom / GoHubs USB Serial Adapter
    [ 13.090000] usbcore: registered new interface driver cdc_ether
    [ 13.170000] usbcore: registered new interface driver cdc_ncm
    [ 13.860000] usbcore: registered new interface driver ch341
    [ 13.860000] usbserial: USB Serial support registered for ch341-uart
    [ 13.860000] usbcore: registered new interface driver cp210x
    [ 13.860000] usbserial: USB Serial support registered for cp210x
    [ 13.860000] usbcore: registered new interface driver cypress_m8
    [ 13.860000] usbserial: USB Serial support registered for DeLorme Earthmate USB
    [ 13.860000] usbserial: USB Serial support registered for HID->COM RS232 Adapter
    [ 13.860000] usbserial: USB Serial support registered for Nokia CA-42 V2 Adapter
    [ 13.880000] usbcore: registered new interface driver ftdi_sio
    [ 13.880000] usbserial: USB Serial support registered for FTDI USB Serial Device
    [ 13.880000] usbcore: registered new interface driver huawei_cdc_ncm
    [13.900000] usbcore: registered new interface driver keyspan
    [13.900000] usbserial: USB Serial support registered for Keyspan - (without firmware)
    [13.900000] usbserial: USB Serial support registered for Keyspan 1 port adapter
    [13.900000] usbserial: USB Serial support registered for Keyspan 2 port adapter
    [13.900000] usbserial: USB Serial support registered for Keyspan 4 port adapter
    [13.990000] ctnetlink v0.93: registering with nfnetlink.
    [14.020000] usbcore: registered new interface driver pl2303
    [14.020000] usbserial: USB Serial support registered for pl2303
    [14.030000] PPP generic driver version 2.4.2
    [14.040000] PPP MPPE Compression module registered
    [14.040000] NET: Registered protocol family 24
    [14.040000] PPTP driver version 0.8.5
    [14.050000] usbcore: registered new interface driver qmi_wwan
    [14.140000] l2tp_ppp: PPPoL2TP kernel driver, V2.0
    [14.140000] usbcore: registered new interface driver option
    [14.140000] usbserial: USB Serial support registered for Qualcomm USB modem [14.2000000] ath: EEPROM regdomain: 0x0 [
    14.160000] usbcore: registered new interface driver qcserial
    [14.160000] usbserial: USB Serial support registered for Qualcomm USB modem 14.200000] ath: EEPROM indicates default country code should be used [14.200000] ath: doing EEPROM country-> regdmn map search [14.200000] ath: country maps to regdmn code: 0x3a




    [14.200000] ath: Country alpha2 being used: US
    [14.200000] ath: Regpair used: 0x3a
    [14.210000] ieee80211 phy0: Selected rate control algorithm 'minstrel_ht'
    [14.210000] ieee80211 phy0: Atheros AR9340 Rev: 3 mem = 0xb8100000, irq = 47
    [14.280000] mmc_spi spi0.1: ASSUMING 3.2-3.4 V slot power
    [17.330000] mmc_spi spi0.1: SD / MMC host mmc0, no DMA, no WP, no poweroff
    [17.330000] mmc_spi spi0.1: no support for card's volts
    [17.330000] mmc0: error -22 whilst initialising SDIO card
    [17.330000] mmc_spi spi0.1: no support for card's volts
    [17.330000] mmc0: error -22 whilst initialising SD card
    [17.340000] mmc_spi spi0.1: no support for card's volts
    [17.340000] mmc0: error -22 whilst initialising MMC card
    [20.700000] usb 1-1.3: new high-speed USB device number 4 using ehci-platform
    [20.920000] option 1-1.3: 1.0: GSM modem (1-port) converter detected
    [20.920000] usb 1-1.3: GSM modem (1-port) converter now attached to ttyUSB0
    [20.930000] option 1-1.3: 1.1: GSM modem (1-port) converter detected
    [20.940000] usb 1-1.3: GSM modem (1-port) converter now attached to ttyUSB1
    [20.950000] option 1-1.3: 1.2: GSM modem (1-port) converter detected
    [20.950000] usb 1-1.3: GSM modem (1-port) converter now attached to ttyUSB2
    [ 20.960000] option 1-1.3: 1.3: GSM modem (1-port) converter detected
    [20.970000] usb 1-1.3: GSM modem (1-port) converter now attached to ttyUSB3
    [ 21.000000] qmi_wwan 1-1.3:1.4: cdc-wdm0: USB WDM device
    [ 21.000000] qmi_wwan 1-1.3:1.4: Quectel EC21&EC25&EC20 R2.0 work on RawIP mode
    [ 21.010000] qmi_wwan 1-1.3:1.4 wwan0: register 'qmi_wwan' at usb-ehci-platform-1.3, WWAN/QMI device, 3a:a9:1d:1a:9e:d9
    [ 25.600000] jffs2: notice: (1621) jffs2_build_xattr_subsystem: complete building xattr subsystem, 0 of xdatum (0 unchecked, 0 orphan) and 0 of xref (0 dead, 0 orphan) found.
    [ 28.880000] device eth0 entered promiscuous mode
    [ 28.890000] br-lan: port 1(eth0) entered forwarding state
    [ 28.890000] br-lan: port 1(eth0) entered forwarding state
    [ 30.010000] br-lan: port 1(eth0) entered disabled state
    [ 34.410000] device wlan0 entered promiscuous mode
    [34.420000] br-lan: port 2 (wlan0) entered forwarding state
    [34.420000] br-lan: port 2 (wlan0) entered forwarding state
    [34.460000] br-lan: port 2 (wlan0) entered disabled state
    [41.530000] br- lan: port 2 (wlan0) entered forwarding state
    [41.530000] br-lan: port 2 (wlan0) entered forwarding state
    [43.530000] br-lan: port 2 (wlan0) entered forwarding state
    [51.350000] Ports leds ON
    [54.390000] random : nonblocking pool is initialized

    WAN setup


    Priority setting interface for Internet channels. You can select one primary and two backup. In our case, the modem is selected as the primary, and the wired WAN as the backup.


    Prioritization of Internet channels. You can choose the primary and backup

    You need to keep in mind that the modem (radio module) in the router is one, and only one SIM-card can be simultaneously in the network. The monitoring system checks the Internet availability in each channel using ping requests to a given host. At the same time, you cannot check which of the two SIM cards has Internet access, you can only switch to another channel: wired or Wi-Fi. The conditions for switching SIM cards are configured separately, and do not depend on general monitoring.


    Setting up monitoring of the availability of the Internet channel. You can specify the host to be checked, check intervals and the number of attempts

    Since accessibility monitoring (multiwan package from openwrt) perceives the modem as one interface, it cannot initiate SIM switching if the Internet is unavailable on the modem. The multiwan package can only switch the main network interface. The conditions for switching the SIM card are set separately, and only the following can be selected among the conditions: weak signal, traffic limit, roaming, no network, no PPP connection. That is, in some cases, the modem may not switch the SIM card, even if it does not have internet. For example, if the operator has a network failure, while the modem has an IP address, or if the operator blocked access to the network for non-payment, and redirects the request for a stub with a payment interface. In this case, not a single condition for switching the SIM card will be fulfilled, since there is a formal connection with the operator.


    Setting the conditions for switching between SIM cards does not work in conjunction with monitoring the availability of the Internet

    Crash simulation


    We were not able to come up with a way to programmatically simulate the conditions for switching the SIM card to the backup one in this router, so we will check the switching to the backup wired channel. To do this, disconnect the antennas from the router and look at the graph. The switching time is an average of 12-15 seconds, taking into account the restoration of the VPN connection. You can reduce this time by reducing the inspection interval and the number of lost packets for switching triggers, but too aggressive monitoring settings will often cause false positives when the connection is gone for only a couple of seconds.


    Switching time to the backup channel is about 15 seconds

    Conclusion


    A router with many additional features. An interesting work was done with the I / O module: there are analog and digital outputs, a power relay. You can control pins remotely and configure triggers. This allows you to build simple automation with external peripherals on a single router. For example, manage a greenhouse or space heating.

    pros


    • Many extra features
    • OpenWRT Platform
    • Support LTE Cat 4
    • Three types of WAN: modem, Ethernet, WiFi

    Minuses


    • You cannot specify different monitoring addresses for each SIM card
    • The conditions for switching to a backup SIM card are separate from monitoring Internet accessibility

    Robustel r2000


    The router is provided by Euromobile (euromobile.ru)



    SoC : Atheros 533MHz
    RAM: 64MB
    Flash memory: 16MB
    Modem : Huawei ME909s-120 (LTE Cat 4)
    Firmware : closed Linux-based

    router with two Ethernet ports and a minimum of functions. Only one of the LAN ports can act as a WAN. The firmware is closed, there is no root access via SSH. The console is limited to its interpreter with several commands (like Ubiquiti devices).



    Web UI Overview

    VPN


    The firmware supports OpenVPN and IPsec IKEv2 protocols.


    IPsec Tunnel


    Tuning Interface OpenVPN Tunnel Tuning Interface

    Logging


    There is support for remote logging via syslog.



    You can set triggers for system events and send notifications by email and SMS.



    User LED


    The front panel display can be configured for different events. For example, show whether a VPN is connected or not.



    WAN setup


    There are several backup and balancing modes. The second option can be useful for quickly switching between channels.

    • Cold backup: only the main channel is active, backup channels are disabled
    • Warm backup: backup channels are active, only the main one is used (it is impossible to activate two SIMs at the same time)
    • Load balancing: Both channels are used simultaneously.

    In the default settings, for some reason, the return to the main channel after switching to the backup channel is disabled. This is set in the Revert Interval, when set to zero, the channel will never switch back after switching to the backup.


    Setting WAN Priorities and Modes

    Each SIM card is configured as a separate interface: WWAN1 and WWAN2. For each interface, you can separately configure the address to check the availability of the Internet, and your own intervals. This is the only router in the review where you can specify two hosts at once for verification. This is useful for protecting against false positives when the test host crashes, but there is Internet access.


    Each SIM card can be configured to check Internet availability.

    The firmware of the router does not imply root access to the system, so without opening the case, I could not figure out which chipset the device was made on. Accordingly, no home-made scripts and packages can be installed on the router, all functionality is strictly limited by the capabilities of the native firmware. It is possible to install several additional packages from the robustel.com/products/app-center/ repository , but this does not compare with the set of packages from the OpenWRT repository.

    On the other hand, such a closed system can be useful to protect against uncontrolled changes in the firmware, which then can not be seen in the web interface.

    Crash simulation


    Since we can specify different hosts to check the availability of each SIM card, to simulate an accident, we will indicate our controlled server as the first SIM card and turn it off at some point. For the purity of the experiment, we will set the test intervals to the same as for the first router in the review.


    Switching to the second SIM card takes 15-30 seconds.

    On average, the router switches to the second SIM card in 15-30 seconds. I believe that the registration of the second operator’s network takes the most time. Since all of our routers use a single modem, only one SIM-card can be in the network at a time. There are industrial routers with two independent modems that are simultaneously connected to two mobile operators. In this case, channel switching is faster.

    Conclusion


    Compact and simple router with a minimum of functions, easy to configure. A closed platform and lack of root access can interfere with someone. It can be recommended for cases where ease of setup is more important.

    pros


    • Separate failover settings for each SIM card
    • Support LTE Cat 4
    • Warm backup mode, in which the backup channel does not turn off
    • Easy setup

    Minuses


    • Closed platform, no root access
    • Truncated SSH Console
    • Only one Ethernet port can operate as a WAN

    iRZ RU22W


    The router is provided by Digital Angel (digitalangel.ru)



    SoC : MediaTek MT7620A ver: 2 eco: 6
    RAM: 64
    Flash memory: 16
    Wi-Fi: 802.11n (2.4GHz)
    Modem : Huawei MU709s-2
    MicroSD
    GPS card support
    Firmware : on base OpenWRT 15.05

    The router does not support LTE, only the 3G standards HSPA + / UMTS (900/2100 MHz) and 2G GSM / GPRS (850/900/1800/1900 MHz) are supported, while the most expensive. There is support for GPS, Wi-Fi and serial interfaces. By default, all Ethernet ports are combined into one switch; if desired, each port can be allocated to a separate VLAN and used as a WAN. Wi-Fi can work in the station (client) mode, and also be WAN. In total, with two SIM-cards this allows you to get 7 WAN-interfaces. Not bad.



    Web UI Overview

    Web interface



    The main page, accessible without authorization, shows the status of the interfaces, routing table, IMEI, and much more.


    Wi-Fi-interface can work in the mode of an access point (AP) or client (Station). There is no network scan, you need to explicitly specify the SSID manually.

    VPN


    OpenVPN поддерживается полностью, а вот IPSec — нет. Есть только Cisco IPSec, при этом нет IKEv2.

    Интерфейс настройки Cisco IPSec не поддерживает протокол IKEv2

    Есть поддержка Ethernet over IP



    RS-232/485


    Последовательные интерфейсы можно настроить только в режиме serial over ip и конвертера modbus TCP<->RTU. Режим AT-модема через последовательный порт недоступен.



    GPIO


    Работа c GPIO сделана странно. Можно только переключать состояния из веб-интерфейса, при этом нельзя создать триггеры, вызываемые по изменению состояния. Возможно, есть какое-то API, реализованное через фирменный софт, не знаю. Нельзя даже переименовать нужные пины. Пользы от такого управления не вижу.



    Настройка WAN




    Interface priorities are selected in the Routes menu. You can choose one of two modes: failover and balancing. The first will switch the channel to the backup interface in case the primary is unavailable, and the second will distribute the traffic equally between the interfaces, at the NAT level.

    Availability monitoring and interface failover is done using iRZ's homemade bash scripts. For example, the service / usr / bin / pinger sends pings, switches interfaces, and controls LEDs. Pretty harsh Bashism :)

    SIM card setup


    For each SIM card, you can set your own connection check host. This is convenient for cases when we want to choose different servers, depending on the service provider. For example, in roaming we use one server, and in the home region another.


    You can set different hosts to which communication will be checked for each SIM card

    GPS


    I did not find the ability to somehow use the GPS module, except through gpsctl from the console. The web interface does not mention it at all. I believe that it is activated through native cloud services for centralized management of routers. The inability to use the GPS API on my own is considered a drawback.

    Crash simulation


    For each SIM card, we indicated different hosts for checking Internet accessibility, so we can easily simulate an accident. To do this, we will block the host from the first SIM card on the firewall and see how the router will respond to this. For the purity of the experiment, we will set the same test intervals and the number of attempts as the first router.



    Of several attempts, the average switching time is 30 seconds, sometimes the second SIM card is registered for a long time, and the switching is delayed for a minute. Not sure if this is due to the modem or the features of the mobile operator.

    Conclusion


    I liked the opportunity to get as many as 4 wired WANs and separate failover settings for each SIM card. The purpose of the GPS module remained incomprehensible; using it without third-party software did not work.

    pros


    • Open platform based on OpenWRT
    • Отдельные настройки failover для каждой SIM-карты
    • Все LAN-порты могут работать как WAN

    Минусы


    • Нет поддержки IPsec IKEv2
    • Непонятно, как пользоваться GPS и выводами GPIO без стороннего софта



    Заключение


    In my opinion, specialized industrial solutions are much more convenient than home-made structures based on a SOHO router. Although in most cases the same OpenWRT firmware is used, all the nuances are already taken into account, the adjustment comes down to setting several parameters in the web interface, and you don’t need to write crutches like watchdog scripts yourself, everything is already out of the box.

    Additional functions like GPIO and GPS module allow, in many cases, to manage with one device instead of two, for simple tasks of automation and data collection.

    All three manufacturers have their own software for centralized management of routers. In the framework of this article, we did not consider it. It is useful for a large number of installations, and allows you to manage all routers from one control panel. It might be worth exploring this software too.

    Also popular now: