Skip to content
Go to file

Latest commit

The following functions are based on the functions exposed by the
official Actisense NGT-1 SDK. Not all functions are implemented yet.

- Reboot
- ReInitMainApp
- CommitToEEPROM
- CommitToFlash
- GetHardwareInfo
- GetOperatingMode
- SetOperatingMode
- GetPortBaudCodes
- SetPortBaudCodes
- GetPortPCodes
- SetPortPCodes
- GetPortDupDelete
- SetPortDupDelete
- GetTotalTime
- SetTotalTime
- GetHardwareBaudCodes
- SetHardwareBaudCodes
- GetSupportedPGNList
- GetProductInfoN2K
- GetCANConfig
- SetCANConfig
- GetCANInfoField1
- SetCANInfoField1
- GetCANInfoField2
- SetCANInfoField2
- GetCANInfoField3
- GetRxPGN
- SetRxPGN
- SetRxPGNEx
- GetTxPGN
- SetTxPGN
- SetTxPGNEx
- GetRxPGNList
- GetTxPGNList
- ClearRxPGNList
- ClearTxPGNList
- ActivatePGNEnableLists
- SetDefaultPGNEnableList
- GetParamsPGNEnableLists

The `Get*` functions should all work. These just send a command to the
NGT-1 which triggers a response. Some of the responses are decoded, see
`nmea2k/pgn_array.go`. Many are not.

The `Set*` functions are mostly unimplemented. `SetOperatingMode` works.
This is used during device configuration to put the NGT-1 into **receive
all** mode.

`SetCANInfoField1` and `SetCANInfoField2` should work. These allow you to
populate the installation data fields. There is no `SetCANInfoField3` because
the NMEA 2000 specification does not allow that field to be modified by end

`CommitToEEPROM` should work. `CommitToFlash` isn’t currently supported by any
devices, expect an error response.

`SetTotalTime` requires an **access key** which Actisense does not share. Their
firmware uploader resets the total run time, so perhaps it could be reverse
engineered, if anyone actually cares.

Git stats


Failed to load latest commit information.
Latest commit message
Commit time


Argo is a Signal K compliant server written in Go. The goal of Argo is to consume as many different sources of data as possible and convert them to Signal K on as many different transports as possible.

It currently supports WebSockets, ZeroMQ and MQTT transports and ingestion of NMEA 2000 data using an Actisense NGT-1 NMEA 2000 to USB converter or a Lawicel CAN-USB adapter. It can also read CANboat JSON from a file.


If you don't have go, you'll need to install it first. See the golang Getting Started guide for information. On Debian/Ubuntu systems apt-get install golang may be sufficient.

After that, you can install argo. Go has some opinions on how you should manage your source code workspaces, so use the commands below to get the paths right.

$ cd $GOPATH/src
$ git clone
$ cd
$ ./
$ sudo ./ --install

If you're not interested in hacking on Argo, then just run go get Argo will be installed in $GOPATH/bin.

By default, argo will try to use /dev/ttyUSB0 for the Actisense NGT-1, but you can change this by calling argo with a specific device like argo /dev/ttyUSB3.

There are utility scripts in the canusb and actisense folders which will install udev rules for those devices. You probably won't need these, but if for some reason your distro doesn't recognize the vendor IDs for those devices, these scripts can help.

Other Platforms

You can cross compile for other platforms by setting the GOARCH environment variable.

MIPS (OpenWRT and lots of routers):

$ export GOARCH=mips GOARCH=softfloat

ARM (Raspberry Pi and clones):

$ export GOARCH=arm GOARM=7

If your target OS is not the same as your host OS (e.g. you're compiling on Mac and targeting a Raspberry Pi), be sure to also set GOOS.

$ export GOOS=linux


You shouldn't need to install the libzmq-dev package any longer, but if your build fails, then sudo apt install libzmq-dev may help.


  • Daemonize argo and write an upstart script for it
  • Better Signal K support
  • Simplify commandline arguments and move more settings into the config file
  • Set the default path for the config file to /etc
  • Add support for reading raw CAN packet captures in Actisense and CANUSB formats (maybe others)
  • Add SocketCAN support
  • Web GUI for configuration
  • CLI for configuration


No description, website, or topics provided.




No releases published


No packages published
You can’t perform that action at this time.