diff --git a/docs/ko/SUMMARY.md b/docs/ko/SUMMARY.md
index 880c6e7b00..fbbb55cef3 100644
--- a/docs/ko/SUMMARY.md
+++ b/docs/ko/SUMMARY.md
@@ -386,6 +386,7 @@
- [Peripherals](peripherals/index.md)
- [ADSB/FLARM/UTM (Traffic Avoidance)](peripherals/adsb_flarm.md)
+ - [On-Screen Display (OSD)](peripherals/osd.md)
- [낙하산](peripherals/parachute.md)
- [Remote ID](peripherals/remote_id.md)
@@ -492,6 +493,7 @@
- [Gazebo Models Repository](sim_gazebo_gz/gazebo_models.md)
- [Multi-Vehicle Sim](sim_gazebo_gz/multi_vehicle_simulation.md)
- [SIH Simulation](sim_sih/index.md)
+ - [Hawkeye Visualizer](sim_hawkeye/index.md)
- [Gazebo Classic Simulation](sim_gazebo_classic/index.md)
- [Vehicles](sim_gazebo_classic/vehicles.md)
- [Worlds](sim_gazebo_classic/worlds.md)
diff --git a/docs/ko/config/safety.md b/docs/ko/config/safety.md
index 12cbd7fa29..d7276ea8f5 100644
--- a/docs/ko/config/safety.md
+++ b/docs/ko/config/safety.md
@@ -251,6 +251,18 @@ The Traffic Avoidance Failsafe allows PX4 to respond to transponder data (e.g. f
| ---------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------- |
| [NAV_TRAFF_AVOID](../advanced_config/parameter_reference.md#NAV_TRAFF_AVOID) | 비상 안전 장치를 설정합니다 : 비활성화, 경고, 귀환 모드, 착륙 모드. |
+## Remote ID Failsafe
+
+
+
+The Remote ID failsafe is triggered when the [Remote ID (Open Drone ID)](../peripherals/remote_id.md) module is not detected or reports as unhealthy while the vehicle is armed.
+
+The failsafe action and arming behaviour are both configured by the `COM_ARM_ODID` parameter:
+
+| 매개변수 | 설명 |
+| ----------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
+| [COM_ARM_ODID](../advanced_config/parameter_reference.md#COM_ARM_ODID) | Remote ID arming check and in-flight failsafe. `0`: Disabled (default), `1`: Warning only, `2`: Error only (prevents arming), `3`: Return, `4`: Land, `5`: Terminate.
On failsafe:
- `Error`, `Return`, `Land` and `Terminate` prevent arming.
- `Return`, `Land` and `Terminate` start the associated action/mode when airborne. |
+
## Quad-chute Failsafe
Failsafe for when a VTOL vehicle can no longer fly in fixed-wing mode, perhaps due to the failure of a pusher motor, airspeed sensor, or control surface.
@@ -298,6 +310,19 @@ Note that this check is _always enabled on takeoff_, irrespective of the `CBRK_F
The failure detector is active in all vehicle types and modes, except for those where the vehicle is _expected_ to do flips (i.e. [Acro mode (MC)](../flight_modes_mc/acro.md), [Acro mode (FW)](../flight_modes_fw/acro.md), and [Manual (FW)](../flight_modes_fw/manual.md)).
+### Altitude Loss Trigger {#altitude-loss-trigger}
+
+
+
+The failure detector can be configured to trigger if a rotary-wing vehicle loses too much altitude below its commanded setpoint while in an altitude-controlled flight mode (such as [Position mode](../flight_modes_mc/position.md) or [Altitude mode](../flight_modes_mc/altitude.md)).
+
+If the vehicle descends more than [FD_ALT_LOSS](#FD_ALT_LOSS) meters below the setpoint, [flight termination](../advanced_config/flight_termination.md) is triggered, which may deploy a [parachute](../peripherals/parachute.md).
+
+| 매개변수 | 설명 |
+| ----------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
+| [FD_ALT_LOSS](../advanced_config/parameter_reference.md#FD_ALT_LOSS) | Altitude loss threshold (m). Flight termination is triggered when the vehicle drops this far below the setpoint. 비활성화 하려면 0으로 설정하십시오. |
+| [FD_ALT_LOSS_T](../advanced_config/parameter_reference.md#FD_ALT_LOSS_T) | Time (s) the vehicle must remain below the threshold before flight termination is triggered. |
+
### 자세 감지기
기체의 자세가 지정된 시간보다 오랫동안 사전 정의 된 피치 및 롤 값을 초과하는 경우 동작하도록 고장 감지기를 설정할 수 있습니다.
@@ -433,15 +458,15 @@ The [relevant parameters](../advanced_config/parameters.md) are shown below:
These parameters can be used to set conditions that prevent arming.
-| 매개변수 | 설명 |
-| -------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
-| [COM_ARMABLE](../advanced_config/parameter_reference.md#COM_ARMABLE) | Enable arming (at all). `0`: Disabled, `1`: Enabled (default). |
-| [COM_ARM_BAT_MIN](../advanced_config/parameter_reference.md#COM_ARM_BAT_MIN) | Minimum battery level for arming. `0`: Disabled (default). Values: `0`-`0.9`, |
-| [COM_ARM_WO_GPS](../advanced_config/parameter_reference.md#COM_ARM_WO_GPS) | Enable arming without GPS. `0`: Disabled, `1`: Enabled (default). |
-| [COM_ARM_MIS_REQ](../advanced_config/parameter_reference.md#COM_ARM_MIS_REQ) | Require valid mission to arm. `0`: Disabled (default), `1`: Enabled . |
-| [COM_ARM_SDCARD](../advanced_config/parameter_reference.md#COM_ARM_SDCARD) | Require SD card to arm. `0`: Disabled (default), `1`: Warning, `2`: Enabled. |
-| [COM_ARM_AUTH_REQ](../advanced_config/parameter_reference.md#COM_ARM_AUTH_REQ) | Requires arm authorisation from an external (MAVLink) system. Flag to allow arming (at all). `1`: Enabled, `0`: Disabled (default). Associated configuration parameters are prefixed with `COM_ARM_AUTH_`. |
-| [COM_ARM_ODID](../advanced_config/parameter_reference.md#COM_ARM_ODID) | Require healthy Remote ID system to arm. `0`: Disabled (default), `1`: Warning, `2`: Enabled. |
+| 매개변수 | 설명 |
+| -------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
+| [COM_ARMABLE](../advanced_config/parameter_reference.md#COM_ARMABLE) | Enable arming (at all). `0`: Disabled, `1`: Enabled (default). |
+| [COM_ARM_BAT_MIN](../advanced_config/parameter_reference.md#COM_ARM_BAT_MIN) | Minimum battery level for arming. `0`: Disabled (default). Values: `0`-`0.9`, |
+| [COM_ARM_WO_GPS](../advanced_config/parameter_reference.md#COM_ARM_WO_GPS) | Enable arming without GPS. `0`: Disabled, `1`: Enabled (default). |
+| [COM_ARM_MIS_REQ](../advanced_config/parameter_reference.md#COM_ARM_MIS_REQ) | Require valid mission to arm. `0`: Disabled (default), `1`: Enabled . |
+| [COM_ARM_SDCARD](../advanced_config/parameter_reference.md#COM_ARM_SDCARD) | Require SD card to arm. `0`: Disabled (default), `1`: Warning, `2`: Enabled. |
+| [COM_ARM_AUTH_REQ](../advanced_config/parameter_reference.md#COM_ARM_AUTH_REQ) | Requires arm authorisation from an external (MAVLink) system. Flag to allow arming (at all). `1`: Enabled, `0`: Disabled (default). Associated configuration parameters are prefixed with `COM_ARM_AUTH_`. |
+| [COM_ARM_ODID](../advanced_config/parameter_reference.md#COM_ARM_ODID) | Remote ID arming check and in-flight failsafe. `0`: Disabled (default), `1`: Warning only, `2`: Error only, `3`: Return, `4`: Land, `5`: Terminate. See [Remote ID Failsafe](#remote-id-failsafe). |
In addition there are a number of parameters that configure system and sensor limits that make prevent arming if exceeded: [COM_CPU_MAX](../advanced_config/parameter_reference.md#COM_CPU_MAX), [COM_ARM_IMU_ACC](../advanced_config/parameter_reference.md#COM_ARM_IMU_ACC), [COM_ARM_IMU_GYR](../advanced_config/parameter_reference.md#COM_ARM_IMU_GYR), [COM_ARM_MAG_ANG](../advanced_config/parameter_reference.md#COM_ARM_MAG_ANG), [COM_ARM_MAG_STR](../advanced_config/parameter_reference.md#COM_ARM_MAG_STR).
diff --git a/docs/ko/dev_log/logging.md b/docs/ko/dev_log/logging.md
index 527e053184..531a094ecf 100644
--- a/docs/ko/dev_log/logging.md
+++ b/docs/ko/dev_log/logging.md
@@ -83,6 +83,31 @@ sensor_mag 200 1
There are several scripts to analyze and convert logging files in the [pyulog](https://github.com/PX4/pyulog) repository.
+## Log Cleanup
+
+PX4 automatically manages log storage by rotating log files during writing and cleaning up old logs when starting a new log.
+Rotation is **on by default**: when the current file reaches [SDLOG_MAX_SIZE](../advanced_config/parameter_reference.md#SDLOG_MAX_SIZE), the logger closes it and opens a new one, and old `.ulg` files are deleted (oldest first) to keep free space above the threshold set by [SDLOG_ROTATE](../advanced_config/parameter_reference.md#SDLOG_ROTATE).
+
+Three parameters control how much space logs may use:
+
+- [SDLOG_ROTATE](../advanced_config/parameter_reference.md#SDLOG_ROTATE) is the maximum disk usage percentage (default 90).
+ Cleanup prior to logging (see below) ensures at least `(100 - SDLOG_ROTATE)%` of the disk stays free at all times, **even while writing a new log file**.
+ Setting it to `0` disables space-based cleanup entirely; setting it to `100` lets logs fill the disk completely.
+- [SDLOG_MAX_SIZE](../advanced_config/parameter_reference.md#SDLOG_MAX_SIZE) is the maximum size of a single log file in MB
+ (default 1024). It also reserves headroom so that a full new file always fits after cleanup.
+- [SDLOG_DIRS_MAX](../advanced_config/parameter_reference.md#SDLOG_DIRS_MAX) optionally caps the number of log directories kept (default 0, disabled).
+ This runs on top of the space-based cleanup and is mainly useful for capping log usage by count independent of available disk size (e.g. in SITL, where it defaults to `7`).
+
+At log start, the cleanup threshold is `((100 - SDLOG_ROTATE)% of disk) + SDLOG_MAX_SIZE`.
+The oldest logs are deleted until the free space meets this threshold.
+For example, on an 8 GB card with defaults, cleanup keeps at least `820 + 1024 = ~1.8 GB` free at log start,
+so ~6 GB is usable for logs and disk usage never exceeds 90% during writing.
+Small flash targets override `SDLOG_MAX_SIZE` to a smaller value to keep more logs within the available space.
+
+PX4 stores logs in directories named with one of two formats, depending on whether the system has valid time: date directories (such as `2024-01-15` or `2024-01-16`) when it does, and session directories (`sess001`) when it doesn't.
+The cleanup algorithm prioritises deleting logs from whichever format is not currently in use.
+This ensures that stale logs from a different time mode are cleaned up before current logs.
+
## File size limitations
The maximum file size depends on the file system and OS.
diff --git a/docs/ko/dev_setup/dev_env_mac.md b/docs/ko/dev_setup/dev_env_mac.md
index 3df2b7f897..d8381e7417 100644
--- a/docs/ko/dev_setup/dev_env_mac.md
+++ b/docs/ko/dev_setup/dev_env_mac.md
@@ -38,7 +38,7 @@ To build for [other targets](../dev_setup/dev_env.md#supported-targets) you will
4. **Ensure Python 3 is available.** Some PX4 build scripts require `python3` and `pip3` to be in your `PATH`. The Xcode Command Line Tools include Python 3 by default.
- :::tip
+ ::: tip
If you need to install or manage a different Python version, we recommend [pyenv](https://github.com/pyenv/pyenv), which lets you set global and per-directory Python versions.
:::
@@ -59,6 +59,19 @@ To build for [other targets](../dev_setup/dev_env.md#supported-targets) you will
./Tools/setup/macos.sh --sim-tools
```
+ ::: info
+ The setup script creates a Python virtual environment at `.venv` in the repo root and installs all Python dependencies into it. This keeps PX4's Python requirements isolated from your system Python and avoids conflicts with Homebrew's externally-managed Python.
+
+ Activate it before building:
+
+ ```sh
+ source .venv/bin/activate
+ ```
+
+ You'll need to re-run this command in each new terminal session. To activate it automatically when you `cd` into the repo, consider a tool like [direnv](https://direnv.net/) or add the activation to your `~/.zshrc`.
+
+:::
+
This installs:
- **Toolchain packages** from the `osx-cross/arm` and `PX4/px4` Homebrew taps — ARM cross-compiler (`arm-gcc-bin@13`), `cmake`, `ninja`, `ccache`, `fastdds`, `genromfs`, `kconfig-frontends`, and other build tools
diff --git a/docs/ko/flight_controller/gearup_airbrainh743.md b/docs/ko/flight_controller/gearup_airbrainh743.md
index 3367b5eae8..fbcdf35dea 100644
--- a/docs/ko/flight_controller/gearup_airbrainh743.md
+++ b/docs/ko/flight_controller/gearup_airbrainh743.md
@@ -91,6 +91,18 @@ Firmware can be installed in any of the normal ways:
- [Load the firmware](../config/firmware.md) using _QGroundControl_.
미리 빌드된 펌웨어나 사용자 지정 펌웨어를 사용할 수 있습니다.
+### Flash Storage Troubleshooting
+
+The AirBrainH743 uses a 128MB NAND flash (W25N) with a littlefs filesystem for [logging](../dev_log/logging.md).
+If the flash filesystem becomes corrupted, you can reformat it using the [System Console](../debug/system_console.md):
+
+```sh
+mklittlefs /dev/mtd0 /fs/flash
+```
+
+This will erase all data on the flash and create a fresh littlefs filesystem.
+The filesystem is immediately available after the command completes.
+
### 시스템 콘솔
UART1 (ttyS0) is configured for use as the [System Console](../debug/system_console.md).
diff --git a/docs/ko/mavlink/mavlink_profiles.md b/docs/ko/mavlink/mavlink_profiles.md
index c95608ef27..c3ae6c8019 100644
--- a/docs/ko/mavlink/mavlink_profiles.md
+++ b/docs/ko/mavlink/mavlink_profiles.md
@@ -13,7 +13,7 @@ The available profiles (in source-code declaration order) are:
- _Gimbal_ (`MAVLINK_MODE_GIMBAL`): Messages for a gimbal. Note this also enables message forwarding.
- _External Vision_ (`MAVLINK_MODE_EXTVISION`): Messages for offboard vision systems.
- _External Vision Minimal_ (`MAVLINK_MODE_EXTVISIONMIN`): Messages for offboard vision systems on slower links.
-- _OSD_ (`MAVLINK_MODE_OSD`): Set of messages for an OSD system.
+- _OSD_ (`MAVLINK_MODE_OSD`): Set of messages for an [On-Screen Display (OSD)](../peripherals/osd.md#mavlink-osd) system.
- _Magic_ (`MAVLINK_MODE_MAGIC`): No messages streamed by default. Used when configuring streaming dynamically via MAVLink.
- _Custom_ (`MAVLINK_MODE_CUSTOM`): Same as `MAVLINK_MODE_MAGIC`.
- _Config_ (`MAVLINK_MODE_CONFIG`): Set of messages for configuration interface, sent at higher rates. This is used, for example, to send the `MAVLINK_MODE_NORMAL` message set via USB to a GCS.
@@ -29,7 +29,7 @@ The profile defines the _default_ messages and rates.
A connected MAVLink system can still request the streams/rates it wants using [MAV_CMD_SET_MESSAGE_INTERVAL](https://mavlink.io/en/messages/common.html#MAV_CMD_SET_MESSAGE_INTERVAL).
:::
-To find the exact messages in each profile, search for ` configure_streams_to_default` (or the above profile names) in [mavlink_main.cpp](https://github.com/PX4/PX4-Autopilot/blob/main/src/modules/mavlink/mavlink_main.cpp).
+To find the exact messages in each profile, search for `configure_streams_to_default` (or the above profile names) in [mavlink_main.cpp](https://github.com/PX4/PX4-Autopilot/blob/main/src/modules/mavlink/mavlink_main.cpp).
## Assigning Profiles to Ports
diff --git a/docs/ko/middleware/dds_topics.md b/docs/ko/middleware/dds_topics.md
index fafda32692..5c28dce375 100644
--- a/docs/ko/middleware/dds_topics.md
+++ b/docs/ko/middleware/dds_topics.md
@@ -96,210 +96,210 @@ They are not build into the module, and hence are neither published or subscribe
:::details
See messages
-- [EstimatorAidSource3d](../msg_docs/EstimatorAidSource3d.md)
-- [GimbalControls](../msg_docs/GimbalControls.md)
-- [LaunchDetectionStatus](../msg_docs/LaunchDetectionStatus.md)
-- [GpioConfig](../msg_docs/GpioConfig.md)
-- [ParameterResetRequest](../msg_docs/ParameterResetRequest.md)
-- [PwmInput](../msg_docs/PwmInput.md)
-- [DebugValue](../msg_docs/DebugValue.md)
-- [FixedWingLateralStatus](../msg_docs/FixedWingLateralStatus.md)
-- [MavlinkLog](../msg_docs/MavlinkLog.md)
-- [UlogStreamAck](../msg_docs/UlogStreamAck.md)
-- [EventV0](../msg_docs/EventV0.md)
-- [FixedWingRunwayControl](../msg_docs/FixedWingRunwayControl.md)
-- [EscEepromRead](../msg_docs/EscEepromRead.md)
-- [RoverSpeedStatus](../msg_docs/RoverSpeedStatus.md)
-- [PositionControllerStatus](../msg_docs/PositionControllerStatus.md)
-- [DebugArray](../msg_docs/DebugArray.md)
-- [DifferentialPressure](../msg_docs/DifferentialPressure.md)
-- [GimbalDeviceInformation](../msg_docs/GimbalDeviceInformation.md)
-- [FlightPhaseEstimation](../msg_docs/FlightPhaseEstimation.md)
-- [EstimatorEventFlags](../msg_docs/EstimatorEventFlags.md)
-- [GpsDump](../msg_docs/GpsDump.md)
-- [OrbTestLarge](../msg_docs/OrbTestLarge.md)
-- [VehicleImuStatus](../msg_docs/VehicleImuStatus.md)
-- [OpenDroneIdArmStatus](../msg_docs/OpenDroneIdArmStatus.md)
-- [NeuralControl](../msg_docs/NeuralControl.md)
-- [NormalizedUnsignedSetpoint](../msg_docs/NormalizedUnsignedSetpoint.md)
-- [ActuatorArmed](../msg_docs/ActuatorArmed.md)
-- [GainCompression](../msg_docs/GainCompression.md)
-- [GimbalDeviceSetAttitude](../msg_docs/GimbalDeviceSetAttitude.md)
-- [GimbalManagerInformation](../msg_docs/GimbalManagerInformation.md)
-- [EscStatus](../msg_docs/EscStatus.md)
-- [FailureDetectorStatus](../msg_docs/FailureDetectorStatus.md)
-- [HoverThrustEstimate](../msg_docs/HoverThrustEstimate.md)
-- [EstimatorStates](../msg_docs/EstimatorStates.md)
-- [VehicleImu](../msg_docs/VehicleImu.md)
-- [GeofenceResult](../msg_docs/GeofenceResult.md)
-- [VehicleGlobalPositionV0](../msg_docs/VehicleGlobalPositionV0.md)
-- [CanInterfaceStatus](../msg_docs/CanInterfaceStatus.md)
-- [MissionResult](../msg_docs/MissionResult.md)
-- [DistanceSensorModeChangeRequest](../msg_docs/DistanceSensorModeChangeRequest.md)
-- [RangingBeacon](../msg_docs/RangingBeacon.md)
-- [OrbitStatus](../msg_docs/OrbitStatus.md)
-- [MavlinkTunnel](../msg_docs/MavlinkTunnel.md)
-- [CameraCapture](../msg_docs/CameraCapture.md)
-- [RaptorInput](../msg_docs/RaptorInput.md)
-- [VehicleStatusV2](../msg_docs/VehicleStatusV2.md)
-- [ArmingCheckRequestV0](../msg_docs/ArmingCheckRequestV0.md)
-- [VehicleAngularAccelerationSetpoint](../msg_docs/VehicleAngularAccelerationSetpoint.md)
-- [OrbTestMedium](../msg_docs/OrbTestMedium.md)
-- [TiltrotorExtraControls](../msg_docs/TiltrotorExtraControls.md)
-- [UavcanParameterValue](../msg_docs/UavcanParameterValue.md)
-- [Gripper](../msg_docs/Gripper.md)
-- [FollowTarget](../msg_docs/FollowTarget.md)
-- [SensorsStatusImu](../msg_docs/SensorsStatusImu.md)
-- [ConfigOverridesV0](../msg_docs/ConfigOverridesV0.md)
-- [SatelliteInfo](../msg_docs/SatelliteInfo.md)
-- [PowerButtonState](../msg_docs/PowerButtonState.md)
-- [DeviceInformation](../msg_docs/DeviceInformation.md)
-- [ActuatorServosTrim](../msg_docs/ActuatorServosTrim.md)
-- [AirspeedValidatedV0](../msg_docs/AirspeedValidatedV0.md)
-- [RegisterExtComponentRequestV1](../msg_docs/RegisterExtComponentRequestV1.md)
-- [BatteryStatusV0](../msg_docs/BatteryStatusV0.md)
-- [EscEepromWrite](../msg_docs/EscEepromWrite.md)
-- [ActionRequest](../msg_docs/ActionRequest.md)
- [IrlockReport](../msg_docs/IrlockReport.md)
-- [CellularStatus](../msg_docs/CellularStatus.md)
-- [ActuatorOutputs](../msg_docs/ActuatorOutputs.md)
-- [FollowTargetStatus](../msg_docs/FollowTargetStatus.md)
-- [SystemPower](../msg_docs/SystemPower.md)
-- [SensorAccel](../msg_docs/SensorAccel.md)
-- [Vtx](../msg_docs/Vtx.md)
-- [EstimatorInnovations](../msg_docs/EstimatorInnovations.md)
-- [VehicleStatusV1](../msg_docs/VehicleStatusV1.md)
-- [SensorGyroFft](../msg_docs/SensorGyroFft.md)
-- [ParameterUpdate](../msg_docs/ParameterUpdate.md)
-- [Ekf2Timestamps](../msg_docs/Ekf2Timestamps.md)
-- [SensorGnssRelative](../msg_docs/SensorGnssRelative.md)
-- [VehicleLocalPositionSetpoint](../msg_docs/VehicleLocalPositionSetpoint.md)
-- [SensorAirflow](../msg_docs/SensorAirflow.md)
-- [DebugKeyValue](../msg_docs/DebugKeyValue.md)
+- [FailureDetectorStatus](../msg_docs/FailureDetectorStatus.md)
+- [MissionResult](../msg_docs/MissionResult.md)
+- [SensorSelection](../msg_docs/SensorSelection.md)
- [Event](../msg_docs/Event.md)
- [MountOrientation](../msg_docs/MountOrientation.md)
-- [EstimatorFusionControl](../msg_docs/EstimatorFusionControl.md)
-- [VehicleAcceleration](../msg_docs/VehicleAcceleration.md)
-- [EstimatorGpsStatus](../msg_docs/EstimatorGpsStatus.md)
-- [MagnetometerBiasEstimate](../msg_docs/MagnetometerBiasEstimate.md)
-- [LandingTargetInnovations](../msg_docs/LandingTargetInnovations.md)
-- [VehicleOpticalFlowVel](../msg_docs/VehicleOpticalFlowVel.md)
-- [Mission](../msg_docs/Mission.md)
-- [VehicleAirData](../msg_docs/VehicleAirData.md)
-- [SensorBaro](../msg_docs/SensorBaro.md)
-- [RegisterExtComponentReplyV0](../msg_docs/RegisterExtComponentReplyV0.md)
-- [Px4ioStatus](../msg_docs/Px4ioStatus.md)
-- [TecsStatus](../msg_docs/TecsStatus.md)
-- [InternalCombustionEngineControl](../msg_docs/InternalCombustionEngineControl.md)
-- [RcChannels](../msg_docs/RcChannels.md)
-- [DebugVect](../msg_docs/DebugVect.md)
-- [AirspeedWind](../msg_docs/AirspeedWind.md)
-- [QshellRetval](../msg_docs/QshellRetval.md)
-- [SensorUwb](../msg_docs/SensorUwb.md)
-- [HomePositionV0](../msg_docs/HomePositionV0.md)
-- [GimbalManagerSetAttitude](../msg_docs/GimbalManagerSetAttitude.md)
-- [CameraTrigger](../msg_docs/CameraTrigger.md)
-- [PositionSetpoint](../msg_docs/PositionSetpoint.md)
-- [VehicleStatusV0](../msg_docs/VehicleStatusV0.md)
-- [BatteryInfo](../msg_docs/BatteryInfo.md)
-- [FuelTankStatus](../msg_docs/FuelTankStatus.md)
-- [Rpm](../msg_docs/Rpm.md)
-- [RateCtrlStatus](../msg_docs/RateCtrlStatus.md)
-- [ControlAllocatorStatus](../msg_docs/ControlAllocatorStatus.md)
-- [AdcReport](../msg_docs/AdcReport.md)
-- [Cpuload](../msg_docs/Cpuload.md)
-- [FigureEightStatus](../msg_docs/FigureEightStatus.md)
-- [RoverAttitudeStatus](../msg_docs/RoverAttitudeStatus.md)
-- [VehicleConstraints](../msg_docs/VehicleConstraints.md)
-- [SensorGnssStatus](../msg_docs/SensorGnssStatus.md)
-- [RcParameterMap](../msg_docs/RcParameterMap.md)
-- [VehicleStatusV3](../msg_docs/VehicleStatusV3.md)
-- [GpsInjectData](../msg_docs/GpsInjectData.md)
-- [FixedWingLateralGuidanceStatus](../msg_docs/FixedWingLateralGuidanceStatus.md)
-- [ButtonEvent](../msg_docs/ButtonEvent.md)
-- [PpsCapture](../msg_docs/PpsCapture.md)
-- [LoggerStatus](../msg_docs/LoggerStatus.md)
-- [InternalCombustionEngineStatus](../msg_docs/InternalCombustionEngineStatus.md)
-- [ManualControlSwitches](../msg_docs/ManualControlSwitches.md)
-- [TakeoffStatus](../msg_docs/TakeoffStatus.md)
-- [TuneControl](../msg_docs/TuneControl.md)
-- [VelocityLimits](../msg_docs/VelocityLimits.md)
-- [DatamanRequest](../msg_docs/DatamanRequest.md)
-- [HeaterStatus](../msg_docs/HeaterStatus.md)
-- [LogMessage](../msg_docs/LogMessage.md)
-- [SensorMag](../msg_docs/SensorMag.md)
-- [GpioOut](../msg_docs/GpioOut.md)
-- [YawEstimatorStatus](../msg_docs/YawEstimatorStatus.md)
-- [SensorHygrometer](../msg_docs/SensorHygrometer.md)
-- [DronecanNodeStatus](../msg_docs/DronecanNodeStatus.md)
-- [EstimatorSelectorStatus](../msg_docs/EstimatorSelectorStatus.md)
-- [IridiumsbdStatus](../msg_docs/IridiumsbdStatus.md)
-- [PowerMonitor](../msg_docs/PowerMonitor.md)
-- [RegisterExtComponentRequestV0](../msg_docs/RegisterExtComponentRequestV0.md)
-- [VehicleOpticalFlow](../msg_docs/VehicleOpticalFlow.md)
-- [GimbalManagerStatus](../msg_docs/GimbalManagerStatus.md)
-- [EstimatorStatus](../msg_docs/EstimatorStatus.md)
-- [OpenDroneIdOperatorId](../msg_docs/OpenDroneIdOperatorId.md)
-- [RtlTimeEstimate](../msg_docs/RtlTimeEstimate.md)
-- [GpioIn](../msg_docs/GpioIn.md)
-- [ParameterSetValueRequest](../msg_docs/ParameterSetValueRequest.md)
-- [GeneratorStatus](../msg_docs/GeneratorStatus.md)
-- [MagWorkerData](../msg_docs/MagWorkerData.md)
-- [ActuatorControlsStatus](../msg_docs/ActuatorControlsStatus.md)
-- [LedControl](../msg_docs/LedControl.md)
-- [VehicleAngularVelocity](../msg_docs/VehicleAngularVelocity.md)
-- [SensorAccelFifo](../msg_docs/SensorAccelFifo.md)
-- [OpenDroneIdSystem](../msg_docs/OpenDroneIdSystem.md)
-- [SensorGyro](../msg_docs/SensorGyro.md)
-- [NavigatorMissionItem](../msg_docs/NavigatorMissionItem.md)
-- [DatamanResponse](../msg_docs/DatamanResponse.md)
-- [GeofenceStatus](../msg_docs/GeofenceStatus.md)
-- [VehicleLocalPositionV0](../msg_docs/VehicleLocalPositionV0.md)
-- [TrajectorySetpoint6dof](../msg_docs/TrajectorySetpoint6dof.md)
-- [SensorTemp](../msg_docs/SensorTemp.md)
-- [EstimatorBias](../msg_docs/EstimatorBias.md)
-- [OpenDroneIdSelfId](../msg_docs/OpenDroneIdSelfId.md)
-- [SensorsStatus](../msg_docs/SensorsStatus.md)
-- [EstimatorAidSource1d](../msg_docs/EstimatorAidSource1d.md)
-- [RaptorStatus](../msg_docs/RaptorStatus.md)
-- [ParameterSetValueResponse](../msg_docs/ParameterSetValueResponse.md)
-- [RoverRateStatus](../msg_docs/RoverRateStatus.md)
-- [PurePursuitStatus](../msg_docs/PurePursuitStatus.md)
-- [TaskStackInfo](../msg_docs/TaskStackInfo.md)
-- [CameraStatus](../msg_docs/CameraStatus.md)
-- [WheelEncoders](../msg_docs/WheelEncoders.md)
-- [GimbalManagerSetManualControl](../msg_docs/GimbalManagerSetManualControl.md)
-- [UlogStream](../msg_docs/UlogStream.md)
-- [SensorGyroFifo](../msg_docs/SensorGyroFifo.md)
-- [QshellReq](../msg_docs/QshellReq.md)
-- [SensorPreflightMag](../msg_docs/SensorPreflightMag.md)
-- [NavigatorStatus](../msg_docs/NavigatorStatus.md)
-- [LandingTargetPose](../msg_docs/LandingTargetPose.md)
-- [EstimatorSensorBias](../msg_docs/EstimatorSensorBias.md)
-- [SensorSelection](../msg_docs/SensorSelection.md)
-- [VehicleMagnetometer](../msg_docs/VehicleMagnetometer.md)
-- [ActuatorTest](../msg_docs/ActuatorTest.md)
-- [InputRc](../msg_docs/InputRc.md)
-- [Ping](../msg_docs/Ping.md)
-- [Airspeed](../msg_docs/Airspeed.md)
-- [GpioRequest](../msg_docs/GpioRequest.md)
-- [ArmingCheckReplyV0](../msg_docs/ArmingCheckReplyV0.md)
-- [EstimatorAidSource2d](../msg_docs/EstimatorAidSource2d.md)
-- [OrbTest](../msg_docs/OrbTest.md)
-- [RadioStatus](../msg_docs/RadioStatus.md)
-- [PositionControllerLandingStatus](../msg_docs/PositionControllerLandingStatus.md)
-- [EscReport](../msg_docs/EscReport.md)
+- [NeuralControl](../msg_docs/NeuralControl.md)
- [VehicleAttitudeSetpointV0](../msg_docs/VehicleAttitudeSetpointV0.md)
-- [ParameterSetUsedRequest](../msg_docs/ParameterSetUsedRequest.md)
-- [VehicleCommandAckV0](../msg_docs/VehicleCommandAckV0.md)
-- [AutotuneAttitudeControlStatus](../msg_docs/AutotuneAttitudeControlStatus.md)
-- [SensorCorrection](../msg_docs/SensorCorrection.md)
-- [LandingGearWheel](../msg_docs/LandingGearWheel.md)
-- [FollowTargetEstimator](../msg_docs/FollowTargetEstimator.md)
-- [UavcanParameterRequest](../msg_docs/UavcanParameterRequest.md)
-- [VehicleRoi](../msg_docs/VehicleRoi.md)
-- [EstimatorBias3d](../msg_docs/EstimatorBias3d.md)
-- [HealthReport](../msg_docs/HealthReport.md)
+- [DifferentialPressure](../msg_docs/DifferentialPressure.md)
+- [EstimatorGpsStatus](../msg_docs/EstimatorGpsStatus.md)
+- [LedControl](../msg_docs/LedControl.md)
- [RtlStatus](../msg_docs/RtlStatus.md)
+- [Rpm](../msg_docs/Rpm.md)
+- [QshellReq](../msg_docs/QshellReq.md)
+- [ArmingCheckReplyV0](../msg_docs/ArmingCheckReplyV0.md)
+- [OrbTest](../msg_docs/OrbTest.md)
+- [VehicleImuStatus](../msg_docs/VehicleImuStatus.md)
+- [OrbitStatus](../msg_docs/OrbitStatus.md)
+- [BatteryInfo](../msg_docs/BatteryInfo.md)
+- [RegisterExtComponentReplyV0](../msg_docs/RegisterExtComponentReplyV0.md)
+- [HeaterStatus](../msg_docs/HeaterStatus.md)
+- [VehicleAngularVelocity](../msg_docs/VehicleAngularVelocity.md)
+- [DeviceInformation](../msg_docs/DeviceInformation.md)
+- [VehicleLocalPositionV0](../msg_docs/VehicleLocalPositionV0.md)
+- [PowerButtonState](../msg_docs/PowerButtonState.md)
+- [SensorAirflow](../msg_docs/SensorAirflow.md)
+- [TrajectorySetpoint6dof](../msg_docs/TrajectorySetpoint6dof.md)
+- [VehicleStatusV0](../msg_docs/VehicleStatusV0.md)
+- [HealthReport](../msg_docs/HealthReport.md)
+- [FollowTargetEstimator](../msg_docs/FollowTargetEstimator.md)
+- [InternalCombustionEngineControl](../msg_docs/InternalCombustionEngineControl.md)
+- [AirspeedWind](../msg_docs/AirspeedWind.md)
+- [SensorGnssRelative](../msg_docs/SensorGnssRelative.md)
+- [VehicleImu](../msg_docs/VehicleImu.md)
+- [VehicleStatusV3](../msg_docs/VehicleStatusV3.md)
+- [NormalizedUnsignedSetpoint](../msg_docs/NormalizedUnsignedSetpoint.md)
+- [EstimatorSelectorStatus](../msg_docs/EstimatorSelectorStatus.md)
+- [ActuatorTest](../msg_docs/ActuatorTest.md)
+- [CanInterfaceStatus](../msg_docs/CanInterfaceStatus.md)
+- [VehicleOpticalFlowVel](../msg_docs/VehicleOpticalFlowVel.md)
+- [VehicleStatusV1](../msg_docs/VehicleStatusV1.md)
+- [SensorGnssStatus](../msg_docs/SensorGnssStatus.md)
+- [PwmInput](../msg_docs/PwmInput.md)
+- [RcParameterMap](../msg_docs/RcParameterMap.md)
+- [VehicleConstraints](../msg_docs/VehicleConstraints.md)
+- [SystemPower](../msg_docs/SystemPower.md)
+- [Ekf2Timestamps](../msg_docs/Ekf2Timestamps.md)
+- [InternalCombustionEngineStatus](../msg_docs/InternalCombustionEngineStatus.md)
+- [UavcanParameterValue](../msg_docs/UavcanParameterValue.md)
+- [EstimatorEventFlags](../msg_docs/EstimatorEventFlags.md)
+- [DebugVect](../msg_docs/DebugVect.md)
+- [FollowTarget](../msg_docs/FollowTarget.md)
+- [TiltrotorExtraControls](../msg_docs/TiltrotorExtraControls.md)
+- [TuneControl](../msg_docs/TuneControl.md)
+- [PositionSetpoint](../msg_docs/PositionSetpoint.md)
+- [ParameterSetUsedRequest](../msg_docs/ParameterSetUsedRequest.md)
+- [SensorAccelFifo](../msg_docs/SensorAccelFifo.md)
+- [EventV0](../msg_docs/EventV0.md)
+- [AutotuneAttitudeControlStatus](../msg_docs/AutotuneAttitudeControlStatus.md)
+- [SensorTemp](../msg_docs/SensorTemp.md)
+- [OpenDroneIdSelfId](../msg_docs/OpenDroneIdSelfId.md)
+- [FollowTargetStatus](../msg_docs/FollowTargetStatus.md)
+- [VehicleGlobalPositionV0](../msg_docs/VehicleGlobalPositionV0.md)
+- [LandingGearWheel](../msg_docs/LandingGearWheel.md)
+- [SensorsStatus](../msg_docs/SensorsStatus.md)
+- [HomePositionV0](../msg_docs/HomePositionV0.md)
+- [ParameterUpdate](../msg_docs/ParameterUpdate.md)
+- [EstimatorInnovations](../msg_docs/EstimatorInnovations.md)
+- [ButtonEvent](../msg_docs/ButtonEvent.md)
+- [RaptorInput](../msg_docs/RaptorInput.md)
+- [VehicleOpticalFlow](../msg_docs/VehicleOpticalFlow.md)
+- [GpioConfig](../msg_docs/GpioConfig.md)
+- [SensorMag](../msg_docs/SensorMag.md)
+- [LogMessage](../msg_docs/LogMessage.md)
+- [GeofenceResult](../msg_docs/GeofenceResult.md)
+- [LoggerStatus](../msg_docs/LoggerStatus.md)
+- [RcChannels](../msg_docs/RcChannels.md)
+- [MagWorkerData](../msg_docs/MagWorkerData.md)
+- [IridiumsbdStatus](../msg_docs/IridiumsbdStatus.md)
+- [SensorGyroFifo](../msg_docs/SensorGyroFifo.md)
+- [GeofenceStatus](../msg_docs/GeofenceStatus.md)
+- [UlogStreamAck](../msg_docs/UlogStreamAck.md)
+- [Airspeed](../msg_docs/Airspeed.md)
+- [ActuatorArmed](../msg_docs/ActuatorArmed.md)
+- [ParameterSetValueResponse](../msg_docs/ParameterSetValueResponse.md)
+- [SensorPreflightMag](../msg_docs/SensorPreflightMag.md)
+- [GimbalManagerStatus](../msg_docs/GimbalManagerStatus.md)
+- [GimbalDeviceSetAttitude](../msg_docs/GimbalDeviceSetAttitude.md)
+- [GimbalManagerInformation](../msg_docs/GimbalManagerInformation.md)
+- [EstimatorBias](../msg_docs/EstimatorBias.md)
+- [TecsStatus](../msg_docs/TecsStatus.md)
+- [GimbalControls](../msg_docs/GimbalControls.md)
+- [Mission](../msg_docs/Mission.md)
+- [GainCompression](../msg_docs/GainCompression.md)
+- [ConfigOverridesV0](../msg_docs/ConfigOverridesV0.md)
+- [Ping](../msg_docs/Ping.md)
+- [ActuatorControlsStatus](../msg_docs/ActuatorControlsStatus.md)
+- [CellularStatus](../msg_docs/CellularStatus.md)
+- [DronecanNodeStatus](../msg_docs/DronecanNodeStatus.md)
+- [EscEepromWrite](../msg_docs/EscEepromWrite.md)
+- [MagnetometerBiasEstimate](../msg_docs/MagnetometerBiasEstimate.md)
+- [FixedWingLateralGuidanceStatus](../msg_docs/FixedWingLateralGuidanceStatus.md)
+- [OrbTestMedium](../msg_docs/OrbTestMedium.md)
+- [PositionControllerStatus](../msg_docs/PositionControllerStatus.md)
+- [EscReport](../msg_docs/EscReport.md)
+- [SensorGyro](../msg_docs/SensorGyro.md)
+- [DatamanRequest](../msg_docs/DatamanRequest.md)
+- [FixedWingLateralStatus](../msg_docs/FixedWingLateralStatus.md)
+- [GeneratorStatus](../msg_docs/GeneratorStatus.md)
+- [SensorAccel](../msg_docs/SensorAccel.md)
+- [RangingBeacon](../msg_docs/RangingBeacon.md)
+- [RegisterExtComponentRequestV1](../msg_docs/RegisterExtComponentRequestV1.md)
+- [GpsDump](../msg_docs/GpsDump.md)
+- [GimbalManagerSetManualControl](../msg_docs/GimbalManagerSetManualControl.md)
+- [Vtx](../msg_docs/Vtx.md)
+- [VehicleStatusV2](../msg_docs/VehicleStatusV2.md)
+- [InputRc](../msg_docs/InputRc.md)
+- [DebugKeyValue](../msg_docs/DebugKeyValue.md)
+- [VehicleMagnetometer](../msg_docs/VehicleMagnetometer.md)
+- [OpenDroneIdSystem](../msg_docs/OpenDroneIdSystem.md)
+- [RoverAttitudeStatus](../msg_docs/RoverAttitudeStatus.md)
+- [GpsInjectData](../msg_docs/GpsInjectData.md)
+- [TaskStackInfo](../msg_docs/TaskStackInfo.md)
+- [FixedWingRunwayControl](../msg_docs/FixedWingRunwayControl.md)
+- [SensorsStatusImu](../msg_docs/SensorsStatusImu.md)
+- [VehicleAirData](../msg_docs/VehicleAirData.md)
+- [PpsCapture](../msg_docs/PpsCapture.md)
+- [CameraStatus](../msg_docs/CameraStatus.md)
+- [SensorGyroFft](../msg_docs/SensorGyroFft.md)
+- [ParameterResetRequest](../msg_docs/ParameterResetRequest.md)
+- [EstimatorBias3d](../msg_docs/EstimatorBias3d.md)
+- [PowerMonitor](../msg_docs/PowerMonitor.md)
+- [GimbalManagerSetAttitude](../msg_docs/GimbalManagerSetAttitude.md)
+- [EstimatorStates](../msg_docs/EstimatorStates.md)
+- [FlightPhaseEstimation](../msg_docs/FlightPhaseEstimation.md)
+- [SensorUwb](../msg_docs/SensorUwb.md)
+- [EscStatus](../msg_docs/EscStatus.md)
+- [RegisterExtComponentRequestV0](../msg_docs/RegisterExtComponentRequestV0.md)
+- [TakeoffStatus](../msg_docs/TakeoffStatus.md)
+- [EstimatorAidSource1d](../msg_docs/EstimatorAidSource1d.md)
+- [UavcanParameterRequest](../msg_docs/UavcanParameterRequest.md)
+- [EstimatorSensorBias](../msg_docs/EstimatorSensorBias.md)
+- [SatelliteInfo](../msg_docs/SatelliteInfo.md)
+- [MavlinkLog](../msg_docs/MavlinkLog.md)
+- [VehicleCommandAckV0](../msg_docs/VehicleCommandAckV0.md)
+- [VehicleAcceleration](../msg_docs/VehicleAcceleration.md)
+- [BatteryStatusV0](../msg_docs/BatteryStatusV0.md)
+- [CameraTrigger](../msg_docs/CameraTrigger.md)
+- [ActuatorOutputs](../msg_docs/ActuatorOutputs.md)
+- [EstimatorAidSource2d](../msg_docs/EstimatorAidSource2d.md)
+- [EstimatorFusionControl](../msg_docs/EstimatorFusionControl.md)
+- [ActionRequest](../msg_docs/ActionRequest.md)
+- [DebugArray](../msg_docs/DebugArray.md)
+- [AirspeedValidatedV0](../msg_docs/AirspeedValidatedV0.md)
+- [RtlTimeEstimate](../msg_docs/RtlTimeEstimate.md)
+- [DebugValue](../msg_docs/DebugValue.md)
+- [NavigatorMissionItem](../msg_docs/NavigatorMissionItem.md)
+- [ArmingCheckRequestV0](../msg_docs/ArmingCheckRequestV0.md)
+- [DistanceSensorModeChangeRequest](../msg_docs/DistanceSensorModeChangeRequest.md)
+- [FuelTankStatus](../msg_docs/FuelTankStatus.md)
+- [PurePursuitStatus](../msg_docs/PurePursuitStatus.md)
+- [EscEepromRead](../msg_docs/EscEepromRead.md)
+- [UlogStream](../msg_docs/UlogStream.md)
+- [VehicleAngularAccelerationSetpoint](../msg_docs/VehicleAngularAccelerationSetpoint.md)
+- [CameraCapture](../msg_docs/CameraCapture.md)
+- [NavigatorStatus](../msg_docs/NavigatorStatus.md)
+- [RoverRateStatus](../msg_docs/RoverRateStatus.md)
+- [DatamanResponse](../msg_docs/DatamanResponse.md)
+- [PositionControllerLandingStatus](../msg_docs/PositionControllerLandingStatus.md)
+- [WheelEncoders](../msg_docs/WheelEncoders.md)
+- [FigureEightStatus](../msg_docs/FigureEightStatus.md)
+- [GpioOut](../msg_docs/GpioOut.md)
+- [RateCtrlStatus](../msg_docs/RateCtrlStatus.md)
+- [SensorHygrometer](../msg_docs/SensorHygrometer.md)
+- [RaptorStatus](../msg_docs/RaptorStatus.md)
+- [Px4ioStatus](../msg_docs/Px4ioStatus.md)
+- [VehicleLocalPositionSetpoint](../msg_docs/VehicleLocalPositionSetpoint.md)
+- [RadioStatus](../msg_docs/RadioStatus.md)
+- [SensorBaro](../msg_docs/SensorBaro.md)
+- [YawEstimatorStatus](../msg_docs/YawEstimatorStatus.md)
+- [SensorCorrection](../msg_docs/SensorCorrection.md)
+- [Gripper](../msg_docs/Gripper.md)
+- [LandingTargetPose](../msg_docs/LandingTargetPose.md)
+- [EstimatorStatus](../msg_docs/EstimatorStatus.md)
+- [GpioRequest](../msg_docs/GpioRequest.md)
+- [QshellRetval](../msg_docs/QshellRetval.md)
+- [OrbTestLarge](../msg_docs/OrbTestLarge.md)
+- [ActuatorServosTrim](../msg_docs/ActuatorServosTrim.md)
+- [VehicleRoi](../msg_docs/VehicleRoi.md)
+- [GpioIn](../msg_docs/GpioIn.md)
+- [HoverThrustEstimate](../msg_docs/HoverThrustEstimate.md)
+- [RoverSpeedStatus](../msg_docs/RoverSpeedStatus.md)
+- [LaunchDetectionStatus](../msg_docs/LaunchDetectionStatus.md)
+- [ParameterSetValueRequest](../msg_docs/ParameterSetValueRequest.md)
+- [OpenDroneIdOperatorId](../msg_docs/OpenDroneIdOperatorId.md)
+- [Cpuload](../msg_docs/Cpuload.md)
+- [ControlAllocatorStatus](../msg_docs/ControlAllocatorStatus.md)
+- [OpenDroneIdArmStatus](../msg_docs/OpenDroneIdArmStatus.md)
+- [LandingTargetInnovations](../msg_docs/LandingTargetInnovations.md)
+- [EstimatorAidSource3d](../msg_docs/EstimatorAidSource3d.md)
+- [VelocityLimits](../msg_docs/VelocityLimits.md)
+- [AdcReport](../msg_docs/AdcReport.md)
+- [GimbalDeviceInformation](../msg_docs/GimbalDeviceInformation.md)
+- [MavlinkTunnel](../msg_docs/MavlinkTunnel.md)
+- [ManualControlSwitches](../msg_docs/ManualControlSwitches.md)
:::
diff --git a/docs/ko/middleware/uxrce_dds.md b/docs/ko/middleware/uxrce_dds.md
index de8ff5ee85..bd0ad66d0c 100644
--- a/docs/ko/middleware/uxrce_dds.md
+++ b/docs/ko/middleware/uxrce_dds.md
@@ -32,6 +32,11 @@ The agent itself has no dependency on client-side code and can be built and/or i
Code that wants to subscribe/publish to PX4 does have a dependency on client-side code; it requires uORB message definitions that match those used to create the PX4 uXRCE-DDS client so that it can interpret the messages.
+- For _versioned_ PX4 messages, the [PX4 ROS 2 Message Transition Node](../ros2/px4_ros2_msg_translation_node.md) handles compatibility automatically.
+ This node acts as an agent-side translator, allowing your code to interact with PX4 without requiring strict, manual message synchronization.
+- For unversioned messages, code that needs to publish to PX4 maintains a direct dependency on client-side definitions.
+ In these cases, you must ensure your local uORB message definitions exactly match those used to create the PX4 uXRCE-DDS client, so that the messages can be correctly interpreted.
+
## Code Generation
The PX4 [uxrce_dds_client](../modules/modules_system.md#uxrce-dds-client) is generated at build time and included in PX4 firmware by default.
@@ -397,11 +402,14 @@ Therefore,
- If you're using a main or release version of PX4 you can get the message definitions by cloning the interface package [PX4/px4_msgs](https://github.com/PX4/px4_msgs) into your workspace.
- If you're creating or modifying uORB messages you must manually update the messages in your workspace from your PX4 source tree.
Generally this means that you would update [dds_topics.yaml](https://github.com/PX4/PX4-Autopilot/blob/main/src/modules/uxrce_dds_client/dds_topics.yaml), clone the interface package, and then manually synchronize it by copying the new/modified message definitions from [PX4-Autopilot/msg](https://github.com/PX4/PX4-Autopilot/tree/main/msg) to its `msg` folders.
- Assuming that PX4-Autopilot is in your home directory `~`, while `px4_msgs` is in `~/px4_ros_com/src/`, then the command might be:
+ Assuming that PX4-Autopilot is in your home directory `~`, while `px4_msgs` is in `~/ros2_px4_ws/src/`, then the command might be:
```sh
- rm ~/px4_ros_com/src/px4_msgs/msg/*.msg
- cp ~/PX4-Autopilot/msg/*.msg ~/px4_ros_com/src/px4_msgs/msg/
+ rm ~/ros2_px4_ws/src/px4_msgs/msg/*.msg
+ rm ~/ros2_px4_ws/src/px4_msgs/srv/*.srv
+ cp ~/PX4-Autopilot/msg/*.msg ~/ros2_px4_ws/src/px4_msgs/msg/
+ cp ~/PX4-Autopilot/msg/versioned/*.msg ~/ros2_px4_ws/src/px4_msgs/msg/
+ cp ~/PX4-Autopilot/srv/*.msg ~/ros2_px4_ws/src/px4_msgs/srv/
```
::: info
diff --git a/docs/ko/modules/modules_command.md b/docs/ko/modules/modules_command.md
index 6fba14c9ac..916d1334c6 100644
--- a/docs/ko/modules/modules_command.md
+++ b/docs/ko/modules/modules_command.md
@@ -342,6 +342,19 @@ mft_cfg [arguments...]
, id == revision for )
```
+## mklittlefs
+
+Source: [systemcmds/mklittlefs](https://github.com/PX4/PX4-Autopilot/tree/main/src/systemcmds/mklittlefs)
+
+Format a device with the littlefs filesystem.
+
+### Usage {#mklittlefs_usage}
+
+```
+mklittlefs [arguments...]
+ Device and mount point (e.g. /dev/mtd0 /fs/flash)
+```
+
## mtd
Source: [systemcmds/mtd](https://github.com/PX4/PX4-Autopilot/tree/main/src/systemcmds/mtd)
diff --git a/docs/ko/modules/modules_driver.md b/docs/ko/modules/modules_driver.md
index 8bb63a84ed..9d31302cf2 100644
--- a/docs/ko/modules/modules_driver.md
+++ b/docs/ko/modules/modules_driver.md
@@ -1064,7 +1064,7 @@ px4io [arguments...]
## rgbled
-Source: [drivers/lights/rgbled](https://github.com/PX4/PX4-Autopilot/tree/main/src/drivers/lights/rgbled)
+Source: [drivers/lights/rgbled_ncp5623c](https://github.com/PX4/PX4-Autopilot/tree/main/src/drivers/lights/rgbled_ncp5623c)
### Usage {#rgbled_usage}
@@ -1079,7 +1079,9 @@ rgbled [arguments...]
[-f ] bus frequency in kHz
[-q] quiet startup (no message if no device found)
[-a ] I2C address
- default: 85
+ default: 57
+ [-o ] RGB PWM Assignment
+ default: 123
stop
diff --git a/docs/ko/msg_docs/FailsafeFlags.md b/docs/ko/msg_docs/FailsafeFlags.md
index ee2631b66d..51dfba06eb 100644
--- a/docs/ko/msg_docs/FailsafeFlags.md
+++ b/docs/ko/msg_docs/FailsafeFlags.md
@@ -59,6 +59,7 @@ The flag comments are used as label for the failsafe state machine simulation
| position_accuracy_low | `bool` | | | Position estimate has dropped below threshold, but is currently still declared valid |
| navigator_failure | `bool` | | | Navigator failed to execute a mode |
| parachute_unhealthy | `bool` | | | Parachute system missing or unhealthy |
+| remote_id_unhealthy | `bool` | | | Remote ID (Open Drone ID) system missing or unhealthy |
## Source Message
@@ -130,6 +131,7 @@ bool flight_time_limit_exceeded # Maximum flight time exceeded
bool position_accuracy_low # Position estimate has dropped below threshold, but is currently still declared valid
bool navigator_failure # Navigator failed to execute a mode
bool parachute_unhealthy # Parachute system missing or unhealthy
+bool remote_id_unhealthy # Remote ID (Open Drone ID) system missing or unhealthy
```
:::
diff --git a/docs/ko/peripherals/index.md b/docs/ko/peripherals/index.md
index 16373b523e..ef3e627940 100644
--- a/docs/ko/peripherals/index.md
+++ b/docs/ko/peripherals/index.md
@@ -2,8 +2,9 @@
This section contains topics about peripheral hardware that can be connected to a flight controller (not including [cameras and other payloads](../payloads/index.md)).
-The peripherals are not _required_ for flight, but may support it by providing improved safety, or allowing the vehicle to meet regulartory requirements:
+The peripherals are not _required_ for flight, but may support it by providing improved safety, or allowing the vehicle to meet regulatory requirements:
- [ADSB/FLARM/UTM (Traffic Avoidance)](../peripherals/adsb_flarm.md)
+- [On-Screen Display (OSD)](../peripherals/osd.md)
- [Parachute](../peripherals/parachute.md)
- [Remote ID](../peripherals/remote_id.md)
diff --git a/docs/ko/peripherals/mavlink_peripherals.md b/docs/ko/peripherals/mavlink_peripherals.md
index fe720ec619..72a8fd61a2 100644
--- a/docs/ko/peripherals/mavlink_peripherals.md
+++ b/docs/ko/peripherals/mavlink_peripherals.md
@@ -1,6 +1,6 @@
# MAVLink Peripherals (GCS/OSD/Gimbal/Camera/Companion)
-Ground Control Stations (GCS), On-Screen Displays (OSD), MAVLink Cameras & Gimbals, Remote IDs, Companion Computers, ADS-B receivers, and other MAVLink peripherals interact with PX4 using separate MAVLink streams, sent via different serial ports.
+Ground Control Stations (GCS), [MAVLink On-Screen Displays (OSD)](../peripherals/osd.md#mavlink-osd), MAVLink [Cameras](../camera/mavlink_v2_camera.md) and [Gimbals](../advanced/gimbal_control.md), [Remote IDs](../peripherals/remote_id.md), Companion Computers, [ADS-B receivers](../peripherals/adsb_flarm.md), and other MAVLink peripherals interact with PX4 using separate MAVLink streams, sent via different serial ports.
In order to configure that a particular serial port is used for MAVLink traffic with a particular peripheral, we use [Serial Port Configuration](../peripherals/serial_configuration.md), assigning one of the abstract "MAVLink instance" configuration parameters to the desired port.
We then set other properties of the MAVLink channel using the parameters associated with our selected MAVLink instance, so that they match the requirements of our particular peripheral.
diff --git a/docs/ko/peripherals/osd.md b/docs/ko/peripherals/osd.md
new file mode 100644
index 0000000000..d0dd696085
--- /dev/null
+++ b/docs/ko/peripherals/osd.md
@@ -0,0 +1,103 @@
+# On-Screen Display (OSD)
+
+An **On-Screen Display (OSD)** overlays flight telemetry — battery, altitude, GPS, RSSI, attitude, etc. — onto a pilot's video feed.
+OSDs are commonly used in FPV and long-range flying so the pilot can see live flight data without looking away from the video.
+
+PX4 supports three distinct OSD mechanisms, each targeting a different class of video system:
+
+| Mechanism | Use case | Transport | Runs on FC? |
+| --------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------- | -------------------------------------------------------------- |
+| [MSP OSD](#msp-osd) | Digital FPV air units and video goggles that speak Betaflight MSP (e.g. DJI O3/O4, Walksnail, HDZero, Caddx Vista) | Serial, MSPv1 | Yes — [`msp_osd`](../modules/modules_driver.md#msp-osd) driver |
+| [ATXXXX Analog OSD](#atxxxx-analog-osd) | Legacy analog video with an on-board MAX7456/ATXXXX overlay chip (e.g. OmnibusF4SD) | SPI to on-board chip | Yes — [`atxxxx`](../modules/modules_driver.md#atxxxx) driver |
+| [MAVLink OSD](#mavlink-osd) | MAVLink-aware ground stations and displays that render their own OSD from telemetry (e.g. Yaapu on EdgeTX/OpenTX, Skydroid, mLRS HUDs) | Serial, MAVLink | No — streams MAVLink; the display renders the OSD |
+
+Which one you use is determined by your video hardware, not by PX4 preference.
+If you're unsure, start with your video system's documentation and match the OSD mechanism it expects.
+
+## MSP OSD
+
+**MSP (MultiWii Serial Protocol) OSD** is the mechanism used by digital FPV systems (DJI, Walksnail, HDZero) and by many digital goggles/air units to render telemetry over the pilot's video feed.
+PX4 implements the subset of MSP used for OSD telemetry, matching what Betaflight and INAV send.
+
+The [`msp_osd`](../modules/modules_driver.md#msp-osd) driver converts uORB topics (battery, GPS, attitude, etc.) to MSP packets and sends them out a serial port at 115200 baud.
+
+### Supported displays
+
+PX4 currently sends a subset of MSP messages.
+Reliably-working display items include:
+
+- Craft name and flight mode / arming state
+- Battery voltage, current draw, mAh consumed, average cell voltage
+- GPS latitude, longitude, satellite count, ground speed
+- Home distance and direction
+- Altitude (from GNSS / baro)
+- RSSI
+- Crosshairs toggle
+
+Some items in [`OSD_SYMBOLS`](../advanced_config/parameter_reference.md#OSD_SYMBOLS) are reserved but not yet implemented — see the parameter's `(unused)` bit labels.
+For feature-completeness work, see the tracking issues on GitHub.
+
+### 하드웨어 설정
+
+1. Connect the digital air unit's MSP / telemetry input to a free UART on the flight controller (TX → RX, RX → TX, GND → GND).
+2. Power the air unit from its own BEC or a VTX power pad — most air units expect 5 V or battery voltage, not autopilot 5 V.
+3. Note which PX4 serial device the UART maps to on your board (e.g. `TELEM2` → `/dev/ttyS2`).
+ See [Serial Port Mapping](../hardware/serial_port_mapping.md).
+
+### Firmware requirements
+
+The `msp_osd` driver is included in the default build for most modern Pixhawk and FPV-oriented boards (e.g. `px4_fmu-v5x`, `px4_fmu-v6x`, `ark_fpv`, `cuav_7-nano`, `micoair_h743*`).
+If your board does not include it by default, enable it via [board config](../hardware/porting_guide_config.md#px4-menuconfig-setup):
+
+```sh
+make _default boardconfig
+# drivers → OSD → msp_osd
+```
+
+Then rebuild and flash.
+
+### PX4 configuration
+
+1. Assign the selected serial port to MSP OSD with [`MSP_OSD_CONFIG`](../advanced_config/parameter_reference.md#MSP_OSD_CONFIG).
+2. Set the matching `SER__BAUD` to `115200`.
+3. Reboot.
+4. Tune the display via the [`OSD_*` parameters](../advanced_config/parameter_reference.md#osd):
+ - [`OSD_SYMBOLS`](../advanced_config/parameter_reference.md#OSD_SYMBOLS) — bitmask selecting which items appear.
+ - [`OSD_CH_HEIGHT`](../advanced_config/parameter_reference.md#OSD_CH_HEIGHT) — vertical position of the crosshairs.
+ - [`OSD_LOG_LEVEL`](../advanced_config/parameter_reference.md#OSD_LOG_LEVEL) — minimum severity for on-screen warnings.
+ - [`OSD_SCROLL_RATE`](../advanced_config/parameter_reference.md#OSD_SCROLL_RATE) / [`OSD_DWELL_TIME`](../advanced_config/parameter_reference.md#OSD_DWELL_TIME) — scrolling of long messages.
+ - [`OSD_RC_STICK`](../advanced_config/parameter_reference.md#OSD_RC_STICK) — forward RC sticks to the VTX when disarmed, so you can navigate the VTX menu.
+
+### Worked examples
+
+- [Reptile Dragon 2 > msp_osd Module](../frames_plane/reptile_dragon_2.md#msp-osd-module) — end-to-end wiring and configuration for a Caddx Vista build.
+- [Turbo Timber Evolution](../frames_plane/turbo_timber_evolution.md) — references the same setup pattern.
+
+## MAVLink OSD
+
+Some OSDs render their own overlay directly from the MAVLink telemetry stream — the flight controller simply streams MAVLink at a rate the display can parse.
+PX4 exposes this via a dedicated MAVLink stream profile.
+
+To use a MAVLink OSD:
+
+1. Choose an unused MAVLink instance ([`MAV_X_CONFIG`](../peripherals/mavlink_peripherals.md#default_ports)) and assign it to the serial port connected to the display.
+2. Configure the mode of the selected MAVLink instance with [`MAV_X_MODE`](./mavlink_peripherals.md#MAV_X_MODE) by setting it to **`OSD`**.
+ The `OSD` mode uses a built-in rate table tuned for low-bandwidth OSD consumption.
+3. Set the matching `SER__BAUD` to the baud rate the display expects.
+
+The stream content is fixed (defined in `src/modules/mavlink/mavlink_main.cpp`) and cannot be customised from parameters.
+See [MAVLink Peripherals (GCS/OSD/Gimbal/Camera/Companion)](./mavlink_peripherals.md) for the full MAVLink-side configuration.
+
+## ATXXXX Analog OSD
+
+The [`atxxxx`](../modules/modules_driver.md#atxxxx) driver targets boards with an on-board MAX7456 / ATXXXX chip that overlays characters onto an analog video stream (PAL or NTSC).
+This was common on older F4-class FCs such as OmnibusF4SD and is largely superseded by digital systems.
+
+No external wiring is required on boards that include the chip; to enable it, set [`OSD_ATXXXX_CFG`](../advanced_config/parameter_reference.md#OSD_ATXXXX_CFG) to `1` (NTSC) or `2` (PAL) and reboot.
+
+## See also
+
+- [Parameter Reference > OSD](../advanced_config/parameter_reference.md#osd) — all OSD parameters.
+- [MAVLink Peripherals (GCS/OSD/Gimbal/Camera/Companion)](./mavlink_peripherals.md) — MAVLink serial configuration.
+- [Serial Port Configuration](./serial_configuration.md) — assigning modules to UARTs.
+- [`msp_osd` module reference](../modules/modules_driver.md#msp-osd) — CLI usage and source.
diff --git a/docs/ko/peripherals/parachute.md b/docs/ko/peripherals/parachute.md
index 688e229ac9..528d12f07b 100644
--- a/docs/ko/peripherals/parachute.md
+++ b/docs/ko/peripherals/parachute.md
@@ -44,6 +44,7 @@ To enable flight termination:
- Set [Safety](../config/safety.md) action to _Flight termination_ for checks where you want the parachute to trigger.
- Set [Failure Detector](../config/safety.md#failure-detector) pitch angles, roll angles and time triggers for crash/flip detection, and disable the failure/IMU timeout circuit breaker (i.e. set [CBRK_FLIGHTTERM=0](../advanced_config/parameter_reference.md#CBRK_FLIGHTTERM)).
+- Set [FD_ALT_LOSS](../advanced_config/parameter_reference.md#FD_ALT_LOSS) to enable flight termination if a rotary-wing vehicle loses too much altitude below its setpoint (see [Altitude Loss Trigger](../config/safety.md#altitude-loss-trigger)).
:::info
You can also configure an [external Automatic Trigger System (ATS)](../config/safety.md#external-automatic-trigger-system-ats) for failure detection.
diff --git a/docs/ko/peripherals/remote_id.md b/docs/ko/peripherals/remote_id.md
index ed65343e65..c2eda8b445 100644
--- a/docs/ko/peripherals/remote_id.md
+++ b/docs/ko/peripherals/remote_id.md
@@ -144,13 +144,12 @@ The [CAN Remote ID Not Working](../peripherals/remote_id.md#can-remote-id-not-wo
There is no need to explicitly enable Remote ID (supported Remote ID messages are either streamed by default or must be requested in the current implementation, even if no remote ID is connected).
-### Prevent Arming based on Remote ID
+### Remote ID Failsafe and Arming Check
-To only allow arming when a Remote ID is ready, [set](../advanced_config/parameters.md#conditional-parameters) the parameter [COM_ARM_ODID](#COM_ARM_ODID) to `2` (it is disabled by default).
+
-| 매개변수 | 설명 |
-| ----------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
-| [COM_ARM_ODID](../advanced_config/parameter_reference.md#COM_ARM_ODID) | Enable Drone ID system detection and health check. `0`: Disable (default), `1`: Warn if Remote ID not detected but still allow arming, `2`: Only allow arming if Remote ID is present. |
+The [COM_ARM_ODID](../advanced_config/parameter_reference.md#COM_ARM_ODID) parameter configures both the arming check and the in-flight failsafe action when the Remote ID system is missing or unhealthy.
+For more information see [Remote ID Failsafe](http://localhost:5173/px4_user_guide/en/config/safety#remote-id-failsafe) in _Safety Configuration_.
## Module Broadcast Testing
@@ -174,7 +173,7 @@ The following message can be streamed on request (using [MAV_CMD_SET_MESSAGE_INT
- [OPEN_DRONE_ID_BASIC_ID](https://mavlink.io/en/messages/common.html#OPEN_DRONE_ID_BASIC_ID) - UAV identity information (essentially a serial number)
- PX4 v1.14 specifies a serial number ([MAV_ODID_ID_TYPE_SERIAL_NUMBER](https://mavlink.io/en/messages/common.html#MAV_ODID_ID_TYPE_SERIAL_NUMBER)) but does not use the required format (ANSI/CTA-2063 format).
-PX4 prevents arming based on Remote ID health if parameter [COM_ARM_ODID](../advanced_config/parameter_reference.md#COM_ARM_ODID) is set to `2`.
+PX4 can prevent arming and/or trigger an in-flight failsafe based on Remote ID health via the [COM_ARM_ODID](../advanced_config/parameter_reference.md#COM_ARM_ODID) parameter.
The UAV will then require `HEARTBEAT` messages from the Remote ID as a precondition for arming the UAV.
You can also set the parameter to `1` to warn but still allow arming when Remote ID `HEARTBEAT` messages are not detected.
diff --git a/docs/ko/releases/main.md b/docs/ko/releases/main.md
index bc5bc84530..a749b67893 100644
--- a/docs/ko/releases/main.md
+++ b/docs/ko/releases/main.md
@@ -22,7 +22,8 @@ Update these notes with features that are going to be in `main` (PX4 v1.18 or la
## Read Before Upgrading
-- TBD …
+- Log rotation is now enabled by default. Previously, a single log file grew for the entire flight and old logs were only deleted at boot once free space fell below a fixed 300 MB floor. The logger now caps each log file at [SDLOG_MAX_SIZE](../advanced_config/parameter_reference.md#SDLOG_MAX_SIZE) (new parameter, default `1024` MB) and keeps a configurable percentage of the disk free via [SDLOG_ROTATE](../advanced_config/parameter_reference.md#SDLOG_ROTATE) (new parameter, default `90`, so at least 10% free). Cleanup runs at log start rather than boot, so logs can still be downloaded via FTP before they are deleted. See [Log Cleanup](../dev_log/logging.md#log-cleanup) for details.
+- `SDLOG_DIRS_MAX` behaviour changed: it is now an orthogonal directory-count cap that runs on top of the new space-based cleanup, and the default is `0` (disabled). Previously it enforced a fixed ~300 MB free-space floor even when set to `0`. If you relied on that implicit floor, set [SDLOG_ROTATE](../advanced_config/parameter_reference.md#SDLOG_ROTATE) instead.
Please continue reading for [upgrade instructions](#upgrade-guide).
@@ -40,6 +41,7 @@ Please continue reading for [upgrade instructions](#upgrade-guide).
### 공통
+- [Remote ID (Open Drone ID) in-flight failsafe](../peripherals/remote_id.md): extended [COM_ARM_ODID](../advanced_config/parameter_reference.md#COM_ARM_ODID) to also trigger a configurable failsafe action (Return, Land, or Terminate) if the Remote ID heartbeat is lost while airborne. Users previously on `COM_ARM_ODID=2` retain the same arming behaviour; set to `3` or higher to enable the in-flight action. ([PX4-Autopilot#27029](https://github.com/PX4/PX4-Autopilot/pull/27029))
- [QGroundControl Bootloader Update](../advanced_config/bootloader_update.md#qgc-bootloader-update-sys-bl-update) via the [SYS_BL_UPDATE](../advanced_config/parameter_reference.md#SYS_BL_UPDATE) parameter has been re-enabled after being broken for a number of releases. ([PX4-Autopilot#25032: build: romf: fix generation of rc.board_bootloader_upgrade](https://github.com/PX4/PX4-Autopilot/pull/25032)).
- [Feature: Allow prioritization of manual control inputs based on their instance number in ascending or descending order](../config/manual_control.md#px4-configuration). ([PX4-Autopilot#25602: Ascending and descending manual control input priorities](https://github.com/PX4/PX4-Autopilot/pull/25602)).
@@ -48,6 +50,10 @@ Please continue reading for [upgrade instructions](#upgrade-guide).
- Added new flight mode(s): [Altitude Cruise (MC)](../flight_modes_mc/altitude_cruise.md), Altitude Cruise (FW).
For fixed-wing the mode behaves the same as Altitude mode but you can disable the manual control loss failsafe. ([PX4-Autopilot#25435: Add new flight mode: Altitude Cruise](https://github.com/PX4/PX4-Autopilot/pull/25435)).
+### 안전 설정
+
+- Rotary-wing vehicles now support uncommanded altitude loss detection: if the vehicle descends more than [FD_ALT_LOSS](../advanced_config/parameter_reference.md#FD_ALT_LOSS) meters below its setpoint in altitude-controlled flight, flight termination (and parachute deployment) is triggered. See [Altitude Loss Trigger](../config/safety.md#altitude-loss-trigger). ([PX4-Autopilot#26837](https://github.com/PX4/PX4-Autopilot/pull/26837))
+
### Estimation
- Added [EKF2_POS_LOCK](../advanced_config/parameter_reference.md#EKF2_POS_LOCK) to force constant position fusion while landed, useful for vehicles relying on dead-reckoning sensors (airspeed, optical flow) that provide no aiding on the ground.
@@ -73,6 +79,12 @@ Please continue reading for [upgrade instructions](#upgrade-guide).
### Debug & Logging
- [Asset Tracking](../debug/asset_tracking.md): Automatic tracking and logging of external device information including vendor name, firmware and hardware version, serial numbers. Currently supports DroneCAN devices. ([PX4-Autopilot#25617](https://github.com/PX4/PX4-Autopilot/pull/25617))
+- Logger: support for small flash storage (e.g. 128 MB W25N NAND on kakuteh7mini, kakuteh7v2, airbrainh743). Logs can now be written directly to an internal littlefs volume instead of requiring an SD card.
+- Logger: reworked log rotation and cleanup. Log rotation is now on by default, and cleanup runs at log start rather than boot so logs can be downloaded via FTP before being deleted.
+ - New [SDLOG_MAX_SIZE](../advanced_config/parameter_reference.md#SDLOG_MAX_SIZE) (default `1024` MB) caps the size of a single log file; once reached, the logger closes the current file and starts a new one.
+ - New [SDLOG_ROTATE](../advanced_config/parameter_reference.md#SDLOG_ROTATE) (default `90`) sets the maximum disk usage percentage. Cleanup guarantees `(100 - SDLOG_ROTATE)%` of the disk stays free at all times, even while writing a new log file. Set `0` to disable space-based cleanup, `100` to allow filling the disk completely.
+ - `SDLOG_DIRS_MAX` is now an orthogonal cap on the number of log directories (default `0` = disabled), on top of the space-based cleanup driven by `SDLOG_ROTATE` and `SDLOG_MAX_SIZE`. SITL defaults to `7`.
+- New `mklittlefs` systemcmd for reformatting a littlefs volume from the NSH console, analogous to `mkfatfs` for FAT filesystems.
### Ethernet
diff --git a/docs/ko/ros2/index.md b/docs/ko/ros2/index.md
index 643a00fea3..65f3c8072b 100644
--- a/docs/ko/ros2/index.md
+++ b/docs/ko/ros2/index.md
@@ -16,17 +16,21 @@ It can be used, for example, for [computer vision](../computer_vision/index.md)
ROS 2 enables a very deep integration with PX4, to the extent that you can create flight modes in ROS 2 that are indistinguisable from internal PX4 modes, and directly read from and write to internal uORB topics at high rate.
It is recommended (in particular) for control and communication from a companion computer where low latency is important, when leveraging existing libraries from Linux, or when writing new high level flight modes.
-Communication between ROS 2 and PX4 uses middleware that implements the [XRCE-DDS protocol](../middleware/uxrce_dds.md).
-This middleware exposes PX4 [uORB messages](../msg_docs/index.md) as ROS 2 messages and types, effectively allowing direct access to PX4 from ROS 2 workflows and nodes.
-The middleware uses uORB message definitions to generate code to serialise and deserialise the messages heading in and out of PX4.
+Communication between ROS 2 and PX4 can leverage two independent middlewares:
+
+- [XRCE-DDS protocol](../middleware/uxrce_dds.md) — Original middleware. More tested and included by default in most PX4 builds.
+- [Zenoh protocol](../middleware/zenoh.md) — Must be manually added and enabled to most PX4 builds.
+
+The middlewares expose PX4 [uORB messages](../msg_docs/index.md) as ROS 2 messages and types, effectively allowing direct access to PX4 from ROS 2 workflows and nodes.
+The middlewares use uORB message definitions to generate code to serialise and deserialise the messages heading in and out of PX4.
These same message definitions are used in ROS 2 applications to allow the messages to be interpreted.
:::info
-ROS 2 can also connect with PX4 using [MAVROS](https://github.com/mavlink/mavros/tree/ros2/mavros) instead of XRCE-DDS.
+ROS 2 can also connect with PX4 using [MAVROS](https://github.com/mavlink/mavros/tree/ros2/mavros) instead of XRCE-DDS / Zenoh.
This option is supported by the MAVROS project (it is not documented here).
:::
-To use the [ROS 2](../ros2/user_guide.md) over XRCE-DDS effectively, you must (at time of writing) have a reasonable understanding of the PX4 internal architecture and conventions, which differ from those used by ROS.
+To use the [ROS 2](../ros2/user_guide.md) over XRCE-DDS / Zenoh effectively, you must (at time of writing) have a reasonable understanding of the PX4 internal architecture and conventions, which differ from those used by ROS.
In the near term future we plan to provide ROS 2 APIs to abstract PX4 conventions, along with examples demonstrating their use.
## Topics
@@ -42,4 +46,5 @@ In the near term future we plan to provide ROS 2 APIs to abstract PX4 convention
## 추가 정보
-- [XRCE-DDS (PX4-ROS 2/DDS Bridge)](../middleware/uxrce_dds.md): PX4 middleware for connecting to ROS 2.
+- [XRCE-DDS (PX4-ROS 2/DDS Bridge)](../middleware/uxrce_dds.md): PX4 middleware leveranging micro XRCE-DDS for connecting to ROS 2.
+- [Zenoh (PX4 ROS 2)](../middleware/zenoh.md): PX4 middleware leveraging Zenoh pico for connecting to ROS 2.
diff --git a/docs/ko/sim_hawkeye/index.md b/docs/ko/sim_hawkeye/index.md
new file mode 100644
index 0000000000..15d8d2ed28
--- /dev/null
+++ b/docs/ko/sim_hawkeye/index.md
@@ -0,0 +1,61 @@
+# Hawkeye Visualizer
+
+[Hawkeye](https://px4.github.io/Hawkeye/) is a real-time 3D flight _visualizer_ for PX4.
+
+Hawkeye is the natural pair for [SIH](../sim_sih/index.md) — SIH runs the physics of an aircraft simulation and outputs MAVLink [HIL_STATE_QUATERNION](https://mavlink.io/en/messages/common.html#HIL_STATE_QUATERNION) messages, Hawkeye uses these to show you what's happening.
+
+Hawkeye has zero runtime dependencies, supports up to 16 vehicles simultaneously, and can replay PX4 ULog (`.ulg`) flight logs with transport controls, markers, and multi-drone correlation analysis.
+
+## Install
+
+### macOS (Homebrew)
+
+```sh
+brew tap PX4/px4
+brew install PX4/px4/hawkeye
+```
+
+### Linux (Debian/Ubuntu)
+
+Download the `.deb` from the [Hawkeye releases page](https://github.com/PX4/Hawkeye/releases/latest):
+
+```sh
+sudo dpkg -i hawkeye-*.deb
+```
+
+### Windows and source builds
+
+For Ubuntu 24.04 or later in WSL2 you can install the packages in the same way:
+
+```sh
+sudo dpkg -i hawkeye-*.deb
+```
+
+For other versions of Ubuntu (or native Windows builds) you may need to [Build from source](https://px4.github.io/Hawkeye/developer/build) (Hawkeye docs).
+
+## Usage with SIH
+
+Start PX4 SIH, then launch Hawkeye in a separate terminal:
+
+```sh
+# Terminal 1
+make px4_sitl sihsim_quadx
+
+# Terminal 2
+hawkeye
+```
+
+Hawkeye listens on UDP port 19410 — the same port SIH sends [HIL_STATE_QUATERNION](https://mavlink.io/en/messages/common.html#HIL_STATE_QUATERNION) on — so no configuration is needed.
+The vehicle appears in the Hawkeye window as soon as SIH starts streaming.
+
+For fixed-wing or tailsitter simulation, Hawkeye auto-detects the vehicle type from MAVLink `HEARTBEAT` and loads the matching 3D model.
+
+## Full documentation
+
+Complete documentation — including multi-vehicle SITL, ULog replay, HUD modes, camera controls, and correlation analysis — lives at **[px4.github.io/Hawkeye](https://px4.github.io/Hawkeye/)**.
+
+- [First SITL run](https://px4.github.io/Hawkeye/first-sitl) — the shortest path from install to seeing a vehicle move
+- [Multi-Drone Replay](https://px4.github.io/Hawkeye/multi_drone) — compare multiple flights with deconfliction and correlation
+- [Live SITL Integration](https://px4.github.io/Hawkeye/sitl) — single-vehicle and multi-instance swarm workflows
+- [Command-Line Reference](https://px4.github.io/Hawkeye/cli) — every CLI flag with examples
+- [Source code](https://github.com/PX4/Hawkeye)
diff --git a/docs/ko/sim_sih/index.md b/docs/ko/sim_sih/index.md
index 84bc86e1f9..57ec201a93 100644
--- a/docs/ko/sim_sih/index.md
+++ b/docs/ko/sim_sih/index.md
@@ -79,27 +79,28 @@ The `px4_sitl` target will work, but will also build Gazebo libraries.
### Visualization (Optional) {#sitl-visualization}
SIH is intentionally headless by default.
-If you need a visual aid to see what the vehicle is doing you can use QGroundControl to track path over ground, and/or jMAVSim as a 3D viewer.
+If you need a visual aid to see what the vehicle is doing you can use QGroundControl to track path over ground, and/or [Hawkeye](../sim_hawkeye/index.md) as a 3D viewer.
#### QGroundControl
QGC auto-connects on UDP port 14550. Open QGC while SIH is running and the vehicle appears on the map view with attitude, position, and telemetry.
-#### jMAVSim (3D Display-Only)
+#### Hawkeye (3D Visualizer)
-jMAVSim can render a 3D view of the vehicle using MAVLink position data. No physics are simulated in jMAVSim — it is display-only.
+[Hawkeye](../sim_hawkeye/index.md) renders a real-time 3D view of the vehicle using MAVLink position data.
+No physics are simulated in Hawkeye — it is a visualizer only.
+
+In a separate terminal, run:
```sh
-./Tools/simulation/jmavsim/jmavsim_run.sh -p 19410 -u -q -o
+hawkeye
```
-Flags:
+Hawkeye connects on UDP port 19410 by default (the same port SIH sends `HIL_STATE_QUATERNION` on).
+It then auto-detects the vehicle type from the MAVLink `HEARTBEAT` and loads the matching 3D model.
-- `-a` for airplane model
-- `-t` for tailsitter model
-- `-o` enables display-only mode.
-
-See [jMAVSim Display-Only Mode](../sim_jmavsim/index.md#display-only-mode) for details.
+The [Hawkeye](../sim_hawkeye/index.md) overview page explains how to install the software.
+See the [Hawkeye docs](https://px4.github.io/Hawkeye/) for other features, such as ULog replay, and multi-vehicle visualization.
### Environment Configuration
@@ -153,14 +154,14 @@ See [uXRCE-DDS (PX4-ROS 2/DDS Bridge)](../middleware/uxrce_dds.md) for full setu
PX4 SITL opens the following UDP ports (all instance-aware, offset by instance number N).
-| PX4 sends to (remote) | PX4 listens on (local) | Use for | Instance offset |
-| ---------------------------------------- | ----------------------------------------- | -------------------------------------------------- | ------------------------------------------------------------ |
-| **14550** | 18570 (+N) | QGroundControl, GCS tools | Yes |
-| **14540** (+N) | 14580 (+N) | MAVSDK, MAVROS, offboard APIs | Yes (capped at 14549 for 10+ instances) |
-| **14030** (+N) | 14280 (+N) | Onboard camera/payload | Yes |
-| **13280** (+N) | 13030 (+N) | Gimbal control | Yes |
-| **19410** (+N) | 19450 (+N) | jMAVSim display-only (SIH only) | Yes |
-| **8888** | - | uXRCE-DDS / ROS 2 | No (use DDS namespace for multi-instance) |
+| PX4 sends to (remote) | PX4 listens on (local) | Use for | Instance offset |
+| ---------------------------------------- | ----------------------------------------- | ------------------------------------------------ | ------------------------------------------------------------ |
+| **14550** | 18570 (+N) | QGroundControl, GCS tools | Yes |
+| **14540** (+N) | 14580 (+N) | MAVSDK, MAVROS, offboard APIs | Yes (capped at 14549 for 10+ instances) |
+| **14030** (+N) | 14280 (+N) | Onboard camera/payload | Yes |
+| **13280** (+N) | 13030 (+N) | Gimbal control | Yes |
+| **19410** (+N) | 19450 (+N) | Hawkeye visualizer (SIH only) | Yes |
+| **8888** | - | uXRCE-DDS / ROS 2 | No (use DDS namespace for multi-instance) |
QGC auto-connects on port **14550** by default. MAVSDK connects on **14540**. No manual port configuration needed for single-instance use.