# Ping360 - failed to initialize auto transmit mode

**URL:** https://discuss.bluerobotics.com/t/ping360-failed-to-initialize-auto-transmit-mode/11410
**Category:** Ping Sonar Devices
**Tags:** ping
**Created:** [January 24, 2022, 5:26pm UTC](https://discuss.bluerobotics.com/t/ping360-failed-to-initialize-auto-transmit-mode/11410 "2022-01-24T17:26:33Z")
**Posts on this page:** 14
**Page:** 1

<div class="post-metadata">

### Author: ![incebellipipo](https://sea1.discourse-cdn.com/flex019/user_avatar/discuss.bluerobotics.com/incebellipipo/32/8537_2.png) [@incebellipipo](https://discuss.bluerobotics.com/u/incebellipipo)
#### Post date: [January 24, 2022, 5:26pm UTC](https://discuss.bluerobotics.com/t/ping360-failed-to-initialize-auto-transmit-mode/11410/1 "2022-01-24T17:26:33Z")

</div>

Hi There,

### Summary

We are working with Ping360. After the [recent discussion](https://discuss.bluerobotics.com/t/ping-protocols-missing-features-for-ping360/11301), we started using the C++ library. We are having problems that we don’t understand why.

Before I describe the problems any further, I want to make it clear that Ping360 works with the Desktop client. Although I’m not certain about it, the problem we are having seems to be language/environment independent. What would be the issue here?

## We can not control `auto_transmit` mode.

#### What we can do

- We can send a protocol version message (ID: 5) and receive the protocol version from the device.
- We can send a device information message (ID: 4) and receive the device information from the device.
- We can send an autotransmit message (Id: 2602).

#### What we can not do

- _Either_ we can not receive any auto transmit messages.
- _Or_ the device does not emit any auto transmit messages.

#### Detailed packages

```auto
# Protocol version
Message[0-7]: 42	52	02	00	06	00	00	00
Message[8-15]: 05	00
Cheksum: a1	00
# Device information
Message[0-7]: 42	52	02	00	06	00	00	00
Message:[8-15]: 04	00
Cheksum: a0	00
# Auto transmit
Message[0-7]: 42	52	10	00	2a	0a	00	00
Message[8-15]: 01	01	64	00	10	04	bc	02
Message[16-23]: e2	04	c8	00	2c	01	05	14
Cheksum: 04	04

```

## We can not control `set_transducer`

#### What we can do

- We can send a protocol version message (ID: 5) and receive the protocol version from the device.
- We can send a device information message (ID: 4) and receive the device information from the device.
- We can send a transducer message (Id: 2601).

#### What we can not do

- _Either_ we can not send it properly
- _Or_ the device does understand us for some reason.
- We can not make the transducer head turn in the intended direction.
- When we request a data device responds as with `NACK` message.

#### Detailed packages

Here is the hex of the messages that we sent:

```hex
# Protocol version
Message[0-7]: 42	52	02	00	06	00	00	00	
Message[8-15]: 05	00	
Cheksum: a1	00
# Device information
Message[0-7]: 42	52	02	00	06	00	00	00	
Message:[8-15]: 04	00	
Cheksum: a0	00
# Transducer
Message[0-7]: 42	52	0e	00	29	0a	00	00	
Message[8-15]: 01	01	c8	00	64	00	10	04	
Message[16-23]: bc	02	e2	04	01	00	
Cheksum: bc	03

```

After requesting the `device_data` (2300) message, the response from Ping360, A `NACK` message.

```auto
Message[0-7]: 42	52	02	00	06	00	00	00	
Message[8-15]: fc	08	
Cheksum: a0	01

```

---

<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 24, 2022, 7:46pm UTC](https://discuss.bluerobotics.com/t/ping360-failed-to-initialize-auto-transmit-mode/11410/2 "2022-01-24T19:46:59Z")

</div>

Hi @incebellipipo,

`auto_transmit` is a part of the protocol specification, but isn’t yet available in Ping360 devices. There’s a new firmware that’s been tested somewhat internally, but it’s not yet public, and there isn’t yet a publicly available firmware updater either.

There was supposed to be a message about that not being available yet in the [ping protocol docs](https://docs.bluerobotics.com/ping-protocol/pingmessage-ping360/), but apparently they haven’t rebuilt properly since that change was put in, so it’s not showing yet.

---

<div class="post-metadata">

### Author: ![incebellipipo](https://sea1.discourse-cdn.com/flex019/user_avatar/discuss.bluerobotics.com/incebellipipo/32/8537_2.png) [@incebellipipo](https://discuss.bluerobotics.com/u/incebellipipo)
#### Post date: [January 24, 2022, 8:27pm UTC](https://discuss.bluerobotics.com/t/ping360-failed-to-initialize-auto-transmit-mode/11410/3 "2022-01-24T20:27:11Z")

</div>

Thank you @EliotBR , that explains why `auto_transmit` is not working.

I updated the first post that I send. I forget to mention that we are getting `NACK` after requesting `device_data` from ping360. How should we approach this problem?

---

<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 24, 2022, 8:42pm UTC](https://discuss.bluerobotics.com/t/ping360-failed-to-initialize-auto-transmit-mode/11410/4 "2022-01-24T20:42:02Z")

</div>

> [@incebellipipo](#):
>
> we are getting `NACK` after requesting `device_data` from ping360. How should we approach this problem?

[`nack`](https://docs.bluerobotics.com/ping-protocol/pingmessage-common/#2-nack) messages have a `nack_message` field, which should indicate the cause of the nack. What message are you receiving?

---

<div class="post-metadata">

### Author: ![incebellipipo](https://sea1.discourse-cdn.com/flex019/user_avatar/discuss.bluerobotics.com/incebellipipo/32/8537_2.png) [@incebellipipo](https://discuss.bluerobotics.com/u/incebellipipo)
#### Post date: [January 24, 2022, 8:43pm UTC](https://discuss.bluerobotics.com/t/ping360-failed-to-initialize-auto-transmit-mode/11410/5 "2022-01-24T20:43:15Z")

</div>

That’s the message that we are receiving.

> [@incebellipipo](#):
>
> After requesting the `device_data` (2300) message, the response from Ping360, A `NACK` message.
> 
> ```auto
> Message[0-7]: 42	52	02	00	06	00	00	00	
> Message[8-15]: fc	08	
> Cheksum: a0	01
> 
> ```

---

<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 24, 2022, 9:09pm UTC](https://discuss.bluerobotics.com/t/ping360-failed-to-initialize-auto-transmit-mode/11410/6 "2022-01-24T21:09:40Z")

</div>

Parsing that, I get

```auto
--------------------------------------------------
ID: 6 - general_request
Header: start_1: 66 start_2: 82 payload_length: 2 message_id: 6 src_device_id: 0 dst_device_id: 0
Payload:
  - requested_id: 2300
Checksum: 416 check: 416 pass: True

```

→ That’s not a `nack`, it’s a [`general_request`](https://docs.bluerobotics.com/ping-protocol/pingmessage-common/#6-general_request) message asking for a 2300 (`device_data`) message, so presumably that’s the message you sent, not the response from the Ping360 🙂

---

<div class="post-metadata">

### Author: ![incebellipipo](https://sea1.discourse-cdn.com/flex019/user_avatar/discuss.bluerobotics.com/incebellipipo/32/8537_2.png) [@incebellipipo](https://discuss.bluerobotics.com/u/incebellipipo)
#### Post date: [January 24, 2022, 9:28pm UTC](https://discuss.bluerobotics.com/t/ping360-failed-to-initialize-auto-transmit-mode/11410/7 "2022-01-24T21:28:45Z")

</div>

Hmm, very interesting. Very much so much interesting.

Because the message I’m sending is the message below:

> [@incebellipipo](#):
>
> ```auto
> # Transducer
> Message[0-7]: 42	52	0e	00	29	0a	00	00	
> Message[8-15]: 01	01	c8	00	64	00	10	04	
> Message[16-23]: bc	02	e2	04	01	00	
> Cheksum: bc	03
> 
> ```

I’ll continue investigating. I’ll be updating the thread going forward.

---

<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 24, 2022, 9:31pm UTC](https://discuss.bluerobotics.com/t/ping360-failed-to-initialize-auto-transmit-mode/11410/8 "2022-01-24T21:31:45Z")

</div>

How are you determining what you’ve sent vs what you’ve received? That parses to

```auto
--------------------------------------------------
ID: 2601 - transducer
Header: start_1: 66 start_2: 82 payload_length: 14 message_id: 2601 src_device_id: 0 dst_device_id: 0
Payload:
  - mode: 1
  - gain_setting: 1
  - angle: 200
  - transmit_duration: 100
  - sample_period: 1040
  - transmit_frequency: 700
  - number_of_samples: 1250
  - transmit: 1
  - reserved: 0
Checksum: 956 check: 956 pass: True

```

~~which is definitely the response from the device~~ ← I misunderstood, so that is incorrect - my apologies.

---

<div class="post-metadata">

### Author: ![incebellipipo](https://sea1.discourse-cdn.com/flex019/user_avatar/discuss.bluerobotics.com/incebellipipo/32/8537_2.png) [@incebellipipo](https://discuss.bluerobotics.com/u/incebellipipo)
#### Post date: [January 24, 2022, 9:42pm UTC](https://discuss.bluerobotics.com/t/ping360-failed-to-initialize-auto-transmit-mode/11410/9 "2022-01-24T21:42:50Z")

</div>

I have breakpoints in the code. That’s how I see what I’m receiving and what I’m sending.

I’m using a branch that is not yet merged to master. Which has an open pull request on it. [Add ping360 device generation by patrickelectric · Pull Request #38 · bluerobotics/ping-cpp · GitHub](https://github.com/bluerobotics/ping-cpp/pull/38)

I’m using `Ping360::set_transducer` method. When I follow the breakpoints, it leads me to the PingPort::write. [ping-cpp/ping-device.cpp at 6a9db504d82b27ca257170a666562361bdddda19 · patrickelectric/ping-cpp · GitHub](https://github.com/patrickelectric/ping-cpp/blob/6a9db504d82b27ca257170a666562361bdddda19/src/device/ping-device.cpp#L62)

I’m pretty sure that I’m the one who’s sending the message. Definitely, ping360 is not sending that to me.

---

<div class="post-metadata">

### Author: ![incebellipipo](https://sea1.discourse-cdn.com/flex019/user_avatar/discuss.bluerobotics.com/incebellipipo/32/8537_2.png) [@incebellipipo](https://discuss.bluerobotics.com/u/incebellipipo)
#### Post date: [January 24, 2022, 9:49pm UTC](https://discuss.bluerobotics.com/t/ping360-failed-to-initialize-auto-transmit-mode/11410/10 "2022-01-24T21:49:26Z")

</div>

I need to be sure that I’m getting the concept: If I want to get `device_data`, I should send `transducer` right? And then wait for the reply that is `device_data`? Am I mistaken?

> [@EliotBR](#):
>
> I misunderstood, so that is incorrect - my apologies.

No worries;

---

<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 24, 2022, 9:50pm UTC](https://discuss.bluerobotics.com/t/ping360-failed-to-initialize-auto-transmit-mode/11410/11 "2022-01-24T21:50:09Z")

</div>

> [@incebellipipo](#):
>
> I’m pretty sure that I’m the one who’s sending the message. Definitely, ping360 is not sending that to me.

I misunderstood which message it was - I’ve corrected my comment.

It seems like you either aren’t getting a reply from the Ping360, or just aren’t recording it. As I understand it the Ping360 can’t have sent you a request for a 2300 message, so perhaps you’re getting no response from it (or not recording the response), and instead thinking that the next message you sent is what it responded with or something?

* * *

If it’s helpful, I’m using [ping-python](https://github.com/bluerobotics/ping-python) to parse your messages.

```python
from brping import PingParser

parser = PingParser()

def parse(message):
    # convert human-readable hex string into just the data 
    data_string = ''.join(part.split(':')[1].strip()
                          for part in message.split('\n'))
    # parse the data, converting string characters back into the hex bytes
    for i in range(len(data_string), 2):
        result = parser.parse_byte(int(data_string[i:i+2], 16))
    # check if message data was valid
    assert result == p.NEW_MESSAGE, "incomplete/invalid message"
    return parser.rx_msg

# test direct copy of code block
message = '''Message[0-7]: 42	52	02	00	06	00	00	00	
Message[8-15]: fc	08	
Cheksum: a0	01'''

print(parse(message))

```

---

<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 24, 2022, 9:51pm UTC](https://discuss.bluerobotics.com/t/ping360-failed-to-initialize-auto-transmit-mode/11410/12 "2022-01-24T21:51:17Z")

</div>

> [@incebellipipo](#):
>
> If I want to get `device_data` , I should send `transducer` right? And then wait for the reply that is `device_data` ?

That should be correct, yes 🙂

---

<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 27, 2022, 6:40am UTC](https://discuss.bluerobotics.com/t/ping360-failed-to-initialize-auto-transmit-mode/11410/13 "2022-01-27T06:40:23Z")

</div>

5 posts were split to a new topic: [Ping360 not changing angle with ping-cpp](https://discuss.bluerobotics.com/t/ping360-not-changing-angle-with-ping-cpp/11424)

---

<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: [July 22, 2025, 6:06am UTC](https://discuss.bluerobotics.com/t/ping360-failed-to-initialize-auto-transmit-mode/11410/14 "2025-07-22T06:06:57Z")

</div>

Update: [`auto_transmit` is available now](https://discuss.bluerobotics.com/t/ping360-firmware-update/21023) 🙂
