# Meeting Minutes
###### tags: `FHI`
[TOC]
<!-- ## 2/15
### prof. Ray
:::success
- 修改架構選項圖
- Suggestion:
- Focus在DU/RU/FHI
- Sample-app要縮小因不是完整的DU/RU
- CU/RIC可用一個Block替代(因不是重點)
- Modified figure
- [ ] Option 1
- [ ] Option 2
::: -->
## 1/18
### prof. Ray
:::success
#### Next Job
1. Install CHT DU server
2. Draft the `conf.json` based on the OAI configuration file (There are two, currently I finish one)
3. Test radio mode with different scenerio
4. Help Romain for OAI integration
#### Others
- Talk to Ann about the thesis
- Basic concept should be double checked (Convolution值域會是連續的)
- FHI paper若不寫則打0分且需要填寫切結書
- 辦理離校前必須把自己的論文完成
- Talk to Jonathan about the thesis
- Shell script是否能運用在不同機器, 若不行則assumption是什麼
:::
## 1/12
### prof. Ray
:::success
### Contribution
**Plan A:** If radio mode integration can simulate different usecase
- Cyclictest
- Steps for radio mode integration (RU simulator + L1app + FAPI TM + CU_STUB + RIC_STUB)
- Match Configuration file: RU Simulator V.S. L1app
- Different usecase testing
- Bandwidth
- Beam
- Compression
- CPU utilization
- Memory utilization
**Plan B:** If radio mode integration can <font color=red>Not</font> simulate different usecase, need to include the OAI part
- Cyclictest
- Steps for radio mode integration (RU simulator + L1app + FAPI TM + CU_STUB + RIC_STUB)
- Match Configuration file: RU Simulator V.S. L1app
- OAI
- Include FHI Library into OAI ==(Ann)==
- OAI 5G NR FHI Trigger Activity (OAI 5G NR FHI C-Plane)
- Match Configuration file: OSC Wrapper (conf.json) V.S. OAI 5G NR if4.5 split DU
- FHI Library Initialization Procedure in OAI 5G NR
- Shared buffer between FHI Library and OAI ==(Eurocom & NTUST ?)==
- OAI + TM500
- Match Configuration file: OAI V.S. TM500
- Testing
- PTP lock
- eCPRI message capture
:::
## 1/8
### prof. Ray
:::success
- [x] [將Ann把FHI Library加到OAI CMakelists的內容補到PPT](https://docs.google.com/presentation/d/1JR-DDCHvvLWzdvtyndJ0sas3MXrwUAZoZYX9UDWmmFg/edit#slide=id.g10c0bd4279d_0_2144) (1/11)
:::
## 1/5
### prof. Ray
:::success
- [ ] Use case的部份,可以先把現在測MAC與MAC+PHY,還有DU+FHI的先寫下來,未來再擴充
- [ ] Compression的部分,目前可以先disable, 不過就你發現的內容,就可以整理出一份OAI需要修正的功能清單
:::
## 12/28
### Handover BMW Lab's Job to Ferlinda
:::success
- **HW: Introduce 7th floor equipment to Ferlinda**
- 1. NIC & Fiber Cable
- [x] Command to check NIC Model: `lspci |grep Eth`
- [x] Fiber Vendor: [ZCables](https://zebracable.com/tw/)
- [x] NIC port: 10G V.S. 40G
- 2. CPU
- [x] Command to check CPU Model: `lscpu`
- [x] Command to check Cores: [Note](https://hackmd.io/OsPSqoVDRQS0hbrCjL85CQ?view#1-Edit-etctunedrealtime-virtual-host-variablesconf-to-add-isolated_cores)
- **SW:**
- 1. [x] [Sample-app Integration](https://hackmd.io/0w71pbYITaCMjBeYKYKd6Q)
- 2. [x] [Radio Mode Integration](https://hackmd.io/xknkMkSARoW2U2hd9KOLMQ)
- **Other server's settings:**
- [x] 1. [BIOS](https://hackmd.io/mT3fzBDMTtqyYSQ9Zzo-5A)
- [x] 2. [OS](https://hackmd.io/OsPSqoVDRQS0hbrCjL85CQ)
- Key1: OS follow enable HT
- Key2: Cyclictest
- Key3: Turbostat
:::
## 12/23
### Ferlinda's Paper
:::success
- [x] Abbreviation: O-RAN, CapEx, OpEx, 3GPP
- I remember abstract/introduction are two indepentent parts, which means the abbreviation need to redefine
- [x] Figure Consistent (?), For example: Fig.4 Lower DU is on the left side of block, Fig.5 is on the middle -> *will suggest to Bimo but I think the fig will change again later since our lab's architecture might add SMO*
- [x] The servers for RU simulator and O-DU had followed the pre-requisite needed to run the binary for O-DU Low (l1app) and FronthaulInterface (FHI) Library, both used CentOS. **-> Can't understand**
- [x] The environment for O-DU server is ready for testing and integration of O-DU Low and O-DU High. O-CU server is still under the planto be installed with Radisys’ commercial CU after hardware delivery. -> **When will you submit this paper? CU server already in the lab, but need to install some prerequites, then will ask Radisys’ engineer to install.** *-> wait response from other labs*
- [x] The two servers are connected. RU simulator used a modified RU Sample Application from Intel FlexRAN release (O-DULow) by reffering to the configuration for radio mode,numerology 0, and bandwidth 20 Mhz. **-> Can't understand, it let the others think RU simulator is from Intel Flexran**
- [x] This ==include (ed or s)== the testing of fronthaul
- [x] The E2E integration in OSC Taiwan Lab ==utilize (ed or s)==
- [x] Add the word RU at the bottom of the figure *-> will consider this* 
:::
## 12/20
### Romain
:::success
- ==Question List:==
- **Q1: Does previous OAI 5G using if4.5 split to connect successfully with benetel ?**
- **A1:** Yes
- **Q2: Does OAI support precoding?**
- **A2:** Yes, Romain enable precoding, the precoding will be in OAI DU
- **Q3: Does OAI support beamforming?**
- **A3:** Currently No
- ==Works in Eurocom and NTUST:==
- Romain keeps going for DL shared buffer, Shuhua keeps going for matching configuration.
- Romain provides the [OAI DU log](https://drive.google.com/file/d/1cFhZ1gpVUODJW499-QX0xQW7YiRKr077/view?usp=sharing) & [OAI DU configuraiton file](https://drive.google.com/file/d/1pUEzxbZAFxMXw0skSUZWN4X68conkCS0/view?usp=sharing) to Shuhua.
:::
## 12/15
### Paper Architecture Review
:::success
- **Related works**
- 1. O-RAN Fronthaul Interface spec. Fig. Functional block diagram for OSA 5G NR PHY Fig. Functional block diagram for OSA O-DU Low and FHI Fig
- ==Q1: OSA是什麼? (OAI software Alliance ?)==
- 假如是OAI software Alliance,這邊不是在講O-RAN架構嗎? 跟OAI有何關聯?
- 3. Difference OSC: test-mac timer mode DU + RU simulator NTUST: test-mac radio mode DU + RU simulator
- ==Q2: 如何比較或是要比較什麼? timer mode並不會接到RU,且我們是使用Radisys real DU-High,並不是模擬器testmac==
- **SYSTEM KEY PERFORMANCE INDEX**
- **Setup** 1. Content of xRAN Lib. a. Bandwidth b. Beam c. compression d. CPU utilization ration (the percentage of CPU processing time used by a process out of the total processing time) e. memory utilization (in bytes)
- ==<font color=red>Key Q: 要測誰跟誰對接的結果?</font>==
- ==Q3: 這部分是調整FHI Library有關a. Bandwidth、b. Beam、c. compression之參數,並觀察d.CPU utilization ration、e.memory utilization的結果嗎?==
- **Numerical results** 1. required capacity a. FH DL b. FH UL 2. required latency a. FH DL b. FH UL 3. required jitter a. FH DL b. FH UL
- ==Q4: 有特別說要調整什麼參數觀測這些結果嗎?==
- **CONCLUSION AND FUTURE WORK**
- 1. What is the use case where ORAN 7.2 SW Lib. is useful? 2. what are the actual requirements 3. what is the achievable performance with the Intel SW lib implementation, i.e. characterising the limitation of xran FHI library.
- ==Q5: 這邊是要說明目前FHI library跟規格之間的差異,完成哪部分?==
:::
## 12/9
### prof. Ray
:::success
- [x] 選項圖修改
- 每個block變小,5GC向右拉,Near-RT RIC向下拉
- block可以畫成這樣
- 連線目前實驗室已完成的即可
- **更新版**
- 目前[OAI C-Plane](https://hackmd.io/6YgFj7SURh6kyzcrN_uvNg?view#Introduction) hardcode的configuration (Step 2)之後要替換成相對應的參數,不能使用benetel的
:::
## 12/7
### prof. Ray
:::success
- [ ] 與Ann討論論文規劃? 合作或是各自寫?
- 若要合作,請Ann按照[Wilfrid格式](https://hackmd.io/JPP8Ab6UT9CcHMN6YGOmQQ?view#II2-Contents-Detail)列出詳細規劃,再與書華討論如何切割、第一作者等問題,並回報給老師
- [x] 補上對接選項圖
- Reference from Tony
- 上週使用OAI LTE,這周目前正在整合到OAI 5G
:::
## 12/2
### prof. Ray
:::success
- 找到證據才能將其整理到筆記
- 與Ann 討論留下開會紀錄
- [x] [Ann 跟Navid確認論文架構](https://hackmd.io/@Ting-An/B1FICZtuK?fbclid=IwAR3TOyRCaXEMaVQQOdYaRFtlUGsxvuNj2QaPGJ2iBtjlZPsM5VFDw9iqaI8)
- [x] 書華跟Romain 告知TM500只測試5G -> Eurocom之後會專注在開發5G
:::
## 11/18
### Ann
:::success
- Discuss the problem with Ann : While building OAI, bump into the problem [`Cannot find source file: /home/oran/O-DU/openairinterface5g/cmake_targets/ran_build/build/CMakeFiles/FLPT_V2/header.pb-c.c & /home/oai/O-DU/openairinterface5g/cmake_targets/ran_build/build/CMakeFiles/FSPT_V2/flexsplit.pb-c.c`](https://hackmd.io/TsaIRMQ1SUasvPMA1DRQ4Q?view#Cannot-find-source-file-homeoranO-DUopenairinterface5gcmake_targetsran_buildbuildCMakeFilesFLPT_V2headerpb-cc-amp-homeoaiO-DUopenairinterface5gcmake_targetsran_buildbuildCMakeFilesFSPT_V2flexsplitpb-cc)
- [x] Ann's suggestion : Checkout to ***develop*** branch to build first (11/19)
- For the command `sudo ./build_oai -I`, it passed, try the command `sudo ./build_oai --eNB` on 11/19, 因7樓網路流量要超量了
- ***develop*** branch has the same problem
- [Solved](https://hackmd.io/TsaIRMQ1SUasvPMA1DRQ4Q?view#Problem-3-Cannot-find-source-file-homeoranO-DUopenairinterface5gcmake_targetsran_buildbuildCMakeFilesFLPT_V2headerpb-cc-amp-homeoaiO-DUopenairinterface5gcmake_targetsran_buildbuildCMakeFilesFSPT_V2flexsplitpb-cc)
:::
## 11/17
### prof. Ray & Ann
:::success
- [x] 寄開會信以前麻煩確認清楚兩邊時間
- 目前歐洲與台灣時間差7hrs, 不是6hrs
- [x] Report the status of Alpha RU to prof. Ray & Ann
- Key Point :
- Alpha RU Not Support FDD
- Not use FHI library, Use "RU driver" developed by NCTU
- Message transmission Not follow ORAN defined -> [half slot tick](https://hackmd.io/@shuhua-liao/ByNUPVXOF/https%3A%2F%2Fhackmd.io%2FcGGNVMmVSH2PWY6bvrngtg%3Fview#Start-Procedure)
- [Message format Not totally correspond to ORAN spec](https://hackmd.io/@shuhua-liao/ByNUPVXOF/https%3A%2F%2Fhackmd.io%2FcGGNVMmVSH2PWY6bvrngtg%3Fview#eCPRI-ORAN-Packet-Format)
- [For every symbol equals to 7, will transmit PRACH, this part is hardcode, will not change using differnet PRACH Conf. Index](https://hackmd.io/t_Y4pOHZR0K4nbkiyRjWJQ?view#DL-Transmit)
- Not Support M-Plane
- Not run linuxptp, for one RU, using half slot tick to sync, for multiple RUs, using Grandmaster Clock
- Packet Capturing : Using equipment SG, or using switch to capture (such as Ann doing)
- Ann Duplicate pdump on Eurocom based on [this note](https://hackmd.io/keya_FNTRUqEx186placsQ?view#Testing--Sample-app-amp-dpdk-pdump)
- [x] 詢問阿德學長Alpha文件的圖是否能在Eurocom FHI會議中引用 (11/18)
- 可以
- [x] 詢問Ferlinda 整合paper的情況 (11/18)
- prof. gave some revisions and waiting for nick to check ric part on Tuesday
:::
## 10/29
### Install `Qt`
:::success
- Download from [this website](https://www.qt.io/offline-installers)
- Accoding to the `README.md`, here's the system requirements
- CMake 3.18 or later
- Perl 5.8 or later
- Python 2.7 or later
- C++ compiler supporting the C++17 standard
- Currently, the GCC version in our server is for `4.8.5`, [however for C++17 supporting, gcc version should over GCC 5.](https://gcc.gnu.org/projects/cxx-status.html#cxx17)
- Therefore, we try to update GCC version
- [Reference to update GCC version](https://linuxhostsupport.com/blog/how-to-install-gcc-on-centos-7/)

:::
## 11/5
### prof. Ray
:::success
- [x] Update [BMW weekly report](https://hackmd.io/9h3pNxjGTYmaLwk1LcHeXA?view#%E2%9C%93-Shuhua-FHI) (11/5)
- [x] After Start up shell script successful, can Not use tcpdump/Wireshark to capture eCPRI packet anymore, since the port is bind for DPDK, using tcpdump can only capture the PTP packet.For the Wireshark Log, after Start up shell script successful, go to debug port 23 with command dpdk_cap() developing by VIAVI itself, can get the eCPRI message
--> 你後面補的這些內容想傳達跟前面的筆記有什麼不同的概念呢?如果沒有新觀念,這不是畫蛇添足嗎?
Shuhua’s perspective : After Start up shell script successful, I think the port will be bind for DPDK port, which means you can only use DPDK pdump to capture the packet
- **Modified** : Shuhua’s perspective : For the DPDK Log, I think it’s related to the pcap file using DPDK pdump to capture.
- [x] 另外,你都已經看過VIAVI這邊的資料了,[可否請你把筆記重新修好一點呢?](https://hackmd.io/yT4PbGBHTEGHKz1FUtywhA?view)
- [x] While integrating, both of the Sample-app and L1app will need to bind their port to DPDK port
--> 你在哪裡介紹bind呢?為什麼不加上超連結?
- [I already add in **Things you need to know**](https://hackmd.io/yT4PbGBHTEGHKz1FUtywhA?view#Verification--Data-Transmission-through-FHI)
- [x] Action Item : Sort out the pdump question in FHI Lib and send to Alex (11/8)
---
- For the DPDK log mentioned by VIAVI, I think is using DPDK pdump to capture the packet
- In order to use DPDK pdump to capture the DPDP Primary Application, you need to call the function `rte_pdump_init()` & `rte_pdump_uninit` to initialize/uninitialize packet capture framework
- Also you also link to the pdump library `lrte_pdump`, `lrte_pmd_pcap` on your primary application while compiling
- But, for the L1app, it is binary file (already compiling), which means we can't add the library

:::
<!-- ## 11/4
### prof. Ray
:::success
- [ ] 看一下這個影片,他有介紹這兩個Log,確認你抓的方式跟他們是否一致,並把相關連攜放到 https://hackmd.io/M1bR_Vr_Sca--9A4ZcDzyg#Wireshark-Log-ShuHwa
- Currently, we don't have DPDK log, still debugging, check [this note](https://hackmd.io/keya_FNTRUqEx186placsQ)
:::
-->
## 10/28
### Ann
:::success
- **Purpose :** [Update the server's wireshark to the latest version which can directly analyze the O-RAN packet](https://hackmd.io/RWSwDbwPR7upnKFXSbqYPw?view&fbclid=IwAR1qnv7urL1knOiBcCHIpZBUb_4Zw7NvGxUCrcrRc4kRr96XqIptNR_JE9g#CentOS)
#### Wireshark Update
- [x] **Step 0 :** Update `Cmake` if the version isn't over 3.5.0
- Download the [Cmake package](https://cmake.org/download/), unzip the package
- Remove previous version `Cmake` package
- Using command `sudo yum remove cmake`
- Cmake installation
- `cd $CMAKE_DOWNLOAD_PATH`
- `./configure`
- `make`
- `sudo make install`
- Double check the `Cmake version`
- Using command `cmake --version`
- [x] **Step 1 :** Check `Qt` and `GLib` development packages already installed
- Required version of `QT` : over **5.3**
- Using command `pkg-config Qt5Widgets --modversion` to check the verison : **5.9.7**
- If your server didn't install, please use command `sudo yum install qt5-qtbase-devel` for the installation
- Required version of `GLib` : over **2.32.0**
- Using command `pkg-config glib-2.0 --modversion` to check the verison : **2.56.1**
- [x] **Step 2 :** build TShark, the line-mode version of Wireshark
- Optional, we didn't need TShark
- [x] **Step 3 :** Check `libpcap` development packages already installed
- Using command `ldconfig -p | grep libpcap` to check already installed or not
- [x] **Step 4 :** Check `Perl` development packages already installed
- Using command `perl -v` to check already installed or not
- [x] **Step 5 :** Check `Python` development packages already installed
- Using command `ls /usr/bin/python*` to check already installed or not
- [x] **Step 6 :** Download [Wireshark](https://www.wireshark.org/download.html) for the latest development release (3.6.0rc2), remember to choose the Sourcecode link

- [x] **Step 7 :** Extract the download file, enter the wireshark folder, then building the Wireshark
- Using command `sudo make install` for the building
- [x] **Step 8 :** Run ./run/wireshark below the Wireshark folder, that should work

:::
:::success
- **Purpose :**
- Since in Eurocom, they use the kernel `3.10.0-1160.42.2.el7.x86_64` for radio mode testing, but for the odu, didn't send MIB and SIB, Ann want to double check is the kernel problem or not
- [x] [Use the kernel `3.10.0-1160.42.2.el7.x86_64` for radio mode testing](#kernel-3100-1160422el7x86_64-for-radio-mode-testing)
- **Conclusion :**
- Use kernel `3.10.0-1160.42.2.el7.x86_64`, doesn't affect anything, odu still send MIB and SIB
#### kernel `3.10.0-1160.42.2.el7.x86_64` for radio mode testing
- **Step 1 :** Reboot your server and choose the kernel you want to use
- **Step 2 :** Use command `uname -r` to double check your kernel
- **Step 3 :** Reset the [VF function](https://hackmd.io/0w71pbYITaCMjBeYKYKd6Q#Create-two-virtual-functions1) and [L2 virtual IP](https://hackmd.io/xknkMkSARoW2U2hd9KOLMQ?view#L2), rerun [radio mode testing](https://hackmd.io/xknkMkSARoW2U2hd9KOLMQ?view#Testing)
- **Step 4 :** Check if odu send SIB and MIB or not
:::
## 10/27
### FHI Meeting : Disable Hyperthreading (HT) testing
:::success
- **Purpose :**
- prof. want to check the performance using enable/disable HT
- **Conclusion :**
- While disabling HT, need to reference Flexran OS configuration, however, it will let our server can **Not** boot, I already use [the below way](#Problem-while-applying-disable-HT-) to recover.
- Also, I don't think the performance while disabling HT will be better, since using `turbostat` to check the frequency, it's the same
#### Enable HT
- **Total cores :** `40`
- **Frequency :** Use `turbostat` to check, the frequency around `2700`

- **Latency :** Use `cyclictest` to check, the average latency is around `2`, the maximum latency is around `6`

- **cat /proc/cmdline**
```shell=
[oai@localhost ~]$ cat /proc/cmdline
BOOT_IMAGE=/vmlinuz-3.10.0-1062.12.1.rt56.1042.el7.x86_64 root=/dev/mapper/centos-root ro crashkernel=auto spectre_v2=retpoline rd.lvm.lv=centos/root rd.lvm.lv=centos/swap rhgb quiet processor.max_cstate=1 intel_idle.max_cstate=0 intel_pstate=disable cgroup_memory=1 cgroup_enable=memory idle=poll default_hugepagesz=1G hugepagesz=1G hugepages=32 intel_iommu=on iommu=pt usbcore.autosuspend=-1 selinux=0 enforcing=0 nmi_watchdog=0 softlockup_panic=0 audit=0 mce=off kthread_cpus=0 irqaffinity=0 skew_tick=1 isolcpus=1-19 intel_pstate=disable nosoftlockup nohz=on nohz_full=1-19 rcu_nocbs=1-19
```
- **/etc/default/grub**
```shell=
GRUB_TIMEOUT=5
GRUB_DISTRIBUTOR="$(sed 's, release .*$,,g' /etc/system-release)"
GRUB_DEFAULT=saved
GRUB_DISABLE_SUBMENU=true
GRUB_TERMINAL_OUTPUT="console"
GRUB_CMDLINE_LINUX="crashkernel=auto spectre_v2=retpoline rd.lvm.lv=centos/root rd.lvm.lv=centos/swap rhgb quiet processor.max_cstate=1 intel_idle.max_cstate=0 intel_pstate=disable cgroup_memory=1 cgroup_enable=memory idle=poll default_hugepagesz=1G hugepagesz=1G hugepages=32 intel_iommu=on iommu=pt usbcore.autosuspend=-1 selinux=0 enforcing=0 nmi_watchdog=0 softlockup_panic=0 audit=0 mce=off kthread_cpus=0 irqaffinity=0"
GRUB_DISABLE_RECOVERY="true"
GRUB_CMDLINE_LINUX_DEFAULT="${GRUB_CMDLINE_LINUX_DEFAULT:+$GRUB_CMDLINE_LINUX_DEFAULT }\$tuned_params"
GRUB_INITRD_OVERLAY="${GRUB_INITRD_OVERLAY:+$GRUB_INITRD_OVERLAY }\$tuned_initrd"
```
#### Disable HT
- For the disable HT case, according to Intel Alex's suggestion, OS configuration should follow [Flexran](https://github.com/intel/FlexRAN#os-configuration), however, it will bump into [some problem](#Problem-while-applying-disable-HT-), the server will not boot
- ==Therefore, please don't follow the Flexran setting==
:::danger
##### Problem while applying disable HT :
- After disable HT & Implement the Grub reference from Flexran, I try to reboot the server to apply the setting, however, the server can't boot and will get the below error as below

##### Solution
- Run the below command, then the server should boot
```shell=
$ lvm vgscan
$ lvm vgchange -ay
$ exit
```
- Change the grub setting back to [`Enable HT` section](#Enable-HT)
- Update the grub using command : `sudo grub2-mkconfig -o /boot/efi/EFI/centos/grub.cfg`
- Reboot the server to apply the setting, then it should work
<!-- - However, if reboot, the server will stuck the problem again
- Follow these steps to complete solve the problem :
- **Step 1 :** List the initramfs images you have
```shell=
[oai@localhost ~]$ ls -ltrh /boot/initramfs-*
-rw-------. 1 root root 76M Feb 19 2021 /boot/initramfs-0-rescue-7e8f71f84b4649eca6dc72651733844b.img
-rw-------. 1 root root 13M Feb 19 2021 /boot/initramfs-3.10.0-1062.12.1.rt56.1042.el7.x86_64kdump.img
-rw------- 1 root root 13M Feb 23 2021 /boot/initramfs-3.10.0-1160.11.1.rt56.1145.el7.x86_64kdump.img
-rw------- 1 root root 31M Sep 30 01:40 /boot/initramfs-3.10.0-1062.12.1.rt56.1042.el7.x86_64.img
-rw------- 1 root root 13M Sep 30 02:55 /boot/initramfs-3.10.0-1160.42.2.el7.x86_64kdump.img
-rw------- 1 root root 31M Sep 30 04:02 /boot/initramfs-3.10.0-1160.42.2.el7.x86_64.img
```
- **Step 2 :** Locate the kernel version you’re using and create a backup of it
```shell=
[oai@localhost ~]$ sudo cp -iv /boot/initramfs-3.10.0-1062.12.1.rt56.1042.el7.x86_64.img /boot/initramfs-3.10.0-1062.12.1.rt56.1042.el7.x86_64.img.back
[sudo] password for oai:
‘/boot/initramfs-3.10.0-1062.12.1.rt56.1042.el7.x86_64.img’ -> ‘/boot/initramfs-3.10.0-1062.12.1.rt56.1042.el7.x86_64.img.back’
```
- **Step 3 :** Rebuild the kernel image for that specific kernel
```shell=
[oai@localhost ~]$ sudo dracut -f
```
- **Step 4 :** Select the new kernel image
```shell=
[oai@localhost ~]$ ls -ltrh /boot/initramfs-*
-rw-------. 1 root root 76M Feb 19 2021 /boot/initramfs-0-rescue-7e8f71f84b4649eca6dc72651733844b.img
-rw-------. 1 root root 13M Feb 19 2021 /boot/initramfs-3.10.0-1062.12.1.rt56.1042.el7.x86_64kdump.img
-rw------- 1 root root 13M Feb 23 2021 /boot/initramfs-3.10.0-1160.11.1.rt56.1145.el7.x86_64kdump.img
-rw------- 1 root root 13M Sep 30 02:55 /boot/initramfs-3.10.0-1160.42.2.el7.x86_64kdump.img
-rw------- 1 root root 31M Sep 30 04:02 /boot/initramfs-3.10.0-1160.42.2.el7.x86_64.img
-rw------- 1 root root 31M Oct 27 02:40 /boot/initramfs-3.10.0-1062.12.1.rt56.1042.el7.x86_64.img.back
-rw------- 1 root root 31M Oct 27 02:42 /boot/initramfs-3.10.0-1062.12.1.rt56.1042.el7.x86_64.img
```
- **Step 5 :** Specify the new kernel version (For Example):
```shell=
[oai@localhost ~]$ sudo dracut -f /boot/initramfs-3.10.0-1062.12.1.rt56.1042.el7.x86_64
``` -->
:::
## 10/26
### Ann
:::success
- [x] 單開du,全部存txt的全部log -> **Already sent to Ann**
- [x] 再次驗證你給我的ru config是對的 -> **Download again the RU configuration I saved on the cloud, still can work properly**
:::
## 10/23
### Prof. Ray
:::success
- [x] 麻煩把SIM卡卡號等資料整理好,跟 @MC Chiang 索取地址,就直接寄幾張卡給中央許教授,拿郵資的購票證明,直接找Mira核銷 (10/26) -> Already sent the SIM card
:::
## 10/22
### Prof. Ray
:::success
- [x] 台科的事情有疑問可以私底下找老師詢問,不用等到開會時再討論
- [x] Checklist麻煩在每次報告/寫筆記以前進行確認
- [x] 回覆許教授SIM卡事宜 -> 已用line回覆
:::
## 10/21
### Ann
:::success
- [x] Replace 2 1k resistance with ==two 1k resistance== in the server stucking note (10/21)
- [Detail debugging note](https://hackmd.io/d1t2jYGBSLqrvt9wAprFJg?fbclid=IwAR0tvISnzRKP2-DbjOV_GJb-TKQ5YqmArOlwypgIcVdBUE0aPl_hEqAfJj8)
- [Simple Result to CHT](https://hackmd.io/@shuhua-liao/HJYF2uq4K?fbclid=IwAR3wqIW50NHWVjIYPY6IKUBV9AYm3AkNDGSHu5YsNqhm-0uvTfPqyNvXEvQ#Modified-Grub)
- [x] radio mode txt log to Ann **-> Directly sent to Ann** (10/21)
- [x] Check command `nproc` in NTUST server (10/21)
- The result in AAEON server is `21`
:::
## 10/20
### Ann
:::success
- [x] [Add the result about using tcpdump to capture the L1app packet](https://hackmd.io/yT4PbGBHTEGHKz1FUtywhA#Intel-server-side) (10/20)
:::
## 10/18
### Prof. Ray
:::success
- [x] 會議記錄,請把最新的放在最上面,因為那是最需要查核的
- [x] 會議記錄請設定Action Item & Deadline,請加至[你的Checklist](https://hackmd.io/5mDu4JXtQkS36q4FHAz8zA?view)
- [x] https://hackmd.io/903nREczSNmNhjH6IyTVHQ#Alex--Update-NIC-driverfirmware-version
要做這件事,請務必說明原因,並簡要說明成果,細節可用超連結
- [x] https://hackmd.io/903nREczSNmNhjH6IyTVHQ#1014-BMW-lab-meeting
--> 這邊的問題是來自你投影片整理不當,所以你除了回覆問題,應該還要附上投影片(這才是最重要的),告訴我們每個問題在哪一張投影片已經補強 (10/19)
- [PPT link](https://docs.google.com/presentation/d/1lRxHLmQvOA1lVa1hYIHyXFKka1Cxtrzr/edit?usp=sharing&ouid=100861506432054748589&rtpof=true&sd=true)
- p.6 Figure :
- Reposition the interface (Example : enp24s0f1 10.10.11.5) of two server, frame the Virtual function into the physical interface
- Add the C/U/S-Plane arrow
- Add the words explain what is the arrow correspond to
- Add the input of the IQ data in sample-app
- Here I want to point out the difference between sample-app and L1app
- p.10 : Add the abbreviation of Grandmaster Clock (GM)
:::
==10/18起,較新的會議紀錄會在越上方==
---
## 7/7
### prof. Ray, Wilfrid, Kevin
:::success
- [x] [Explain the wrapper to OSC team member](https://hackmd.io/gjMfVDqxRvm1kjrz2opzUA?view#Wrapper-Introduction)
- OSC wrapper issue :
- [x] [Is that wrapper (`xran_lib_wrap.hpp`) in OSC can be worked ?](https://hackmd.io/gjMfVDqxRvm1kjrz2opzUA?view#OSC-wrapper-issue---Is-that-wrapper-xran_lib_wraphpp-in-OSC-can-be-worked-) -> Yes, but need to add extra function
- [x] [Create a table to record the function (in `xran_lib_wrap.hpp`) & its description](https://hackmd.io/gjMfVDqxRvm1kjrz2opzUA#What%E2%80%99s-in-the-OSC-wrapper-xran_lib_wraphpp-)
- [x] [What is the extra feature we need to add ?](https://hackmd.io/gjMfVDqxRvm1kjrz2opzUA?view#Plan--Implementation-of-our-wrapper)
- About the wrapper, we need to have 4 major functions below, and I record the features I think we need to add in the wrapper to implement this 4 function
- Init
- C-Plane transmission
- U-Plane transmission
- U-Plane reception (In O-RAN, DU only receive U-Plane message from RU, no C-Plane message)
- There are some functions in benetel (benetel_start, benetel_read_raw, benetel_write_raw) that is empty
- [x] Benetel uses DPDK, [so the functions related to raw ethernet is empty.](https://hackmd.io/TNu-HjqBTvyh4r3WxTDq8w?view)
:::
## 7/12
### prof. Ray
:::success
- [x] **Problem : while running RU side (slave clock) receive `SYNC/PDELAY_RESP/PDELAY_REQ` without timestamp**
- ==Which means it can't sync with DU, since while running DU & RU sample-app, it will print the log `Machine is not synchronized using PTP!`==, [check the log (line 12) about running sample-app](https://hackmd.io/0w71pbYITaCMjBeYKYKd6Q#Log-of-sample-app)
`
- [Nadhif's reference](https://hackmd.io/@ChiehChun/HyNXWdATI/https%3A%2F%2Fhackmd.io%2Ffl7tOOGbSCaIb9kwxgaEWQ%3Fview#PTP4l-amp-PHC2SYS)
Run ptp4L to make DU be the master, RU be the slave, however RU side (slave clock) will receive SYNC without timestamp
```shell=
# Make the port on O-DU become ptp master
sudo ./ptp4l -f configs/default.cfg -2 -i <interface> -m -S
# example
sudo ./ptp4l -f configs/default.cfg -2 -i enp134s0f0 -m -S
# Make the port on ORU to become the ptp slave
sudo ./ptp4l -f configs/default_slave.cfg -2 -i <interface> -m
# example
sudo ./ptp4l -f configs/default_slave.cfg -2 -i enp24s0f1 -m
```
---
- ==Prof. Ray idea :== Check the driver and the product model of Intel & AAEON NIC with the ASUS server which play as an slave role (which RU will be the slave) before
- **ASUS**
- Driver : igb
- Product model : Intel Corporation I350 Gigabit Network
- **Intel**
- Driver : i40e
- Product model : Intel Corporation Ethernet Controller X710 for 10GbE SFP+
- **AAEON**
- Driver : i40e
- Product model : Intel Corporation Ethernet Controller X710 for 10GbE SFP+
- ==**Conclusion**==
- The one which can be play an slave role (which RU will be the slave) is **ASUS** server, however the driver should be `i40e` not `igb` when running sample-app.
- Also, Intel & AAEON NIC (which doesn't support ```all (HWTSTAMP_FILTER_ALL)``` in ```Hardware Receive Filter Modes```) are difference with ASUS one
- ==Shuhua idea :== I think the problem maybe is that our NIC (Intel Corporation Ethernet Controller X710 for 10GbE SFP+) doesn't support ```all (HWTSTAMP_FILTER_ALL)``` in ```Hardware Receive Filter Modes```
- Here's the [System Requirements](https://github.com/openil/linuxptp#system-requirements) that NIC should support to run linuxptp
- And also I check the ASUS server (Nadhif use as RU before which RU is used as slave clock) which NIC can receive the SYNC with timestamp (Nadhif's succeed one), it has the mode
<!-- - By the way, I think isn't the setting of the server, since
- Nadhif's success : ASUS (Slave), Intel (Master)
- ASUS(Master), Intel(Slave) -> ==Can't work==
- ==Shuhua suggestion :== Maybe we can replace ASUS NIC `(enp4s0f1)` to Intel or ASUS server ? If it can also support the setting about installation of O-DU -->
:::
:::danger
**Things you need to remember :**
- 你的工作項目就要知道你完成什麼內容,細節才是連過去看
- 問題與回答要互相呼應,如下
- What is in this wrapper (xran_lib_wrap.hpp) now ?
- ~~Use the table to record the function & it descriptions in xran_lib_wrap.hpp~~
- 標題上根本沒有Table, 你還可以Use這個Table, 不覺得很奇怪嗎
- 可改成Create a table to record the function (in xran_lib_wrap.hpp) & its description
- Action item打勾的時候附上超連結
- 資料請補充參考來源
- 一律用AAEON當DU,網卡有問題可以請教Sam
- There’s some function in benetel (benetel_start, benetel_read_raw, benetel_write_raw) that is empty
- Is it because benetel use dpdk? -> Yes, because of that, some of the function is empty since it will not be used in Benetel.
你仔細看看你自己寫的:
問題是: some functionS in benetel ARE empty
你自己給的答案是:because benetel use dpdk? --> 實際上完全看不出使用DPDK跟Function是空的有什麼關係?
針對benetel use dpdk,你進一步的佐證是:
some of the function is empty since it will not be used in Benetel.
--> 一樣看不出這與使用DPDK有何關聯性?
- 清單上說,第一次出現的名詞要定義嗎?
為什麼還沒介紹C-Plane database,就可以把他Reset?
C-Plane transmission
Reset the C-Plane database (Why need C-Plane database ?
- 論文題目 : OAI DU + commercial RU (C/U/S-plane完成, M plane -> pre-config/ Netconf)
:::
### Ann, Wilfrid
:::success
- [x] [Sync with Ann about the job](https://hackmd.io/9h3pNxjGTYmaLwk1LcHeXA?view#Ann-FHI)
- Wrapper will be done by Shuhua
- Is that in Srushiti branch, already have the wrapper we can take to use ? -> No, we didn't find it.
- Also, I check the bottom function oran_main(), it just try to call the sample-app, which means it will run the sample-app, that's not the way we want to do about the wrapper.
- ==We just need to extract some of the function into wrapper.==
- 
[Reference](https://gitlab.eurecom.fr/Srushti16/openairinterface5g/-/blob/oai_oran_integration/targets/ARCH/ETHERNET/oran/doc/README.pdf)
- ==**Action item after discussion :**== Shuhua develop the wrapper
:::
## 7/13
### Sam
:::success
**<font color=red>Problem</font>**
- [ ] Is that **Intel Corporation Ethernet Controller X710 for 10GbE SFP+** support linuxPTP ?
- When running linuxPTP, ==slave clock will have the issue : received `SYNC/PDELAY_RESP/PDELAY_REQ` without timestamp==
**Slave Clock Output:** [(config file)](https://drive.google.com/file/d/1Pv8bhxG_oUMoQanpSGz5ZhiKyVFw4k_7/view?usp=sharing)
```shell=
[oai@ee705-7-ip120 linuxptp]$ sudo ./ptp4l -f configs/default_slave_test.cfg -2 -i enp134s0f0 -m
[sudo] password for oai:
ptp4l[880134.813]: selected /dev/ptp4 as PTP clock
ptp4l[880134.839]: driver rejected most general HWTSTAMP filter
ptp4l[880134.839]: port 1 (enp134s0f0): INITIALIZING to LISTENING on INIT_COMPLETE
ptp4l[880134.840]: port 0 (/var/run/ptp4l): INITIALIZING to LISTENING on INIT_COMPLETE
ptp4l[880134.840]: port 0 (/var/run/ptp4lro): INITIALIZING to LISTENING on INIT_COMPLETE
ptp4l[880135.840]: port 1 (enp134s0f0): received PDELAY_RESP without timestamp
ptp4l[880136.305]: port 1 (enp134s0f0): received PDELAY_REQ without timestamp
ptp4l[880136.840]: port 1 (enp134s0f0): received PDELAY_RESP without timestamp
ptp4l[880137.308]: port 1 (enp134s0f0): received PDELAY_REQ without timestamp
ptp4l[880137.840]: port 1 (enp134s0f0): received PDELAY_RESP without timestamp
ptp4l[880138.310]: port 1 (enp134s0f0): received PDELAY_REQ without timestamp
ptp4l[880138.840]: port 1 (enp134s0f0): received PDELAY_RESP without timestamp
ptp4l[880139.313]: port 1 (enp134s0f0): received PDELAY_REQ without timestamp
ptp4l[880139.840]: port 1 (enp134s0f0): received PDELAY_RESP without timestamp
ptp4l[880140.122]: port 1 (enp134s0f0): new foreign master 40a6b7.fffe.205475-1
ptp4l[880140.184]: port 1 (enp134s0f0): received SYNC without timestamp
ptp4l[880140.247]: port 1 (enp134s0f0): received SYNC without timestamp
ptp4l[880140.309]: port 1 (enp134s0f0): received SYNC without timestamp
ptp4l[880140.313]: port 1 (enp134s0f0): received PDELAY_REQ without timestamp
ptp4l[880140.372]: port 1 (enp134s0f0): received SYNC without timestamp
ptp4l[880140.435]: port 1 (enp134s0f0): received SYNC without timestamp
```
**Master Clock Output :** [(config file)](https://drive.google.com/file/d/1l6VyEUTLHwWJae5ktzRdbQLKWmnF_c7J/view?usp=sharing)
```shell=
[oran@ee705-7-ip119 linuxptp]$ sudo ./ptp4l -f configs/default.cfg -2 -i enp24s0f1 -m -S
[sudo] password for oran:
ptp4l[772968.026]: port 1 (enp24s0f1): INITIALIZING to LISTENING on INIT_COMPLETE
ptp4l[772968.026]: port 0 (/var/run/ptp4l): INITIALIZING to LISTENING on INIT_COMPLETE
ptp4l[772968.026]: port 0 (/var/run/ptp4lro): INITIALIZING to LISTENING on INIT_COMPLETE
ptp4l[772979.857]: port 1 (enp24s0f1): LISTENING to MASTER on ANNOUNCE_RECEIPT_TIMEOUT_EXPIRES
ptp4l[772979.857]: selected local clock 40a6b7.fffe.205475 as best master
ptp4l[772979.857]: port 1 (enp24s0f1): assuming the grand master role
```
---
**<font color=red>Possible Causes : Lack ```all (HWTSTAMP_FILTER_ALL)``` in ```Hardware Receive Filter Modes```</font>**
- Here's the [System Requirements](https://github.com/openil/linuxptp#system-requirements) that NIC should support to run linuxptp
- **Intel Corporation Ethernet Controller X710 for 10GbE SFP+** doesn't support ```all (HWTSTAMP_FILTER_ALL)``` in ```Hardware Receive Filter Modes```
---
- **Conclusion :** Sam will help us check whether **Intel Corporation Ethernet Controller X710 for 10GbE SFP+** has ```all (HWTSTAMP_FILTER_ALL)``` in ```Hardware Receive Filter Modes``` or not tomorrow (7/14)
:::
## 7/14
### Sam
:::success
- Sam's NIC also doesn't have all mode to support PTP -> **But prof. think isn't the all mode problem**

---
- **Conclusion :** Sam will help us check with Intel (Already send to Intel)
:::
## 7/15
### prof. Ray : Send to Alex
:::success
1. While running linuxPTP, ==slave clock will have the issue : received `SYNC/PDELAY_RESP/PDELAY_REQ` without timestamp==
- Possible Cause : NIC configuration not match linuxPTP [System Requirements](https://github.com/openil/linuxptp#system-requirements)
- Here's the System Requirements that NIC should support to run linuxptp.
- ==NTUST's NIC==
- **Product model : Intel Corporation Ethernet Controller X710 for 10GbE SFP+**
- **Driver : i40e**
- <font color=red>**lack of ```all (HWTSTAMP_FILTER_ALL)``` in ```Hardware Receive Filter Modes```**</font>
- ==**[Recommended configuration for NICs from OSC](https://docs.o-ran-sc.org/projects/o-ran-sc-o-du-phy/en/latest/Setup-Configuration_fh.html#a-2-prerequisites)**==

---
2. If we skip the linuxPTP setting above, While running sample-app in both DU & RU side, we got the log showing that
- **sh: pmc: command not found**
- **Machine is not synchronized using PTP!**

:::
### Other Issue
:::success
- [x] What does it mean `linuxPTP is work` ?
- Below is the screenshot in slave clock
- linuxPTP : **Success**

- linuxPTP : **Fail (received `SYNC/PDELAY_RESP/PDELAY_REQ` without timestamp)**

- [x] In l1, there are two modes, one is for timer mode, the other is for radio (xran) mode. Do we successfully run radio mode ?
- Nadhif's answer : XRAN mode still cannot connect to RU
- [x] Radio Mode應該會用wrapper來傳,而不是SampleAPP吧?
- 概念來說應該是,會包FHI library,
- ==我想表達 :== 這邊都是binary code,我們無法借鏡知道wrapper是怎麼寫的
<!--
- [ ] LinuxPTP同步問題 : 可以看到 PTP 訊息,可否藉以確認目前PTP同步問題?
- [ ] L1嘗試radio mode
- [ ] Wrapper - Init
- [ ] Add below command to Makefile (path -> o-ran-sc-cherry-20201215-part-1\phy\fhi_lib\app) which can include the .hpp file : -I/this/is/my/path
- [ ] Add trouble shooting section, write the script to ensure the environment is ready for O-DU & O-RU
-->
:::
## 7/16
### Sam
:::success
- Intel's Response : ==**Intel Corporation Ethernet Controller X710 for 10GbE SFP+** didn't support ```all (HWTSTAMP_FILTER_ALL)``` in ```Hardware Receive Filter Modes```==
- [x] **Sam's Question : Is there any NIC support ```all (HWTSTAMP_FILTER_ALL)``` in ```Hardware Receive Filter Modes``` in our lab ?** -> Yes, details below
- AAEON NIC : I211 series
- <font color=red>Problem : Not support SR-IOV</font>
- ASUS NIC (which Nadhif's succesfully run linuxPTP in slave clock) : I350 series
- [x] **Sam's Question : Nadhif told me that he needed X710 (10G), is that I350 series (1G) meet our requirements, if Yes, should we change to I350 series (1G) ?**
- Nadhif's reason :
- The reason the AAEON server 40GB hard to use because it uses QFSP+ port and not ethernet port. While in Intel server they use Ethernet port and SFP+ port.
- So the 40GB QFSP+ port in AAEON could not connect to Intel server port.
- ==However, we just use I350 to run linuxPTP, we didn't successfully run sample-app==
- [x] Action Item : Shuhua ask prof. Ray, should we change AAEON NIC to **I350 series (1G)** ?
- prof. response : No
:::
## 7/20
### prof. Ray
:::success
- [x] 超連結hackmd的title改成跟FHI頁面一致
- FHI頁面
- [超連結的hackmd](https://hackmd.io/c_mTtbhxTcKPwkqaxPL5qA?view)
- [x] [筆記寫法要跟實驗手冊一樣,用正面描述,重點是安裝,不是要教大家如何重複你的錯誤過程後再修正](https://hackmd.io/c_mTtbhxTcKPwkqaxPL5qA?view#How-to-generate-FHI-shared-library-based-on-Makefile-)
- [x] [遇到bug需要紀錄,也請用附註方式說明](https://hackmd.io/c_mTtbhxTcKPwkqaxPL5qA?view#How-to-generate-FHI-shared-library-based-on-Makefile-) -> 已加到hackmd留言的部分
- FHI頁面只列出Checklist的大目標
- [x] [細節應該是放在另一個頁面裡面](https://hackmd.io/@shuhua-liao/BJ0kHqXAu/https%3A%2F%2Fhackmd.io%2Fk3GuSWzURjqRvZ4bfN5Fgg%3Fview)
#### prof. Ray question
- **Key Question :**
- 你確定你正在寫的wrapper,OSC的 (xran_lib_wrap.hpp)不能用嗎?
- 根據新的做法,應該是可以拿來用
- 如果OSC 的不能直接用,為什麼Radio mode可以直接跑呢?
- Radio mode都是binary code無法完整分析,猜測應該是直接拿OSC wrapper來用,也就是說會呼叫`xran_init()` & `xran_open()`,便能跑起來。
- 他原本的xran-init, open不就是在做你的wrapper要做的事嗎?
- 根據新做法,是的
<!-- - [ ] **我認為的方向**
- 關於傳輸以及接收的部分,不應該直接呼叫`xran_open()`,而是篩選出產生packet的函數,到時OAI給予適當的參數(例如slotid, subframeid等等)產生封包以後,進行傳輸以及接收即可 -->
<!-- - xran_open()可以直接拿來用(?
- 思考 -> xran_open()用途 : 呼叫以後,便會開始實現C/U-Plane傳輸以及接收的部分
- 這樣OAI要怎麼呼叫 ? 不可能每次都呼叫open(),很奇怪 -->
:::
### Ann
:::success
- Shuhua目前wrapper實作想法
- 因應OAI目前的做法,將OSC的函數`xran_open()`,把C/U-Plane的接收篩選出來,最後整合到OAI裡面,可參考下圖之OAI函數transport_init()的內容
- Ann想法
- 將`xran_open()`,C/U-Plane的接收拆開,不確定會不會導致後面的問題
- 假如將`xran_open()`拆開產生後續的問題,因為已經破壞了OSC原本的結構,假如出現問題可能別人協助有限
- 反之,假如只是改OAI這邊,那還會有OAI (Navid)可以進行詢問
- ==假如l1(l1應該也是用wrapper來溝通)可以work,那或許可以參照一樣的做法==
- [x] Action Item : [Connecting O-RU and O-DU (l1 Radio Mode)](https://hackmd.io/H0quoaGmTIqsr4P1l1Qvcw?view#O-DU-L2L1app-amp-RU-SampleApp-in-Radio-Mode)
<!--  -->
:::
## 7/21
### Idea
:::success
- Radio Mode應該會用wrapper來傳,而不是SampleAPP吧?
- 概念來說是,但是根據l1的log,確定並不是使用OSC的wrapper
- 證據 :
- [l1 log](https://hackmd.io/CkN-VR6rQfm10gpt42lcfA#Run-l1-app-on-xran-moderadio-mode) : 能看到有call xran_init(),但跟OSC wrapper理應print的log對不起來(例如應該會print : O-DU MAC address:)
- OSC wrapper : SetUp()會call xran_init()
##### Wilfrid check
```cpp=
int SetUp()
{
int i;
printf("O-DU MAC address: %02X:%02X:%02X:%02X:%02X:%02X\n",
m_xranInit.p_o_du_addr[0],
m_xranInit.p_o_du_addr[1],
m_xranInit.p_o_du_addr[2],
m_xranInit.p_o_du_addr[3],
m_xranInit.p_o_du_addr[4],
m_xranInit.p_o_du_addr[5]);
printf("O-RU MAC address: %02X:%02X:%02X:%02X:%02X:%02X\n",
m_xranInit.p_o_ru_addr[0],
m_xranInit.p_o_ru_addr[1],
m_xranInit.p_o_ru_addr[2],
m_xranInit.p_o_ru_addr[3],
m_xranInit.p_o_ru_addr[4],
m_xranInit.p_o_ru_addr[5]);
printf("eAxCID - %d:%d:%d:%d (%04x, %04x, %04x, %04x)\n",
m_xranInit.eAxCId_conf.bit_cuPortId,
m_xranInit.eAxCId_conf.bit_bandSectorId,
m_xranInit.eAxCId_conf.bit_ccId,
m_xranInit.eAxCId_conf.bit_ruPortId,
m_xranInit.eAxCId_conf.mask_cuPortId,
m_xranInit.eAxCId_conf.mask_bandSectorId,
m_xranInit.eAxCId_conf.mask_ccId,
m_xranInit.eAxCId_conf.mask_ruPortId);
printf("Total BF Weights : %d\n", m_xranInit.totalBfWeights);
xran_init(0, NULL, &m_xranInit, &argv[0], &m_xranhandle);
```
- 目前l1跑在Radio與Timer mode,為什麼只是跑個l1.sh + xml file就可以動? 如果不完善,目前Radio Mode為什麼就可直接使用呢?
- 不確定,目前l1 run起來的log,與OSC wrapper理應print的log做比較,對不起來,推測l1應該不是使用OSC的wrapper
- OSC本來就有wrapper,為什麼你需要改?不能直接用嗎?
- 新作法 : 目前打算直接拿來用,並利用與RU simulator連線,來確定是否能work
<!-- - 也不是說不能用,而是我原本打算照著OAI,也就是Navid說的架構來實作wrapper,把C/U封包的傳輸及接送分成4個函數來寫
- <font color=red>老師疑問 : 所以不是應該去改OAI,怎麼會去改FHI呢? 只是覺得很怪,理論上FHI應該就像Lib,只需要改OAI收送的API就好,這樣其他人才能拿來用
- 許教授 : 最好是將OSC FHI當成一個外掛程式,修改OAI的wrapper,盡量不要動到OSC的FHI</font> -->
<!-- - 為何要將xran_open() C/U傳接的功能拆開 ?
- 那現在Intel O-DU跑起來有一再呼叫嗎? -->
<!-- 但我認為要整合到OAI不能直接call xran_open() ,這樣傳輸以及接收的功能都會被綁在一起,無法在需要的時候呼叫對應的函數 -->
<!-- FHI編譯好不就應該是個Lib嗎,提供標準API給L1呼叫嗎?就像WinSocket,所有程式都可用,不是嗎?
不應該每個城市都要自己寫個wrapper吧?
L1是Intel或者是OAI有什麼差別呢?-->
- 新作法 : 參照l1的做法
- 決定新作法之後,第一件事就是要告訴我你要怎麼樣把FHI的程式碼包起來成為Lib, 然後這個Lib的API應該可以很清楚定義出來
- 也應該用Intel l1為例,告訴我們l1與FHI之間的訊息交握MSC
- 訊息交握MSC可以從PCAP檔找出證據嗎?
---
#### Extra things
- [x] [Connecting O-RU and O-DU (l1)](https://hackmd.io/H0quoaGmTIqsr4P1l1Qvcw?view#O-DU-L2L1app-amp-RU-SampleApp-in-Radio-Mode)
:::
### Prof. Ray, Wilfrid
:::success
- Wrapper Issus

>origin source : Wilfrid
>Shuhua add some blocks in green part
- 綠色那塊不應該拆也不用改,我們只需把這塊拿到OAI (call FHI library),然後再把iq sample透過wrapper丟到ru_thread
- wrapper只做sample(buffers.dl & buffers.ul)的轉移,包含init, C/U傳接給RU應該在綠色那塊做完
- [ ] Action Item : 先將綠色那塊做出來,確定能跟ru simulator溝通以後,再做中間的wrapper
- l1 issue
- 上層會丟東西下來,才會繼續往下丟,也就是說如果只有l1,沒有灌資料(IQ),就不會有東西下去
- 與sample-app差異 : sample-app包了l1以及上層所有的東西
- Other Issue
- [ ] 麻煩之後要討論,必須有佐證 (最好是畫圖),而不是用講的沒有依據,人家只能用想像的
:::
## 7/27
### Chiehchun, Mick Oral Rehearsal
:::success
- 問題講清楚,為何需要這個東西 ? 沒有這個東西會怎樣 ? 為何需要這樣做,目的是什麼 ?
- 先跟大家講問題的困難度,再講解法
- scenerio如何設計 ? 調整那些變因 ?
- 圖例太小看不清楚
- 每頁的目的,概念是什麼
- Assumption太多,分頁寫
- 字太多,要一個唸 ??
- 投影片與投影片之間的關聯性 ?
- 投影片的部分,假如沒有related work就不用擺了 -> 可能會迎來的問題 : 既然是獨創,那為何要處理這個問題 ?
- PPT善用跳頁,細節部分等別人問在跳到細節即可。
- PPT只寫幾個keyword,說明時把keyword湊起來即可。
:::
## 7/28
### TEEP Meeting
:::success
- [ ] ~~Action Item : [Patch the file related to pmc](https://hackmd.io/RYOqjzGzTaO5TJV87UoelQ?view#PTP-Management-Client-PMC-utility) to solve the `failed to create PMC` issue~~ ==Don't need to use patch now==
- There are two files need to patch
- pmc.8
- pmc.c
**Modified pmc.8** : Add Line 6~12 into pmc.8
```shell=
.SH PROGRAM OPTIONS
.TP
.B domainNumber
The domain attribute of the local clock. The default is 0.
.TP
.B user
The name of the user to which should
.B pmc
switch in order to drop the root privileges. By default,
.B pmc
will keep the identity of the user under which it is started.
.SH PORT OPTIONS
.TP
.B transportSpecific
The transport specific field. Must be in the range 0 to 255.
The default is 0.
```
**Modified pmc.c** : Add Line 5~8 into pmc.c
```shell=
print_set_progname(progname);
print_set_syslog(1);
print_set_verbose(1);
if (drop_root_privileges(config_get_string(cfg, NULL, "user"))) {
config_destroy(cfg);
return -1;
}
pmc = pmc_create(cfg, transport_type, iface_name, boundary_hops,
domain_number, transport_specific, zero_datalen);
```
Then I try to run command `pmc help`, it still has the issue `failed to create PMC`
```shell=
[oai@ee705-7-ip120 linuxptp]$ pmc help
pmc[22695.497]: ioctl SIOCGIFHWADDR failed: No such device
pmc[22695.497]: failed to generate a clock identity
failed to create pmc
```
:::
## 7/30
### Kevin : PMC Issue
:::success
According to [Kevin's note](https://hackmd.io/wKJ6AV4jRieQwHrHPMKUdQ?view#III-Suggested-fix) to reinstall linuxPTP and run sample-app to make sure pmc is work.
- After put sudo in the PMC_CMD of xran_sync_api.c, I try to compile the library & sample-app again. 
- However, it still can't work.
- But, if we just run command with `sudo ./pmc -u -b 0 'GET PORT_DATA_SET'`, it seems that pmc is OK
- **Kevin's conclusion :** pmc is OK, but while running sample-app, it can't use pmc for checking the sync status
- [x] [sh: pmc: command not found](https://hackmd.io/0w71pbYITaCMjBeYKYKd6Q?view#O-DU) : Line 11 in log -> Solved : [PMC Issue](https://hackmd.io/0w71pbYITaCMjBeYKYKd6Q?view#PMC-Issue) (8/3)
:::
## 8/2
### Prof. Ray - List the problem about weekly report
:::success
- Bimo :
- Short-term Goal : Understand RIC
- 定義的不清楚
- Checklists
- 較舊的且不是那麼重要的可以拿掉,例如 "Get RIC learning material (Contact with Nick)"
- Ann :
- 每個有框框可以打勾的部分,都會有連結
- Jonathan :
- Hyperlink的title跟點進去note的title不符合
- Tony :
- Hyperlink的title跟點進去note的title不符合
- Pending Action Items沒有東西,應該擺上當週的工作事項
- Dennis :
- Hyperlink的title跟點進去note的title不符合
- Short-term Goal & Checklists重複
- title定義的不清楚,"Study note for 3GPP spec. (TS 38.211)" -> 規格囊括了很多部分,主要是要看哪部分 ?
- Billy :
- Short-term Goal定義的不清楚,"協助Tony整理O-DU計畫部分" -> 與Tony如何分工 ?
- 每個有框框可以打勾的部分,都會有連結
- Jacky :
- Short-term Goal定義的不清楚,"ITRI Intern",不清楚這要幹嘛 ? ITRI實習,然後要...?
- Pending Action Items,"(Not finished, there’s still some problem.)" -> 還有問題不應該打勾
- Nick :
- 每個有框框可以打勾的部分,都會有連結
- Fadli :
- Short-term Goal,打勾完成沒有連結
- YuehHuan :
- Short-term Goal & Pending Action Items & Checklists有重複的點,[參考](https://hackmd.io/borGdei9RymTkSh4w7-OkA?view#Requirement-For-Your-Status-Report)改進
- 每個有框框可以打勾的部分,都會有連結
- Tori :
- Short-term Goal & Checklists有重複的點
- Pending Action Items 是空的,[參考](https://hackmd.io/borGdei9RymTkSh4w7-OkA?view#Requirement-For-Your-Status-Report)改進
- 每個有框框可以打勾的部分,都會有連結
- JoJoWei :
- 每個有框框可以打勾的部分,都會有連結
- title study的部分沒辦法量化目標,可以說明study完以後的筆記需要有哪些部分 ? 例如 : Architecture ? Procedure ? Message Flow ?
- Ken :
- 每個有框框可以打勾的部分,都會有連結
- Pending Action Items : Deadline已經過了但是沒有打勾,不清楚是否已經完成 ?
- Andy :
- 沒有Action Item
- Luthfi :
- Checklists的Deadline已經過了,"Analytical Model for Hybrid Time and Frequency Uplink Packet Reservation for 802.11 ax, Status (2/3), Deadline (7/30)"
- Wesley :
- Action Items兩項分別為pending以及Kripton的工作,那你這周的action item是...?
- Short-term Goal & Checklists有重複的點,[參考](https://hackmd.io/borGdei9RymTkSh4w7-OkA?view#Requirement-For-Your-Status-Report)改進
- Short-term Goal & Checklists兩者的工作項目順序請保持一致
- Kripton :
- 沒有Action Item
- Short-term Goal只有一項且已完成,Checklists是否全部都跟這個Short-term Goal一樣,假如一樣,Checklists還未全部完成,為何Short-term Goal可以打勾 ?
- Fadli :
- 每個有框框可以打勾的部分,都會有連結
- Ren :
- 每個有框框可以打勾的部分,都會有連結
- ChiaWei :
- 每個有框框可以打勾的部分,都會有連結
- Short-term Goal的DL已經過了 ("Thesis title/direction (deadline : 7/21)"),完成了嗎 ? 沒有完成的話目前遇到的困難是...?
- Action Items是7月中的,這周的action item 是...?
- [參考](https://hackmd.io/borGdei9RymTkSh4w7-OkA?view#Requirement-For-Your-Status-Report)改進
- Scott : (N/A)
- Eric :
- Checklists,"Detail of 4g/5g V2x standard (LTE Technical Spec), status:40% (DL:8/1)",DL已經過囉,麻煩請修正,且定義的不是很清楚,這邊產出的筆記會包含什麼部分呢 ?
- Annie :
- 每個有框框可以打勾的部分,都會有連結
- Action Items & Checklists皆有超過DL的部分需要進行修改,如未完成,請說明目前遇到的問題 ?
- Ian :
- 每個有框框可以打勾的部分,都會有連結
- Short-term Goal & Action Item & Checklists皆已完成,接下來的規劃是...?
- Cherry :
- 每個有框框可以打勾的部分,都會有連結
- Chang Wei :
- 每個有框框可以打勾的部分,都會有連結
- Short-term Goal & Action Items & Checklists的DL已經過了,如未完成,請說明目前遇到的問題 ?
- 請勿用Read當作工作事項,可以說明要Read哪部分 ? 筆記的產出包含了什麼 ?
- Huang Jun :
- 每個有框框可以打勾的部分,都會有連結
:::
## 8/4
### Kevin : run hwstamp_ctl before running ptp4l
:::success
- [Reference from Kevin](https://hackmd.io/JV-9OAsOTpG0yZUceeGr1A?view#III-Configuration-Options)
- ==[Follow step 0 ~ step 4 to do the setting](https://hackmd.io/0w71pbYITaCMjBeYKYKd6Q?view#Edit-the-etcsudoers-file)==
#### Intel server (RU as slave clock)
```shell=
[oran@ee705-7-ip119 ~]$ sudo hwstamp_ctl -i enp24s0f1 -r 12 -t 1
current settings:
tx_type 1
rx_filter 12
new settings:
tx_type 1
rx_filter 12
```
#### AAEON server (DU as master clock)
```shell=
[oai@ee705-7-ip120 ~]$ sudo hwstamp_ctl -i enp134s0f0 -r 12 -t 1
[sudo] password for oai:
current settings:
tx_type 0
rx_filter 0
SIOCSHWTSTAMP failed: Numerical result out of range
The requested time stamping mode is not supported by the hardware.
```
- Both of <font color=red>tx_type / rx_filter</font> shouldn't be zero no matter in master or slave.
- Comparison with two server NICs
| Intel server (RU as slave clock)| AAEON server (DU as master clock) |
| -------- | -------- |
| |  |
- Possible Issue
- update firmware-version of AAEON
:::
### Meeting with Navid
:::success
##### Ask the question about `hwstamp_ctl` to Sam
- Sam update the firmware-version in AAEON, still not work, will help us ask Intel
- [Check here for detail](https://hackmd.io/903nREczSNmNhjH6IyTVHQ?view#Question-list-to-Sam)
---
##### Check video released from OSC, what happen after `nr5g_gnb_mac2phy_api_error_check_use_empty_channels` in L1app log ?
We need to check after appear `nr5g_gnb_mac2phy_api_error_check_use_empty_channels` in L1app log, if the L1app stop and show the log `Stopping Phy because MAX_SUCCESSIVE_NO_API_TTIS_BEFORE_STOP`
| [OSC Released Video](https://wiki.o-ran-sc.org/pages/viewpage.action?pageId=35882094&preview=/35882094/35882096/ODU_High_Low_Integration_D_Release.mp4) |  |
| -------- | -------- |
| [**NTUST**](https://drive.google.com/file/d/1-_BhxzIDIUmS6D4LnVXhHgF-9_AS1jD3/view) |  |
- ==**Conclusion :** It seems the same with the log released from OSC.==
---
##### Increase the log level of RU simulator or maybe use pdump to capture the packet
- **Problem :** RU simulator can't capture any packet while connecting to L1app
- *Increase the log level*
- For the RU simulator, it will try to run sample-app, and in sample-app.c, it already set `log_level` equals to 1, which means it will try to print some log
- However, this parameter already equals to 1 before, I think for the issue `RU simulator can't capture any packet while connecting to L1app`, we can't increase the log level to see more details about capture the packets
---
##### Print some log before & after open() to find where bumps into error
- Here's the call flow
- The error happened while calling function `Open()`, since I try to call function `Setup()` & `Init()`, it didn't have any error.
- Go a step further, I try to use the tool, `gdb`, to find out where bumps into segmentation fault
```shell=
(gdb) r
Starting program: /home/oran/O-DU/o-ran-sc-cherry-20201215-part-1/phy/fhi_lib/app/build/./wrapper
[Thread debugging using libthread_db enabled]
.
.
.
INIT DONE
Program received signal SIGSEGV, Segmentation fault.
xran_5g_prach_req (pHandle=0x7fffdd66e720 <g_xran_dev_ctx+86016>, pDstBuffer=0x7fffdd659720 <g_xran_dev_ctx>,
pCallback=0x1, pCallbackTag=0x0)
at /home/oran/O-DU/o-ran-sc-cherry-20201215-part-1/phy/fhi_lib/lib/src/xran_main.c:2892
2892 p_xran_dev_ctx->sFHPrachRxBbuIoBufCtrl[j][i][z].sBufferList = *pDstBuffer[z][j];
Missing separate debuginfos, use: debuginfo-install glibc-2.17-324.el7_9.x86_64 libgcc-4.8.5-44.el7.x86_64 libstdc++-4.8.5-44.el7.x86_64 numactl-libs-2.0.12-5.el7.x86_64
```
- ==**Conclusion :** While calling OSC wrapper function `Open()`, it seems the segmentation fault is caused from the fourth input `(void *)xran_fh_rx_prach_callback`, and the accurate timing for the segmentation fault is while running `xran_5g_prach_req`==
- Open(nullptr, nullptr, (void *)xran_fh_rx_callback, (void *)xran_fh_rx_prach_callback, (void *)xran_fh_srs_callback);
---
##### Check the content of the callback function, `rte_pause()`, maybe is not compile
- For the `rte_pause()`, it is the DPDK function used to pause CPU execution for a short while
- `rte_pause()` should be compiled, since the other DPDK function are called without any error.
- ==**Conclusion :** Not the compilation problem while calling DPDK function==
:::
## 8/5
### Question list to Sam
:::success
- [Reference from Kevin](https://hackmd.io/JV-9OAsOTpG0yZUceeGr1A?view#III-Configuration-Options)
- [Follow step 0 ~ step 4 to do the setting](https://hackmd.io/0w71pbYITaCMjBeYKYKd6Q?view#Edit-the-etcsudoers-file)
#### AAEON server (DU as master clock)
To configure hardware timestamping on NIC, we may use ==`hwstamp_ctl`== utility to set timestamping policy at driver level, even filter for specific incoming packets to be timestamped (PTP messages).
```shell=
[oai@ee705-7-ip120 ~]$ sudo hwstamp_ctl -i enp134s0f0 -r 12 -t 1
[sudo] password for oai:
current settings:
tx_type 0
rx_filter 0
SIOCSHWTSTAMP failed: Numerical result out of range
The requested time stamping mode is not supported by the hardware.
```
>`hwstamp_ctl` functions that we set :
>- `-i` set for the specified interface
>- `-r` **Better to set to 12 to filter all incoming packet**
>- `-t` Enable hardware timestamping for outgoing packets (en=1)
- <font color=red>tx_type should be 1</font> & <font color=red>rx_filter should be 12</font>
- If both <font color=red>tx_type / rx_filter = 0</font>, then the NIC will not timestamp any packet and will not filter out timestamped packets, hence, offset cannot be calculated and both machines cannot be synced with PTP.
- ==Sam for help : How to let <font color=red>tx_type = 1</font> & <font color=red>rx_filter = 12</font> while using command `hwstamp_ctl` ? Is that affected by **firmware-version** ?==
- What does the error in the output mean?
- Line 6 : SIOCSHWTSTAMP failed: Numerical result out of range
- Line 7 : The requested time stamping mode is not supported by the hardware.
---
#### Server Setting
| Intel server (RU as slave clock)| AAEON server (DU as master clock) |
| -------- | -------- |
| |  |
|||
- **Possible Issue**
- update firmware-version of AAEON
- Sam update the firmware-version to the latest version in AAEON, however, still can't work
- **Assumption by Sam :**
- Although two server use `Ethernet controller: Intel Corporation Ethernet Controller X710 for 10GbE SFP+`, it can also be different, which means
- AAEON : XL710-BM1
- Intel : XL710-xxx
- ~~[ ] Sam will help us check with Intel about `tx_type` & `rx_filter` equals to 0 issue~~
- Although `tx_type` & `rx_filter` already appeared after update firmvare, the origin problem, Slave clock receive the message without timestamp still exist
:::
## 8/10
### Sam
:::success
- ~~Intel didn't give the useful information, only suggest to update the firmware-version, however Sam updated to the lateset version in AAEON, still not work.~~
- ~~[ ] NTUST Action item~~
- ~~[ ] Ask the lan chip of Intel server~~
- ~~[ ] Take the photo of Intel's NIC~~
- ~~[ ] If possible, can we replace AAEON's NIC with Intel's NIC, since Intel's NIC works ?~~
- ~~Sam wants to know the problem is just caused by NIC or the system problem ?~~
Sam told me that `sudo hwstamp_ctl -i enp134s0f0 -r 12 -t 1` can work now without doing anything.
- ~~[ ] Shuhua update the driver, firmware version, if still not work, Sam suggests us replace currently NIC with the one which already worked in AAEON~~
:::
## 8/19
### Alex
:::success


- [Log](https://hackmd.io/CkN-VR6rQfm10gpt42lcfA?view#Result)
<!--
---
**Currently Status**
- [x] Action item : Modify the RU simulator parameters match up with L1app
- [x] :+1:`rachEnable` (9/3) -> Server stuck, can't get the log from the server
- [ ] `prachIndex` (Pending because of server stuck) -->
:::
### Prof. 孫博
:::success
孫教授您好,
我是書華,鄭瑞光教授的學生。
以下附件為架構圖,而網卡的部份我們是採用10G。

目前面臨的問題是,不論是DU或是RU,都無法利用wireshark抓到自己傳輸出去的封包,請問這部分需要如何設定呢 ?
再麻煩孫教授指導,謝謝您。
學生廖書華上
---
#### Currently Status
- prof. 孫博's discussion
- 上層問題 : ==-> 可能這個才是問題點==
- [DPDK capture the packet](https://ask.wireshark.org/question/6559/capturing-on-dpdk-interface/)
- 實體層問題 :
- 撤掉一台設備,舉例來說撤掉RU,拿4個transceiver,2支插DU,2支插封包機,DU設VLAN(VLAN指令要跟Intel問),與封包機對打,假設都沒問題,則抓不到封包的問題就不在實體層,跟硬體無關
- 有無關掉spintree,這個要關掉 (指令要問Intel,或是請AAEON工程師)
- Shuhua question :
- Ping沒問題代表實體層沒問題 ?
- ping通但只是幾個byte,不代表10G網卡沒有問題
- 通常測10G網卡我們會用VLAN
:::
## 8/23
### Update NTUST server's kernel/driver/firmware version to OSC recommendation
:::success
- OSC recommendation

- NTUST
- Intel
- AAEON
- AAEON firmware is newer since already updated before
:::
## 8/30
### Sam
:::success
- [x] Action Item : Use `top` to show the Linux processes & use `dmesg` to print out the log to Sam to understand the server stucking root cause (DL : 9/1, 7th floor network broken at ***8/29 ~ 8/31***)
- Not the CPU problem, server stucking issue will ask Alex
:::
## 9/1
### Sam
:::success
#### Tool in Linux : `top`
>Reference :
>- [non-interactive](https://blog.gtwang.org/linux/ps-top-find-processes-by-cpu-memory-usage/)
>- [interactive 1](https://b8807053.pixnet.net/blog/post/3610801-linux-top%E5%91%BD%E4%BB%A4%E7%B0%A1%E4%BB%8B)
>- [interactive 2](https://blog.csdn.net/LEON1741/article/details/84024815)
- **What can command `top` in do ?**
- `top` is an interactive tool, which can show the instant system loading in Linux
- **Common used command : non-interactive V.S. interactive**
- non-interactive
- According to the memory use, list the top ten process: `top -b -o +%MEM | head -n 17`
- `-b` : batch mode
- `-o +%MEM` : list the status according to memory use
- `head -n 17` : Output only for 17 lines
- 
- According to the CPU use, list the top ten process: `top -b -o +%CPU | head -n 17`
- `-b` : batch mode
- `-o +%CPU` : list the status according to CPU use
- `head -n 17` : Output only for 17 lines
- 
- interactive
- Every 5 seconds update the process occupied resource status : `top`
- Every 1 seconds update the process occupied resource status : `top -d 1`
- 
- Press `P` to list the status according to the CPU use
#### Tool in Linux : `dmesg`
- **What can command `dmesg` in do ?**
- displays the messages from the kernel ring buffer, used for troubleshooting and collecting information of Linux Systems
- **Common used command**
- Displays the messages from the kernel ring buffer : `dmesg`
- 
- Print the certain information : dmesg | grep -i <USB, eth, Memory.....>
- 
- **Things you need to know**
- If you want to check the complete content of `dmesg`, you can check with path `/var/log/dmesg`
---
#### **==Discussion with Sam==**
- Testing Result
- `top` result
- [Video](https://drive.google.com/file/d/1l3065s3abTyqla5DefIfAvbEqI8ax2TT/view?usp=sharing)
- `dmesg` result
- [txt file](https://drive.google.com/file/d/10sxUDz773s0y6RoeygYd-hwWa-hqgsOj/view?usp=sharing)
- Sam's Idea
- cpu基本上還綽綽有餘,dmesg log也沒有甚麼error,僅hdd有部分檔案有毀損而已,初步來看除了HDD,硬體本身沒有甚麼問題
- 原定規劃
- 更換hdd重灌再試看看
- 目前規劃
- 因Intel server也會存在當機問題 (但比例不高),因此這樣應該也不全是hdd的問題,Sam認為是與程式本身有比較大的關係
- 寄信詢問Intel - Alex當機問題
:::
## 9/2
### Tony
:::success
- [x] 麻煩Tony告知中華電,AAEON server當機頻率很高之情形
- [x] [Shuhua詢問Alex server在radio mode整合時,server當機問題](#94)
- 目前情況如下
- **D-release :** 在測試Sample-app RU + L1app (radio mode) + L2 (radio mode) 時,AAEON當機頻率非常高
- 推測問題點 : 可能是在測試時,CPU的使用率突然暴衝,導致無法負荷
- Intel也存在當機的問題,但頻率不高
- HW : Intel V.S. AAEON
- Intel
- AAEON
- **C-Release :** ~~測試Sample-app RU + L1app (radio mode) + L2 (radio mode) 時~~ -> C-Release無法測試radio mode,會出現segmentation fault 
- 之前實驗室沒人測成功過radio mode
- P.S. : Nadhif所有的測試,並不會出現AAEON server當機的問題
:::
## 9/3
### Alex : server stucking issue
:::success

---
- [ ] Check [BIOS & OS configuration](https://github.com/intel/FlexRAN#bios-configuration) on AAEON side (9/10)
- Ongoing, wait for [Alex's response, 9/10](https://hackmd.io/ipqA2yj3RdqXODqd2kSEGQ?view#910-Question-List-to-Alex)
:::
## 9/6
### Check BIOS configuration on AAEON side
:::success
#### BIOS
- Can't find the three items below
- Sam response :
- About these 3 items, our server already set for that, since the option has some license issue, we can't check by ourselves.
:::
## 9/7
### Alex
:::success
- [Question List to Alex](https://hackmd.io/qJy1XjR4TTuGaqXoHvf25g?view#Question-list-to-Alex)
:::
## 9/10
### Alex
:::success
- [Question List to Alex](https://hackmd.io/ipqA2yj3RdqXODqd2kSEGQ?view#910-Question-List-to-Alex)
:::
## 9/17
### Romain
:::success
- ***Wireshark version in Eurocom***
- Download the Wireshark with version ["Development Release 3.5.0"](https://www.wireshark.org/download.html), then can analyze the O-RAN defined packet
- Here's the reuslt
:::
### 開太 (TY's student)
:::success
- ***OS setting***
- You can use command `sudo cpupower frequency-set -f 9G` to enhance the frequency
- Maybe 9GHz is not the maximum frequency you can support, but it will be OK, ==it will automatically adjust to your maximum frequency==
- We mainly adjust `P state & C0/C1`
- It can set in ==BIOS==
- Here's the content of `cmdline` in TY lab
```shell=
GRUB_CMDLINE_LINUX="crashkernel=auto rd.lvm.lv=centos/root rd.lvm.lv=centos/swap rhgb quiet default processor.max_cstate=1 intel_idle.max_cstate=0 intel_pstate=disable idle=poll default_hugepagesz=1G hugepagesz=1G hugepages=16 hugepagesz=2M hugepages=0 intel_iommu=on iommu=pt selinux=0 enforcing=0 nmi_watchdog=0 audit=0 mce=off kthread_cpus=0 irqaffinity=0 skew_tick=1 isolcpus=1-15,19-31 nosoftlockup"
```
- For the `cmdline` in TY lab, the setting is similar with the reference from [Flexran](https://github.com/intel/FlexRAN#os-configuration)
- However, in our lab, our server enable HT, means we should follow the setting of [OSC](https://docs.o-ran-sc.org/projects/o-ran-sc-o-du-phy/en/latest/Setup-Configuration_fh.html#a-3-configuration-of-system)
- Conclusion : Wait for Alex's response or try the setting reference to TY lab
:::
### 岳桓
:::success
- ***Radio mode integration figure***
- Question : What is the message defined between RIC and CU ?
- 
- Answer : E2AP
- ==Other suggestion : RIC will also connect with DU-High, also with the message E2AP==
- New figure after suggestion by 岳桓
:::
#### Ferlinda
:::success
- ***Radio mode pcap file in OSC lab***
- Question : Which lab do you access for ? NJ lab or AT&T ?
- OSC Lab
- Question : Can you get the radio mode pacp file in RU side ?
- I'm currently waiting for information from the team.
- kernel parameters in OSC lab:


- In OSC lab, they didn't have the feature, enable HT, while in our lab, we have the features enable HT, so we shouldn't follow the setting in OSC lab
:::
## 9/22
### Ann
:::success
- Origin figure
- 1. 
- 左下方不要凸出來
- 2. 
- 紅色有佐箭頭 藍色也要有佐箭頭 麻煩維持一至
- 3. 
- 請解釋為什麼黃色部分沒有藍色箭頭, 用英文
- After Modification
- [x] 1.
- [x] 2. RRC handles the configuration for the lower layer, and because lower layer will ***Not*** config the upper layer (RRC), so that ==the direction will be unidirectional==.
- You can also check the origin figure from OAI
- [x] 3.
- There are two places didn't have the blue line
- **First :** High-PHY & Low-PHY
- Between High-PHY & Low-PHY, it just do the message processing (such as modulation, layer mapping, RE mapping...), High-PHY didn't do the configuration to Low-PHY
- **Second :** Low-PHY & RF
- Function between Low-PHY & RF
- In Low-PHY, it will do cyclic prefix (CP) insertion and removal, then sending the IQ samples to do the analog conversion in RF side. In this whole procedure, it will not do the configuration between Low-PHY and RF.
- ***You may have the question that, so why in the last option, IF5, it has the blue line which is related to configuration ?*** Actually, in OAI, between the RAU and RRU will have the configuration setting to make sure RAU and RRU is already connected no matter using what kind of split.
:::
---
### HW timestamping - Testing myself
:::success
- 9/3 : Since NTUST server can't use now (stuck), I try to use two PCs to ==check if we want to use HW timestamping while running linuxPTP, do we must need a externel PTP Master or not== ?
- Testing
- ***Environment of two PCs***
- centos 8 (since centos 7 in my PCs can't install)
- ***Reference***
- [Nadhif's note](https://hackmd.io/@ChiehChun/HyNXWdATI/https%3A%2F%2Fhackmd.io%2Ffl7tOOGbSCaIb9kwxgaEWQ%3Fview#S-Plane)
- ***Prerequisite***
- Config file in ptp4l (same as the one use in NTUST server which running ptp4l will have the issue `without timestmap`): [Master](https://drive.google.com/file/d/1gw928zSyCAOzLwPSByPDvRf2LZe-fGSq/view?usp=sharing), [Slave](https://drive.google.com/file/d/13m8ev-0DJpD20o-u6BD1sNiwaIt9--gT/view?usp=sharing)
- ptp4l command
- Since we want to use the ==HW timestamping==, we use the parameter ==`-H`==
- ***Results***
- Master
- Slave
- ***Conclusion***
- HW timestamping using in ptp4l doesn't need the externel PTP master, maybe is that our NIC isn't well-configured or doesn't support HW timestamping features
:::
## 9/23
### Ann
:::success
- 放到shuhua overleaf用藍字 (DL : 24) -> You can check this [hackmd](https://hackmd.io/9UpJFkSRQGum6jQs6_l2tw?view), or the [overleaf](https://www.overleaf.com/project/614b06c70201e0f95b84f24b), the content are the same
- [x] radio mode的圖跟字
- [x] sample-app的圖跟字
- [x] OAI的圖跟字
- [x] kevin筆記整理放到intro,用藍字
:::
## 9/27
:::success
- [Overleaf](https://www.overleaf.com/project/614b06c70201e0f95b84f24b) 需修改處
- [x] 你都沒介紹什麼是radio mode, 就說要load radio mode config file
- After modification -> For the second option, ==called the radio mode integration, used in real application, DU-Low will forward the MAC messages to RU.==
- [x] 
- [x] 這不像是hackmd, 不會用條列式
- After modification -> ==Fig.2 shows the OAI functional split software architecture. IF1" is same as F1 interface defined in 3GPP, IF2 is network Functional Application Platform Interface (nFAPI), IF4.5 is similar to O-RAN 7.2x functional split, and for IF5, it is similar to eCPRI.==
- [x] 段落開始請縮排
:::
## 9/30
### Alex : Update NIC driver/firmware version
- According to Alex's suggestion, for the without timestamping issue while running ptp4l, we can try to update the firmware and driver version and test again. (Useless)
:::success
- AAEON : Origin
- Driver version : `2.10.19.82`
- Firmware version : `8.30`
<!--```shell=
[oai@localhost ~]$ ethtool -i enp134s0f0
driver: i40e
version: 2.10.19.82
firmware-version: 8.30 0x8000a4c7 0.0.0
expansion-rom-version:
bus-info: 0000:86:00.0
supports-statistics: yes
supports-test: yes
supports-eeprom-access: yes
supports-register-dump: yes
supports-priv-flags: yes
```-->
- Intel : Origin
- Driver version : `2.10.19.82`
- Firmware version : `7.20`
<!--```shell=
[oran@localhost linuxptp]$ ethtool -i enp24s0f1
driver: i40e
version: 2.10.19.82
firmware-version: 7.20 0x8000794b 1.2585.0
expansion-rom-version:
bus-info: 0000:18:00.1
supports-statistics: yes
supports-test: yes
supports-eeprom-access: yes
supports-register-dump: yes
supports-priv-flags: yes
```
-->
<!-- - OSC lab :
- Driver version : `2.12.6`
- Firmware version : `8.10` -->
<!-- - Comparison : In our lab, -->
- Update Driver version to the latest `2.16.11` first
- [Please Download the package in here](https://www.intel.com/content/www/us/en/download/18026/intel-network-adapter-driver-for-pcie-40-gigabit-ethernet-network-connections-under-linux.html)
- [Update Tutorial](https://hackmd.io/@ChiehChun/HyNXWdATI/https%3A%2F%2Fhackmd.io%2FQMvsrxjfRm2Sxa8bXD_BVw%3Fview%231-Update-i40e-driver)
- Update Firmware version to the latest `8.40` first
- [Please Download the package in here](https://www.intel.com/content/www/us/en/download/18190/non-volatile-memory-nvm-update-utility-for-intel-ethernet-network-adapter-700-series.html)
- [Update Tutorial](https://hackmd.io/@ChiehChun/HyNXWdATI/https%3A%2F%2Fhackmd.io%2FQMvsrxjfRm2Sxa8bXD_BVw%3Fview%232-Enable-two-virtual-functions-VF-on-the-device#Update-X710-Firmware)
- <font color=red>Updating Problem :</font> 
- <font color=red>Solution</font>
- Check the `kernel-rt-devel` version
- This can't correspond the kernel we use (`3.10.0-1062.12.1.rt56.1042.el7.x86_64`)
- Delete `3.10.0-1160.11.1.rt56.1145.el7.x86_64` and install for [version `3.10.0-1062.12.1.rt56.1042.el7.x86_64`](https://hackmd.io/@ChiehChun/HyNXWdATI/https%3A%2F%2Fhackmd.io%2FOsPSqoVDRQS0hbrCjL85CQ%3Fview#kernel-rt-devel)
- After Update
- AAEON
- 
- Intel
- 
:::
## 10/14 BMW lab meeting
### Question related to Integration architecture
:::success
#### Q1 : For the system architecture, you only point out the IQ data(U-Plane), how about others like C and S plane?

#### A1 :
- [x] 圖需要修改

---
#### Q2 : You have said our team has completed three plane but now I study M-Plane in order to know about TM500 testing, I want to ask is now this part is needed to some people to prepare or not?
#### A2 : No, currently there are no people studying M-Plane spec.
---
#### Q3 : Why S plane seperated ?
#### A3 : Since S-Plane transmission didn't use the FHI library, S-Plane implementation use the tool, named linuxPTP, for the implementation.
---
#### Q4 : On the first figure, you show U-plane and C-plane in virtual interface. Where are S-plane and M-plane? Are they use real interface?
#### A4 : S-Plane part I didn't draw in the update figure, will update soon, as for M-Plane, since it is optional and we didn't implement in our lab, therefore, I didn't draw. Yes, for S/M-Plane, I think they use real interface.
- [x] 圖需要修改 (S-Plane)

:::
### Question related to S-Plane
:::success
#### Q1 : Is Grandmaster clock is provided by central server?

#### A1 : 先說Y/N即可,再講細節。
>原先回答 : GM is a externel HW, used for timing source
---
#### Q2 : Why do OSC prefer C3 instead of C1?
#### A2 : C3 is more practical than C1 since in the environmrnt, we will use DU to control multiple RU
---
#### Q3 : Can one O-DU connect to two or more O-RU?
#### A3 : Yes, O-DU can connect to more RUs.
---
#### Q4 : What is the advantages and disadvantages of using C1,C2,C3 or C4 ?
#### A4 :
---
#### Q5 : Why in the previous slide, ODU is the master and ORU is slave, is there any relation with grandmaster clock?
#### A5 : O-DU be the master and O-RU be the slave is for C1 topology, it didn't have the relationship with grandmaster clock
:::
### Conclusion
:::success
- 待注意事項 :
- 照別人問的回答
- Example Q : What is GM ?
- A : GM is .....
- What is the advantage and disadvantage for C1 ?
- A : The advatage of C1 is ......, the disadvantage of C1 is .....
- Y/N問題直接回答是或者不是
- Example Q : Is Grandmaster clock is provided by central server?
- A : No, Grandmaster clock isn't provided by central server.
- 錯誤範例 : GM clock is the externel Hardware clock can be used for timing source
- [x] 
- 改圖 : Sample-app input 是讀檔案,可是在圖上根本沒畫檔案
- 
- 假如要說GM,在Grandmaster clock旁邊要註記,否則別人可能不知道 GM=Grandmaster clock
:::
## 10/15
### Ann
:::success
- [x] Radio mode 改圖,將FAPI TM Module補上 (10/16)
- [x] [PDF](https://www.hubersuhner.com/en/documents-repository/technologies/pdf/fiber-optics-documents/5g-fundamentals-functional-split-overview)與[Radio mode圖片](https://hackmd.io/H0quoaGmTIqsr4P1l1Qvcw?view#Environment)比對 (10/16)
:::
### DPDK email list
:::success
>Hi,
Few options you can double check
- [x] :+1: 1)Make sure your primary application is calling `rte_pdump_init()`/`ret_pudmp_uninit()` to initialize/uninitialize the pdump library.
- If `rte_pdump_init()`/`ret_pudmp_uninit()` succeed, it will return value 0
- `rte_pdump_init()` : In file lib/ethernet/ethdi.c
```shell=
#ifdef RTE_LIBRTE_PDUMP
/* initialize packet capture framework */
int init_pdump = 2;
init_pdump = rte_pdump_init();
printf("Return value (int) of rte_pdump_init() : %d\n", init_pdump);
#endif
```
- `ret_pudmp_uninit()` : In file lib/src/xran.c
```shell=
#ifdef RTE_LIBRTE_PDUMP
/* uninitialize packet capture framework */
int uninit_pdump = 2;
uninit_pdump = rte_pdump_uninit();
printf("Return value (int) of rte_pdump_uninit() : %d\n", uninit_pdump);
#endif
```
- Log
```shell=
Return value (int) of rte_pdump_init() : 0
.
.
.
Return value (int) of rte_pdump_uninit() : 0
```
- [x] 2)If you are using a shared library build, double check you are linking pcap pmd properly in primary build as explained in below link
https://www.mail-archive.com/users@dpdk.org/msg05039.html
https://stackoverflow.com/questions/62795017/dpdk-pdump-failed-to-hotplug-add-device
- For the DPDK compilation, we didn't build with static library
- Also, for the primary application we use, I already add static library (librte_pdump.a, librte_pmd_pcap.a) in the Makefile.
- [x] 3)If you are passing any pci device using eal "-w" option to primary, try to pass the same device to secondary also using "-w" option .
- In sample-app code, they parse `-w 0000:00:00.0`, therefore, I also add `-w 0000:00:00.0` with pdump command, but with error.
```shell=
[oai@localhost pdump]$ sudo ./dpdk-pdump -w 0000:00:00.0 --iova-mode=pa --file-prefix wls_0 -- --pdump 'port=0,queue=*,tx-dev=/tmp/tx.pcap,rx-dev=/tmp/rx.pcap'
EAL: Detected 40 lcore(s)
EAL: Detected 2 NUMA nodes
EAL: Multi-process socket /var/run/dpdk/wls_0/mp_socket_13976_8260151e022c
EAL: Selected IOVA mode 'PA'
EAL: Probing VFIO support...
EAL: VFIO support initialized
EAL: Error - exiting with code: 1
Cause: No Ethernet ports - bye
```
>If you still see the issue please paste the full primary and secondary application run log with command that you are running.
Also what kind of build you are using.
Thanks,
Reshma
:::
## 10/18
:::success
- I update the latest meeting minutes to the top, [please check it here](#1018).
:::
<!-- ### Ferlinda
:::success
- [ ] Check the paper : `BMW lab Summary` and give comments/suggestions. (10/19)
:::
### Before CHT training course
:::success
- Before Training course, check the below content (10/19)
- Date (Not sure yet)
- Agenda :
- 1. RU模擬器 Quick setup
- 2. RU模擬器Cell Configuration
- 3. Airmosaic Training
- 4. PE_Wireshark Training
- 5. UDG 打包設定
- 6. 進階腳本設計
- Reference : https://drive.google.com/file/d/1wIUZYfCl4MKjprYro-9VkcSr8HU2d09y/view?usp=sharing
:::
### DPDK email list
:::success
:::
### Prof. Ray
:::success
- [ ] 會議記錄,請把最新的放在最上面,因為那是最需要查核的
- [x] 會議記錄請設定Action Item & Deadline,請加至[你的Checklist](https://hackmd.io/5mDu4JXtQkS36q4FHAz8zA?view)
- [x] https://hackmd.io/903nREczSNmNhjH6IyTVHQ#Alex--Update-NIC-driverfirmware-version
要做這件事,請務必說明原因,並簡要說明成果,細節可用超連結
- [ ] https://hackmd.io/903nREczSNmNhjH6IyTVHQ#1014-BMW-lab-meeting
這邊的問題是來自你投影片整理不當,所以你除了回覆問題,應該還要附上投影片(這才是最重要的),告訴我們每個問題在哪一張投影片已經補強 (10/19)
:::
-->