Repository navigation
mavsdk-python Param.select_component() returns UNKNOWN for non-autopilot components (e.g. component 51,123,124) #818
Copy link
Copy link
Open
Description
Summary
Param.select_component() exists in mavsdk-python and is documented, but on my setup it returns ParamError: UNKNOWN when selecting non-autopilot components (for example component 51), even though those components are discovered by mavsdk_server.
This prevents using the MAVSDK Param plugin to upload params to components from a .params file (e.g. CAN/UAVCAN peripherals).
Environment
- MAVSDK server version:
v3.15.0(from logs) mavsdk-python: 3.15.3 (pip install)- OS: Linux (Ubuntu, Python 3.10)
What I’m trying to do
Use the MAVSDK Param plugin with:
select_component(component_id, ProtocolVersion.V1)orProtocolVersion.EXTset_param_int/float/custom(...)
to upload parameters to components listed in a PX4 .params file (component IDs like 51, 123, 124 - UAVCAN Devices).
Python Script
#!/usr/bin/env python3
import asyncio
from mavsdk import System
from mavsdk.param import ProtocolVersion
import logging
logging.basicConfig(level=logging.DEBUG)
async def wait_for_connection(drone: System):
async for state in drone.core.connection_state():
if state.is_connected:
return
async def main():
drone = System()
await drone.connect(system_address="udpin://0.0.0.0:14550")
await wait_for_connection(drone)
print("Connected")
try:
await drone.param.select_component(51, ProtocolVersion.V1)
print("Selected component 51 (V1)")
except Exception as exc:
print(f"select_component failed: {exc}")
pass
await drone.param.set_param_int("CELL_EMPTY_VOLTA", 3600)
print("Set CELL_EMPTY_VOLTA = 3600 on component 51")
if __name__ == "__main__":
asyncio.run(main()) Terminal Log
DEBUG:asyncio:Using selector: EpollSelector
DEBUG:grpc._cython.cygrpc:[_cygrpc] Loaded running loop: id(loop)=139374995289184
DEBUG:grpc._cython.cygrpc:Using AsyncIOEngine.POLLER as I/O engine
DEBUG:grpc._cython.cygrpc:[_cygrpc] Loaded running loop: id(loop)=139374995289184
DEBUG:mavsdk.async_plugin_manager:Waiting for mavsdk_server to be ready...
INFO:mavsdk_server:MAVSDK version: v3.15.0 (mavsdk_impl.cpp:33)
INFO:mavsdk_server:Waiting to discover system on udpin://0.0.0.0:14550... (connection_initiator.h:20)
INFO:mavsdk_server:New system on: 10.41.1.1:45177 (system ID: 1) (udp_connection.cpp:263)
DEBUG:mavsdk_server:Component Autopilot (component ID: 1) added. (system_impl.cpp:496)
DEBUG:mavsdk_server:Component Unsupported component (component ID: 192) added. (system_impl.cpp:496)
DEBUG:mavsdk_server:Discovered 2 components (system_impl.cpp:616)
INFO:mavsdk_server:System discovered (connection_initiator.h:62)
INFO:mavsdk_server:Server started (grpc_server.cpp:177)
INFO:mavsdk_server:Server set to listen on 0.0.0.0:50051 (grpc_server.cpp:178)
DEBUG:mavsdk_server:MAVLink: critical: Preflight: GPS Speed Accuracy too low (system_impl.cpp:358)
DEBUG:mavsdk_server:Component Unsupported component (component ID: 155) added. (system_impl.cpp:496)
DEBUG:mavsdk_server:Component Unsupported component (component ID: 236) added. (system_impl.cpp:496)
DEBUG:mavsdk_server:MAVLink: critical: Preflight Fail: Compass 0 uncalibrated (system_impl.cpp:358)
DEBUG:mavsdk_server:Component Unsupported component (component ID: 40) added. (system_impl.cpp:496)
DEBUG:mavsdk_server:MAVLink: critical: Preflight Fail: Compass 1 uncalibrated (system_impl.cpp:358)
DEBUG:mavsdk_server:Component Unsupported component (component ID: 198) added. (system_impl.cpp:496)
DEBUG:mavsdk_server:Component Unsupported component (component ID: 97) added. (system_impl.cpp:496)
DEBUG:mavsdk_server:Component Companion Computer (component ID: 191) added. (system_impl.cpp:496)
DEBUG:mavsdk_server:MAVLink: critical: Preflight Fail: Press safety button first (system_impl.cpp:358)
DEBUG:mavsdk_server:MAVLink: emergency: Battery 1: over voltage. (system_impl.cpp:358)
DEBUG:mavsdk_server:Component Unsupported component (component ID: 51) added. (system_impl.cpp:496)
DEBUG:mavsdk_server:Component Unsupported component (component ID: 60) added. (system_impl.cpp:496)
DEBUG:mavsdk_server:Component Unsupported component (component ID: 195) added. (system_impl.cpp:496)
DEBUG:mavsdk_server:Component Unsupported component (component ID: 63) added. (system_impl.cpp:496)
DEBUG:mavsdk.async_plugin_manager:Connected to mavsdk_server!
DEBUG:grpc._cython.cygrpc:[_cygrpc] Loaded running loop: id(loop)=139374995289184
Connected
DEBUG:grpc._cython.cygrpc:[_cygrpc] Loaded running loop: id(loop)=139374995289184
select_component failed: UNKNOWN: 'Unknown'; origin: select_component(); params: (51, <ProtocolVersion.V1: 0>)
DEBUG:grpc._cython.cygrpc:[_cygrpc] Loaded running loop: id(loop)=139374995289184
WARNING:mavsdk_server:Got ill-formed param_value message (param_id empty) (mavlink_parameter_client.cpp:661)
WARNING:mavsdk_server:sending again, retries to do: 5 (CELL_EMPTY_VOLTA). (mavlink_parameter_client.cpp:1163)
WARNING:mavsdk_server:Got ill-formed param_value message (param_id empty) (mavlink_parameter_client.cpp:661)
WARNING:mavsdk_server:sending again, retries to do: 4 (CELL_EMPTY_VOLTA). (mavlink_parameter_client.cpp:1163)
WARNING:mavsdk_server:Got ill-formed param_value message (param_id empty) (mavlink_parameter_client.cpp:661)
DEBUG:mavsdk_server:MAVLink: critical: Preflight Fail: Compass 0 uncalibrated (system_impl.cpp:358)
DEBUG:mavsdk_server:MAVLink: critical: Preflight Fail: Compass 1 uncalibrated (system_impl.cpp:358)
DEBUG:mavsdk_server:MAVLink: critical: Preflight Fail: Press safety button first (system_impl.cpp:358)
DEBUG:mavsdk_server:MAVLink: emergency: Battery 1: over voltage. (system_impl.cpp:358)
WARNING:mavsdk_server:sending again, retries to do: 3 (CELL_EMPTY_VOLTA). (mavlink_parameter_client.cpp:1163)
WARNING:mavsdk_server:Got ill-formed param_value message (param_id empty) (mavlink_parameter_client.cpp:661)
WARNING:mavsdk_server:sending again, retries to do: 2 (CELL_EMPTY_VOLTA). (mavlink_parameter_client.cpp:1163)
WARNING:mavsdk_server:Got ill-formed param_value message (param_id empty) (mavlink_parameter_client.cpp:661)
WARNING:mavsdk_server:sending again, retries to do: 1 (CELL_EMPTY_VOLTA). (mavlink_parameter_client.cpp:1163)
WARNING:mavsdk_server:Got ill-formed param_value message (param_id empty) (mavlink_parameter_client.cpp:661)
ERROR:mavsdk_server:Error: Retrying failed set param timeout: CELL_EMPTY_VOLTA (mavlink_parameter_client.cpp:1183)
Traceback (most recent call last):
File "minimum_upload.py", line 31, in <module>
asyncio.run(main())
File "/usr/lib/python3.10/asyncio/runners.py", line 44, in run
return loop.run_until_complete(main)
File "/usr/lib/python3.10/asyncio/base_events.py", line 649, in run_until_complete
return future.result()
File "minimum_upload.py", line 27, in main
await drone.param.set_param_int("CELL_EMPTY_VOLTA", 3600)
File "/home/user/.local/lib/python3.10/site-packages/mavsdk/param.py", line 585, in set_param_int
raise ParamError(result, "set_param_int()", name, value)
mavsdk.param.ParamError: TIMEOUT: 'Timeout'; origin: set_param_int(); params: ('CELL_EMPTY_VOLTA', 3600)
Having similar error to get parameters of perticular component. get_all_params() is not downloading other component parameters (my case 51,123,124 - UAVCAN Components)
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
No labels
Activity
julianoes commentedon Feb 25, 2026
Does it have the same system ID and component ID 51?
VamsiTungala commentedon Feb 25, 2026
I dont know exactly where i can find system id for uavcan devices.
but when i checked wireshark i see heartbeat message from 51 component it shows sys id 1.
I dont see any messages for other two UAVCAN devices one is RM3100(123) and other is ARK RTK GPS (124).
UAVCAN STATUS
julianoes commentedon Feb 27, 2026
Oh, so this is a parameter of a uavcan component. I don't think that's hooked up yet. It would be nice indeed if it was.
VamsiTungala commentedon Mar 4, 2026
I remember testing with MAVSDK 2.2, in that i was able to get/set parameters with component ID's.
I will recheck that over this weekend.