# Ping1D Firmware

**URL:** <https://discuss.bluerobotics.com/t/ping1d-firmware/21511>\
**Category:** Ping Sonar Devices\
**Created:** [September 3, 2025, 5:30am UTC](https://discuss.bluerobotics.com/t/ping1d-firmware/21511 "2025-09-03T05:30:17Z")\
**Posts on this page:** 5\
**Page:** 1

<div class="post-metadata">

**Author:** ![psupine](https://sea1.discourse-cdn.com/flex019/user_avatar/discuss.bluerobotics.com/psupine/32/16137_2.png) [@psupine](https://discuss.bluerobotics.com/u/psupine)\
**Post date:** [September 3, 2025, 5:30am UTC](https://discuss.bluerobotics.com/t/ping1d-firmware/21511/1 "2025-09-03T05:30:17Z")

</div>

I’m reading back firmware version 3.28 from my Ping1D.

The current firmware version available is 3.29, but I cannot find any description of what has changed between these two versions and hence whether I need to update to the latest version.

I also can’t find any description of the functional difference between the Ping1D and the Ping2 other than the statement that the Ping2 is “more capable”. In what way is it more capable?

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:** [September 3, 2025, 9:19pm UTC](https://discuss.bluerobotics.com/t/ping1d-firmware/21511/2 "2025-09-03T21:19:41Z")

</div>

Hi @psupine,

Apologies - there have definitely been some limitations to our communication around these topics, including some inconsistency around our own terminology.

> [@psupine](#):
>
> I cannot find any description of what has changed between [3.28 and 3.29 firmware versions]

From a previous response:

> [@Firmware Updates to Ping Sonar](https://discuss.bluerobotics.com/t/firmware-updates-to-ping-sonar/14671/2):
>
> [3.29] fixes an initialisation bug that was causing excess current draw when the device boots. If you happen to have a Ping Sonar connected via a Navigator’s serial port then that bug can cause issues when trying to reboot the Raspberry Pi.

Come to think of it, that may help to reduce some of [your recent power supply concerns](https://discuss.bluerobotics.com/t/ping-sonar-serial-link-specs/21480/4)…

> [@psupine](#):
>
> I also can’t find any description of the functional difference between the Ping1D and the Ping2 other than the statement that the Ping2 is “more capable”. In what way is it more capable?

To clarify terms here:

- [Ping1D](https://docs.bluerobotics.com/ping-protocol/pingmessage-ping1d/) is a message set in the [ping protocol](https://docs.bluerobotics.com/ping-protocol/), intended for 1-dimensional sonar devices (e.g. with a single transducer, currently expected to be echosounders). It can be relevant to multiple different devices, as long as they support the specified functionality
- “Ping2” was a name we (briefly) called a hardware revision of our Ping Sonar device, before deciding it was more confusing than helpful
  - This is admittedly made extra confusing by the firmware version naming, which we’ve intended to change but haven’t yet completed, partially because doing so would also require updating Ping Viewer’s automatic firmware finding

From the revision history (in the Technical Details section of the [Ping Sonar](https://bluerobotics.com/store/sonars/echosounders/ping-sonar-r2-rp/) product page), the primary user-related changes are:

> [@Ping Sonar hardware update changes](#):
>
> - Changed to narrower, 25° beamwidth
> - Increased typical usable range to 100 meters [from 50]

---

<div class="post-metadata">

**Author:** ![psupine](https://sea1.discourse-cdn.com/flex019/user_avatar/discuss.bluerobotics.com/psupine/32/16137_2.png) [@psupine](https://discuss.bluerobotics.com/u/psupine)\
**Post date:** [September 3, 2025, 10:07pm UTC](https://discuss.bluerobotics.com/t/ping1d-firmware/21511/3 "2025-09-03T22:07:59Z")

</div>

Hi @Eliot

> [@Firmware Updates to Ping Sonar](https://discuss.bluerobotics.com/t/firmware-updates-to-ping-sonar/14671/2):
>
> [3.29] fixes an initialisation bug that was causing excess current draw

Ah. Definitely worth trying 3.29 then. I have now managed to avoid the rebooting problem, but the current slamming is still ugly.

–

I knew the more recent version of Ping Sonar changed the transducer to one with a narrower cone, and the FW rev numbering of “Ping2” (from the GIT pages) would seem to indicate a complete firmware rewrite. Are there are no other h/w changes that should matter to me?

The reason I’m asking these particular questions is that yesterday I was writing the discovery code where I read the protocol, device id, device version and firmware versions. But I don’t have any idea of the range of devices and versions that I could expect to support. So far it doesn’t matter because I have (N=1) devices and supporting them all is rather trivial.

Is the most recent protocol still 1.0.0 ? As far as writing the driver, can I just ignore the device and firmware version ? Can I assume that protocol changes will retain backward compatibility?

---

<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:** [September 10, 2025, 9:45pm UTC](https://discuss.bluerobotics.com/t/ping1d-firmware/21511/4 "2025-09-10T21:45:47Z")

</div>

> [@psupine](#):
>
> the FW rev numbering of “Ping2” (from the GIT pages) would seem to indicate a complete firmware rewrite. Are there are no other h/w changes that should matter to me?

Unfortunately it was just a flawed renaming - both iterations use the same electronics, and I believe the only meaningful change to the firmware is enabling the longer scanning distance (which I’m not convinced should be hardcoded to start with, but the protocol doesn’t currently support changing it, so we have separate releases for now).

> [@psupine](#):
>
> I don’t have any idea of the range of devices and versions that I could expect to support.

There’s no meaningful limit on this, as external companies could introduce compatible but technically distinct devices, with their own firmware versions.

As something of a side note, the protocol mentions a configurable device ID (for differentiating instances of the same device type on a network), but [that hasn’t been implemented in the existing Ping Sonar firmware](https://github.com/bluerobotics/ping-firmware/issues/32).

> [@psupine](#):
>
> As far as writing the driver, can I just ignore the device and firmware version ?

The device type is currently the primary indicator of which message set(s) a given device is expected to support. That said, if you know you’re only connecting echosounders then yes, you could currently ignore both the device type and firmware version, although that’s not guaranteed to continue working in the future (e.g. if new features get released, like the [`auto_transmit`](https://docs.bluerobotics.com/ping-protocol/pingmessage-ping360/#2602-auto_transmit) functionality that was added to the ping360 message set, and/or if there’s a device introduced that doesn’t support some existing features (perhaps if new features can replace them)).

The open firmware introduces some exciting possibilities around [extra, optional capabilities](https://github.com/bluerobotics/ping-protocol/issues/219), but there isn’t yet a dedicated mechanism for supporting that, short of trying messages and seeing which ones get affirmative responses.

There could potentially be some convenience to knowing which features a given firmware version supports, without needing to query them. More generally I’m hoping (and actively pushing for) [a cleanup of the protocol](https://github.com/bluerobotics/ping-protocol/issues/220) to better support different capabilities between firmware instances, which could conceivably include a new mechanism/message for requesting the messages the firmware supports…

If there ends up being an expectation that the interfacing code knows about feature support for a given device’s firmware version then your driver may have issues supporting that device.

---

<div class="post-metadata">

**Author:** ![psupine](https://sea1.discourse-cdn.com/flex019/user_avatar/discuss.bluerobotics.com/psupine/32/16137_2.png) [@psupine](https://discuss.bluerobotics.com/u/psupine)\
**Post date:** [September 10, 2025, 10:54pm UTC](https://discuss.bluerobotics.com/t/ping1d-firmware/21511/5 "2025-09-10T22:54:42Z")

</div>

Hi @EliotBR.

Thanks for providing all that extra background.

It looks like the overall message is that it’s a bit of a mess at the moment and that I shouldn’t fret too hard about solving the general case until it’s cleaned up.

I’m somewhat interested in the OSS possibilities of the Pinger hardware and am happy to contribute to that effort at some point. I still have a million coding tasks of my own to work through. \<\< sigh \>\>

> [@EliotBR](#):
>
> As something of a side note, the protocol mentions a configurable device ID (for differentiating instances of the same device type on a network), but [that hasn’t been implemented in the existing Ping Sonar firmware](https://github.com/bluerobotics/ping-firmware/issues/32).

I’m not sure how this would work from a cold start. Suppose that I have 2 Ping1ds on the same bus, both of which think they are device 0. Somehow I have to address one of them to be able to tell it to be device 1. How can I do this?

One option would be to address the unique h/w identifier (UDID), but you’d either have to know it in advance or poke at (part of) it. That would require some kind of collision detection but I’m not sure how that’d work. Pre-reading the UDID for each device plugged in one at a time is the only way I can see this working. The device\_id is then assigned as a short handle by addressing the UDID when everything is plugged in together.

This is another topic for another day. (Edit: I’ve got a protocol idea for this now that doesn’t require pre-read)
