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 .
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 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 |