December 12, 2023  Update for YDWR-02 and YDWN-02

Substring replacement, checksum correction, outgoing connections, new Web Gauges and Wi-Fi channel selection.

Substrings replacement and checksum correction

Figure 1. Substrings replacement and checksum correction

Four years ago we added support of Silicon Marine SM010 sensor to our NMEA 0183 Gateway, it had a missed talker ID at the beginning of XDR sentence. It is enough rare case, but from time to time we receive requests to fix something similar or to add missing checksum to sentences to connect very old equipment.

Now it can be done easy in our NMEA 0183 Wi-Fi Gateway or NMEA 0183 Wi-Fi Router. We added the substrings replacement, which is performed before the received sentence is processed or routed to other port. It can be used to add or replace the Talker ID, rename sensors in XDR sentence and so on. The checksum of modified sentence will be corrected or added if it is absent.

The second new feature at "NMEA Settings" page at settings is checksum adding or correction. It is intended for very old equipment or for lazy developers and testes who type sentences manually. New features can be applied to all inputs or to selected port or server.

In January we plan to release Yacht Devices Python Gateway, which has NMEA 0183, NMEA 2000 and USB ports. And we push it to every publication, not only to promote it, but because it is really the magic stick for hard cases. And can easily make the same, what two features described above do.

n0183.talker('YD') # set talker id to transmit from
n0183.check(False) # allow reception of NMEA0183 messages with invalid checksum

# Called upon reception of 'XDR' message
def rx_xdr(n0183, line):
    n0183.send(line) # retransmit XDR message in correct format
        # return False, because message retransmitted manually, no need to send it again
        return False 

# Register callback on receive of 'XDR' messages. E.g. '$SMXDR', 'XDR', '!--XDR'
n0183.rxcallback(0, rx_xdr, 'XDR', check=False)

The code above fix the malformed sentences like


by adding missed talker ID and adding the checksum. All magic is in the line n0183.check(False) which allows to process incorrect sentences and in the n0183.send(line) which automatically fix the line by adding talker ID and the checksum.

But we can do all this magic manually, just go down from NMEA 0183 to UART level:

# called upon reception of '\n' character
def rx_line(uart, line):
    if line.startswith(b'$XDR'): # check for incorrect XDR sentence
        line = line.replace(b'XDR', b'SMXDR') # replace incorrect sentence id
        line = line.split(b'*')[0].rstrip() # remove old checksum
        chk = checksum(line[1:]) # calculate checksum for new payload
        line += b'*{:0=2X}\r\n'.format(chk) # add back and new checksum
        uart_tx.write(line) # send result to UART TX

uart_rx.linecallback(rx_line) # register callback on receive of '\n' character

So, if you have the hard problem with NMEA 0183, we'll supply you with the solution soon!

Both products, Gateway and Router are got updated Web Gauges, and it is especially great for NMEA 0183 Wi-Fi Router, because it can control Raymarine autopilots connected by SeaTalk 1 in the same way, as pilot head. To learn more about this feature, please, read the previous news article.

Wi-Fi channel selection

Figure 2. Wi-Fi channel selection

Both devices also have Wi-Fi channel selection for access point mode. This allows you to select a less crowded channel in large marinas and get better signal quality. Changing channels doesn't require you to change anything on your phone, tablet or laptop. But you may need one of them to scan the networks around you and find the best channel for your location. Read this article to find out how to do this for all operating systems. This feature has already been added to all of our other Wi-Fi products.

Outgoing connection

Figure 3. Outgoing connection

The final feature in this release is outgoing connection (TCP or UDP), which has only been added to the NMEA 0183 Wi-Fi Router and is also available on the NMEA 2000 Wi-Fi Router and Ethernet Gateway. Modern plotters may not have physical NMEA 0183 ports, but they usually have Wi-Fi. NMEA 0183 data over Wi-Fi allows easy connection of mobile phones or laptops and use of marine data in software.

Unfortunately, only Navico products can send/receive 0183 data over Wi-Fi (we tested it with Simrad GO XSR, you can check the details here). So you can install new Simrad and connect old NMEA 0183 over Wi-Fi using YDWN-02 or, if you also have SeaTalk 1 equipment, YDWR-02.

Raymarine and Garmin do not allow NMEA 0183 data to be sent or received over Wi-Fi, and this is just a policy decision. But thanks to politics we will sell more NMEA 0183 to NMEA 2000 gateways.

Layline app for Android

Figure 4. Layline app for Android

If you are a racer and have an Android smartphone, check out the new free Layline app designed specifically for racing. It has been created with our YDWR-02, but will work with any of our gateways or routers. It will help you start, tack and choose the best strategy. You can read the manual here or install it from Google Play.

The firmware updates 1.71 for the NMEA 0183 Wi-Fi Router and NMEA 0183 Wi-Fi Gateway are available in the Downloads section.


Next articles:

Previous articles:

See also: recent news, all news...