# Connect m64 modem to ROV

**URL:** <https://discuss.bluerobotics.com/t/connect-m64-modem-to-rov/8482>\
**Category:** Sonar and Acoustics\
**Tags:** water-linked, acoustic-modem\
**Created:** [October 30, 2020, 2:02pm UTC](https://discuss.bluerobotics.com/t/connect-m64-modem-to-rov/8482 "2020-10-30T14:02:34Z")\
**Posts on this page:** 17\
**Page:** 1

<div class="post-metadata">

**Author:** ![YuryArnaut](https://avatars.discourse-cdn.com/v4/letter/y/67e7ee/32.png) [@YuryArnaut](https://discuss.bluerobotics.com/u/YuryArnaut)\
**Post date:** [October 30, 2020, 2:02pm UTC](https://discuss.bluerobotics.com/t/connect-m64-modem-to-rov/8482/1 "2020-10-30T14:02:34Z")

</div>

Hi BlueRobotics! I have build rov and tested it with qgc. For now I want to try acoustick modems to transfer informational data. Most problem is as I don’t know how to connect it to my rov. I have just 4 wires came out of it. How connect it to pi, or pixhawk I don’t know. Can you show me some manual where I can find how to connect it.

---

<div class="post-metadata">

**Author:** ![safaR](https://avatars.discourse-cdn.com/v4/letter/s/3ec8ea/32.png) [@safaR](https://discuss.bluerobotics.com/u/safaR)\
**Post date:** [February 6, 2025, 1:23am UTC](https://discuss.bluerobotics.com/t/connect-m64-modem-to-rov/8482/2 "2025-02-06T01:23:49Z")

</div>

How do I connect the Modem M64 to the raspberry pi?

---

<div class="post-metadata">

**Author:** ![tony-white](https://sea1.discourse-cdn.com/flex019/user_avatar/discuss.bluerobotics.com/tony-white/32/13297_2.png) [@tony-white](https://discuss.bluerobotics.com/u/tony-white)\
**Post date:** [February 6, 2025, 5:43pm UTC](https://discuss.bluerobotics.com/t/connect-m64-modem-to-rov/8482/3 "2025-02-06T17:43:15Z")

</div>

Hi @safaR -

Welcome to the forums!  
Have you seen this guide [post](https://discuss.bluerobotics.com/t/water-linked-m64-acoustic-modem-testing-and-lessons-learned/5565)? It’s a bit old, but should detail everything well! A quick search for Modem M64 on the forum (and google) brought it up in the top results!

---

<div class="post-metadata">

**Author:** ![nurjan14](https://sea1.discourse-cdn.com/flex019/user_avatar/discuss.bluerobotics.com/nurjan14/32/16632_2.png) [@nurjan14](https://discuss.bluerobotics.com/u/nurjan14)\
**Post date:** [January 26, 2026, 3:04pm UTC](https://discuss.bluerobotics.com/t/connect-m64-modem-to-rov/8482/4 "2026-01-26T15:04:20Z")

</div>

Hi @tony-white

I wanted to connect the same M64 modem from the waterlinked to the navigator and I was wondering do I need to use [this converter](https://bluerobotics.com/store/comm-control-power/tether-interface/bluart-r1-rp/) and connect to the raspberry pi while I am using the navigator?

I just found the page where the integration for Ping1d mentioned the configuration requires the same converter if you using the pixhawk and you just connects without converted directly to the navigator board (serial 5 with i2c). I am using Ping1d on serial 5.

And consequently the 2nd question is - if I want to connect M64 modem and Ping1D can I connect to the navigator board (serial 5 to ping and serial 1 or 4 (serial 3 is used by gps)) so I can save usb port on the raspberry pi?

Nurjan

---

<div class="post-metadata">

**Author:** ![EliotBR](https://sea1.discourse-cdn.com/flex019/user_avatar/discuss.bluerobotics.com/eliotbr/32/6937_2.png) [@EliotBR](https://discuss.bluerobotics.com/u/EliotBR)\
**Post date:** [January 26, 2026, 5:14pm UTC](https://discuss.bluerobotics.com/t/connect-m64-modem-to-rov/8482/5 "2026-01-26T17:14:38Z")

</div>

Hi @nurjan14,

The Navigator uses 3.3V as its logic level voltage, so should work ok for connecting directly to the communication pins of a Water Linked modem, assuming you disable it in the autopilot manager, or write a driver for it that you run as part of the autopilot (e.g. potentially using a Lua script).

That said, Water Linked’s retired M64 modem requires 10+V for its power supply, and their M16 modem requires ~3.3V, whereas the Navigator’s serial ports provide 5V. You can’t connect the modem’s power wire to that, and you’ll need to bridge the Navigator’s ground with the ground of the power supply you use (if that’s not done already).

---

<div class="post-metadata">

**Author:** ![nurjan14](https://sea1.discourse-cdn.com/flex019/user_avatar/discuss.bluerobotics.com/nurjan14/32/16632_2.png) [@nurjan14](https://discuss.bluerobotics.com/u/nurjan14)\
**Post date:** [February 3, 2026, 2:03pm UTC](https://discuss.bluerobotics.com/t/connect-m64-modem-to-rov/8482/6 "2026-02-03T14:03:36Z")

</div>

Thanks @EliotBR for pointing this out.

I have additional questions t0hat might related to this one

I know for the fact there are [multiple extension](https://docs.bluerobotics.com/BlueOS-Extensions-Repository/) that support waterlniked products for example DVL and UGPS but I didn’t find the anything related to acoustic modems except for the celular modem.

Question is: If I want to have communication with my rov should I connect to the navigator utilizing it’s convience of built in 3.3v logic level voltage and if assuming there are solution that I am not aware of for BlueOS extension that already works out of box OR I should consider make custom node for both side (ROV - surface) using one of [this repo](https://github.com/waterlinked/modem-python) .

Thanks

---

<div class="post-metadata">

**Author:** ![tony-white](https://sea1.discourse-cdn.com/flex019/user_avatar/discuss.bluerobotics.com/tony-white/32/13297_2.png) [@tony-white](https://discuss.bluerobotics.com/u/tony-white)\
**Post date:** [February 3, 2026, 2:47pm UTC](https://discuss.bluerobotics.com/t/connect-m64-modem-to-rov/8482/7 "2026-02-03T14:47:34Z")

</div>

Hi @nurjan14 -  
What are you goals for the use of the modem?  
I would recommend developing a BlueOS [extension](https://blueos.cloud/docs/latest/development/extensions/), using the library you linked, to accomplish them! An extension like this doesn’t exist, because the range of potential applications is quite broad - unlike that of a DVL or UGPS, where the goal is localization.

As Eliot mentioned, simply connect to the Navigator serial port and appropriate power, remove that serial port from the Autopilot’s control, and access it with your extension.

---

<div class="post-metadata">

**Author:** ![nurjan14](https://sea1.discourse-cdn.com/flex019/user_avatar/discuss.bluerobotics.com/nurjan14/32/16632_2.png) [@nurjan14](https://discuss.bluerobotics.com/u/nurjan14)\
**Post date:** [February 3, 2026, 3:12pm UTC](https://discuss.bluerobotics.com/t/connect-m64-modem-to-rov/8482/8 "2026-02-03T15:12:03Z")

</div>

> [@tony-white](#):
>
> What are you goals for the use of the modem?

The goal is make communication between ROV and topside when it operates in tetherless mode.

thanks @tony-white

Is this [right place](https://blueos.cloud/docs/stable/development/extensions/) and [this](https://github.com/BlueOS-community/blueos-extension-template) where to start to make my custom extension?

Nurjan

---

<div class="post-metadata">

**Author:** ![tony-white](https://sea1.discourse-cdn.com/flex019/user_avatar/discuss.bluerobotics.com/tony-white/32/13297_2.png) [@tony-white](https://discuss.bluerobotics.com/u/tony-white)\
**Post date:** [February 3, 2026, 3:27pm UTC](https://discuss.bluerobotics.com/t/connect-m64-modem-to-rov/8482/9 "2026-02-03T15:27:06Z")

</div>

Hi @nurjan14 -  
That would be the right documentation and example repo, yes. However…  
If your goal is top operate the ROV via the modem, with it sending telemetry and control signals from your GCS, that may necessitate a completely different approach!  
I’m not sure the bandwidth available from the modem is sufficient for the default control stream.

You’ll definitely want to leave the serial port you connect the modem to in the autopilot’s control, since it will use it to send data. Are you trying to drive the ROV via the modem, or just see information about the battery, or trigger a simple command to start a mission? Since the video stream won’t be able to be sent across this link, how will you drive it - from visual contact, observing the ROV, or does the unit have a localization system so it can perform missions in Auto mode?  
Generally, I’m skeptical this would work at all, but hope to be proven wrong!

---

<div class="post-metadata">

**Author:** ![nurjan14](https://sea1.discourse-cdn.com/flex019/user_avatar/discuss.bluerobotics.com/nurjan14/32/16632_2.png) [@nurjan14](https://discuss.bluerobotics.com/u/nurjan14)\
**Post date:** [February 3, 2026, 3:46pm UTC](https://discuss.bluerobotics.com/t/connect-m64-modem-to-rov/8482/10 "2026-02-03T15:46:23Z")

</div>

> [@tony-white](#):
>
> You’ll definitely want to leave the serial port you connect the modem to in the autopilot’s control, since it will use it to send data. Are you trying to drive the ROV via the modem, or just see information about the battery, or trigger a simple command to start a mission? Since the video stream won’t be able to be sent across this link, how will you drive it - from visual contact, observing the ROV, or does the unit have a localization system so it can perform missions in Auto mode?  
> Generally, I’m skeptical this would work at all, but

Certainly, it won’t work for manual control due to latency, simply not practical and not my objectives

I forget to mention that working on autonomous tasks. This is for simple communication in tetherless mode to get current status something like _(mission status_ ….., battery status …., current local position…._)_ and/OR trigger missions like a _(start/abort/next mission /emergency surfacing ) ._ Localizations is based on vision+dvl —\> feed to EKF.

Still figuring out this m64 modem, we bough them while ago and never used them. Now time to see how they perform. I assume I need to work on payload size and queue messaging using their discontinued library

Nurjan

---

<div class="post-metadata">

**Author:** ![tony-white](https://sea1.discourse-cdn.com/flex019/user_avatar/discuss.bluerobotics.com/tony-white/32/13297_2.png) [@tony-white](https://discuss.bluerobotics.com/u/tony-white)\
**Post date:** [February 3, 2026, 3:58pm UTC](https://discuss.bluerobotics.com/t/connect-m64-modem-to-rov/8482/11 "2026-02-03T15:58:41Z")

</div>

Hi @nurjan14 -  
In that case then yes, an extension is the right way to go. It would need to talk to the modem, and when key commands are sent, relay them to the vehicle via Mavlink2Rest. This will be tricky, but should be possible!

I would focus first on getting a “hello world” - where you send a message from the topside “ping” - and receive one back from your extension “pong”.

From there, you could use your extension to change vehicle modes, arm/disarm, etc. via [pymavlink](https://www.ardusub.com/developers/pymavlink.html)!

---

<div class="post-metadata">

**Author:** ![nurjan14](https://sea1.discourse-cdn.com/flex019/user_avatar/discuss.bluerobotics.com/nurjan14/32/16632_2.png) [@nurjan14](https://discuss.bluerobotics.com/u/nurjan14)\
**Post date:** [February 3, 2026, 4:38pm UTC](https://discuss.bluerobotics.com/t/connect-m64-modem-to-rov/8482/12 "2026-02-03T16:38:58Z")

</div>

Thanks @tony-white I will see what I can do, for sure start with simple hello world handshake and then see what i can do with pymavlink

Nurjan

---

<div class="post-metadata">

**Author:** ![EliotBR](https://sea1.discourse-cdn.com/flex019/user_avatar/discuss.bluerobotics.com/eliotbr/32/6937_2.png) [@EliotBR](https://discuss.bluerobotics.com/u/EliotBR)\
**Post date:** [February 3, 2026, 6:55pm UTC](https://discuss.bluerobotics.com/t/connect-m64-modem-to-rov/8482/13 "2026-02-03T18:55:28Z")

</div>

A BlueOS Extension would allow you to create a browser interface, send MAVLink commands to the autopilot, and integrate readily with non-autopilot components. The Python library could enable that, and could more generally be useful in the software you want to run on the topside (e.g. you could have a Python program that talks to the topside modem, then gives you status updates in Cockpit).

> [@nurjan14](#):
>
> The goal is make communication between ROV and topside when it operates in tetherless mode.

If you _only_ want the modem to talk to the autopilot then I suspect the most robust integration is likely via a Lua script instead (which then avoids needing to develop or deploy a BlueOS Extension, or use MAVLink, at the cost of your integration being (currently) a bit less convenient for others to install).

---

<div class="post-metadata">

**Author:** ![nurjan14](https://sea1.discourse-cdn.com/flex019/user_avatar/discuss.bluerobotics.com/nurjan14/32/16632_2.png) [@nurjan14](https://discuss.bluerobotics.com/u/nurjan14)\
**Post date:** [February 7, 2026, 6:38pm UTC](https://discuss.bluerobotics.com/t/connect-m64-modem-to-rov/8482/14 "2026-02-07T18:38:38Z")

</div>

> [@EliotBR](#):
>
> Lua script instead (which then avoids needing to develop or deploy a BlueOS Extension, or use MAVLink

Hi Eliot,

Can you share the documentation on the Lua script implementation for Ardusub?

Thanks

---

<div class="post-metadata">

**Author:** ![EliotBR](https://sea1.discourse-cdn.com/flex019/user_avatar/discuss.bluerobotics.com/eliotbr/32/6937_2.png) [@EliotBR](https://discuss.bluerobotics.com/u/EliotBR)\
**Post date:** [February 10, 2026, 3:02am UTC](https://discuss.bluerobotics.com/t/connect-m64-modem-to-rov/8482/15 "2026-02-10T03:02:51Z")

</div>

> [@nurjan14](#):
>
> Can you share the documentation on the Lua script implementation for Ardusub?

There are general [ArduPilot Lua script docs](https://ardupilot.org/sub/docs/common-lua-scripts.html), though we haven’t yet managed to fine-tune those docs for ArduSub use-cases.

[For BlueOS](https://blueos.cloud/docs/latest/usage/advanced/#file-browser) with Navigator use-cases,

> [@BlueOS / Usage / Advanced / File Browser](#):
>
> Vehicles using a Navigator flight controller board with a recent ArduPilot firmware can access Lua drivers and scripts at `configs/ardupilot/firmware/scripts` .

Note that you’ll need to enable scripting support with the [`SCR_ENABLE`](https://ardupilot.org/sub/docs/parameters.html#scr-enable) parameter, and you may need to create the `scripts` folder if it doesn’t exist already.

---

<div class="post-metadata">

**Author:** ![MikeCMMI25](https://avatars.discourse-cdn.com/v4/letter/m/aeb1de/32.png) [@MikeCMMI25](https://discuss.bluerobotics.com/u/MikeCMMI25)\
**Post date:** [September 3, 2026, 10:30am UTC](https://discuss.bluerobotics.com/t/connect-m64-modem-to-rov/8482/16 "2026-09-03T10:30:26Z")

</div>

Almost 6 years later, and I am right now in the same boat. Anyone could share any manual or guide that can help me achieve this too?

---

<div class="post-metadata">

**Author:** ![tony-white](https://sea1.discourse-cdn.com/flex019/user_avatar/discuss.bluerobotics.com/tony-white/32/13297_2.png) [@tony-white](https://discuss.bluerobotics.com/u/tony-white)\
**Post date:** [September 3, 2026, 4:13pm UTC](https://discuss.bluerobotics.com/t/connect-m64-modem-to-rov/8482/17 "2026-09-03T16:13:58Z")

</div>

Hi @MikeCMMI25 -

Welcome to the forums!

The M64 modem looks to have been retired, do you have a M16?

Generally, the [documentation](https://docs.waterlinked.com/modem-m64/modem-m64/) hsa a wiring pinout indicates it can be connected to a serial port on the Navigator - it is 3.3V voltage levels so you’ll just need the appropriate JST-GH connector. From there, you could use their [python example](https://github.com/waterlinked/modem-python)to communicate with it - maybe packaging it in a custom [BlueOS extension](https://blueos.cloud/docs/latest/development/extensions/) to accomplish your goals? What are you hoping to achieve with the modem?

Pointing a LLM coding tool like Claude Code, Cursor, Codex or Antigravity to existing examples, like my own [github repo](https://github.com/vshie) of extensions, along with links to documentation on the modem and that python library should be sufficient to produce an extension that can be installed manually, and hopefully achieve whatever you’re trying to do. It’s worth noting that the bandwidth available is low enough that standard telemetry messages would need to be condensed to relate vehicle state over the link!
