Omada Controller 3.0.2 for Linux (including new tpeap v1.4)
Update 2020-04-30: Omada EAP Controller 3.2.10 community version has just been released.
There is now a .deb-package available for easy installation on Debian, Raspbian and any other Debian-based Linux. The steps below are not necessary anymore for the installation of Omada Controller using the dpkg package manager.
The following (now obsolete) post is still here for reference only:
Hello world!
TP-Link just released the latest version of Omada Controller 3.0.2. Thanks to a tip from forum user humor_amarillo I got my hands on it early. So here it is, baked in just no time: The community version of
Omada EAP Controller 3.0.2 for Linux
Last update: 2018-08-28 22:40
What's new in this version?
- Cloud support. See the official release notes on the TP-Link website.
- Auto-backup, but the Windows-way. See below for the Linux-way to do backups.
- From what I saw so far, the directory structure has been cleaned up. Photoshop file with icons from v2.7.0 has been removed from the images directory.
- GUI now seems much more cleaner, too. Well done, TP-Link!
- EAP Controller starts ~30% faster compared with v2.7.0.
- All steps in the initial wizard now can be skipped! Finally my feature request was honored, thanks to R&D very much!
What's new in the Linux release?
- Logo now shows »Community version« below the TP-Link logo, so you can recognize it better.
- Two new options for tpeap:
- dump lets you dump the database as well as the maps and keystores.
- restore lets you restore a database dump including maps and previous keystores.
- A surprise (see below).
Update #1: New tpeap 1.4 has been released (see this post for more details).
For your convenience, I have attached the new tpeap script v1.4 to this posting, too. It might be handy for doing a backup of your v2.7.0 installation, which can be easily restored in EAP Controller 3.0.2.
Update #2: The tpeap 1.4 just has been added to the TAR archive with Omada Controller 3.0.2. If you download the TAR archive as described below, you will get the new tpeap script already - no need to install it twice.
Standard disclaimer, as usual: Use at your own risk.
This community version (cv for short) is neither released nor supported by TP-Link and it still needs some testing.
Installation of the Linux version
— If you want to install the Linux version for the first time, please see this post first, replace the instructions in step 2 there with the instructions in the same step 2 in this post below and proceed with the remaining steps here when you have installed all the pre-requisites (eapc role account, Java JRE, mongodb database).
— If you already have installed Omada EAP Controller 2.7.0cv on your Linux system, just read on.
Step 1: Make a backup
Obviously, to make a backup, the old EAP Controller needs to be running. Download the tpeap script attached to this posting and install it (you can safely overwrite the old tpeap version in the 2.7.0cv Controller):
cp tpeap /opt/tplink/EAPController/bin/
Next, create a backup. You need to specify a directory for the database dump (else it uses the directory EAPC_HOME/backup):
tpeap dump /tmp/backup
tpeap will create the directory, copy your maps and keystore to it, and then execute mongodump, which dumps the database in binary BSON format into the backup archive. Now you can safely stop the EAP Controller.
Step 2: Download and extract the software
Download the TAR archive from https://rent-a-guru.de/ftp/eapc-3.0.2.tar.gz
Check the SHA256 sum:
$ sha256sum -b eapc-3.0.2.tar.gz
2b9c9ce54a3bc698b25901f1234aef79e3d1e51703a9af1dcaa8360c4b407f66 *eapc-3.0.2.tar.gz
9638bb2ed43d58169a33b52ea2be1d48482fae68a5d93028f162ff66f2b0c4ea *eapc-3.0.2.tar.gz
$
Step 3: Set up the EAP Controller
Installation is straight-forward: Extract the TAR archive as root in /opt/tplink, remove the symlink EAPController pointing to version 2.7.0cv and create a new one pointing to the EAPController-3.0.2 directory just extracted from the TAR archive. Easy, isn't it?
cd /opt/tplink
tar xvzf /your-download-dir/eapc-3.0.2.tar.gz
rm EAPController
ln -s EAPController-3.0.2 EAPController
Do a quick check wether the permissions and ownership has been set correctly (complete dialog shown here):
# ls -ld /opt/tplink/EAPController-3.0.2
drwxr-xr-x 13 eapc eapc 4096 Aug 21 05:53 /opt/tplink/EAPController-3.0.2
# ls -l /opt/tplink/EAPController-3.0.2
total 12
drwxr-xr-x 2 root root 6 Aug 21 05:27 backup
drwxr-xr-x 2 root root 55 Aug 21 02:11 bin
drwxr-xr-x 6 eapc eapc 55 Aug 21 05:53 data
drwxr-x--- 2 root eapc 39 Aug 21 01:30 keystore
drwxr-xr-x 2 root root 4096 Aug 21 01:30 lib
drwxr-xr-x 2 eapc eapc 58 Aug 21 05:53 logs
drwxr-xr-x 2 root root 22 Aug 21 03:18 man
drwxr-x--- 2 root eapc 4096 Aug 21 01:30 properties
drwxr-xr-x 2 root root 36 Aug 21 05:36 webapps
drwxr-xr-x 3 eapc eapc 32 Aug 21 05:53 work
#
Two more things: Install the symlink to the Java JRE:
cd /opt/tplink/EAPController
ln -s /where-your-JRE-lives/ jre
and the manpage of tpeap (you find it in the man subdirectory):
cp man/tpeap.man /usr/share/man/man8/tpeap.8
gzip -v --best /usr/share/man/man8/tpeap.8
My JRE resides under /opt/jvm, so it looks like this:
# ls -l jre
lrwxrwxrwx 1 root root 21 Aug 21 05:53 jre -> /opt/jvm/jre1.8.0_181
Important note for users of Ubuntu and probably other distros, too:
If your mongodb version is >= 3.6 you need to edit the argument list EAPC uses to start the mongod daemon. The option --nohttpinterface, which is set by EAPC, has been removed in mongodb version 3.6 and newer.
Find out your mongod version:
mongod --version
To get rid of the --nohttpinterface option, you will have to delete it from the file mongodb.properties:
cd /opt/tplink/EAPController/properties
cp mongod.properties ../mongod.properties.ORIG
sed -i 's/^\(eap.mongod.args=.*\) --nohttpinterface \(.*\)$/\1 \2/' mongodb.properties
Of course, you can use any other editor, too.
Last step: fire up the new Controller
tpeap -w start
Now restore the database saved in step 1:
tpeap restore /tmp/backup
Enjoy!
Uh, and if you want to see what probably comes next to a Linux server near you:
The color-intense theme awesome with FontAwesome icons - no more image files needed, clean layout for EAPC 2.7.0cv.
- Copy Link
- Subscribe
- Bookmark
- Report Inappropriate Content
Numb3rs wrote
My solution was to add omadactl to rc.local. Now it auto starts on boot. Is this solution ok or not advised?
That's o.k. if it works for you. Normally, the dpkg installer should create a link from /etc/init.d/omadad (a stripped-down version of omadactl) to a script in the proper rc-directory such as /etc/rc2.d/S01omadad, but you could also start it via omadactl in rc.local. Only difference between omadactl and omadad is logging - more verbose error messages on stderr in omadactl - and stripped-down functionality only for functions required at boot time in omadad. You could also start the controller by calling /etc/init.d/omadad from rc.local to have error message sent to /var/log/syslog via the rsyslogd daemon.
As for the replacement of -server by -client when starting Java, this depends on the optimization level of the JRE for your platform. See https://stackoverflow.com/a/198651 for the difference of -client vs. -server option.
Have fun!
- Copy Link
- Report Inappropriate Content
Bobby-Gecko wrote
In any case, things for me worked differently when I tried to run a setup on Debian 9.6... So I wrote out install instructions AND built a script to automate the install (only for fresh installs of Debian please - probably wouldn't work well for an upgrade) for anyone who may be interested...
That's cool, thanks for your contribution. I will refer to when I have to install the controller on Debian 9. Any tips and helper scripts to get it running on other distros / versions is definitely much appreciated by the community.
- Copy Link
- Report Inappropriate Content
I used your installer, can i update to 3.0.5 using the tp-link linux installer, or would i have to wait for an update from you?
(Still no 3.1.0 by the way, what would be the benefit of that release?)
R1D2 wrote
Numb3rs wrote
My solution was to add omadactl to rc.local. Now it auto starts on boot. Is this solution ok or not advised?
That's o.k. if it works for you. Normally, the dpkg installer should create a link from /etc/init.d/omadad (a stripped-down version of omadactl) to a script in the proper rc-directory such as /etc/rc2.d/S01omadad, but you could also start it via omadactl in rc.local. Only difference between omadactl and omadad is logging - more verbose error messages on stderr in omadactl - and stripped-down functionality only for functions required at boot time in omadad. You could also start the controller by calling /etc/init.d/omadad from rc.local to have error message sent to /var/log/syslog via the rsyslogd daemon.
As for the replacement of -server by -client when starting Java, this depends on the optimization level of the JRE for your platform. See https://stackoverflow.com/a/198651 for the difference of -client vs. -server option.
Have fun!
- Copy Link
- Report Inappropriate Content
Hello,
I installed Omada Controller 3.0.2 but I'm not able to start the EAP server.
Here is the content of server.log file:
2019-02-16 01:13:41 [main] [INFO]-[SourceFile:34] - success to load configuration : eap.properties
2019-02-16 01:13:41 [main] [INFO]-[SourceFile:34] - success to load configuration : netty.properties
2019-02-16 01:13:42 [main] [INFO]-[SourceFile:34] - success to load configuration : mongodb.properties
2019-02-16 01:13:42 [main] [INFO]-[SourceFile:34] - success to load configuration : jetty.properties
2019-02-16 01:13:44 [nioEventLoopGroup-4-1] [WARN]-[Slf4JLogger.java:131] - A non-root user can't receive a broadcast packet if the socket is not bound to a wildcard address; binding to a non-wildcard address (/192.168.0.159:0) anyway as requested.
2019-02-16 01:13:47 [Thread-4] [INFO]-[SourceFile:34] - success to load configuration : device.properties
2019-02-16 01:13:51 [pool-6-thread-1] [INFO]-[SourceFile:92] - Omada Controller isn't prepared to handle event
2019-02-16 01:13:51 [pool-6-thread-2] [INFO]-[SourceFile:92] - Omada Controller isn't prepared to handle event
2019-02-16 01:13:56 [pool-6-thread-3] [INFO]-[SourceFile:92] - Omada Controller isn't prepared to handle event
2019-02-16 01:13:57 [pool-6-thread-1] [INFO]-[SourceFile:92] - Omada Controller isn't prepared to handle event
...
2019-02-16 01:19:48 [pool-6-thread-1] [INFO]-[SourceFile:92] - Omada Controller isn't prepared to handle event
2019-02-16 01:19:52 [pool-6-thread-2] [INFO]-[SourceFile:92] - Omada Controller isn't prepared to handle event
2019-02-16 01:19:53 [pool-6-thread-3] [INFO]-[SourceFile:92] - Omada Controller isn't prepared to handle event
2019-02-16 01:19:57 [pool-6-thread-1] [INFO]-[SourceFile:92] - Omada Controller isn't prepared to handle event
2019-02-16 01:19:58 [pool-6-thread-2] [INFO]-[SourceFile:92] - Omada Controller isn't prepared to handle event
The "Omada Controller isn't prepared to handle event" sentence never stop to be written.
Can you help me?
Thanks,
Emilien
- Copy Link
- Report Inappropriate Content
Dynamo wrote
I used your installer, can i update to 3.0.5 using the tp-link linux installer, or would i have to wait for an update from you?
(Still no 3.1.0 by the way, what would be the benefit of that release?)
Version 3.0.x re-introduced a bug with logos on portal pages, see this post. As for my use case, I worked hard to fix those issue (among others) appearing first in v2.5.3 and that's the reason why I still use v2.7.0 in the field rather than installing v3.0.x.
For reasons I don't know, TP-Link picked only some of my suggestions/fixes from my tpeap in their v3.0.2 control.sh script and changed it slightly so that the official release v3.0.x is incompatible with my tpeap script. What's more, they use the Java utility jsvc, while I use the standard Linux wrapper start-stop-daemon for privilege separation up to v2.7.0, but my tpeap also supports the jsvc method with v3.0.2. Other differences are: they deliver a bundled (old) JRE, I use a newer JRE from Oracle repository, they use an outdated monogdb binary, I use the standard mongodb package available in the system's OS repository, thus making the community version platform-independent.
As for using the official TP-Link distribution with my tpeap script, you could install TP-Link's TAR version (if any), but you would have to install the files in the final place manually (that's easy) rather than with the included installer script. However, the official .deb package isn't compatible with my package and would overwrite it. Of course, you can replace the community version of v3.0.2 with the official 3.0.5 if you wish, this is no problem. The community version existed only b/c there was no up-to-date official Linux version for a long time and the old one available had very critical security bugs.
If you want to install just the files from TP-Link's TAR version of 3.0.5, don't use their installer, it will break the directory layout of the community version. Rather unpack the files somewhere else from the TAR archive, create a directory /opt/tplink/OmadaController-3.0.5, copy only the new files/directories over to this directory which are present in community version v3.0.2 too, and change the ownership of the copied files which need to be writeable to the eapc user (you can find out in v3.0.2 which files should have which ownership and permissions). That's all. This way, you have both versions installed, which allows you to switch versions forth (and back!) with tpeap (see its switch option). To copy your database, just duplicate all files from the data subdirectory in v3.0.2 over to v3.0.5 and restart the v3.0.5 controller.
- Copy Link
- Report Inappropriate Content
@Emilien, which OS are you using? Note that on micro systems such as the Pi you will have to wait long enough (5 to 10 minutes) until the server is ready to handle events. This is normal. If it still doesn't start, check whether jsvc is installed (run command: which jsvc to see whether it's there) and whether mongod is available (run: mongod -version).
- Copy Link
- Report Inappropriate Content
Dear R1D2,
Thanks for your feedback and your help.
I use a raspberry PI 3B+ on stretch.
which jsvc: /usr/bin/jsvc
mongod -version: db version v2.4.14
I have been waiting over 1 hour and I still have the same message :-(
Best regards,
Emilien
- Copy Link
- Report Inappropriate Content
No idea to help me ?
- Copy Link
- Report Inappropriate Content
Emilien wrote
No idea to help me ?
Be patient, I'm not reading the forum each day.
Make sure that no other controller is running in the same subnet.
Next, kill all processes which might have been running from a previous start:
$ sudo bash
# killall mongod
# killall java
Next, start the controller interactively to error messages on stderr:
# omadactl -W 240 start
Starting Omada Controller ..................................................................................................................
Omada Controller started successfully after 116 seconds.
Direct your browser to http://raspi:8088 for accessing Omada Controller.
#
Depending on the load of your Pi it can even last longer to start the controller, try -W 300.
If it still not starts, re-install the system and the controller freshly and try again. Make sure you use omada-controller_3.0.2-2_all.deb from my FTP archive. Maybe you have a spare SDHC card for the test so you don't lose other setups.
Sometimes Raspbian can get into a really, really weird state. For example, after installing the official controller 3.0.5 package and purging it again today, dpkg reported doing so would make 110 GB available on my 32 GB SDHC card.
- Copy Link
- Report Inappropriate Content
I am also facing the same issue with my issue n google chrome.
- Copy Link
- Report Inappropriate Content
Information
Helpful: 9
Views: 59638
Replies: 109