{"id":9927,"library":"mavproxy","title":"MAVProxy","description":"MAVProxy (MAVLink Proxy) is a powerful, flexible, and extensible command-line ground station for MAVLink-enabled vehicles, primarily used with ArduPilot and PX4 autopilots. It acts as a telemetry relay, data logger, and provides an interactive interface for controlling and monitoring drones. The library is actively maintained by the ArduPilot community, with frequent patch releases addressing bug fixes and new features. The current version is 1.8.74.","status":"active","version":"1.8.74","language":"en","source_language":"en","source_url":"https://github.com/ArduPilot/MAVProxy","tags":["mavlink","ardupilot","drone","gcs","telemetry","robotics","command-line"],"install":[{"cmd":"pip install mavproxy","lang":"bash","label":"Install MAVProxy"}],"dependencies":[{"reason":"Core MAVLink protocol implementation, essential for communication.","package":"pymavlink","optional":false},{"reason":"Required for serial port communication with vehicle autopilots.","package":"pyserial","optional":false},{"reason":"Used by various MAVProxy modules for plotting and graphing data.","package":"matplotlib","optional":true},{"reason":"Used by the map module for rendering map tiles.","package":"Pillow","optional":true}],"imports":[{"note":"MAVProxy is primarily a command-line tool (`mavproxy.py`). For programmatic use or embedding, the core class is within the 'MAVProxy' sub-package (capitalized). Directly importing 'mavproxy' as a top-level module is not the intended way to access its main components.","wrong":"import mavproxy","symbol":"MAVProxy","correct":"from MAVProxy.MAVProxy import MAVProxy"},{"note":"This import is typically used when developing custom MAVProxy modules to extend its functionality, rather than for general programmatic use.","symbol":"mp_module","correct":"from MAVProxy.modules.lib import mp_module"}],"quickstart":{"code":"mavproxy.py --master=/dev/ttyUSB0 --baudrate 57600 --aircraft MyDrone\n# Or, for SITL (Software In The Loop) simulation:\nmavproxy.py --master=tcp:127.0.0.1:5760 --out=udp:127.0.0.1:14550 --aircraft MySimDrone","lang":"bash","description":"Start MAVProxy connecting to a vehicle via a serial port (e.g., USB) or a TCP/UDP network connection (common for SITL). Replace '/dev/ttyUSB0' with your actual serial port and adjust baudrate if necessary. The '--out' parameter is useful for relaying MAVLink to other GCS applications."},"warnings":[{"fix":"Ensure you are running MAVProxy with Python 3.6 or newer. Use `python3 -m pip install mavproxy` if you have multiple Python versions.","message":"MAVProxy officially dropped support for Python 2.x starting from version 1.8.10. Attempting to run it with Python 2 will result in syntax errors or import failures.","severity":"breaking","affected_versions":"<=1.8.9 (Python 2 supported), >=1.8.10 (Python 3 only)"},{"fix":"Install missing dependencies as needed, e.g., `pip install matplotlib Pillow lxml`. The `requirements.txt` file in the MAVProxy source provides a comprehensive list of all optional dependencies.","message":"Many MAVProxy modules (e.g., map, grapher) have additional dependencies not included in the base installation. If you encounter errors related to missing modules like 'matplotlib', 'Pillow', or 'lxml' when using these features, you need to install them separately.","severity":"gotcha","affected_versions":"All versions"},{"fix":"Add your user to the 'dialout' group: `sudo usermod -a -G dialout $USER`. Log out and back in for changes to take effect. Alternatively, run MAVProxy with `sudo` (not recommended for regular use).","message":"On Linux, connecting to serial devices (like '/dev/ttyUSB0') often requires appropriate user permissions. Without them, MAVProxy will fail with a 'Permission denied' error.","severity":"gotcha","affected_versions":"All versions on Linux/Unix-like systems"},{"fix":"If experiencing MAVLink related issues after an update, try updating all three: `pip install --upgrade mavproxy pymavlink MAVLink`. Refer to MAVProxy's `requirements.txt` for recommended versions.","message":"There can be tight coupling between MAVProxy, pymavlink, and MAVLink library versions. Updating one without the others can sometimes lead to MAVLink parsing errors or unexpected behavior due to protocol definition mismatches.","severity":"gotcha","affected_versions":"All versions"}],"env_vars":null,"last_verified":"2026-04-17T00:00:00.000Z","next_check":"2026-07-16T00:00:00.000Z","problems":[{"fix":"Add your user to the 'dialout' group (Linux): `sudo usermod -a -G dialout $USER`. Log out and back in. For Windows, ensure the COM port is not in use by another application.","cause":"The current user does not have read/write permissions for the specified serial device.","error":"OSError: [Errno 13] Permission denied: '/dev/ttyUSB0'"},{"fix":"For command-line use, ensure `mavproxy.py` is in your system's PATH. If programmatically importing, use `from MAVProxy.MAVProxy import MAVProxy` or `from MAVProxy.modules.lib import mp_module`.","cause":"You are trying to import 'MAVProxy' as a top-level package, but its main components are within a capitalized sub-package, or you are trying to run `mavproxy.py` without it being in your PATH.","error":"ModuleNotFoundError: No module named 'MAVProxy'"},{"fix":"MAVProxy is primarily used via its `mavproxy.py` command-line script. If you intend to use its functionalities programmatically, import specific classes or functions from `MAVProxy` sub-packages, for example: `from MAVProxy.MAVProxy import MAVProxy` to instantiate the core GCS.","cause":"You might be trying to call `mavproxy` as a function or object directly after `import mavproxy`, which is incorrect.","error":"TypeError: 'module' object is not callable"}]}