View Categories

EC200 OpenWRT Tutorial

Basic Overview #

The OpenWrt Project is a highly versatile Linux operating system designed specifically for embedded devices. Unlike standard firmware with fixed features, OpenWrt offers a fully writable file system with integrated package management. This approach liberates users from the limitations of vendor-specific software, allowing for deep customization by installing packages tailored to virtually any need.

For developers, OpenWrt serves as a flexible framework to build applications without the burden of creating an entire firmware stack. For end-users, it unlocks a world of full customization, enabling them to utilize their devices in innovative ways far beyond the manufacturer’s original intent.

The Quectel EC200A series are compact, high-performance LTE Cat 4 modules engineered for Machine-to-Machine (M2M) and Internet of Things (IoT) applications. Built on 3GPP Release 9 LTE technology, these modules support impressive data rates of up to 150 Mbps downlink and 50 Mbps uplink. Combining OpenWrt with the EC200A creates a powerful synergy. This integration allows you to harness the high-speed cellular connectivity of the LTE module while simultaneously benefiting from the robust, flexible, and customizable environment of the OpenWrt operating system.

Prerequisites #

Hardware Requirements #

EiCUT Nexus OpenWRT dev board
EiCUT Nexus Openwrt Dev Board (with Quectel EC200 module)

The EiCut Nexus is a feature-rich OpenWrt development board built around the Quectel EC200 series LTE module. Designed for embedded engineers, network developers, and IoT system integrators, it brings nearly the entire EC200 peripheral set out to accessible headers—each safely converted from the module’s 1.8 V logic to 3.3 V using high-quality level shifters. This gives developers full access to the EC200’s internal interfaces without the complexity of handling low-voltage signaling directly. Available peripherals include:

  • SPI
  • I²C
  • UART
  • PCM / audio digital interface
  • ADC inputs
  • General-purpose GPIO pins

The EiCut Nexus expands connectivity with a built-in 10/100 Ethernet port, USB Type-C (for power, debug, and firmware), SIM card holder, microSD slot, and an onboard Wi-Fi module—all integrated into a compact and production-ready design. Engineered for reliability and easy integration, the EiCut Nexus is a powerful platform for building 4G/LTE routers, IoT gateways, industrial controllers, telematics systems, smart metering devices, and any project that needs flexible connectivity with full OpenWrt control over the modem.

EiCUT Nexus OpenWRT development board diagram

Clearly labeled EiCUT Nexus OpenWRT dev board with Quectel EC200
Nexus OpenWRT dev board function Description
EiCUT Nexus OpenWRT board complete GPIO pinout
EiCUT Nexus OpenWRT pinout
EiCUT Nexus OpenWRT dev board level shifter circuit highlighted
OpenWRT dev board level shifter

Software Requirements #

  • Ubuntu 20.04 Linux system
  • 8GB+ RAM, 50GB+ free disk space
  • Quectel OpenWRT SDK
  • Quectel Firmware Loader (QDloader)

Step 1: Environment Setup #

Download the SDK and install the following packages as shown below:

Step 2: Python Virtual Environment #

Create a virtual environment for the required packages:

Step 3: Build Configuration #

Then run these commands:

Configure OpenWRT

The menuconfig interface allows you to:

  • Select target system and profile
  • Choose additional packages
  • Enable/disable kernel features
  • Customize build options

As you can see in the photo, there are thousands of options in menuconfig that you can modify according to your project requirements.

OpenWRT make menuconfig for EiCUT Nexus board
OpenWRT menuconfig

Step 4: Building the Firmware #

After making the necessary changes, use this command to build the project:

After successfully building the image, you can find it at this location:

Step 5: Flashing the Firmware #

To install it on your device, use this command:

If you do not have the Qdloader you should download and unzip it and then run make. Qdloader will be in “out” directory. Put the firmware inside out directory beside the Qdloader and use the above command.

Note: ttyUSB0 is the serial port of my 4G module. If you are unsure which port your module is using, you can identify it with:

The ID used with lsusb -v -d (e.g., 2c7c:6005) comes from the vendor and product ID when you run lsusb.

Connecting to the OpenWrt Console #

To access the OpenWrt system on the EiCut Nexus EC200 board, connect a USB-to-UART adapter to the H2 pin header located next to the EC200 module. After opening the serial terminal, press Enter once; the console will prompt you for login credentials.

  • Username: root
  • Password: admin

On Windows, it is recommended to use MobaXterm or PuTTY.

On Linux, a common choice is minicom, but you may also use screen, picocom, or gtkterm.

UART Configuration #

    • Baud Rate: 115200
    • Data Bits: 8
  • Parity: None
  • Stop Bits: 1
  • Flow Control: None
  • Voltage: 1.8/3.3v

Example (Linux minicom command)

Package Feeds #

While OpenWrt includes many essential packages in its core system, the vast majority of available software comes from external sources known as package feeds. The main OpenWrt repository contains packages maintained directly by the core development team. These include essential system components, the build system, and critical firmware elements. However, most additional software comes from community-maintained package feeds. You can use the “feeds.conf.default” which you can find in the main SDK directory to add the Luci and other package feeds to your project. Here are the primary official package feeds:

🔗OpenWrt Official GitHub Repositories

Web Interface: LuCI web GUI


Telephony:
VoIP & telephony packages

Routing: Advanced routing protocols

Community Packages: General community packages

Use the ./scripts/feeds update -a command to obtain package definitions.

After the definitions have been updates, execute ./scripts/feeds install <packagename> to prepare the package and its dependencies.

Adding Customize Packages to OpenWRT #

We’ll begin with a very simple application and progressively walks you through the basics of developing your package. All the source code example files in this series are written in the C programming language.

 

Add this to helloworld.c:

Then compile it running these commands:

 

You should be greeted by the text “Hello, world!”. If this did not happen, or if you encounter errors when running the above compilation and linking commands, ensure the content of your source file is correct and that you have the native compilation tools installed for your environment.

We create a new package repository into the OpenWRT directory. The name of this repository is ‘mypackages’, and it contains a single category called ‘examples’. In this category, there is only a single entry, our ‘helloworld’ application:

Add this to Makefile:

The OpenWrt build system uses a specific file called feeds.conf which indicates the package feeds that will be made available during the firmware configuration stage. In order for the package containing the application to be made visible in the first place, it is necessary to include the new package feed into this file. By default, this file does not exist in the OpenWrt source code directory, so it is necessary to create it:

Add this:

Run these commands:

 

If the last step completes successfully, you should see the response below as the script finds the feed for our new package and adds it to the index:

Note : whenever you modify the package manifest file, the feeds system will automatically detect this, and will perform an update on your behalf before completing other commands such as ‘make menuconfig’ or before building a package.

OpenWrt Scripting #

OpenWrt scripts are executable files containing commands that automate tasks on your OpenWrt router. They combine Linux commands, OpenWrt-specific utilities (like uci), and program logic to perform complex operations automatically.

Key characteristics #

  • Text files containing commands
  • Can be written in shell languages (sh, bash) or other interpreters
  • Execute with appropriate permissions
  • Can interact with OpenWrt’s configuration system

Automation Benefits #

  • Time-saving: Automate repetitive tasks
  • Consistency: Ensure configurations are applied uniformly
  • Reliability: Reduce human error in complex procedures
  • Monitoring: Continuously check system status
  • Customization: Extend OpenWrt functionality beyond web interface capabilities

Common Use Cases #

  • Network configuration management
  • System monitoring and alerts
  • Automated backups
  • Custom firewall rules
  • Service management
  • Dynamic DNS updates

Example Tasks Achievable with Scripts #

Network Configuration:

System Monitoring:

Automated Backups:

Script Languages Available #

  1. Shell Script (sh/bash)
  • Default: /bin/sh (ash) is always available
  • Best for: System administration, file operations
  1. Lua
  • Install lua
  • Best for: Complex logic, web interfaces
  1. Python
  • Install python3
  • Best for: Advanced applications, external APIs
  1. Other Languages
  • Perl, PHP, etc.

Creating Your First Script #

Step 1: Create the Script File

Step 2: Make it Executable

Step 3: Test the Script

Understanding System Tasks #

System tasks are automated operations that run based on specific triggers:

  • Boot-time: When system starts
  • Scheduled: At specific times (cron)
  • Event-based: When specific events occur
  • Periodic: Regular intervals

OpenWrt’s Init System

OpenWrt uses procd (OpenWrt process management daemon) to manage services and tasks through:

  • /etc/init.d/ – Service scripts
  • /etc/rc.local – User startup commands
  • cron – Scheduled tasks

Boot-time Scripts #

Method 1: Using /etc/rc.local (Simplest) #

Method 3: Using Cron with @reboot #

Advanced Topics #

    1. Error Handling in Scripts
    1. Using UCI in Scripts
    1. Creating Logging Functions
    1. Network Monitoring Script
    1. Hotplug Scripts (Event-based)
Best Practices

  1. Security
  • Don’t run as root unless necessary: You should avoid running scripts with root privileges unless specific system-level access is required, as this minimizes potential security risks.
  • Validate all inputs: Always verify and sanitize any user inputs or external data to prevent injection attacks and unexpected behavior.
  • Use secure temporary files: Create temporary files with unpredictable names and proper permissions to avoid race conditions and unauthorized access.

Practical Example:

  1. Resource Management
  • Don’t use all available memory: Implement memory limits and efficient data processing to prevent system exhaustion.
  • Clean up temporary files: Always remove temporary files and resources after use to avoid disk space leaks.
  • Use timeouts for network operations: Set reasonable timeouts for network calls to prevent scripts from hanging indefinitely.

Practical Example:

  1. Documentation

Provide clear script headers: Include script purpose, author, usage instructions, and dependencies at the beginning of each script.

Document dependencies: List all required external tools and libraries to help users set up their environment correctly.

Include usage examples: Show how to run the script with different parameters and options.

Practical Example:

Boot-time Network Configuration Script

To use this script at boot time, add to /etc/rc.local:

This part of tutorial provides a comprehensive foundation for OpenWrt scripting. Start with simple scripts and gradually incorporate more advanced features as you become comfortable with the environment.

FAQ #

What is the EiCut Nexus board?

A powerful OpenWrt development board built around the Quectel EC200A/CN LTE Cat 4 module with full 150 Mbps DL / 50 Mbps UL, designed for 4G routers, IoT gateways, industrial controllers, and telematics.

Does it run real OpenWrt with full root access?

Yes — you get a full OpenWrt system running on the EC200A’s application core. You have root shell, opkg, LuCI web GUI, and thousands of packages.

Can I use standard SIM cards?

Yes — the board has a standard nano-SIM (4FF) holder with detection and full VSIM power control from OpenWrt.

Why are all EC200 pins brought out to 3.3 V headers?

The EC200A uses 1.8 V logic. We added high-quality bidirectional level shifters on every peripheral (UART, SPI, I²C, PCM, ADC, GPIO) so you can safely connect Arduino, ESP32, Raspberry Pi, sensors, etc. without risking damage.

How do I access the OpenWrt console?

Connect a USB-to-UART (3.3 V) to the H2 debug header (next to the module):
• Baudrate: 115200 8N1
• Default login: root / admin

Can I flash my own custom OpenWrt image?

Yes — use QDLoader (EDL mode) via USB Type-C port or use the built-in OpenWrt sysupgrade mechanism once you’re already running OpenWrt.

Is there built-in Wi-Fi and Ethernet?

Yes — the board includes:
10/100 Mbps Ethernet port
• Onboard 2.4 GHz Wi-Fi (MT7601U-based)
• microSD card slot for storage expansion

Can I use QMI or MBIM mode for cellular?

Yes — both qmi_wwan and MBIM are fully supported in the official Quectel OpenWrt builds. You can also use classic PPP or ECM mode.

Is GNSS (GPS/GLONASS) available?

Yes — the EC200A has integrated GNSS. The NMEA stream is available on a dedicated UART and also via AT+QGPS commands.

Can I use this board in a commercial product?

Absolutely — the board is designed as a reference platform. Full schematics, layout (KiCad), and BOM are provided so you can directly copy the design into your own product.

Do I need Quectel SDK to compile firmware?

Yes — you need the official Quectel OpenWrt SDK (provided under NDA or directly from Quectel). Standard OpenWrt source will not compile for EC200A series.

Is VoLTE and voice calls supported?

Yes — the EC200A supports VoLTE and the digital audio PCM interface is routed to headers. You can integrate an audio codec or use USB sound cards.

Updated on January 7, 2026

Leave a Reply