Installing the Zulu open source Java Virtual Machine on Raspberry Pi

I’ve recently been playing with the early-access version of Zulu Embedded for ARM32. Zulu is an open-source and certified build of OpenJDK. It is a great alternative to the JRE from Oracle as it does not requires you to pay any licenses, and it is also a huge improvement over the OpenJDK build you can get off the Debian repositories, which is not really optimized for ARM (and that’s a euphemism! :smile:).

Before giving you more information on my experience running Eclipse IoT projects on Zulu in subsequent blog posts, here’s a quick tip for anyone interested in installing an alternate JVM on a Raspberry Pi (or pretty much any Linux-based environment, really), and switching between default JVMs easily.

Download the Zulu JVM

At the time of writing this blog post, Zulu for ARM32 is only available through an early access program. Once you’ve downloaded your Zulu archive, you need to unpack it somewhere on your system (in a zulu folder within our home directory, in this example). From the command-line, and while in the directory where you’ve downloaded Zulu:

mkdir ~/zulu
tar xvfpz ezre-1.8.0_60-8.9.0.6-cp1-eval-linux_aarch32.tar.gz -C ~/zulu

Add the Zulu JVM to the list of alternate VMs

The update-alternatives command-line utility allows to easily bind a given symbolic name to different commands. In our case, we want to update the symbolic link for /usr/bin/java

sudo update-alternatives --install /usr/bin/java java ~/zulu/ezre-1.8.0_60-8.9.0.7-cp3-eval-linux_aarch32/bin/java 100

Enable Zulu

sudo update-alternatives --config java

In the list of alternative Java version that’s proposed to you, select the one corresponding to Zulu by entering its ID and pressing .

And voila! Zulu is now your default Java Virtual Machine, you can check by executing the following command:

java -version
openjdk version "1.8.0_60-Zulu-Embedded"
OpenJDK Runtime Environment (build 1.8.0_60-Zulu-Embedded-EA3, profile compact1)
OpenJDK Minimal VM (build 25.60-b23, mixed mode, Evaluation)

Running Eclipse Che on a Raspberry Pi

Eclipse Che is a very cool Eclipse technology that provides you with a browser-based IDE that can be extended with plug-ins for virtually any language, framework, or tool that you may want to use in your day-to-day development.

This means that, right from your browser, you can do Java development and have Maven automatically build your stuff, or do Javascript development and still be able to easily integrate with e.g grunt to build your website.

As you may have guessed, most of the magic of Che is in its server. While in many cases you will run the Che server on your own laptop or private server, it’s also pretty cool to run it on an embedded/IoT device such as Raspberry Pi so as not only you have an “IDE-in-a-box” setup, but you can also actually devloper code targetting the Pi itself. And yes, that means blinking LEDs… and more ! ;-)

Install Docker

Assuming you are running an up-to-date Jessie distribution, it should be fairly straightforward to install the armhf version of docker provided by the Hypriot team.

cd ~/Downloads
wget https://downloads.hypriot.com/docker-hypriot_1.10.3-1_armhf.deb
sudo dpkg -i docker-hypriot_1.10.3-1_armhf.deb
sudo usermod -aG docker pi

At this point, you want to quickly logout and login again, in order for the addition of the user pi to the docker group to be properly applied. Then, we can test that docker is indeed running:

docker ps

This should grant you with an empty list of running docker containers. How surprising!? But at least it means you have Docker setup taken care of!

FWIW, the Hypriot folks have a Debian repo for making things easier. I have had problems with it though so you may want to stay away from it until they fix it?

Downloading Che

wget https://install.codenvycorp.com/che/eclipse-che-latest.zip
unzip eclipse-che-latest.zip
cd eclipse-che*

Updating Che’s built-in stacks to be ARM-compatible

When Che creates your development environment, it instantiates a Docker container that has the tools you need. That is to say, if you are to do Node development, Che can provision a so-called “stack” that contains npm, grunt, etc. The stacks configured by default in Che are based on x86 Docker images, so you will need to replace them with armfh-compatible ones.

sed -i 's/codenvy\/ubuntu_jdk8/kartben\/armhf-che-jdk8/g' stacks/predefined-stacks.json
sed -i 's/codenvy\/node/kartben\/armhf-che-node/g' stacks/predefined-stacks.json

I’ve built an image for Java and Node development, which means you’ll be able to use the “Java”, “Node”, and “Blank” ready-to-go stacks. Should you want to have a look at the Dockerfiles for those, see here.

Note that you don’t have to use the built-in stacks, and you can also create your on-the-fly, using a custom recipe. There as well, the base Docker image you’re building from will need to be ARMHF. You may want to use images from hypriot or armv7 on DockerHub.

Update other default settings

The Raspberry Pi 3 is quad-core, which means you actually get some very decent performances out of it. However, it’s still an embedded sort of device, and SD cards are typically not fast either. It’s a good idea to increase the timeout Che uses to detect a workspace is properly provisioned.

sed -i 's/machine.ws_agent.max_start_time_ms=60000/machine.ws_agent.max_start_time_ms=240000/g' conf/che.properties

Launch Che!

You’re good to go! All that is left is to launch Che. As you will likely be accessing it from e.g your Desktop computer, you need to make sure to use the -r:<external-IP> command-line argument to make sure it works properly from “non-localhost”:

./bin/che.sh run -r:192.168.2.26

Note that depending on your setup, the JAVA_HOME environment variable may not be set, in which case Che will complain, and you will have to first set the said environment variable:

export JAVA_HOME=/usr/lib/jvm/jdk-8-oracle-arm32-vfp-hflt

You can actually add this to your ~/.bashrc to make sure JAVA_HOME is always set.

That’s it! You can now use the Java and Node stacks, and start using your web browser to develop right on your Pi, with *all* the features you would expect from a “real” IDE. Enjoy, and stay tuned for a video tutorial soon.

Upcoming Virtual IoT meetup sessions

We have some really great speakers lined up for the upcoming Virtual IoT meetup webinars. Please make sure to join the group and RSVP for the sessions you’d like to attend.
As always, we’re happy to hear your suggestions for future presentations, so feel free to drop me a note.

Eclipse Kura: A gateway framework built for IoT

Friday, Mar 4, 2016, 8:00 AM

No location yet.

102 IoT enthusiasts Went

This is a virtual Meetup occurring at 8AM Pacific time (11am Eastern, 5pm Central European Time). For help with your timezone calculation, refer to this.The meetup will be held on Google Hangouts and you will be able to watch the live stream directly on YouTube.http://www.youtube.com/watch?v=ia8cLnR1uFIAs IoT continues to expand into new and exi…

Check out this Meetup →

Strong devices weakly connected: bringing DevOps to IoT with resin.io

Wednesday, Apr 6, 2016, 8:00 AM

No location yet.

56 IoT enthusiasts Attending

This is a virtual Meetup occurring at 8AM Pacific time (11am Eastern, 5pm Central European Time). For help with your timezone calculation, refer to this.The meetup will be held on Google Hangouts and you will be able to watch the live stream directly on YouTube.http://www.youtube.com/watch?v=iErX-l7QPp8Web developers now enjoy a culture and set…

Check out this Meetup →

Spy on your MQTT devices for fun and profit with mqtt-spy

Wednesday, Apr 20, 2016, 8:00 AM

No location yet.

19 IoT enthusiasts Attending

Check out this Meetup →

The real benefits of living a connected life

It might be a bit late in the year to do a write-up on The Next Big Thing for IoT in 2016, but it doesn’t mean I cannot take a moment to take a step back from the multiple announcements around the consumer Internet of Things lately, and focus on the cornerstone for enabling a truly sustainable IoT ecosystem: Over-the-air Device Management. Of course it is important for the IoT industry at large to agree on the protocols and frameworks that shall enable IoT application development, but are we not jumping the gun here? I think we should all be thinking first about how we want to leverage over-the-air management capabilities to really revolutionize the way we can interact with the Things around us.

In fact, here are some of the reasons why you need to think of the IoT in terms of how it really changes our way, as humans, to interact with physical devices on a day-to-day basis, before even thinking about all the fancy things you will do with the data you collect, or the smart sensor networks you will build.

Over-the-air provisioning can greatly reduce time-to-market

Do you remember how, just a few decades ago, you would need to use dozens of floppy disks to setup your brand new PC? This workflow has greatly improved over the years, and it is now very common to do the initial provisioning of an Ubuntu or OSX system completely over the air, and the only manual steps involved are essentially limited to entering your name into the system… 40/365 - 02/09/11 - Windows 3.1 Floppy Disk When you think about it, this is incredibly beneficial to both the computer manufacturer, who does not need to worry and make sure its machines leave the factory with the latest OS version that contains the newest features the market is asking for, and to us as end-users, since we always get the most up-to-date system, both in terms of available features, but also security patches, etc.

TPM.svg In the context of IoT, now that more and more devices have strong cryptographic capabilities and start including Trusted Platform Modules, it becomes possible to perform a 100%-secured bootstrap of any IoT device.

Think about it: when it comes to healthcare or automotive, you would not want to have a single doubt regarding the fact that a device is indeed running software that is originating (i.e. signed by) from the manufacturer. A compromised smart thermostat in your living room is one thing, a compromised car is a totally different story. What’s more, being able to delay the moment embedded software is finally put onto a device indubitably leads to reducing time-to-market while allowing for a few extra cycles to innovate on the software front before the device reaches its user.

Fighting planned obsolescence thanks to over-the-air upgrades

Over-the-air provisioning is only the first step in providing a seamless experience for end-users. What we start witnessing with e.g. Tesla is something the car industry has been secretly dreaming of for a century, and is now finally able to achieve: your car can now be fixed (or better: its performances improved) without requiring you to stop by the repair shop.

Indeed, Tesla brings the concept of decoupling hardware and software to a totally different level. Over the years, the upgrades they deployed went from somewhat minor improvements in the user interface of the on-board computer; to much more advanced fixes to the steering or braking system. It is a huge shift for the whole manufacturing industry: hardware design decisions at Day 1 will no longer be limiting the capabilities of a device overtime, and over-the-air updates will allow for actual improvements in safety, stability and overall user experience overtime.

Bypassing some physical constraints we never thought we could

The lifespan of a house is literally decades, which means that in many cases smart sensors and devices are literally set in concrete. Should a buggy sensor really be forever condemned, when it could be upgraded over-the-air?

Not only can over-the-air updates help fix faulty hardware, but it can actually help you in situations where you don’t have physical access to the culprit. Technologies like 6LoWPAN allow battery-powered devices to communicate wirelessly for years, so why not just deploy a new PID temperature control algorithm in that smart thermostat of yours rather than spending yet another couple hundred dollars for a new one (…just like you did last year, and the year before that!).

Avoiding vendor lock-in for a truly interoperable IoT

5997130009_4e29c6919c_mWhile it is understandable that some vendors may want to lock-in customers to their platform, I really believe that in the long run, the manufacturers who will be relying on open device management standards and give their users some control of their device will be the ones that will stay ahead of the game.

Would we really expect to buy an electric appliance without being sure that the plug would fit in our wall socket? That is exactly what we are talking about here, and that’s why standardization initiatives like what the Open Mobile Alliance is doing with LightweightM2M (LWM2M), or the work of the AllSeen Alliance and the Open InterConnect Consortium are really important. In the mobile and handset industry, a standard like OMA-DM is used in literally billions of devices and, because it’s an open-standard that practically every mobile handset implements, it enables large corporations with a standard way to manage their fleet of phones, without any vendor lock-in.

For the Internet of Things, vendor neutrality is going to be key for finally getting to the point where the general public starts seeing the Things of the Internet of Things as equipment they have control of (as opposed to scary black boxes wirelessly tethered to a company’s backend via an obscure communication protocol). Luckily, many players in the IoT industry understand the importance of device management, and I am hopeful that with Eclipse IoT we are doing our share by providing a framework for open innovation, and open source implementations of technologies like LWM2M, MQTT or CoAP.


This post was brought to you by HARMAN’s Engineering a Connected Life program. The views and opinions expressed in this post are my own and don’t necessarily represent HARMAN’s positions, strategies or opinions.

5 open source IoT projects to watch in 2016

The IoT industry is slowly but steadily moving from a world of siloed, proprietary solutions, to embracing more and more open standards and open source technologies.
What’s more, the open source projects for IoT are becoming more and more integrated, and you can now find one-stop-shop open source solutions for things like programming your IoT micro controller, or deploying a scalable IoT broker in a cloud environment.

Here are the Top 5 Open Source IoT projects that you should really be watching this year.

  • #1 – The Things Network

    LP-WAN technologies are going to be a hot topic for 2016. It's unclear who will win, but the availability of an open-source ecosystem around those is going to be key. The Things Network is a crowdsourced world-wide community for bringin LoRaWAN to the masses. Most of their backend is open-source and on Github.
Note: you can click on the pictures to learn more!

 

What about you? What are the projects you think are going to make a difference in the months to come?

In case you missed it, the upcoming IoT Summit, co-located with EclipseCon North America, is a great opportunity for you to learn about some of the projects mentioned above, so make sure to check it out!

Eclipse IoT’s 2015 Year in Review

Come the end of the year and you usually want to look back at what you’ve accomplished during the past twelve months. For us, at Eclipse IoT, it’s been a pretty busy and successful year!

IoT logo

So without further ado, here are the 5 most noteworthy things that happened in the Eclipse IoT community this year.

5 new open-source projects!

Eclipse IoT is all about making IoT simpler by providing developers with actual code that they can use to build their solutions. We ended 2014 with 14 projects, and I’m glad to announce that this year we’ve seen 5 new projects join us! In case you’re wondering, here’s what they are all about:

   ⇢ 4DIAC

IoT certainly gets lots of traction in the industry. In order to help people build distributed industrial and automation systems, 4DIAC provides an open-source infrastructure based on the IEC 61499 standard.

In March this year, 4DIAC became an Eclipse project, and we are really glad to see 4DIAC embracing the Eclipse IoT community!

   ⇢ RISE V2G

Electric Vehicles are becoming more and more popular, and while we are not yet at a point where anyone is able to hack his own car, it is nevertheless great to see open-source projects like RISE V2G appear.

RISE V2G is the reference implementation of the ISO/IEC 15118 standard, that is used for communication between charging stations and electric vehicles. You can learn more on RISE V2G in our recent Virtual IoT webinar:

   ⇢ TinyDTLS

Security is an important aspect of IoT and we’re happy to see TinyDTLS moving from SourceForge to EclipseIoT.

DTLS allows to secure UDP communications (UDP being used in the context of IoT for e.g. CoAP or LWM2M), and TinyDTLS is a C-based implementation that is very lightweight.

   ⇢Tiaki

When Verisign became a member of the Eclipse IoT Working Group earlier this year, their interest was to help make IoT solutions more secure, and more flexible.

Eclipse Tiaki allows to leverage Internet standards like DNSSec and DNS-SD, for doing IoT service discovery. A Java implementation was just recently contributed, and a C implementation is coming!

   ⇢ Hawkbit

Rolling out software updates in the realm of IoT is a difficult challenge. You need to adopt very particular techniques when it comes to securely rolling out updates to millions of devices on the field.

Project Hawkbit is originating from Bosch Software Innovations and will provide all the back-end infrastructure one needs to manage software and firmware updates. The source code is currently going through intellectual property review and will be publicly available soon.

50% more contributors

The bar was already pretty high with 110 contributors on all the Eclipse IoT projects, but we’ve seen an increase of more than 50% of the numbers of contributors, with a total of 170 individuals who did contribute code or documentation to the projects. On behalf of the projects, I would really like to thank you guys. As you know, you’re really helping make a difference, and I hope to see many more contributions in 2016!

People are learning about IoT thanks to Virtual IoT

We have hosted many free webinars this year to educate people about IoT in general, and it’s pretty cool to see we have now three times as much members in our Virtual IoT meetup group than 12 months ago.

I highly encourage everyone of you to join the group, and to have look at the recording of our previous sessions.

Our projects deliver, and people are using them

At Eclipse, we are doing our best to make sure that our open-source projects deliver software that is easy to consume. From open IoT protocols (like CoAP, LWM2M or MQTT) implementations to frameworks like SmartHome, OM2M or Kura, many Eclipse IoT projects are doing a great job at producing regular high quality releases. From a project’s home page, you are typically one click or two away from downloading the code and getting started with the project.

With 22,000 downloads a month (from 1,200 last year), it’s pretty clear that our projects are getting lots of interest, and that lots of people are actually using them to build their IoT solutions.

A growing Twitter community: join us!

We have been sharing IoT-related news on our @eclipseiot Twitter account for a couple years now. If you are not following us yet, you should consider joining the 3,000+ people that already doing so!

Happy holidays!

Announcing the 16 winners of the Open IoT Challenge starter kit!

It’s now been a bit more than 2 weeks since the second edition of the Open IoT Challenge has officially started. More than 80 teams have applied to be part of the challenge, and if you ask me, that’s really exciting!

They will be working until end of February next year to complete their project, and to demonstrate how open source and open standards can help build innovative IoT solutions faster.

We have awarded the 16 most promising proposals a starter kit that we hope will help them bootstrap their project. The kits  a $150 gift card to buy IoT hardware, as well as access to special offers from our sponsors.

sponsors iot challenge

The lucky teams/participants are:

  • Sarthak Sethi – Farm monitoring
  • Davide De Cesaris & Marcello Majonchi – IoT into space
  • Shivankur Pilania – Artificial Intelligence based circadian clock
  • Deepak Sharma & team – Smart kitchen container
  • András Vörös & team – Improving cyber-physical systems with IoT technologies
  • Iranga Supun Athukorale & team – Elderly care using advanced thermal footprint tracking
  • Tien Cao-hoang – Water level monitoring for paddy fields
  • Franz Schnyder – “IoT-ing” a mountain’s hut off-grid solar power system
  • Ettore Verrecchia – Remotely controlled intelligent street lamp
  • Mahavir Dwivedi & team – Remote monitoring of patient’s vital parameters for rural areas
  • Manolis Nikiforakis & team – Device management for the ESP8266 using LWM2M, Leshan, Wakaama and Kura
  • Aprian Diaz Novandi & team – Forest fire detection
  • Rajesh Sola & team – Adding MQTT-SN support to Eclipse Kura
  • MirMohamed Salman & team – Finding petroleum/service station based on vehicle breakdown indication
  • Tobiasz Dworak – Medical IoT gateway based on Eclipse Kura
  • Steve Liang  & team– Connected babies

All the participants will be sharing their experience on our dedicated Tumblr, so you probably want to follow it if you’re interesting in following their stories!

Eclipse, open-source for the Internet of Things, and other random stuff