--- tags: EmPOWER --- # Modify EmPOWER Agent 簡單來說,修改的步驟為: 1. 修改 `empower-lvap-agent` 裡面的任何檔案,可以透過 `make` 來確保沒有 compile error 2. 將 `empower-lvap-agent` push 到 remote 端 3. `git log ` 取得 `empower-lvap-agent` 的 git log hash value 4. 將 `empower-lvap-agent` 新的 git log hash value 更新到 `empower-openwrt-packages` 裡面的 makefile 5. 將 `empower-openwrt-packages` push 到 remote 端 6. 在 `empower-openwrt` 裡面 `./scripts/feeds update empower` 來更新 7. `make package/empower-lvap-agent/compile -j4` ,只需要重新編譯 empower click file 8. 將編譯好的 `click` 執行檔傳到 AP 裡面 ## 主要修改部份 (與 EmPOWER 比較) * Minstrel * 功能:決定封包傳送的 bitrate,以及從 hardware 接收 feedback,得知封包傳送的結果(幾次失敗,成功與否) * 主要修改:收集與計算 average bitrate, retransmission ratio * empowerqosmanager * 功能:EmPOWER agent 的中繼站,有一個 queue 來暫存封包。決定接下來要傳哪一個 lvap 的封包。實做完 airtime fairness 之後,每個 lvap 有自己的 queue * 主要修改:airtime fairness。紀錄 lvap 的封包有被 transmitted, queued or dropped,推算 traffic demand * empowerlvapmanager * 功能:與 controller 的溝通 * 主要修改:定期回報 lvap 的 average bitrate, retransmission ratio ## Step 0 - Change Feeds path Change the file `feeds.conf.default` in `empower-openwrt`. The src-git of empower package should be `src-git empower git@github.com:chunyu618/empower-openwrt-packages.git` ## Step 1 - Clone the Repo To modify the elemwnts in `empower-lvap-agent` repo, the first step is to clone following two repo into your own github * [`empower-lvap-agent`](https://github.com/5g-empower/empower-lvap-agent) * [`empower-openwrt-packages`](https://github.com/5g-empower/empower-openwrt-packages) Now, you can clone it into you PC or workspace. Then, you need to modify the Makefile in `empower-openwrt-packages/empower-lvap-agent/`. The variables need to be changed are following: * `PKG_SOURCE_URL`: change the value to your repo url on the github * `PKG_REV`: change the value to the commit log hash of the version your need ``` # # Copyright (C) 2019 Roberto Riggio # # This is free software, licensed under the GNU General Public License v2. # See /LICENSE for more information. # include $(TOPDIR)/rules.mk PKG_NAME:=empower-lvap-agent PKG_VERSION:=20220307 PKG_RELEASE:=1 # This variable PKG_REV:=32c18594a4f942f016069373ab73eca12e4c5a62 PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.bz2 # This variable PKG_SOURCE_URL:=git@github.com:chunyu618/empower-lvap-agent.git PKG_SOURCE_SUBDIR:=$(PKG_NAME)-$(PKG_VERSION) PKG_SOURCE_VERSION:=$(PKG_REV) PKG_SOURCE_PROTO:=git ``` ## Step 2 - Modify something in the element After modifying something in the `element` folder, you may want to compile it locally before `git push` it in order to be sure there is no compile error. Back to `empower-lvap-agent/`, run `./configure --enable-all-elements` if you have nerve done it. Then `make install` to compile it. As long as there is no compile error, you can git push you changes into github. Next, we need to update the commit log value in `empower-openwrt-packages`. Change directory into `empower-openwrt-packages/empower-lvap-agent` and modify the value `PKG_REV` in Makefile to the commlit log that you just commit in `empower-lvap-agent` Don't forget to git push `empower-openwrt-packages`. ## Step 3 - Re-compile After you git push these $2$ repo, you change directory into `empower-openwrt`, now we update and re-make the empower package. ```shell= $ ./scripts/feeds update empower $ make package/empower-lvap-agent/compile -j4 ``` After that, there should be a `click` executable file in `build_dir/target-mips_24kc_musl/empower-lvap-agent-xxxxxxxx/ipkg-mips_24kc/empower-lvap-agent/usr/bin/`. Here the `xxxxxxxx` corresponds to the `PKG_VERSION` in the above Makefile. Copy it to the router, located at `/usr/bin`, then reboot router or just run `/etc/init.d/empower restart`, the change you made should be effect. Run `/etc/init.d/empower stop` to stop the original `click` running.