Commit Graph

49637 Commits

Author SHA1 Message Date
PX4 Build Bot
f88bc1f204 docs(i18n): PX4 guide translations (Crowdin) - ko (#27208)
Co-authored-by: Crowdin Bot <support+bot@crowdin.com>
2026-04-27 08:34:53 +10:00
PX4 Build Bot
92cc4db33d docs(i18n): PX4 guide translations (Crowdin) - zh-CN (#27210)
Co-authored-by: Crowdin Bot <support+bot@crowdin.com>
2026-04-27 08:34:40 +10:00
PX4 Build Bot
5c7d08f1d0 docs(i18n): PX4 guide translations (Crowdin) - uk (#27209)
Co-authored-by: Crowdin Bot <support+bot@crowdin.com>
2026-04-27 08:34:23 +10:00
Julian Oes
61295affa1 fix(boards): KakuteH7v2 needs the mklittlefs command (#27185)
This is in case the littlefs on flash NAND is in a bad state and needs
reformatting.
2026-04-27 09:07:11 +12:00
Julian Oes
b48ec2dd68 feat(params): add board-level read-only parameter support (#26522)
Integrators can declare read-only parameters in a per-board YAML file:
readonly_params.yaml.

There are two ways to define the read-only params:
- "block": default writable, explicitly list params to be locked
- "allow": default readonly, explicitly list params to be writable

Enforcement is activated by `param lock` in rcS after all startup
scripts have run, so board defaults and airframe scripts can still set
params during init.

The feedback via MAVLink uses the new
MAV_PARAM_ERROR_READ_ONLY as part of the PARAM_ERROR message.
2026-04-27 09:06:43 +12:00
PX4BuildBot
efd05431e8 docs: auto-sync metadata [skip ci]
Co-Authored-By: PX4 BuildBot <bot@px4.io>
2026-04-26 04:37:39 +00:00
Hamish Willee
323c623e34 docs(docs):Fixes that prettier does not handle well (#27212) 2026-04-26 14:30:02 +10:00
PX4BuildBot
5fcd9043f3 docs: auto-sync metadata [skip ci]
Co-Authored-By: PX4 BuildBot <bot@px4.io>
2026-04-24 22:44:47 +00:00
Valentin Bugrov
7ac1cbd719 feat(allyes): Remove redundant filters from exception_list_sitl 2026-04-24 15:37:25 -07:00
Valentin Bugrov
4c89e38595 fix(drvers/vtxtable): Fix VtxTable clang-tidy errors 2026-04-24 15:37:25 -07:00
Valentin Bugrov
7589f13bcd fix(drvers/roboclaw): Fix roboclaw clang-tidy errors 2026-04-24 15:37:25 -07:00
Valentin Bugrov
0000f6d80e fix(drvers/cyphal): Fix cyphal clang-tidy errors 2026-04-24 15:37:25 -07:00
Valentin Bugrov
a7f8ede393 fix(drvers/actuators): Fix vertiq_io clang-tidy errors 2026-04-24 15:37:25 -07:00
Valentin Bugrov
2b76573301 fix(drvers/ins): Fix Microstrain codestyle according astyle-config 2026-04-24 15:37:25 -07:00
Valentin Bugrov
a7ebab58cb fix(drvers/ins): Fix Microstrain clang-tidy errors 2026-04-24 15:37:25 -07:00
Valentin Bugrov
2c693e4113 fix(drvers/ins): Apply to sbgECom copilot code-improvements 2026-04-24 15:37:25 -07:00
Valentin Bugrov
0d5cc985b8 fix(drvers/ins): Fix sbgECom clang-tidy errors 2026-04-24 15:37:25 -07:00
Valentin Bugrov
3089cc4ebd fix(drvers/ins): Fix InertialLabs clang-tidy errors 2026-04-24 15:37:25 -07:00
Valentin Bugrov
7848216e1d fix(drvers/ins): Fix EulerNav clang-tidy errors 2026-04-24 15:37:25 -07:00
Valentin Bugrov
d665d64df2 fix(drvers/ins): Fix VectorNav clang-tidy errors 2026-04-24 15:37:25 -07:00
Valentin Bugrov
d2ad2b52b5 fix(drvers/ins): Disable clang-tidy checks for VectorNav lib 2026-04-24 15:37:25 -07:00
PX4BuildBot
d08a0697f1 docs: auto-sync metadata [skip ci]
Co-Authored-By: PX4 BuildBot <bot@px4.io>
2026-04-24 17:51:22 +00:00
Matthias Grob
eb30c0b6b0 refactor(AttitudeControl): comment type "c{a}ompared" 2026-04-24 10:43:54 -07:00
dependabot[bot]
250b1205b9 build(deps): bump postcss from 8.5.8 to 8.5.10 in /docs
Bumps [postcss](https://github.com/postcss/postcss) from 8.5.8 to 8.5.10.
- [Release notes](https://github.com/postcss/postcss/releases)
- [Changelog](https://github.com/postcss/postcss/blob/main/CHANGELOG.md)
- [Commits](https://github.com/postcss/postcss/compare/8.5.8...8.5.10)

---
updated-dependencies:
- dependency-name: postcss
  dependency-version: 8.5.10
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-04-24 10:40:43 -07:00
Onur Özkan
2122546081 fix(labels): rename documentation label (#27187)
* rename documentation label

Signed-off-by: Onur Özkan <work@onurozkan.dev>

* Update .github/ISSUE_TEMPLATE/docs_bug_report.yml

Co-authored-by: Jacob Dahl <37091262+dakejahl@users.noreply.github.com>

---------

Signed-off-by: Onur Özkan <work@onurozkan.dev>
Co-authored-by: Jacob Dahl <37091262+dakejahl@users.noreply.github.com>
2026-04-24 09:17:05 -08:00
PX4BuildBot
0f692f3fb6 docs: auto-sync metadata [skip ci]
Co-Authored-By: PX4 BuildBot <bot@px4.io>
2026-04-24 16:51:19 +00:00
Silvan
ba0b4abbfa fix(airspeed_selector): use CAS instead of IAS for in-flight logic
Signed-off-by: Silvan <silvan@auterion.com>
2026-04-24 18:42:45 +02:00
alexcekay
ef531ab540 fix(nuttx): update submodule (fix SPI cache problem) 2026-04-24 13:22:14 +02:00
PX4BuildBot
fc9e4e8844 docs: auto-sync metadata [skip ci]
Co-Authored-By: PX4 BuildBot <bot@px4.io>
2026-04-24 02:11:17 +00:00
Jacob Dahl
2e87050745 fix(mavlink): gate UAVCAN param bridge on observed camera heartbeat (#27181)
* fix(mavlink): gate UAVCAN param bridge on observed camera heartbeat

Only exclude target_component 100..105 from the MAVLink -> UAVCAN
parameter bridge when a MAVLink HEARTBEAT with MAV_TYPE_CAMERA has
been observed on that component within the last 5s. When no camera
has been seen, forward to the matching UAVCAN node as before.

The bridge maps target_component 1:1 onto UAVCAN node_id, so the
unconditional 100..105 exclusion added in #25651 also made DroneCAN
peripherals assigned those node IDs unreachable via MAVLink params.
This preserves #25651's intent for real MAVLink cameras while
unblocking DroneCAN devices in that ID range.

Fixes #27180

* fix(mavlink): warn when camera shadows DroneCAN node in 100..105

Emit a one-shot mavlink_log_warning per comp ID when both a MAVLink
camera (observed via camera_status / MAV_TYPE_CAMERA heartbeat) and a
DroneCAN node (via dronecan_node_status) are present at the same ID
in 100..105. The camera takes precedence at the UAVCAN parameter
bridge (intent of #25651), so the CAN node's params become unreachable
via MAVLink. The warning surfaces the ambiguity in QGC's message tray
so the user can reassign the CAN node ID.

Fires regardless of which side joined first. Sticky per comp ID for
the boot — the user only sees it once per conflicting ID.

* Update src/modules/mavlink/mavlink_parameters.cpp

* Update src/modules/mavlink/mavlink_parameters.cpp
2026-04-23 18:03:42 -08:00
Jacob Dahl
d07fcec626 chore(claude): add CLAUDE.md and tighten commit/pr skills (#27119)
Signed-off-by: Jacob Dahl <dahl.jakejacob@gmail.com>
Signed-off-by: Ramon Roche <mrpollo@gmail.com>
Co-authored-by: Ramon Roche <mrpollo@gmail.com>
2026-04-23 13:39:08 -07:00
PX4BuildBot
329b4c6a05 docs: auto-sync metadata [skip ci]
Co-Authored-By: PX4 BuildBot <bot@px4.io>
2026-04-23 20:04:48 +00:00
Ramon Roche
b911d4414e build(sim): convert PX4-OpticalFlow to git submodule (#27184)
Replace the ExternalProject_Add-based fetch of PX4/PX4-OpticalFlow with a
proper git submodule at src/modules/simulation/gz_plugins/optical_flow/PX4-OpticalFlow,
matching how every other external C++ dependency is integrated in PX4 (mavlink,
gps/devices, Micro-XRCE-DDS-Client, libevents, heatshrink, etc.).

The previous approach cloned the repo over the network on every clean build,
pinned to GIT_TAG master (unreproducible), and had generated a string of
follow-up PRs over the last year chasing ExternalProject quirks (install
paths, macOS .dylib vs .so, permissions).

The plugin now consumes the upstream OpticalFlow target directly via
add_subdirectory and px4_add_git_submodule. The upstream repo predates PX4's
strict warning policy, so the OpticalFlow and klt_feature_tracker targets get
-Wno-error plus a few specific -Wno-* flags and -fvisibility=default to build
cleanly inside the PX4 tree.

Signed-off-by: Ramon Roche <mrpollo@gmail.com>
2026-04-23 11:57:02 -08:00
Onur Özkan
4760327fa8 chore(issues): Add auto status:needs-triage labeling workflow (#27138)
Adds a gha workflow that applies the `status:needs-triage` label to every
newly opened issue. This gives maintainers a clear queue of unreviewed issues
and lets them remove the label once the issue has been triaged and more specific
labels have been assigned.

Signed-off-by: Onur Özkan <work@onurozkan.dev>
2026-04-23 10:49:38 -08:00
Eric Katzfey
a779925618 feat(boards/modalai/voxl2): Add SIH simulator to the build and start scripts 2026-04-23 08:36:35 -07:00
PX4BuildBot
3ac9b267ca docs: auto-sync metadata [skip ci]
Co-Authored-By: PX4 BuildBot <bot@px4.io>
2026-04-23 13:45:26 +00:00
Balduin
f8bb3f00df feat(sensor_airspeed_sim): Implement off, stuck, and wrong airspeed failure
- wrong and off equal to simulator_mavlink implementation
     - but wrong is over timescale of 10s rather than 1s by default to
       make it harder for innovation check to flag (closer to icing)
 - stuck will just keep the last value before injecting the failure
2026-04-23 15:37:55 +02:00
Balduin
4b34cb8834 refactor(sensor_airspeed_sim): remove previous airspeed failure implementation 2026-04-23 15:37:55 +02:00
PX4BuildBot
46142b34e3 docs: auto-sync metadata [skip ci]
Co-Authored-By: PX4 BuildBot <bot@px4.io>
2026-04-23 04:23:41 +00:00
Gennaro Guidone
1281dbd8ff docs(safety): add altitude loss detection failsafe documentation (#27104) 2026-04-23 14:16:32 +10:00
PX4BuildBot
022f0119c0 docs: auto-sync metadata [skip ci]
Co-Authored-By: PX4 BuildBot <bot@px4.io>
2026-04-23 01:57:52 +00:00
Jacob Dahl
c459caaa2a docs(peripherals): add On-Screen Display (OSD) page (#27134) 2026-04-23 11:50:09 +10:00
Eric Katzfey
fdd00fbd31 feat(boards/modalai/voxl2): Add timeout to voxl-reset-slpi command in service file and update package dependencies as needed 2026-04-22 17:37:23 -07:00
PX4BuildBot
c89404ca61 docs: auto-sync metadata [skip ci]
Co-Authored-By: PX4 BuildBot <bot@px4.io>
2026-04-22 22:38:10 +00:00
Julian Oes
7b23a2e405 fix(boards): auterion fmu-v6x zenoh free flash for logger rework
The logger rework grows text slightly, pushing the already
flash-constrained zenoh variant over budget. Drop a handful of
optional features to recover the needed headroom:

- osd_msp_osd (MSP OSD, niche)
- actuator_test (bench diagnostic)
- fw_autotune_attitude_control / mc_autotune_attitude_control
  (tuning can be done on a default build)
2026-04-23 10:30:14 +12:00
Julian Oes
2df92cc331 feat(boards): airbrainh743 tune logger for 128 MB W25N flash
Replace the old SDLOG_DIRS_MAX=3 + larger-buffer override with the
new rotation-based tuning: SDLOG_MAX_SIZE=40 caps each log file at
40 MB so a handful of recent logs fit, and SDLOG_ROTATE=95 lets logs
fill up to 95% of the 128 MB volume.

Also set COM_ARM_SDCARD=0 (no SD on this board) and
SYS_DM_BACKEND=1 so missions are stored in RAM.
2026-04-23 10:30:14 +12:00
Julian Oes
be39ec49e5 feat(boards): kakuteh7v2 tune logger for 128 MB W25N flash
Replace the old SDLOG_DIRS_MAX=3 + larger-buffer override with the
new rotation-based tuning: SDLOG_MAX_SIZE=40 caps each log file at
40 MB so a handful of recent logs fit, and SDLOG_ROTATE=95 lets logs
fill up to 95% of the 128 MB volume.

Drop the BOARD_SMALL_FLASH_LOGGING define from board_config.h; the
logger no longer keys off a per-board compile flag.
2026-04-23 10:30:14 +12:00
Julian Oes
fa601fa5c1 feat(boards): kakuteh7mini add W25N NAND flash support with littlefs
The kakuteh7mini ships with a W25N01GV (1Gbit/128MB) SPI NAND flash on
SPI1, but the board init was treating SPI1 as an MMC/SD slot and the
W25N driver was not enabled. Enable the chip and use it for logging:

- spi.cpp: register the device as SPIDEV_FLASH(0) instead of SPIDEV_MMCSD(0)
- init.c: initialize the W25N MTD driver, register /dev/mtd0, mount
  littlefs at /fs/flash with autoformat, and print the flash geometry
  on boot for verification.
- nuttx defconfig: enable CONFIG_MTD_W25N, CONFIG_FS_LITTLEFS,
  SPI1 DMA + DMAMUX1, drop the unused RAMTRON config.
- board_dma_map.h: define DMAMAP_SPI1_RX/TX for the SPI1 DMA channels.
- default.px4board: set CONFIG_BOARD_ROOT_PATH to /fs/flash.
- rc.board_defaults: drop the SDLOG_BACKEND=0 override that was
  disabling logging entirely, drop COM_ARM_SDCARD (no SD card), and
  tune SDLOG_MAX_SIZE=40 / SDLOG_ROTATE=95 to keep a few recent logs
  in the 128 MB flash.
2026-04-23 10:30:14 +12:00
Julian Oes
174a6aab6f feat(mklittlefs): add command to format littlefs filesystems
Add an NSH command to format a device with littlefs, analogous to
mkfatfs for FAT filesystems. The command unmounts the mount point,
then remounts with forceformat to format and mount in one step.

Enable the command on boards that use littlefs as primary storage
(airbrainh743 and kakuteh7v2), and document it in the airbrainh743
flight controller page as a recovery procedure for a corrupted
flash filesystem.

Usage: mklittlefs /dev/mtd0 /fs/flash
2026-04-23 10:30:14 +12:00
Julian Oes
f9fdda1a29 feat(logger): rework log rotation and cleanup
Make the logger practical on small flash storage (e.g. 128 MB W25N
NAND) while keeping the existing SD-card behaviour sensible.

- Move cleanup from boot to log start so logs can be downloaded via
  MAVLink FTP before deletion.
- Delete individual .ulg files (oldest first) instead of whole
  directories, prioritising the naming scheme not currently in use
  (session dirs vs date dirs).
- Add SDLOG_MAX_SIZE (new, default 1024 MB): maximum size of a single
  log file. When reached, the log rotates to a new file. The value is
  also reserved as headroom in the cleanup threshold.
- Add SDLOG_ROTATE (new, default 90): maximum disk usage percentage.
  Cleanup guarantees (100 - SDLOG_ROTATE)% free at all times, even
  during writing of a new log file. 0 disables space-based cleanup,
  100 allows filling the disk.
- Repurpose SDLOG_DIRS_MAX as an orthogonal directory-count cap
  (default 0 = disabled). Useful for capping log usage by count
  independent of disk size, e.g. in SITL.
- Drop the implicit ~300 MB free-space floor that used to fire even
  with SDLOG_DIRS_MAX=0; space is now governed entirely by
  SDLOG_ROTATE + SDLOG_MAX_SIZE.
- Split pure parsing helpers into util_parse.{h,cpp} and add unit
  tests (loggerUtilTest.cpp).
- Simplify get_log_time to rely on clock_gettime (set by the GPS
  driver); safer string handling in directory parsing.
- Reset _total_written in LogFileBuffer::reset() so callers reading
  get_total_written() between stop and start don't see stale counts.

Sponsored by CubePilot.
2026-04-23 10:30:14 +12:00