top of page

Cross Compile C program for FATBOX G3 iMX6 edge MQTT Gateway

Last update June 2021

for OpenWRT version 18.06

In this Application Note, we will explain to setup, write, compile, install and test your own C code for our FATBOX G3 device.


The FATBOX G3 is an open Linux platform where user can deploy their own portable codes e.g. in C or Python or LUA to run on an industrial cellular (3G or 4G/LTE) and ethernet WAN connected gateway device. This will allow user to write codes to read Modbus, CANbus, RS232, RS485 serial data, Zigbee and other inputs – process onboard or sent straight to their central server.


The board runs OpenWRT on an embedded Linux board running NXP i.MX6 processor. Therefore the first task is to install the correct tool chain into your development device. A Linux development laptop (or a Windows computer running a Linux, e.g. Ubuntu 16.04 LTS as a VM or Docker container).


1. Install the C Toolchain

$ git clone git:// G3

$ cd G3

$ git checkout openwrt-18.06

$ ./scripts/feeds update -a

$ ./scripts/feeds install –a

$ make menuconfig


You need to install our current build configuration file. Download the file from our Google Drive link below, rename it “.config” and save in /G3 folder


The following may be required to properly build your cross-compilation environment,


$ sudo apt-get update

$ sudo apt-get install build-essential libssl-dev libncurses5-dev unzip gawk zlib1g-dev


Next, you can customized (do not remove any modules already selected as some are critical to operation of the gateway) the build.


$ make menuconfig


Now we are going to start the bulding process. V=99 enable detailed compilation output for troubleshooting.


$ make V=99


Now you will have the correct C toolchain in your dev computer to compile executable programs in the FATBOX G3 gateway.


2. Install and configure your IDE


We choose to use Eclipse IDE with C/C++ development Tools (CDT) installed. You need to configure similar to the following as one your development system’s OpenWRT folder structure. In Eclipse, this setting is under Properties > Cross Settings


Prefix : arm-openwrt-linux-

Path     : ~/G3/staging_dir/toolchain-arm_cortex-a9+neon_gcc-7.3.0_musl_eabi


3. Write and compile your C program


Now you are all set to test a simple ‘Hello’ C-program i.e. a fprintf(stderr,"HELLO!\n") in your main() or our BLINK souce code (which flashes the FATBOX G3 LEDs once when executed)


BLINK download link :


After you run “Build All” in your IDE, you should see a cross-compiled [arm/le] executable, for Eclipse IDE as example.

Cross Compile C Program.png

4. Install and test your C executable


The executable file e.g. BLINK.exe in our example is found under the Debug sub-folder in your Eclipse project folder. The easiest way to test the file is to enable SSH and scp or (winscp) the program over to the FATBOX G3 board, then SSH over to console and just execute the program (remember to CHMOD the file to enable execution).


Done! You can now compile your own or other 3rd party Linux C codes (or SDKs) to execute on our platform.

Other articles that may interest you

Reduce the 3 costs associated with cloud data

Feedback & Control IoT applications

Connect a Schneider energy meter to AWS

A linux MQTT Gateway

Got a question for us?
bottom of page