diff --git a/core/services/ardupilot_manager/ArduPilotManager.py b/core/services/ardupilot_manager/ArduPilotManager.py index 7ad40dbf06..9f946abdee 100644 --- a/core/services/ardupilot_manager/ArduPilotManager.py +++ b/core/services/ardupilot_manager/ArduPilotManager.py @@ -187,6 +187,12 @@ async def start_linux_board(self, board: LinuxFlightController) -> None: pathlib.Path("/root/blueos-files/ardupilot-manager/default/ardupilot_navigator"), board, ) + # TODO: enable once available at ardupilot manifest + # elif board.platform == Platform.Navigator64: + # self.firmware_manager.install_firmware_from_file( + # pathlib.Path("/root/blueos-files/ardupilot-manager/default/ardupilot_navigator64"), + # board, + # ) else: raise NoDefaultFirmwareAvailable( f"No firmware installed for '{board.platform}' and no default firmware available. Please install the firmware manually." diff --git a/core/services/ardupilot_manager/flight_controller_detector/linux/navigator.py b/core/services/ardupilot_manager/flight_controller_detector/linux/navigator.py index 0ebf9da4e4..39781769f9 100644 --- a/core/services/ardupilot_manager/flight_controller_detector/linux/navigator.py +++ b/core/services/ardupilot_manager/flight_controller_detector/linux/navigator.py @@ -1,3 +1,4 @@ +import platform from typing import List from commonwealth.utils.commands import load_file @@ -7,9 +8,19 @@ class Navigator(LinuxFlightController): - name = "Navigator" manufacturer = "Blue Robotics" - platform = Platform.Navigator + + @property + def name(self) -> str: + if platform.machine() == "aarch64": + return "Navigator64" + return "Navigator" + + @property + def platform(self) -> Platform: + if platform.machine() == "aarch64": + return Platform.Navigator64 + return Platform.Navigator def is_pi5(self) -> bool: with open("/proc/cpuinfo", "r", encoding="utf-8") as f: diff --git a/core/services/ardupilot_manager/setup.py b/core/services/ardupilot_manager/setup.py index d4ebcb7b08..221cc84fcf 100644 --- a/core/services/ardupilot_manager/setup.py +++ b/core/services/ardupilot_manager/setup.py @@ -26,6 +26,11 @@ "ardupilot_navigator", "https://firmware.ardupilot.org/Sub/stable-4.1.2/navigator/ardusub", ), + # StaticFile( + # defaults_folder, + # "ardupilot_navigator", + # "https://firmware.ardupilot.org/Sub/stable-4.1.2/navigator64/ardusub", + # ), StaticFile(defaults_folder, "ardupilot_pixhawk1", "https://firmware.ardupilot.org/Sub/latest/Pixhawk1/ardusub.apj"), StaticFile(defaults_folder, "ardupilot_pixhawk4", "https://firmware.ardupilot.org/Sub/latest/Pixhawk4/ardusub.apj"), ] diff --git a/core/services/ardupilot_manager/typedefs.py b/core/services/ardupilot_manager/typedefs.py index 27239ef2f0..d6ac002e91 100644 --- a/core/services/ardupilot_manager/typedefs.py +++ b/core/services/ardupilot_manager/typedefs.py @@ -110,6 +110,7 @@ class Platform(str, Enum): CubeOrange = "CubeOrange" GenericSerial = "GenericSerial" Navigator = "navigator" + Navigator64 = "navigator64" Argonot = "argonot" SITL = get_sitl_platform_name(machine()) @@ -123,6 +124,7 @@ def type(self) -> PlatformType: Platform.CubeOrange: PlatformType.Serial, Platform.GenericSerial: PlatformType.Serial, Platform.Navigator: PlatformType.Linux, + Platform.Navigator64: PlatformType.Linux, Platform.Argonot: PlatformType.Linux, Platform.SITL: PlatformType.SITL, }