Skip to content

kotobuki09/Fab_OpenVLC

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

80 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Fab OpenVLC📡

Intelligent Management System for OpenVLC 💡

The Intelligent Management System (IMS) is an innovative framework that seamlessly manages handovers in a hybrid system of Visible Light Communication (VLC) and WiFi. This repository provides comprehensive information to help you recreate our testbed.

A demo of our IMS in action can be found on YouTube: IMS Demo

VideoIMS

Our testbed is built on the OpenVLC platform and uses the WiFi adapter TP-link TL-WN722N v2. The topology of the testbed is depicted below:

Fab_032022

🛠️Installation Instructions🛠️

🕹️VLC Module🕹️

To create the VLC channel, please follow the instructions provided on the OpenVLC Repository.

📶WiFi Module📶

For the WiFi channel, we have tested with different USB adapters. However, we encountered some issues with the TL-WN722N ver3 when integrating it into the testbed. If you have the same setup, you can use the following link to install the driver and test if the WLAN is working correctly in your system: TL-WN722N V2 Driver

Here are the main instructions:

  1. Install dependencies and change directory to /usr/src:
sudo apt-get install git dkms git make build-essential
cd /usr/src
  1. Clone the repository:
sudo git clone https://github.com/abhijeet2096/TL-WN722N-V2
  1. Add a symbolic link for dkms to know where the source is:
sudo dkms add ./TL-WN722N-V2
  1. Build the source:
sudo dkms build -m 8188eu -v 1.2
  1. Install the built drivers:
sudo dkms install -m 8188eu -v 1.2
  1. Modprobe it:
sudo modprobe 8188eu
  1. Reboot the system:
sudo reboot

Activating the monitor mode can provide more control over the WiFi network.

🧠IMS Module🧠

The Intelligent Management System (IMS) serves as the central controller, providing instructions to each OpenVLC in the network. Built on the Fabric framework, IMS can oversee and manage all activities of all nodes within the network.

Before running the demo, certain adjustments are necessary to ensure the Central Control Unit can gather information about the VLC and WiFi channels. This allows the controller to make informed decisions based on the conditions of both networks.

Setup Instructions

  1. File Transfer: After completing all the WiFi-related setup, transfer the necessary files to both BBB-Tx (transmitter) and BBB-Rx (receiver). This will enable the IMS to operate effectively across both networks. Ensure that the file organization matches that of this GitHub repository for proper functionality. Copy the BBB_Tx_Full_Repo and BBB_Rx_Full_Repo folders to BBB_Tx and BBB_Rx respectively.

  2. Directory Setup: If you change the directory, you might need to adjust the setup directory in the fabfile.py file as well to make the IMS work.

  3. Testbed Setup: Modify the setup in fabfile.py to fit your testbed setup. Instructions are provided within the file.

  4. Configuration File: Copy the hostapd.conf file from the ControlUnit folder to the /etc/hostapd/ directory in BBB-Tx.

Please refer to the detailed instructions provided in the repository to configure your IMS setup properly.

🚀Demo Activation🚀

Topo

🌐Creating a WiFi Network🌐

Navigate to the "ControlUnit" folder and open a terminal. Then, follow the instructions below to establish a WiFi and VLC network:

📶💡Activate BBB-Tx for WiFi and VLC channel📶💡

fab vlc1 setup_wifi_ap
fab vlc1 setup_vlc_tx

📶💡Activate BBB-Rx for WiFi and VLC channel📶💡

fab vlc2 setup_wifi_sta
fab vlc2 setup_vlc_rx

These commands will create a virtual interface in BBB, allowing for easier routing and traffic modifications, and enabling the devices to act as independent network connections.

🖧BBB-Tx-Virtual Interface 10:0 (Tx)🖧

sudo ip link add eth10 type dummy
sudo ifconfig eth10 hw ether 00:22:22:ff:ff:ff
sudo ip addr add 192.168.10.1/24 brd + dev eth10 label eth10:0

🖧BBB-Rx-Virtual Interface 10:0 (Rx)🖧

sudo ip link add eth10 type dummy
sudo ifconfig eth10 hw ether 00:22:22:ff:ff:f0
sudo ip addr add 192.168.10.2/24 brd + dev eth10 label eth10:0

📊Starting Iperf📊

Now you can create iperf traffic for testing with any experiment you're conducting by SSH through each BBB:

📥BBB-Tx📥

iperf -c 192.168.10.2 -u -b 1000M -l 800 -p 10001 -t 100000

📥BBB-Rx📥

iperf -u -l 800 -s -i3 -B 192.168.10.2 -p 10001

🎮Activate the controller IMS🎮

fab icontrol_demo

Now you can test how the handover work in your hybrid system.

🔄Forcing Handover🔄

Use the following commands to force a handover from the controller to a different link (either VLC or WiFi channel):

📶🟢Activate WiFi Link📶🟢

fab vlc1 wifi_link

💡🟢Activate VLC Link💡🟢

fab vlc1 vlc_link

📈RSSI Value Retrieval📈

To retrieve the RSSI value, use the following command:

sudo ./prubgb > filename.raw # Get the sample out

You can then use the provided Python script to visualize the RSSI output results.

📝Additional Notes📝

You can manually set up the system based on our code by referring to our fabfile controller or the manual_IMS.txt file located inside the ControlUnit folder.

📶📖Reading WiFi Channel Information📶📖

To read information from the WiFi channel, use the following command:

fab vlc2 wchannel

📊📖Reading Information from Iperf Application📊📖

To start the iperf server, use the following commands:

iperf -u -s -B 10.0.0.16 -p 10002
fab vlc1 iwifi

🧹🗄️Cleaning Log Files🧹🗄️

To delete all log files that are older than two days in BBB, use the following command:

find /var/log -mindepth 1 -mtime +2 -delete

📚Resources📚

Reference for this work:

🐛Reporting Issues🐛

If you encounter any issues while using our system or have any suggestions for improvements, we encourage you to report them in the Issues section of this repository.

We appreciate your help in improving our project. Your feedback is invaluable to us!

🙏Acknowledgments🙏

We'd like to thank everyone who has contributed to the these work!
We gratefully acknowledge support from:

About

Intelligent Management System for OpenVLC

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published