I DO NOT know very well about WMN(Wireless Mesh Network) and Babel routing protocol, but I’d like to say that there are a lot of pros for using the protocol, one of them is for Wireless Mesh Network. The network can be as a private network without ISP. People DO NOT need to be qualified for network and computer theories when they want to build their own private network and IoT areas. The characteristics of the network are self-organizing and self-healing. So that it fits on IoT services.
We have to do more things such as installing hostapd, testing the network to let small computers like Raspberry-Pi, BeagleBone Black and others work as Access Point and build the network, but all of them are likely huge challenges. In this article, I’ll be talking about only how to install Babel routing protocol daemon in webOS CE.
At that time of writing this article, the pull request that backports the protocol recipe into webOS CE is waiting for merge. In other words, we can only install it by a patch for now. We will take a look at how to patch it soon.
Before we start, you must install the build system of webOS, build-webos, on your host PC and make sure that it works well.
Let’s get started now!
We will get the patch from patchwork site of openembedded which can see all the state of every patches and download. Go to patchwork, https://patchwork.openembedded.org/patch/155511/, then download it.
Before we patch it, I have a feeling I need to talk about it a bit. When I was working for the patch, I was in meta-oe directory. But we do not patch it in the directory. Instead, we change the working directory to meta-webosose/meta-webos-backports/meta-webos-backports-2.3/.
Anyway, patch it with the command below after you get to the backport directory.
$ patch -p2 < /path/to/the/patch/file/you/downloaded/file.patch
After the command, you must see as below. Try to fix it if it does not seem the same.
../meta-webos-backports-2.3 $ tree ./ ./ ├── conf │ └── layer.conf ├── recipes-devtools │ ├── ltrace │ │ ├── ltrace │ │ │ ├── 0001-ARM-code-has-unreachable-code-after-switch-statement.patch │ │ │ ├── 0001-Use-correct-enum-type.patch │ │ │ ├── 0001-replace-readdir_r-with-readdir.patch │ │ │ ├── 0002-Fix-const-qualifier-error.patch │ │ │ └── configure-allow-to-disable-selinux-support.patch │ │ └── ltrace_git.bb │ └── python │ ├── python-pyparsing.inc │ ├── python-pyyaml.inc │ ├── python3-native_%.bbappend │ ├── python3-pyparsing_2.2.0.bb │ └── python3-pyyaml_3.12.bb └── recipes-protocols └── babeld └── babeld_1.8.3.bb
Ok! Now let’s bitbake it!
$ bitbake babeld
Is everything all right? No errors? Then let’s take a rest for a moment and drink a cup of coffee as well ;-).
Put it in the target image
Nooo, not yet. We are not finished yet. Although we have succeeded to bitbake it, we still have to do one more thing and that is to put the binary file in the target image, which is the webOS.
There are two ways to put a customized/user-defined component in the target image, but we will look at the way of adding it to a list of components in packagegroup. It is more easier than to use the another and I usually test my components in that way.
Change the working directory to meta-webosose/meta-webos/recipes-core/packagegroups. In the directory, you can see a couple of files with *.bb file extension. Those files are used for figuring out what components are installed by default when we build target images, for examples webos-image, webos-image-devel and so on.
Open packagegroup-webos-extended, then edit it as below.
... sleepd \ libsdl2 \ babeld \ ...
You are ready to build a target image now. Go bitbake it.
$ bitbake webos-image (or webos-image-devel)
Connect to your machine via ssh, then find out it exists. If it shows nothing, there is something wrong definitely. Go back to the instructions and find out.
~# which babeld /bin/babeld
Give me a five! We finally got it!
With the protocol, we can make our own device not only as an Access Point but also a part of private network. This task is a step forward but makes webOS more polyglot and imagine that our applications in webOS communicate with others over the private network.