---
tags: EmPOWER
---
# Build 5G-EmPOWER Agent
## OS Requirements
Basically, it can be built in Ubuntu version after 16.04. Following we use Ubuntu 20.04.
## Setting up WTP
Here WTP means wireless access point (AP).
```shell=
## First clone two repo on empower github.
## At home directory
git clone https://github.com/5g-empower/empower-openwrt.git
git clone https://github.com/5g-empower/empower-configs.git
cd empower-openwrt
./scripts/feeds update -a
## If there are error messages like "CAfile: none CRLfile: none",
## then try "sudo apt install ca-certificates"
./scripts/feeds install -a
## Link the empower configuration file to the AP model you need, modify it if necessary.
ln -s ../empower-configs/empower-files-wdr4300/ files
## Copy the openwrt configuration file to empower-openwrt
cp ../empower-configs/wdr4300.config ./
## There are two files need to be modified.
## 1.
## Modify the "option master_ip" in /empower-files-wdr4300/etc/config/empower
## to the controller's IP address
## 2. (Optional)
## The channel in /empower-files-wdr4300/etc/config/wireless can be modified
```
- Edit the config file
Following we use wdr4300.config as example.
19.07 is the recommended OpenWrt version https://downloads.openwrt.org/releases/19.07.9/targets/ar71xx/generic/tl-wdr4300-v1-squashfs-factory.bin
In the above website we can observe that
- Target should be ar71xx
- Subtarget should be generic
- Target profile should be tl-wdr4300-v1
Thus we need to modify the `wdr4300.config` file. However, using `make menuconfig` then load `wdr4300.config` and modify the config will greatly change its default config. So we directly modify the file by vim.
```shell=
vim wdr4300.config
```
The following options should be on:
- CONFIG_TARGET_ar71xx=y
- CONFIG_TARGET_ar71xx_generic=y
- CONFIG_TARGET_ar71xx_generic_DEVICE_tl-wdr4300-v1=y
Then we can using `make menuconfig` and load `wdr4300.config` to check whether the config is correctly modified.
**Make sure that `empower-lvap-agent` in `Network` is on.**
- Save the config file
If all config are correct, we can save it to `.config` as default config.
`make menuconfig` again to check if it is correctly saved as default config.
- Cross compile
If everything is OK, we can begin cross compile. It may take several minutes.
If run in VM, remember to change the number of processors in VM setting.
```shell=
make -j 4
```
## System Upgrade
After `make -j 4`, copy `./bin/targets/ar71xx/generic/openwrt-ar71xx-generic-tl-wdr4300-v1-squashfs-factory.bin` to the `/tmp` folder of the AP.
Next, upgrade the firmware, `sysupgrade -v -n ./openwrt-ar71xx-generic-tl-wdr4300-v1-squashfs-factory.bin`
- Connect to the AP
- If the AP's firmware is not empower's, then we should connect by the AP's LAN port. We can update the firmware through the webpage at `192.168.1.1`
- Otherwise, we should connect by the AP's WAN port. Then find the AP's IP address by checking the webpage of `192.168.1.1`
- Following we use `192.168.1.112` as the AP's IP address
- Copy the firmware to AP
On the home directory
```shell=
scp empower-openwrt/bin/targets/ar71xx/generic/openwrt-ar71xx-generic-tl-wdr4300-v1-squashfs-factory.bin root@192.168.1.112:/tmp
```
- Upgrade the system
On the AP directory `/tmp`
```shell=
sysupgrade -v -n ./openwrt-ar71xx-generic-tl-wdr4300-v1-squashfs-factory.bin
```
## Network Topology
```
Gateway AP
- (LAN1) ---- (Eth) Ubuntu PC
- (bridge) -- EmPOWER controller
- (LAN2) ---- (WAN) EmPOWER agent 112
- (LAN3) ---- (WAN) EmPOWER agent 142
```
## (Optional) Print Log File to `/tmp`
Modify `/etc/init.d/empower` line $130$, change `/dev/null` to `/tmp/mylog`, and click will print out logfile to `/tmp/mulog`
## Reference
* https://github.com/5g-empower/5g-empower.github.io/wiki/Setting-up-the-WTP
* https://openwrt.org/docs/guide-developer/toolchain/install-buildsystem
* https://github.com/Wi5/odin-wi5/wiki/Create-OpenWRT-bin-image-including-openvswitch-and-the-ath9k-patch?fbclid=IwAR1HiQ39yu62v-vn1oLUEQMbviUOL9iP7RxPXUzf_jeXWG9WYBBeM6ttGNU