AvNav-Android

AvNav Android

After having the AvNav web GUI for the Raspberry Pi  already in place for some years, there is now also a genuine android version. It requires android 4.4 (KitKat) or later.

The latest version is available at downloads. Alternatively in the  Play Store.
You can find previous versions or daily builds via the  installation instructions.

Basically the app is packaging the WebApp (see User documentation) into an android app. For Charts check the hints at creating/converting charts.

Functions

(new since 20210424)

Internally the app consists of a couple of functional entities.

The NMEA multiplexer handles NMEA0183 data from various sources. Beside the internal GPS data can be read from sources like TCP connections, UDP ports, USB devices, Bluetooth... Most sources support sending and receiving of NMEA data at the same time. You can configure multiple sources of each type (within the app configuration there is a "handler" for each data source).

name within the app description
InternalGPS The location data from the internal GPS will be sent to the multiplexer as NMEA data.
TcpReader A TCP connection to an external system. AvNav acts as TCP client and will open up the connection.
You can either use a plain IP address or a hostname as destination (mdns names like avnav.local are supported).
TcpWriter AvNav listens for connections from other apps or systems and sends out the NMEA data from the multiplexer. AvNav acts as TCP server.
UdpReader AvNav receives UDP data at the configured port.
UdpWriter AvNav sends out UDP data to the configured address and port.
UsbConnection You can receive (and send) data via a connected USB serial converter device (requires USB OTG functionality of your Android device).
Bluetooth Connection to a bluetooth device. You need to pair the device (outside AvNav) before you can use it.
NMEA0183 service A connection to a system the provides its NMEA data as a TCP service via mdns (Bonjour/Avahi) - like e.g. SignalK.
AvNav establishes a TCP connection to this device.

You can configure the NMEA multiplexer in a very flexible manner. For each connection you can define input and output filters or blacklists.

Internally the multiplexer hands over its data to the other modules of the app. The decoder prepares the NMEA data for further usage inside the app.

The app itself with the chart display and the dashboards can be used as a normal android app. Additionally you can activate the integrated web server. This allows access to all app functions from a browsers on the same or a different device (similar to the AvNav server variant).

The display part of the app can be terminated while the multiplexer continues to run in background. So AvNav can act as a NMEA data provider for other navigation apps. You would configure a TcpWriter within AvNav and connect from the other app to localhost (127.0.0.1) and the configured port.

The app can use the device's internal GPS. Additionally you can receive NMEA data via TCP/IP, bluetooth or by an USB-serial adapter if your device supports USB OTG. As a sender for NMEA data you can e.g. use the raspberry version - or any other NMEA0183-wifi gateway. You can also use a plain bluetooth GPS mouse if your device does not have an internal GPS.

Charts and stored Data

Charts are primarily expected in gemf format. Since version 20200325 you can also use mbtiles or xml files for online chart sources. Charts may be located in 2 directories:

  • in the 'charts' folder within the app's working directory (choosen at start up). As this must be writable it will typically not be possible to put this on an SD card in newer android versions.
  • in a freely selectable, different directory (also on an SD card) "additional charts dir" in the settings
    In the external charts dir you cannot directly use mbtiles. They must be copied into the working directory using the app .
Charts have to be copied to either directory or uploaded by the app. Initially there are some demo charts available, however they require an online internet connection.

If the chosen working directory is not yet present it will be created on first start up (default: internal-sd-card/avnav).

Track and log data will be written to the track directory within the working directory.

In the routes sub folder, routes will be stored in gpx format. Routes and tracks can be made available to other apps using the download function. To save them you need to have a file manager installed.

Usage

After first start up you will see an introduction page:


After clicking ok you will see the main settings page.

Amongst other settings, you can select the working directory and the external charts directory.
A complete list of settings can be found here.

You can leave the settings page with the upper right button or by pressing the back button. You will get to the main page of the app.


In the screenshot a valid internal position is shown (green bubble), but currently no AIS data (red bubble).
To return to the android setting move to the settings page within the app and click the android button there.
On further starts,  the app will directly present the main page.


External Access

(new since 20210424).

AvNav supports being accessed from other devices using a web browser. To provide this function you need to enable the WebServer in the settings of the app (Status/Server Page ).
You need to switch on "externalAccess" (only do this in trusted networks). With 'mdnsEnabled' a bonjour enabled app (like BonjourBrowser) can directly connect to the server.

In previous versions AvNav was using different modes for that.

  • Normal
  • External Browser
In normal mode the browser is integrated and it behaves like a standard android app.
In external browser mode the app starts up a web server at a user definable port (default 34567).


Background

The NMEA multiplexer (and the Web Server) of AvNav can run in background. You would e.g. use this if your display is on a different device.

To enter the background mode open the close dialog on the main page and select "BACKGROUND".

Via the android notification (in the Android notification bar) you can bring back the app to foreground - or close it completely.


Settings

The settings are split into two separate categories:

  • Specific Android settings
  • Settings for the multiplexer and other main parts

The android settings can be accessed via the button on the settings page or on the  server/status page.

Android Main Settings

Name Meaning Default
working directory working directory for your data (sub folders charts,tracks, routes, user, layout) /storage/sdcard/avnav
additional charts directory external chart directory (not for mbtiles), SD card recommended ---
show demo charts demo charts (only with internet connected) on
Alarm sounds switch off alarm sounds. You may need to switch them off in your browser as well. on
Hide System Bars hide  the top and bottom android bars off
reset to defaults reset the multiplexer settings to defaults

Android Sound Settings

Name Meaning Default
Sound for XXX alarm select the sounds for the alarms built in
reset to defaults reset all sound settings to defaults


Multiplexer Settings

(new since 20210424)

The multiplexer settings are available on the Status/Server Page . For each function (e.g. for each data source of the multiplexer) a so called 'handler' is available. You can check the status of the handlers and change their configuration.

New data sources (or targets) can be added using the button. A select dialog will provide all handlers that can be currently added (you will e.g. see an USBConnection only if there is an USB device actually connected).

Next to handlers in the status list a button permits to to edit the configuration of the handler.
Most of the parameters shown in the edit dialog have a  button providing a short help for the parameter. Using the button you can reset the particular parameter to it's default value.

Some of the parameters are common for multiple handlers:

Name Description default
enabled Activate/deactivate the handler. depends on handler
name Name of the handler. Can be used in black lists. empty
port TCP or UDP port
filter/readerFilter/ sendFilter A NMEA filter. You can define the NMEA sentences to pass. Multiple filters have to be separated by comma.
For records starting with a $ the next 2 characters will be ignored (the talker id). A filter for all $XXRMC records will look like:
$RMC
For AIS only (no other NMEA data):
!
All RMC and RMB records:
$RMC,$RMB
If you want to invert the filter, prefix the expression with ^.
^$RMB,^$APB
empty
blacklist A comma separated list of names. NMEA data from sources with those names will not be sent out. empty

The "Handlers" and their parameters:

Decoder

Parameter Description default
ownMMSI Own MMSI, will be suppressed in AIS displays empty
posAge Allowed age (in seconds) for the GPS position. After that time the position will be dropped if no new position has been received. 10
nmeaAge Allowed age (in seconds) for NMEA data (except position) 600
aisAge Allowed age for AIS Data 1200
readTimeout Timeout in seconds for the display whether valid data is available or not 10

Route

Parameter Beschreibung default
computeRMB if switched on RMB records will be created if the routing is active on

Track

Parameter Beschreibung default
interval Interval in seconds for writing the track as gpx file. 300
distance Minimal distance between two trackpints in meters 25
minTime Minimal time in seconds before a new track point is written. 10
length Length of the shown track (in hours) 25

Logger

NMEA logger

WebServer

Parameter Description default
port The TCP Port the server is listening on 8080
external If active external devices can connect (otherwise: only local apps)
Hint: Be careful to only use this in a trusted network. There is no further protection against unauthorized access inside the app.
off
mdnsEnabled Announce the service via mnds (will allo Bonjour apps to find it) on
mdnsService The name you will see in mdns. avnav-android

InternalGPS

The internal GPS of the device.

MDNSResolver

The handler for resolving and announcing mdns names.

TcpReader

Parameter Description default
ipAddress The ip address or the hostname of the server you want to connect to. This can also be a MDNS name like avnav.local . ---
port The Ip port you want to connect to. ---
sendOut If active NMEA data will be sent out (otherwise received only) on this connection. off
readTimeout Mark the connection as inactive if no NMEA data are received for this time (seconds). 10
writeTimeout Write timeout for one NMEA record (in seconds). Close and reopen the connection. Use 0 to disable writeTimeout. 5
connectTimeout Timeout for connecting (seconds, 0 - system-default). 0
closeOnTimeout Close (and reopen) the connection if no NMEA data has been received within readTimeout. on

TcpWriter

A TCPWriter provides NMEA data for other apps.

Parameter Description default
port The IP port that the server will listen on ---
externalAccess If active other devices can connect. Otherwise only apps from the same device.
Hint: Be careful to only use this in a trusted network. There is no further protection against unauthorized access inside the app.
aus
writeTimeout Write timeout for a NMEA record (in seconds). Close and reopen the connection, choose 0 to disable writeTimeout. 5
readData If active also read data from an established connection (otherwise write only) off
mdnsEnabled Announce this service via mdns (type: _nmea-0183._tcp) on
mdnsService The name of this service on mdns

UdpReader

An UDP Reader receives data from an UDP port.

Parameter Description default
port The UDP port the data will be received on. ---
externalAccess If active external devices can send data. Otherwise only apps from the same device.
Hint: Be careful to only use this in a trusted network. There is no further protection against unauthorized access inside the app.
off
readTimeout Show the connection to be inactive if no NMEA data have been received for this time (seconds). 10

UdpWriter

An UdpWriter will send out NMEA data via UDP to another app.

Parameter Description default
ipaddress The IP address or the hostname for the server you want to connect to. This can also be a MDNS name like avnav.local . ---
port The destination port ---
broadcast send the data as broadcast (requires the ipaddress to be a valid broadcast address) off

NMEA0183 Service

A NMEA0183 service mainly works like a TcpReader, without the need to define IP address and port of the origin. Instead you select the name of a MDNS service providing NMEA data from a list of detected services (type:  _nmea-0183._tcp). If there is e.g. a SignalK server or an AvNav server (> 20210415) in your network - they will announce their services this way (if configured to do so).

Advantage of using a service: it will continue to work if you change your network topology.

Parameter Description default
service The name of the service (select from a list of found services) ---
sendOut also send out NMEA data (otherwise read only) off
readTimeout Mark the connection as inactive if no NMEA data were received for this time (seconds). 10
writeTimeout Write timeout for a NMEA record (in seconds). Close and reopen the connection, choose 0 to disable writeTimeout. 5
connectTimeout Timeout for connecting (seconds, 0 - system-default). 0
closeOnTimeout Close (and reopen) the connection if no NMEA data were received within readTimeout. on

UsbConnection

AvNav will get activated when an USB device is connected. Typically it makes sense to start AvNav first and afterwards connect the USB device. This way you can allow permanent access to the USB device for AvNav. AvNav will immediately start up the configuration dialog for the newly connected device.

Parameter Description default
device The USB device (more exact: the port it is connected to). Select from a list. ---
baud rate The serial baud rate. 9600
flowControl none|xon/xoff|rts/cts - flow control if supported by the adapter none
sendOut also send out NMEA data (otherwise read only) off
readTimeout Mark connection as inactive if no NMEA data were received for this time (seconds). 10

Bluetooth

Before you can use a bluetooth device you must pair it (outside of AvNav).
Parameter Description default
device The bluetooth device. When creating the handler you can select from a list of all paired devices. Only after saving the settings AvNav will actually try to connect to the device. ---
sendOut also send out NMEA data (otherwise read only) off
readTimeout Mark the connection as inactive if no NMEA data were received for this time (seconds). 10