This repository is a generic OpenWrt version from Dragino devices such as: MS14, HE,LG-1N,OLG01-N,LG02,OLG02,LG308.
- How to compile the firmware?
- How to customize a build?
- How to develop a C software before build the image?
git clone https://github.com/dragino/openwrt_lede-18.06 dragino-lede-18.06
cd dragino-lede-18.06
./set_up_build_environment.sh
#build default IoT App on openwrt directory
./build_image.sh
After complination, the images can be found on openwrt_lede-18.06/image folder. The folder includes:
- dragino-xxx--vxxxx-kernel.bin kernel files, for upgrade in u-boot
- dragino-xxx--vxxxx-rootfs-squashfs.bin rootfs file, for upgrade in u-boot
- dragino-xxx--vxxxx-squashfs-sysupgrade.bin sysupgrade file, used for web-ui upgrade
- md5sum md5sum for above files
More build option can be viewed by running:
./build_image.sh -h
How to debug if build fails?
./build_image.sh -s
Above commands will enable verbose and build in single thread to get a view of the error during build.
- Pull
images
docker pull ghcr.io/mikayong/dragino-gw-os/dragino-wrt-env:latest
- Run
container
docker run \
-itd \
--name dragino-wrt-env \
-h Dragino \
-p 10022:22 \
ghcr.io/mikayong/dragino-gw-os/dragino-wrt-env:latest
- Enter
container
docker exec -it dragino-wrt-env /bin/bash
- Build
OpenWRT-lede-18.06
cd /root/dragino-wrt-build
./build_image.sh
git clone https://github.com/dragino/openwrt_lede-18.06 dragino-lede-18.06
cd dragino-lede-18.06
./set_up_build_environment.sh
#build default IoT App on openwrt directory
./build_image.sh
After complination, the images can be found on openwrt_lede-18.06/image folder. The folder includes:
- dragino-xxx--vxxxx-kernel.bin kernel files, for upgrade in u-boot
- dragino-xxx--vxxxx-rootfs-squashfs.bin rootfs file, for upgrade in u-boot
- dragino-xxx--vxxxx-squashfs-sysupgrade.bin sysupgrade file, used for web-ui upgrade
- md5sum md5sum for above files
More build option can be viewed by running:
./build_image.sh -h
How to debug if build fails?
./build_image.sh -s
Above commands will enable verbose and build in single thread to get a view of the error during build.
As a example, if user want to customize a build named mybuild. mybuild include different packages and default files from the default build. User can do as below: To customize the packages
cd openwrt
# run make menuconfig to select the packages and save
make menuconfig
#Copy the new config to TOP dir and rename it to .config.mybuild
cp .config .config.mybuild
To customize default files
#create default files in TOP dir
mkdir files-mybuild
#put files into this directory.
#for example, if user want the final build has a default config file /etc/config/network. user can
#put /etc/config/network into the files-mybuild directory (include directory /etc and /etc/config)
Then run the customzied build by running:
./build_image.sh -a mybuild
The build process will auto overwrite the default files or pacakges with the customized one. User can customize only default files or pacakges. The build will use the default from IoT build if not specify.
The fastest way is to use the SDK.
Download the LEDE-SDK
wget http://www.dragino.com/downloads/downloads/LoRa_Gateway/LG02-OLG02/openwrt-sdk-8-29-Linux-x86_64.tar.bz2
tar -xjvf openwrt-sdk-8-29-Linux-x86_64.tar.bz2
Download the demo hello package and put it in the lede-sdk/package/
Enable hello package by running make menuconfig in lede-sdk. and enable hello package in the utility
make meunconfig
[root@dragino lede-sdk]# make
WARNING: Makefile 'package/linux/Makefile' has a dependency on 'r8169-firmware', which does not exist
WARNING: Makefile 'package/linux/Makefile' has a dependency on 'e100-firmware', which does not exist
WARNING: Makefile 'package/linux/Makefile' has a dependency on 'bnx2-firmware', which does not exist
WARNING: Makefile 'package/linux/Makefile' has a dependency on 'ar3k-firmware', which does not exist
WARNING: Makefile 'package/linux/Makefile' has a dependency on 'mwifiex-sdio-firmware', which does not exist
WARNING: Makefile 'package/linux/Makefile' has a dependency on 'kmod-phy-bcm-ns-usb2', which does not exist
WARNING: Makefile 'package/linux/Makefile' has a dependency on 'edgeport-firmware', which does not exist
WARNING: Makefile 'package/linux/Makefile' has a dependency on 'kmod-phy-bcm-ns-usb3', which does not exist
WARNING: Makefile 'package/linux/Makefile' has a dependency on 'prism54-firmware', which does not exist
WARNING: Makefile 'package/linux/Makefile' has a dependency on 'rtl8192su-firmware', which does not exist
WARNING: Makefile 'package/tcp_client/Makefile' has a dependency on 'libuci', which does not exist
tmp/.config-package.in:36:warning: ignoring type redefinition of 'PACKAGE_libc' from 'boolean' to 'tristate'
tmp/.config-package.in:64:warning: ignoring type redefinition of 'PACKAGE_libgcc' from 'boolean' to 'tristate'
tmp/.config-package.in:149:warning: ignoring type redefinition of 'PACKAGE_libpthread' from 'boolean' to 'tristate'
tmp/.config-package.in:177:warning: ignoring type redefinition of 'PACKAGE_librt' from 'boolean' to 'tristate'
tmp/.config-package.in:416:warning: ignoring type redefinition of 'PACKAGE_tcp_client' from 'boolean' to 'tristate'
#
# configuration written to .config
#
make[1] world
make[2] package/compile
make[3] -C package/toolchain compile
make[3] -C package/hello compile
make[3] -C package/linux compile
make[3] -C package/tcp_client compile
make[2] package/index
The hello package (hello_1.0.0-1_mips_24kc.ipk) is under the bin/packages/mips_24kc/base/ , user can upload this package to the device and install / run it:
root@dragino-1b6fb0:~# opkg install hello_1.0.0-1_mips_24kc.ipk
Installing hello (1.0.0-1) to root...
Configuring hello.
root@dragino-1b6fb0:~# hello
Hello world
root@dragino-1b6fb0:~#
An efficient way to transfer the package from compile server to device is use scp command. below is a script for example:
upload_lora_bin.sh
#!/bin/sh
#remove the current bin file
opkg remove hello
#Get files from build server (replace your build server and compile link here)
scp [email protected]:/root/work/edwin/lede-sdk/bin/packages/mips_24kc/base/hello_1.0.0-1_mips_24kc.ipk ./
opkg install hello_1.0.0-1_mips_24kc.ipk
Run it
root@dragino-1b6fb0:~# ./update_lora_bin.sh
Removing package hello from root...
Host '120.78.xxx.xxx' is not in the trusted hosts file.
(ssh-rsa fingerprint sha1!! 00:8f:65:a5:1a:93:13:8f:c4:d2:81:4d:57:ea:14:49:47:54:0e:75)
Do you want to continue connecting? (y/n) y
[email protected]'s password:
hello_1.0.0-1_mips_24kc.ipk 100% 1906 1.9KB/s 00:00
Installing hello (1.0.0-1) to root...
Configuring hello.
root@dragino-1b6fb0:~#
Below is the LoRa Control packages used in LG01-N, LG02,LG308,LPS8, DLOS8
A video instruction can be seen from LEDE SDK Video
If fail to download by build_image.sh, developer can download from web and put the package in openwrt/dl directory.
Have Fun!
Dragino Technology