Running gpsd on a Raspberry Pi 3 over UART

Adafruit have a great tutorial for connecting and setting up their GPS Shield on the Pi. To connect it direct to the tx/tx GPIO pins on the Pi (instead of USB), there’s some additional steps covered here. Since the Pi 3 uses it’s hardware serial with the onboard Bluetooth, there’s additional steps covered that are Pi 3 specific.

After following those steps however, runnning cgps would run for a second and quit, with ‘No Fix’. What’s odd was that doing a ‘cat /dev/ttyS0′ would show the GPS NMEA messages being received, so I could tell the GPS board was up and receiving, but something else was not right.

Instead of starting gpsd as a daemon, running it form the commandline with additional debugging options gave some additional clues:

pi@raspberrypi:~ $ sudo gpsd /dev/ttyS0 -n -N -D3 -F /var/run/gpsd.sock

gpsd:INFO: launching (Version 3.11)

gpsd:ERROR: can’t bind to IPv4 port gpsd, Address already in use

gpsd:ERROR: maybe gpsd is already running!

gpsd:ERROR: can’t bind to IPv6 port gpsd, Address already in use

gpsd:ERROR: maybe gpsd is already running!

gpsd:INFO: command sockets creation failed, netlib errors -1, -1

This thread has others with the same issue. There are some suggestions towards the end of the thread to edit /lib/systemd/system/gpsd.socket and change some values, but the one recommendation that worked for me was to use this to start the service:

sudo service gpsd start

and then running cgps connected to the gpsd daemon, and everything is good!

Oracle have something to announce re. Java EE 8 at JavaOne this year?

Oracle have been quiet on the Java EE front since around November 2015 according to public minutes from recent JCP Executive Committee meetings,  which has led to the forming of the Java EE Guardians group forming to rally community awareness and promote the future of Java EE.

This story on The Register just popped up in my feed this evening, with an interesting quote from ‘Oracle spokesman’ Mike Moeller, stating:

“Oracle is committed to Java and has a very well defined proposal for the next version of the Java EE specification – Java EE 8 – that will support developers as they seek to build new applications that are designed using micro-services on large-scale distributed computing and container-based environments on the Cloud … Oracle is working closely with key partners in the Java community to finalize the proposal and will share the full details with the broader Java community at JavaOne in September.”

So there you go. Given that there is already an EE8 JSR in flight (JSR 366) encompassing many other JSRs that were planned to be included in EE8, this statement sounds suspiciously like Oracle has “something else” planned for EE8 that is not the EE8 JSR (“a very well defined proposal for the next version of the Java EE specification”).

In a thread on the Java EE Guardians Google Group, seems like no-one over there has any other insight into this news at this point.

Interestingly, microservices, large-scale distributed computing and containers… this is all very much on target for where EE needs to be heading.

If this is all Oracle is willing (or able) to share at this point, then it will definitely be interesting to hear what they have to share at this year’s JavaOne conference.