ZealotH743 Board name truncated in GCS messages

When I connect to my ZealotH743 via either QGroundControl or Mission Planner, the board name is truncated in the initial status messages that are displayed when the board first connects. Instead of “QioTekZealotH743”, I only see “QioTekZealotH” - since it happens in both GCS I think maybe it’s being truncated on the FC. I know they only have an “F427”, and “H743” now, but assuming there are other processors in the future, (an “F405”?) this could be confusing.

Screen Shot 2022-06-11 at 4.17.02 PM

I tried to find the source code for this, but everything is super abstracted, so I can’t quite track it down. The GCS banner messages don’t appear to be limited in string/buffer length to the extent that it would truncate like that.

2 Likes

It’s also a really strange value to truncate to - 13 characters?

1 Like

I’m sure there’s an easy answer to this, and I’m just not finding it. But it has me very curious, and I stumbled on Tools/scripts/firmware_version_decoder.py. It doesn’t really lend much of a clue, but it was an interesting exercise.

This output is from a slightly stale download and build of master:

~/ardupilot$ ./Tools/scripts/firmware_version_decoder.py -f build/QioTekZealotH743/bin/arduplane

FWVersion:
    header:
        magic: apfwver
        checksum: 0xfb
        version: 2.0
        pointer_size: 4
    firmware:
        string: ArduPlane V4.3.0dev (46342900)
        vehicle: ArduPlane
        board: CHIBIOS
        board subtype: CHIBIOS_GENERIC
        hash: 46342900
        hash integer: 0x46342900
        version: 4.3.0
        type: Dev
    os:
        name:
        hash:
        software_version: 0/0/0
    middleware:
        name:
        hash: ArduPlane V4.3.0dev

I’m sure it’s a generic piece of code that just outputs the board name at startup. I’d be looking in the ArduPilot core initialization code (if I knew where that was).

1 Like

It’s more likely in the MAVLink/GCS code - the banner that is sent upon a new connection. I did look there, but the abstraction is a bit deeper than my dive took me.

ardupilot/GCS_Common.cpp at master · ArduPilot/ardupilot (github.com)

Anyway, I’m not much help here, so I’ll let the experts chime in. @hendjosh, any chance you can help?

1 Like

I think it might be Util.cpp. There is a function get_system_id() that hard codes taking the first 13 characters from the CHIBIOS_SHORT_BOARD_NAME, to “display system identifer - board type and serial number”.
There is also a function get_system_id_unformatted() that returns only the first 12 characters (hardcoded) - so this would probably only return “QioTekZealot”.

1 Like

Yeah there is a limit on board name length when it comes to display in MP.

I forget where it comes from though an ardupilot thing or MP thing.

1 Like

As I mentioned in my original post, this happens in QGroundControl also. But it begs the questions:

  1. Why truncate it? or
  2. Why is it possible to have a 16 character board name?
1 Like

Code is here:

2 Likes

@timtuxworth, see PR:

HAL_ChibiOS: shorten QioTek board names by yuri-rage · Pull Request #21701 · ArduPilot/ardupilot (github.com)

image

QioTek is very insistent that their registered marks for this board include the full name of their company and the full name of the board. This likely affects other board makers who also have names > 12 or 13 characters.

Given recent discussions, they are looking forward to the changes that were discussed in the DevCall a month or so ago to surface the full board name in MavLink messages to the GCS.

Reworking the PR to apply more broadly. Looks like it will work just fine!

image

1 Like

This is now in 4.3.0 stable - which I just installed on my Zealot H743. The full board name is now displayed. It looks great!

1 Like