diff --git a/docs/ko/SUMMARY.md b/docs/ko/SUMMARY.md index 7f08297636..844175e86c 100644 --- a/docs/ko/SUMMARY.md +++ b/docs/ko/SUMMARY.md @@ -93,6 +93,7 @@ - [후방 이동 튜닝](config_vtol/vtol_back_transition_tuning.md) - [항속 센서 미장착 VTOL](config_vtol/vtol_without_airspeed_sensor.md) - [VTOL 날씨 풍향](config_vtol/vtol_weathervane.md) + - [VTOL Ice Shedding](config_vtol/vtol_ice_shedding.md) - [비행 모드 ](flight_modes_vtol/index.md) - [Mission Mode (VTOL)](flight_modes_vtol/mission.md) - [Return Mode (VTOL)](flight_modes_vtol/return.md) @@ -361,6 +362,8 @@ - [Satellite Comms (Iridium/RockBlock)](advanced_features/satcom_roadblock.md) + - [Analog Video Transmitters](vtx/index.md) + - [Power Systems](power_systems/index.md) - [Battery Estimation Tuning](config/battery.md) - [Battery Chemistry Overview](power_systems/battery_chemistry.md) diff --git a/docs/ko/config/safety.md b/docs/ko/config/safety.md index 8c4c720942..afa785d204 100644 --- a/docs/ko/config/safety.md +++ b/docs/ko/config/safety.md @@ -283,7 +283,7 @@ Acting on a detected failure during flight is deactivated by default (enable by During **takeoff** the failure detector [attitude trigger](#attitude-trigger) invokes the [disarm action](#act_disarm) if the vehicle flips (disarm kills the motors but, unlike flight termination, will not launch a parachute or perform other failure actions). Note that this check is _always enabled on takeoff_, irrespective of the `CBRK_FLIGHTTERM` parameter. -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/altitude.md), [Acro mode (FW)](../flight_modes_fw/altitude.md), and [Manual (FW)](../flight_modes_fw/manual.md)). +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)). ### 자세 감지기 diff --git a/docs/ko/config_vtol/index.md b/docs/ko/config_vtol/index.md index 2cc478205c..651bc79d0d 100644 --- a/docs/ko/config_vtol/index.md +++ b/docs/ko/config_vtol/index.md @@ -9,3 +9,4 @@ As part of this you should calibrate the [Airspeed sensor](../config/airspeed.md - [Back-transition Tuning](../config_vtol/vtol_back_transition_tuning.md) - [VTOL w/o Airspeed Sensor](../config_vtol/vtol_without_airspeed_sensor.md) - [VTOL Weather Vane](../config_vtol/vtol_weathervane.md) +- [Ice Shedding](../config_vtol/vtol_ice_shedding.md) diff --git a/docs/ko/config_vtol/vtol_ice_shedding.md b/docs/ko/config_vtol/vtol_ice_shedding.md new file mode 100644 index 0000000000..ae719602af --- /dev/null +++ b/docs/ko/config_vtol/vtol_ice_shedding.md @@ -0,0 +1,22 @@ +# VTOL Ice Shedding feature + +## 개요 + +Ice shedding is a feature that periodically spins unused motors in fixed-wing +flight, to break off any ice that is starting to build up in the motors while it +is still feasible to do so. + +It is configured by the paramter `CA_ICE_PERIOD`. When it is 0, the feature is +disabled, when it is above 0, it sets the duration of the ice shedding cycle in +seconds. In each cycle, the rotors are spun for two seconds at a motor output of +0.01. + +:::warning +When enabling the feature on a new airframe, there is the risk of producing +torques that disturb the fixed-wing rate controller. To mitigate this risk: + +- Set your `PWM_MIN` values correctly, so that the motor output 0.01 actually + produces 1% thrust +- Be prepared to take control and switch back to multicopter + +::: diff --git a/docs/ko/contribute/code.md b/docs/ko/contribute/code.md index 8673e2516f..16535ea2eb 100644 --- a/docs/ko/contribute/code.md +++ b/docs/ko/contribute/code.md @@ -34,7 +34,7 @@ If you update an existing file you are not required to make the whole file compl ### Line Length -- Maximum line length is 120 characters. +- Maximum line length is 140 characters. ### File Extensions diff --git a/docs/ko/middleware/uxrce_dds.md b/docs/ko/middleware/uxrce_dds.md index e39ed4930b..b1f4a3b284 100644 --- a/docs/ko/middleware/uxrce_dds.md +++ b/docs/ko/middleware/uxrce_dds.md @@ -335,7 +335,7 @@ The configuration can be done using the [UXRCE-DDS parameters](../advanced_confi - [UXRCE_DDS_NS_IDX](../advanced_config/parameter_reference.md#UXRCE_DDS_NS_IDX) : Index-based namespace definition. Setting this parameter to any value other than `-1` creates a namespace with the prefix `uav_` and the specified value, e.g. `uav_0`, `uav_1`, etc. See [namespace](#customizing-the-namespace) for methods to define richer or arbitrary namespaces. - - [`UXRCE_DDS_FLCTRL`](../advanced_config/parameter_reference.md#UXRCE_DDS_FLCTRL) : Serial port hardware flow control enable. + - [`UXRCE_DDS_FLCTRL`](../advanced_config/parameter_reference.md#UXRCE_DDS_FLCTRL) : Serial port hardware flow control enable. To use hardware flow control, a custom MicroXRCE Agent needs to be adopted. Please refer to [this PR](https://github.com/eProsima/Micro-XRCE-DDS-Agent/pull/407) for the required changes, cherry-pick them on top of the [agent version](#build-run-within-ros-2-workspace) you need to use and then run the agent with the additional `--flow-control` option. :::info diff --git a/docs/ko/modules/hello_sky.md b/docs/ko/modules/hello_sky.md index 1f35a8d629..58e6469aa5 100644 --- a/docs/ko/modules/hello_sky.md +++ b/docs/ko/modules/hello_sky.md @@ -89,15 +89,19 @@ This consists of a single _C_ file and a _cmake_ definition (which tells the too ``` :::tip + The main function must be named `_main` and exported from the module as shown. + ::: :::tip + `PX4_INFO` is the equivalent of `printf` for the PX4 shell (included from **px4_platform_common/log.h**). There are different log levels: `PX4_INFO`, `PX4_WARN`, `PX4_ERR`, `PX4_DEBUG`. Warnings and errors are additionally added to the [ULog](../dev_log/ulog_file_format.md) and shown on [Flight Review](https://logs.px4.io/). + ::: 3. Create and open a new _cmake_ definition file named **CMakeLists.txt**. @@ -166,7 +170,7 @@ This consists of a single _C_ file and a _cmake_ definition (which tells the too 4. Create and open a new _Kconfig_ definition file named **Kconfig** and define your symbol for naming (see [Kconfig naming convention](../hardware/porting_guide_config.md#px4-kconfig-symbol-naming-convention)). 아래 텍스트를 복사하십시오. - ``` + ```text menuconfig EXAMPLES_PX4_SIMPLE_APP bool "px4_simple_app" default n diff --git a/docs/ko/neural_networks/mc_neural_network_control.md b/docs/ko/neural_networks/mc_neural_network_control.md index 172bc3a1ce..ba696594a3 100644 --- a/docs/ko/neural_networks/mc_neural_network_control.md +++ b/docs/ko/neural_networks/mc_neural_network_control.md @@ -22,7 +22,11 @@ If not, there are other possible NN frameworks, such as [Eigen](https://eigen.tu This document explains how you can include the module in your PX4 build, and provides a broad overview of how it works. The other documents in the section provide more information about the integration, allowing you to replace the NN with a version trained on different data, or even to replace the TLFM library altogether. -If you are looking for more resources to learn about the module, a website has been created with links to a youtube video and a workshop paper. A full master's thesis will be added later. [A Neural Network Mode for PX4 on Embedded Flight Controllers](https://ntnu-arl.github.io/px4-nns/). +:::tip +For more information, see the Masters thesis from which this module was created: [Deep Reinforcement Learning for Embedded Control Policies for Aerial Vehicles](https://nva.sikt.no/registration/019b26689144-efeebae8-84d6-4413-ad7f-9aceb4ff7374). + +In addition, the (Norwegian) website [A Neural Network Mode for PX4 on Embedded Flight Controllers](https://ntnu-arl.github.io/px4-nns/) has a youtube video and a workshop paper . +::: ## Neural Network PX4 Firmware diff --git a/docs/ko/neural_networks/raptor.md b/docs/ko/neural_networks/raptor.md index 59127aa64e..4a7685e1c1 100644 --- a/docs/ko/neural_networks/raptor.md +++ b/docs/ko/neural_networks/raptor.md @@ -35,7 +35,7 @@ The method we developed for training the RAPTOR policy is called Meta-Imitation You can torture test the RAPTOR policy in your browser at [https://raptor.rl.tools](https://raptor.rl.tools) or in the embedded app here: - + For more information please refer to the paper at [https://arxiv.org/abs/2509.11481](https://arxiv.org/abs/2509.11481). diff --git a/docs/ko/peripherals/adsb_flarm.md b/docs/ko/peripherals/adsb_flarm.md index 8ef5ee5983..539a220abd 100644 --- a/docs/ko/peripherals/adsb_flarm.md +++ b/docs/ko/peripherals/adsb_flarm.md @@ -11,7 +11,7 @@ PX4 traffic avoidance works with ADS-B or FLARM products that supply transponder It has been tested with the following devices: - [PingRX ADS-B Receiver](https://uavionix.com/product/pingrx-pro/) (uAvionix) -- [FLARM](https://flarm.com/products/uav/atom-uav-flarm-for-drones/) +- [FLARM](https://www.flarm.com/en/drones/) ## 하드웨어 설정 diff --git a/docs/ko/ros2/px4_ros2_control_interface.md b/docs/ko/ros2/px4_ros2_control_interface.md index 07c451a8a3..63ccc917cb 100644 --- a/docs/ko/ros2/px4_ros2_control_interface.md +++ b/docs/ko/ros2/px4_ros2_control_interface.md @@ -14,7 +14,7 @@ At the time of writing, parts of the PX4 ROS 2 Control Interface are experimenta ::: -The [PX4 ROS 2 Interface Library](../ros2/px4_ros2_interface_lib.md) is a C++ library that simplifies controlling PX4 from ROS 2. +The [PX4 ROS 2 Interface Library](../ros2/px4_ros2_interface_lib.md) is a C++ library (with Python bindings) that simplifies controlling PX4 from ROS 2. Developers use the library to create and dynamically register modes written using ROS 2. These modes are dynamically registered with PX4, and appear to be part of PX4 to a ground station or other external system. @@ -26,6 +26,12 @@ These classes abstract the internal setpoints used by PX4, and that can therefor PX4 ROS 2 modes are easier to implement and maintain than PX4 internal modes, and provide more resources for developers in terms of processing power and pre-existing libraries. Unless the mode is safety-critical, requires strict timing or very high update rates, or your vehicle doesn't have a companion computer, you should [consider using PX4 ROS 2 modes in preference to PX4 internal modes](../concept/flight_modes.md#internal-vs-external-modes). +:::tip +If you want to use Python, check out the [examples in the repository](https://github.com/Auterion/px4-ros2-interface-lib/tree/main/examples/python). +Not all classes have Python bindings yet — the [supported bindings are here](https://github.com/Auterion/px4-ros2-interface-lib/tree/main/px4_ros2_py/src/px4_ros2). +You are welcome to add and contribute missing classes. +::: + ## 개요 This diagram provides a conceptual overview of how the control interface modes and mode executors interact with PX4. diff --git a/docs/ko/ros2/px4_ros2_interface_lib.md b/docs/ko/ros2/px4_ros2_interface_lib.md index 1e585e264d..9f1a0a6163 100644 --- a/docs/ko/ros2/px4_ros2_interface_lib.md +++ b/docs/ko/ros2/px4_ros2_interface_lib.md @@ -7,7 +7,7 @@ At the time of writing, parts of the PX4 ROS 2 Interface Library are experimental, and hence subject to change. ::: -The [PX4 ROS 2 Interface Library](https://github.com/Auterion/px4-ros2-interface-lib) is a C++ library that simplifies controlling and interacting with PX4 from ROS 2. +The [PX4 ROS 2 Interface Library](https://github.com/Auterion/px4-ros2-interface-lib) is a C++ library (with Python bindings) that simplifies controlling and interacting with PX4 from ROS 2. The library provides three high-level interfaces for developers: diff --git a/docs/ko/sensor/sfxx_lidar.md b/docs/ko/sensor/sfxx_lidar.md index ed1ee88bab..ee0cb5e9d6 100644 --- a/docs/ko/sensor/sfxx_lidar.md +++ b/docs/ko/sensor/sfxx_lidar.md @@ -15,6 +15,8 @@ LightWare는 UAV에 장착에 적합한 경량의 범용 레이저 고도계( " | [LW20/C](https://lightware.co.za/products/lw20-c-100-m) | 100 | I2C 버스 | 감지 및 회피 애플리케이션을 위한 서보가 있는 방수 (IP67) | | [SF30/D](https://lightwarelidar.com/shop/sf30-d-200-m/) | 200 | I2C 버스 | Waterproofed (IP67) | | [SF45/B](../sensor/sf45_rotating_lidar.md) | 50 | 직렬 | Rotary Lidar (Used for [Collision Prevention](../computer_vision/collision_prevention.md)) | +| [GRF250](https://lightwarelidar.com/shop/grf-250/) | 250 | I2C | Gimbal Range Finder | +| [GRF500](https://lightwarelidar.com/shop/grf-500/) | 500 | I2C | Gimbal Range Finder | :::details Discontinued diff --git a/docs/ko/vtx/index.md b/docs/ko/vtx/index.md new file mode 100644 index 0000000000..19f320905b --- /dev/null +++ b/docs/ko/vtx/index.md @@ -0,0 +1,287 @@ +# Analog Video Transmitters + +Analog Video Transmitters (VTX) can be controlled by PX4 via a half-duplex UART connection implementing the SmartAudio v1, v2, and v2.1 and Tramp protocols. + +The protocols allow writing and reading: + +- device status. +- transmission frequency in MHz or via band and channel index. +- transmission power in dBm or mW. +- operation modes. + +VTX settings are controlled by parameters and optionally via RC AUX channels or CRSF MSP commands. +The driver stores frequency and power tables that map band/channel indices to actual transmission values. +Configuration is device-specific and set up using the command line interface. + +## 시작하기 + +Connect the SmartAudio or Tramp pin of the VTX to the TX pin of a free serial port on the flight controller. +Then set the following parameters: + +- `VTX_SER_CFG`: Select the serial port used for VTX communication. +- `VTX_DEVICE`: Selects the VTX device (generic SmartAudio/Tramp or a specific device). + +Note that since the VTX communication is half-duplex, you can, for example, use the single-pin Radio Controller port for the VTX and use a full duplex TELEM port for CRSF communication. + +You should now be able to see the VTX device in the driver status: + +``` +nsh> vtx status +INFO [vtx] UART device: /dev/ttyS4 +INFO [vtx] VTX table "UNINITIALIZED": +INFO [vtx] Power levels: +INFO [vtx] RC mapping: Disabled +INFO [vtx] Parameters: +INFO [vtx] band: 1 +INFO [vtx] channel: 1 +INFO [vtx] frequency: 0 MHz +INFO [vtx] power level: 1 +INFO [vtx] power: 0 = 0 mW +INFO [vtx] pit mode: off +INFO [vtx] SmartAudio v2: +INFO [vtx] band: 1 +INFO [vtx] channel: 1 +INFO [vtx] frequency: 6110 MHz +INFO [vtx] power level: 1 +INFO [vtx] power: 0 mW +INFO [vtx] pit mode: on +INFO [vtx] lock: unlocked +``` + +:::warning +Without a configured power table, power mappings are unknown and default to 0 mW. +Some VTX devices enter pit mode when power is set to 0, regardless of the `VTX_PIT_MODE` parameter. +::: + +## VTX Table Configuration + +The VTX table stores frequency and power mappings for your specific device. + +The manufacturer usually provides this information in the form of a JSON file that can be translated into a [Betaflight CLI command set](https://www.betaflight.com/docs/development/VTX#vtx-table) that this driver implements for compatibility. + +### Power Level Configuration + +``` +# Set table name ≤16 characters +vtxtable name "Peak THOR T67" + +# Set the power values that are sent to the VTX for each power level index +# Note: SmartAudio v1 and v2 use index values! +vtxtable powervalues 0 1 2 3 4 +# Note: SmartAudio v2.1 uses dBm values instead! +# vtxtable powervalues 14 23 27 30 35 +# Note: Tramp uses mW values instead! +# vtxtable powervalues 25 200 500 1000 3000 + +# Set the corresponding power labels for each power level index ≤4 characters. +# These are used for status reporting. +vtxtable powerlabels 25 200 500 1W 3W + +# Set number of power levels +vtxtable powerlevels 5 + +# Save configuration +vtxtable save +``` + +This will create a VTX table with 5 power levels. + +```nsh> vtxtable status +INFO [vtxtable] VTX table "Peak THOR T67": +INFO [vtxtable] Power levels: +INFO [vtxtable] 1: 0 = 25 +INFO [vtxtable] 2: 1 = 200 +INFO [vtxtable] 3: 2 = 500 +INFO [vtxtable] 4: 3 = 1W +INFO [vtxtable] 5: 4 = 3W +``` + +### Frequency Table Configuration + +``` +# Set the name of each band and the frequencies of each channel +vtxtable band 1 BAND_A A FACTORY 6110 6130 6150 6170 6190 6210 6230 6250 +vtxtable band 2 BAND_B B FACTORY 6270 6290 6310 6330 6350 6370 6390 6410 +vtxtable band 3 BAND_E E FACTORY 6430 6450 6470 6490 6510 6530 6550 6570 +vtxtable band 4 BAND_F F FACTORY 6590 6610 6630 6650 6670 6690 6710 6730 +vtxtable band 5 BAND_R R FACTORY 6750 6770 6790 6810 6830 6850 6870 6890 +vtxtable band 6 BAND_P P FACTORY 6910 6930 6950 6970 6990 7010 7030 7050 +vtxtable band 7 BAND_H H FACTORY 7070 7090 7110 7130 7150 7170 7190 7210 +vtxtable band 8 BAND_U U FACTORY 6115 6265 6425 6585 6745 6905 7065 7185 + +# Set number of bands and channels +vtxtable bands 8 +vtxtable channels 8 + +# Save configuration +vtxtable save +``` + +This will create a VTX table with 8 bands and 8 channels. +Note that FACTORY sends the band and channel indexes to the VTX device and they use their internal frequency mapping. In this mode the frequency is just for indication purposes. +In contrast, CUSTOM would send the actual frequency values to the VTX device, but not all devices support this mode. +Setting a frequency to zero will skip setting it. + +``` +nsh> vtxtable status +INFO [vtxtable] VTX table 8x8: Peak THOR T67 +INFO [vtxtable] A: BAND_A = 6110 6130 6150 6170 6190 6210 6230 6250 +INFO [vtxtable] B: BAND_B = 6270 6290 6310 6330 6350 6370 6390 6410 +INFO [vtxtable] E: BAND_E = 6430 6450 6470 6490 6510 6530 6550 6570 +INFO [vtxtable] F: BAND_F = 6590 6610 6630 6650 6670 6690 6710 6730 +INFO [vtxtable] R: BAND_R = 6750 6770 6790 6810 6830 6850 6870 6890 +INFO [vtxtable] P: BAND_P = 6910 6930 6950 6970 6990 7010 7030 7050 +INFO [vtxtable] H: BAND_H = 7070 7090 7110 7130 7150 7170 7190 7210 +INFO [vtxtable] U: BAND_U = 6115 6265 6425 6585 6745 6905 7065 7185 +``` + +### Table Constraints + +Maximum table dimensions: + +- ≤24 bands each with ≤16 channels and ≤32GHz frequency values. +- ≤16 power levels. +- ≤16 characters table name. +- ≤12 characters band name and 1 character band letter. +- ≤4 characters power label length (to support "2.5W"). + +## AUX Channel Mapping + +The AUX mapping feature allows you to control VTX settings using RC AUX channels. +Each mapping entry defines an AUX channel range that triggers a specific VTX configuration. + +To enable AUX mapping, set `VTX_MAP_CONFIG` to one of the following values: + +- `0`: Disabled +- `1`: Disabled (reserved for CRSF MSP integration) +- `2`: Map AUX channels to power level control only +- `3`: Map AUX channels to band and channel control only +- `4`: Map AUX channels to all settings (power, band, and channel) + +### Configuring AUX Map Entries + +Use the following command format to add mapping entries: + +``` +vtxtable +``` + +Parameters: + +- `index`: Map entry index (0-159) +- `aux_channel`: AUX channel number (3-19, where AUX1=3) +- `band`: Target band (1-24, or 0 to leave unchanged) +- `channel`: Target channel (1-16, or 0 to leave unchanged) +- `power`: Power level (1-16, 0 to leave unchanged, or -1 for pit mode) +- `start_pwm`: Start of PWM range in microseconds (typically 900-2100) +- `end_pwm`: End of PWM range in microseconds (typically 900-2100) + +:::info +AUX channel numbering starts from 3 (AUX1=channel 3) to account for the first four RC channels 0-3 used for flight control. +::: + +Example configuration for a 6-position dial controlling band/channel on AUX4 (channel 7): + +``` +vtx 0 7 7 1 0 900 1025 +vtx 1 7 7 2 0 1025 1100 +vtx 2 7 7 4 0 1100 1175 +vtx 3 7 7 6 0 1175 1225 +vtx 4 7 7 8 0 1225 1300 +vtx 5 7 3 8 0 1300 2100 +``` + +Example configuration for power control on AUX3 (channel 6): + +``` +vtxtable 16 6 0 0 -1 900 1250 +vtxtable 17 6 0 0 1 1250 1525 +vtxtable 18 6 0 0 2 1525 1650 +vtxtable 19 6 0 0 3 1650 1875 +vtxtable 20 6 0 0 4 1875 2010 +``` + +Save the configuration with: + +``` +vtxtable save +``` + +The map status can be verified with `vtxtable status`. + +## CRSF MSP Integration + +When using a CRSF receiver with MSP support, you can control VTX settings directly from your transmitter using MSP commands sent over the CRSF link. +This feature must be enabled at compile time with the `VTX_CRSF_MSP_SUPPORT` Kconfig option. + +To enable CRSF MSP control, set `VTX_MAP_CONFIG` to one of: + +- `1`: MSP controls both frequency (band/channel) and power +- `2`: MSP controls frequency (band/channel) only, AUX controls power +- `3`: MSP controls power only, AUX controls band/channel + +When MSP integration is active, the driver responds to `MSP_SET_VTX_CONFIG` (0x59) commands. +The transmitter can send band, channel, frequency, power level, and pit mode settings via MSP, which are automatically mapped to the corresponding PX4 parameters. + +:::tip +The MSP integration allows seamless VTX control from transmitters that support VTX configuration via Lua scripts or built-in VTX menus without requiring additional hardware switches. +::: + +## Build Configuration + +Both the VTX driver and VTX table support are configured via Kconfig options. + +Key configuration options: + +- `VTX_CRSF_MSP_SUPPORT`: Enables CRSF MSP command support (default: disabled) +- `VTXTABLE_CONFIG_FILE`: File path for persistent configuration (default: `/fs/microsd/vtx_config`) +- `VTXTABLE_AUX_MAP`: Enables AUX channel mapping (default: disabled) + +## Parameter Reference + +### VTX Settings Parameters + +- `VTX_BAND` (0-23): Frequency band selection (Band 1-24 in UI) +- `VTX_CHANNEL` (0-15): Channel within band (Channel 1-16 in UI) +- `VTX_FREQUENCY` (0-32000): Direct frequency in MHz (overrides band/channel when non-zero) +- `VTX_POWER` (0-15): Power level (Level 1-16 in UI, as configured in table) +- `VTX_PIT_MODE` (boolean): Pit mode for reduced power (default: disabled) + +### Configuration Parameters + +- `VTX_SER_CFG`: Serial port assignment for VTX communication +- `VTX_MAP_CONFIG`: Controls how VTX settings are mapped: + - Without `VTX_CRSF_MSP_SUPPORT`: + - `0`: Disabled + - `1`: Disabled + - `2`: AUX controls power only + - `3`: AUX controls band/channel only + - `4`: AUX controls both power and band/channel + - With `VTX_CRSF_MSP_SUPPORT`: + - `0`: Disabled + - `1`: MSP controls both frequency and power + - `2`: MSP controls frequency, AUX controls power + - `3`: MSP controls power, AUX controls band/channel + - `4`: Not used with MSP support +- `VTX_DEVICE`: Device-specific configuration (see below) + +## Device-Specific Configuration + +The `VTX_DEVICE` parameter allows device-specific workarounds. +It encodes both the protocol type and device variant: + +- Low byte (bits 0-7): Protocol selection + - `0`: SmartAudio (default) + - `1`: Tramp +- High byte (bits 8-15): Device-specific variant + - `0`: Generic device + - `20`: Peak THOR T67 + - `40`: Rush Max Solo + +### Known Device Workarounds + +**Peak THOR T67** (`VTX_DEVICE` = 5120): +This device incorrectly reports pit mode status but otherwise functions normally. +The driver applies a workaround to override the reported status with the actual configured state. + +For generic devices, use `VTX_DEVICE` = 0 (SmartAudio) or `VTX_DEVICE` = 1 (Tramp).