Prev Next

Prerequisites

Before you start any of the tutorials you must prepare your environment so that the right tools are installed. This page helps you to achieve this. We need to run the following tools on your computer:

  • Java 17+, probably already got it? If not, this is a good time to get started!
  • Eclipse, if you do not know which variant, pick the Eclipse Standard variant
  • Git, unfortunately the built-in EGit in Eclipse needs some good old command line help

Installing bndtools

You can install bndtools from the Eclipse market place or from the update site.

You can find the details how to install bndtools on the bndtools website

Do not install the development version since it is currently incompatible with the tutorials.

Conventions

Whenever you see a text like File/Open we hope you treat it as a menu path. That is, go to the menu bar, click on File, then select Open. If the menu path starts with @/ then it is from the context menu on the selected object, which has then been clearly defined in the previous sentence.

OS Specific Issues

Since this part is rather sensitive to the operating system you’re using, we have split it in different sections for each of the major operating systems.

Windows

In the enRoute tutorials file paths are always indicated using the forward slash or solidus (‘/’) as is customary on *nix like systems. The reason is that bnd, since its files are portable, always uses relative addressing from the workspace and adopted the forward slash. For most developers mapping these paths to Windows should be straightforward.

The only addressing outside the workspace is to the user’s home directory, the user’s home directory is indicated by a path that starts with a tilde and a slash (‘~/’). This maps to the path indicated in Java’s user.home System property.

Make sure you have a good command line shell available. If you’re familiar with one, keep it. If command lines are uncomfortable for you, you might want to use Git for Windows which includes a bash like shell. Though virtually all work in OSGi enRoute is done through Eclipse, there are some crucial elements where the shell is just much nicer.

MacOS

If you start using enRoute you will likely create a number of workspaces. There is a multi-workspace launcher plugin from Torkild U. Resheim.

OS X Eclipse Launcher Utility

Raspberry Pi Setup

Ok, now about that Raspberry Pi. This tutorial assumes a Raspberry Pi 2 model B. This model is compatible with the Raspberry Pi 1 Model B+. See the Raspberry Pi and Pi4j sites for compatibility details. Note that the Raspberry 2 is surprisingly much faster, faster than you would expect from the technical specifications.

Booting the Pi

There are lots of resources with pictures and videos if you want that get you start with the Raspberry Pi, see the Raspberry Pi quick start guide or just search Google.

The state you want to reach before you continue is that you can log in with SSH into the Raspberry Pi. In this tutorial we will use the address 192.168.2.4 as the address of our raspberry. For example:

$ ssh pi@192.168.2.4
Linux raspberrypi 3.12.22+ #691 PREEMPT Wed Jun 18 18:29:58 BST 2014 armv6l

The programs included with the Debian GNU/Linux system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright.

Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent
permitted by applicable law.
Last login: Thu Jun 18 07:42:02 2015 from 192.168.67.102
pi@raspberrypi ~ $ 

Java

Java 8 is now included in the NOOBS distribution. So in the shell, you should be able to do:

pi@raspberrypi ~ $ java -version
java version "1.8.0"
Java(TM) SE Runtime Environment (build 1.8.0-b132)
Java HotSpot(TM) Client VM (build 25.0-b70, mixed mode)

The build numbers should be regarded as minimum. Java is installed on the latest Raspian OS but if Java is not installed on your machine, then you can download it from Oracle’s Java Embedded site and install it locally. You might want to search for java + Raspberry Pi on Google.

Goodies

To experiment with the Raspberry Pi we will need some sensors and actuators. It also helps to have a little breadboard and wires. It is amazing what you can get at amazon nowadays. If you can afford it, the SunFounder kit is like a boy’s dream but for this tutorial you just need:

  • An couple of LEDs with ± 220 Ω resistors
  • A few button/switches that you can plug into a breadboard
  • A breadboard
  • Some wires female-male to connect the Raspberry to the breadboard.

Any local electronics store has this material. If you need a reference, these parts are included in the SunFounder Sidekick Starter Kit.

Alt text

Remote bnd Debugging

Almost there, we only need one more install! The OSGi enRoute tool chain has a remote debugging facility. Remote debugging from bnd(tools) requires an agent to be running inside an OSGi framework. However, in this case we would also like to define the actual framework in bnd(tools), we just need a program that installs a framework with an agent defined in a bnd(tools) bndrun file. This is the biz.aQute.remote.main program. Let’s install it

pi@raspberrypi ~ $ curl -o bndremote.jar https://repo1.maven.org/maven2/biz/aQute/bnd/biz.aQute.remote.main/7.0.0/biz.aQute.remote.main-7.0.0.jar 
pi@raspberrypi ~ $ sudo java -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=1044 -jar bndremote.jar -n 192.168.2.4
Listening for transport dt_socket at address: 1044

This will start the bnd remote main program in the Java debug mode and will listen to port 1044. This will allow us to debug OSGi enRoute applications in bndtools on another machine.

As you can see, we start the command with sudo, this is required to use the general purpose IO on the device. The -n option indicates the network we are running on, if you don’t specify this you can only use the agent from the same machine (i.e. localhost).

Setting Up bndtools

The next setup is the Eclipse works. Please follow the quick start tutorial or if you’re ambitious the base tutorial. For this tutorial, you should create a new workspace as described in the tutorials. Make sure you get the latest version workspace from github.


Prev Next