Driver to enable an external ADS1115 ADC connected via I2C.
The driver is included by default in firmware for boards that do not have an internal analog to digital converter, such as PilotPi or CUAV Nora (search for CONFIG_DRIVERS_ADC_ADS1115 in board configuration files).
It is enabled/disabled using the ADC_ADS1115_EN parameter, and is disabled by default. If enabled, internal ADCs are not used.
This is the DShot output driver. It is similar to the fmu driver, and can be used as drop-in replacement to use DShot as ESC communication protocol instead of PWM.
On startup, the module tries to occupy all available pins for DShot output. It skips all pins already in use (e.g. by a camera trigger module).
It supports:
DShot150, DShot300, DShot600, DShot1200
telemetry via separate UART and publishing as esc_status message
sending DShot commands via CLI
Examples
Permanently reverse motor 1:
After saving, the reversed direction will be regarded as the normal one. So to reverse again repeat the same commands.
GPS driver module that handles the communication with the device and publishes the position via uORB. It supports multiple protocols (device vendors) and by default automatically selects the correct one.
The module supports a secondary GPS device, specified via -e parameter. The position will be published on the second uORB topic instance, but it's currently not used by the rest of the system (however the data will be logged, so that it can be used for comparisons).
Implementation
There is a thread for each device polling for data. The GPS protocol classes are implemented with callbacks so that they can be used in other projects as well (eg. QGroundControl uses them too).
Examples
Starting 2 GPS devices (the main GPS on /dev/ttyS3 and the secondary on /dev/ttyS4):
Multiple instances of this driver can run simultaneously, if each instance has a separate bus OR I2C address.
For example, one instance can run on Bus 2, address 0x41, and one can run on Bus 2, address 0x43.
If the INA220 module is not powered, then by default, initialization of the driver will fail. To change this, use the -f flag. If this flag is set, then if initialization fails, the driver will keep trying to initialize again every 0.5 seconds. With this flag set, you can plug in a battery after the driver starts, and it will work. Without this flag set, the battery must be plugged in before starting the driver.
Multiple instances of this driver can run simultaneously, if each instance has a separate bus OR I2C address.
For example, one instance can run on Bus 2, address 0x41, and one can run on Bus 2, address 0x43.
If the INA226 module is not powered, then by default, initialization of the driver will fail. To change this, use the -f flag. If this flag is set, then if initialization fails, the driver will keep trying to initialize again every 0.5 seconds. With this flag set, you can plug in a battery after the driver starts, and it will work. Without this flag set, the battery must be plugged in before starting the driver.
Multiple instances of this driver can run simultaneously, if each instance has a separate bus OR I2C address.
For example, one instance can run on Bus 2, address 0x45, and one can run on Bus 2, address 0x45.
If the INA228 module is not powered, then by default, initialization of the driver will fail. To change this, use the -f flag. If this flag is set, then if initialization fails, the driver will keep trying to initialize again every 0.5 seconds. With this flag set, you can plug in a battery after the driver starts, and it will work. Without this flag set, the battery must be plugged in before starting the driver.
Multiple instances of this driver can run simultaneously, if each instance has a separate bus OR I2C address.
For example, one instance can run on Bus 2, address 0x45, and one can run on Bus 2, address 0x45.
If the INA238 module is not powered, then by default, initialization of the driver will fail. To change this, use the -f flag. If this flag is set, then if initialization fails, the driver will keep trying to initialize again every 0.5 seconds. With this flag set, you can plug in a battery after the driver starts, and it will work. Without this flag set, the battery must be plugged in before starting the driver.
This module is responsible for driving the output pins. For boards without a separate IO chip (eg. Pixracer), it uses the main channels. On boards with an IO chip (eg. Pixhawk), it uses the AUX channels, and the px4io driver is used for main ones.
Driver for NXP UWB_SR150 UWB positioning system. This driver publishes a uwb_distance message whenever the UWB_SR150 has a position measurement available.
adc <command> [arguments...]
Commands:
start
test
[-n] Do not publish ADC report, only system power
stop
status print status info
ads1115 <command> [arguments...]
Commands:
start
[-I] Internal I2C bus(es)
[-X] External I2C bus(es)
[-b <val>] board-specific bus (default=all) (external SPI: n-th bus
(default=1))
[-f <val>] bus frequency in kHz
[-q] quiet startup (no message if no device found)
[-a <val>] I2C address
default: 72
stop
status print status info
atxxxx <command> [arguments...]
Commands:
start
[-s] Internal SPI bus(es)
[-S] External SPI bus(es)
[-b <val>] board-specific bus (default=all) (external SPI: n-th bus
(default=1))
[-c <val>] chip-select pin (for internal SPI) or index (for external SPI)
[-m <val>] SPI mode
[-f <val>] bus frequency in kHz
[-q] quiet startup (no message if no device found)
stop
status print status info
batmon start -X -a 11 -b 4
batmon <command> [arguments...]
Commands:
start
[-I] Internal I2C bus(es)
[-X] External I2C bus(es)
[-b <val>] board-specific bus (default=all) (external SPI: n-th bus
(default=1))
[-f <val>] bus frequency in kHz
[-q] quiet startup (no message if no device found)
[-a <val>] I2C address
default: 11
man_info Prints manufacturer info.
suspend Suspends the driver from rescheduling the cycle.
resume Resumes the driver from suspension.
stop
status print status info
batt_smbus -X write_flash 19069 2 27 0
batt_smbus <command> [arguments...]
Commands:
start
[-I] Internal I2C bus(es)
[-X] External I2C bus(es)
[-b <val>] board-specific bus (default=all) (external SPI: n-th bus
(default=1))
[-f <val>] bus frequency in kHz
[-q] quiet startup (no message if no device found)
[-a <val>] I2C address
default: 11
man_info Prints manufacturer info.
unseal Unseals the devices flash memory to enable write_flash
commands.
seal Seals the devices flash memory to disable write_flash commands.
suspend Suspends the driver from rescheduling the cycle.
resume Resumes the driver from suspension.
write_flash Writes to flash. The device must first be unsealed with the
unseal command.
[address] The address to start writing.
[number of bytes] Number of bytes to send.
[data[0]...data[n]] One byte of data at a time separated by spaces.
stop
status print status info
bst <command> [arguments...]
Commands:
start
[-I] Internal I2C bus(es)
[-X] External I2C bus(es)
[-b <val>] board-specific bus (default=all) (external SPI: n-th bus
(default=1))
[-f <val>] bus frequency in kHz
[-q] quiet startup (no message if no device found)
[-a <val>] I2C address
default: 118
stop
status print status info
crsf_rc <command> [arguments...]
Commands:
start
[-d <val>] RC device
values: <file:dev>, default: /dev/ttyS3
stop
status print status info
dshot reverse -m 1
dshot save -m 1
dshot <command> [arguments...]
Commands:
start
telemetry Enable Telemetry on a UART
<device> UART device
reverse Reverse motor direction
[-m <val>] Motor index (1-based, default=all)
normal Normal motor direction
[-m <val>] Motor index (1-based, default=all)
save Save current settings
[-m <val>] Motor index (1-based, default=all)
3d_on Enable 3D mode
[-m <val>] Motor index (1-based, default=all)
3d_off Disable 3D mode
[-m <val>] Motor index (1-based, default=all)
beep1 Send Beep pattern 1
[-m <val>] Motor index (1-based, default=all)
beep2 Send Beep pattern 2
[-m <val>] Motor index (1-based, default=all)
beep3 Send Beep pattern 3
[-m <val>] Motor index (1-based, default=all)
beep4 Send Beep pattern 4
[-m <val>] Motor index (1-based, default=all)
beep5 Send Beep pattern 5
[-m <val>] Motor index (1-based, default=all)
esc_info Request ESC information
-m <val> Motor index (1-based)
stop
status print status info
fake_gps <command> [arguments...]
Commands:
start
stop
status print status info
fake_imu <command> [arguments...]
Commands:
start
stop
status print status info
fake_magnetometer <command> [arguments...]
Commands:
start
stop
status print status info
gimbal test pitch -45 yaw 30
gimbal <command> [arguments...]
Commands:
start
status
primary-control Set who is in control of gimbal
<sysid> <compid> MAVLink system ID and MAVLink component ID
test Test the output: set a fixed angle for one or multiple axes
(gimbal must be running)
roll|pitch|yaw <angle> Specify an axis and an angle in degrees
stop
status print status info
gps start -d /dev/ttyS3 -e /dev/ttyS4
gps reset warm
gps <command> [arguments...]
Commands:
start
[-d <val>] GPS device
values: <file:dev>, default: /dev/ttyS3
[-b <val>] Baudrate (can also be p:<param_name>)
default: 0
[-e <val>] Optional secondary GPS device
values: <file:dev>
[-g <val>] Baudrate (secondary GPS, can also be p:<param_name>)
default: 0
[-i <val>] GPS interface
values: spi|uart, default: uart
[-j <val>] secondary GPS interface
values: spi|uart, default: uart
[-p <val>] GPS Protocol (default=auto select)
values: ubx|mtk|ash|eml|fem|nmea
stop
status print status info
reset Reset GPS device
cold|warm|hot Specify reset type
gz_bridge <command> [arguments...]
Commands:
start
-m <val> Fuel model name
-p <val> Model Pose
-n <val> Model name
-i <val> PX4 instance
[-w <val>] World name
stop
status print status info
ina220 <command> [arguments...]
Commands:
start
[-I] Internal I2C bus(es)
[-X] External I2C bus(es)
[-b <val>] board-specific bus (default=all) (external SPI: n-th bus
(default=1))
[-f <val>] bus frequency in kHz
[-q] quiet startup (no message if no device found)
[-a <val>] I2C address
default: 65
[-k] if initialization (probing) fails, keep retrying periodically
[-t <val>] battery index for calibration values (1 or 2)
default: 1
[-T <val>] Type
values: VBATT|VREG, default: VBATT
stop
status print status info
ina226 <command> [arguments...]
Commands:
start
[-I] Internal I2C bus(es)
[-X] External I2C bus(es)
[-b <val>] board-specific bus (default=all) (external SPI: n-th bus
(default=1))
[-f <val>] bus frequency in kHz
[-q] quiet startup (no message if no device found)
[-a <val>] I2C address
default: 65
[-k] if initialization (probing) fails, keep retrying periodically
[-t <val>] battery index for calibration values (1 or 2)
default: 1
stop
status print status info
ina228 <command> [arguments...]
Commands:
start
[-I] Internal I2C bus(es)
[-X] External I2C bus(es)
[-b <val>] board-specific bus (default=all) (external SPI: n-th bus
(default=1))
[-f <val>] bus frequency in kHz
[-q] quiet startup (no message if no device found)
[-a <val>] I2C address
default: 69
[-k] if initialization (probing) fails, keep retrying periodically
[-t <val>] battery index for calibration values (1 or 2)
default: 1
stop
status print status info
ina238 <command> [arguments...]
Commands:
start
[-I] Internal I2C bus(es)
[-X] External I2C bus(es)
[-b <val>] board-specific bus (default=all) (external SPI: n-th bus
(default=1))
[-f <val>] bus frequency in kHz
[-q] quiet startup (no message if no device found)
[-a <val>] I2C address
default: 69
[-k] if initialization (probing) fails, keep retrying periodically
[-t <val>] battery index for calibration values (1 or 2)
default: 1
stop
status print status info
iridiumsbd <command> [arguments...]
Commands:
start
-d <val> Serial device
values: <file:dev>
[-v] Enable verbose output
test
[s|read|AT <cmd>] Test command
stop
status print status info
irlock <command> [arguments...]
Commands:
start
[-I] Internal I2C bus(es)
[-X] External I2C bus(es)
[-b <val>] board-specific bus (default=all) (external SPI: n-th bus
(default=1))
[-f <val>] bus frequency in kHz
[-q] quiet startup (no message if no device found)
[-a <val>] I2C address
default: 84
stop
status print status info
linux_pwm_out <command> [arguments...]
Commands:
start
stop
status print status info
lsm303agr <command> [arguments...]
Commands:
start
[-s] Internal SPI bus(es)
[-S] External SPI bus(es)
[-b <val>] board-specific bus (default=all) (external SPI: n-th bus
(default=1))
[-c <val>] chip-select pin (for internal SPI) or index (for external SPI)
[-m <val>] SPI mode
[-f <val>] bus frequency in kHz
[-q] quiet startup (no message if no device found)
[-R <val>] Rotation
default: 0
stop
status print status info
todo
modal_io <command> [arguments...]
Commands:
start Start the task
reset Send reset request to ESC
-i <val> ESC ID, 0-3
version Send version request to ESC
-i <val> ESC ID, 0-3
version-ext Send extended version request to ESC
-i <val> ESC ID, 0-3
rpm Closed-Loop RPM test control request
-i <val> ESC ID, 0-3
-r <val> RPM, -32,768 to 32,768
-n <val> Command repeat count, 0 to INT_MAX
-t <val> Delay between repeated commands (microseconds), 0 to INT_MAX
pwm Open-Loop PWM test control request
-i <val> ESC ID, 0-3
-r <val> Duty Cycle value, 0 to 800
-n <val> Command repeat count, 0 to INT_MAX
-t <val> Delay between repeated commands (microseconds), 0 to INT_MAX
tone Send tone generation request to ESC
-i <val> ESC ID, 0-3
-p <val> Period of sound, inverse frequency, 0-255
-d <val> Duration of the sound, 0-255, 1LSB = 13ms
-v <val> Power (volume) of sound, 0-100
led Send LED control request
-l <val> Bitmask 0x0FFF (12 bits) - ESC0 (RGB) ESC1 (RGB) ESC2 (RGB)
ESC3 (RGB)
stop
status print status info
msp_osd
msp_osd <command> [arguments...]
Commands:
stop
status print status info
neopixel -n 8
newpixel <command> [arguments...]
Commands:
stop
status print status info
paa3905 <command> [arguments...]
Commands:
start
[-s] Internal SPI bus(es)
[-S] External SPI bus(es)
[-b <val>] board-specific bus (default=all) (external SPI: n-th bus
(default=1))
[-c <val>] chip-select pin (for internal SPI) or index (for external SPI)
[-m <val>] SPI mode
[-f <val>] bus frequency in kHz
[-q] quiet startup (no message if no device found)
[-Y <val>] custom yaw rotation (degrees)
default: 0
stop
status print status info
paw3902 <command> [arguments...]
Commands:
start
[-s] Internal SPI bus(es)
[-S] External SPI bus(es)
[-b <val>] board-specific bus (default=all) (external SPI: n-th bus
(default=1))
[-c <val>] chip-select pin (for internal SPI) or index (for external SPI)
[-m <val>] SPI mode
[-f <val>] bus frequency in kHz
[-q] quiet startup (no message if no device found)
[-Y <val>] custom yaw rotation (degrees)
default: 0
stop
status print status info
pca9685_pwm_out start -a 64 -b 1
pca9685_pwm_out <command> [arguments...]
Commands:
start Start the task
[-a <val>] device address on this bus
default: 64
[-b <val>] bus that pca9685 is connected to
default: 1
[-r <val>] schedule rate limit
default: 400
stop
status print status info
pmw3901 <command> [arguments...]
Commands:
start
[-s] Internal SPI bus(es)
[-S] External SPI bus(es)
[-b <val>] board-specific bus (default=all) (external SPI: n-th bus
(default=1))
[-c <val>] chip-select pin (for internal SPI) or index (for external SPI)
[-m <val>] SPI mode
[-f <val>] bus frequency in kHz
[-q] quiet startup (no message if no device found)
[-R <val>] Rotation
default: 0
stop
status print status info
pps_capture <command> [arguments...]
Commands:
start
stop
status print status info
pwm_out <command> [arguments...]
Commands:
start
stop
status print status info
pwm_out_sim <command> [arguments...]
Commands:
start Start the module
[-m <val>] Mode
values: hil|sim, default: sim
stop
status print status info
px4flow <command> [arguments...]
Commands:
start
[-I] Internal I2C bus(es)
[-X] External I2C bus(es)
[-b <val>] board-specific bus (default=all) (external SPI: n-th bus
(default=1))
[-f <val>] bus frequency in kHz
[-q] quiet startup (no message if no device found)
[-a <val>] I2C address
default: 66
stop
status print status info
px4io <command> [arguments...]
Commands:
start
checkcrc Check CRC for a firmware file against current code on IO
<filename> Firmware file
update Update IO firmware
[<filename>] Firmware file
debug set IO debug level
<debug_level> 0=disabled, 9=max verbosity
bind DSM bind
dsm2|dsmx|dsmx8 protocol
sbus1_out enable sbus1 out
sbus2_out enable sbus2 out
test_fmu_fail test: turn off IO updates
test_fmu_ok re-enable IO updates
stop
status print status info
rc_input <command> [arguments...]
Commands:
start
[-d <val>] RC device
values: <file:dev>, default: /dev/ttyS3
bind Send a DSM bind command (module must be running)
stop
status print status info
rgbled <command> [arguments...]
Commands:
start
[-I] Internal I2C bus(es)
[-X] External I2C bus(es)
[-b <val>] board-specific bus (default=all) (external SPI: n-th bus
(default=1))
[-f <val>] bus frequency in kHz
[-q] quiet startup (no message if no device found)
[-a <val>] I2C address
default: 57
[-o <val>] RGB PWM Assignment
default: 123
stop
status print status info
rgbled_is31fl3195 <command> [arguments...]
Commands:
start
[-I] Internal I2C bus(es)
[-X] External I2C bus(es)
[-b <val>] board-specific bus (default=all) (external SPI: n-th bus
(default=1))
[-f <val>] bus frequency in kHz
[-q] quiet startup (no message if no device found)
[-a <val>] I2C address
default: 84
[-o <val>] RGB PWM Assignment
default: 123
[-i <val>] Current Band
default: 0.5
stop
status print status info
rgbled_lp5562 <command> [arguments...]
Commands:
start
[-I] Internal I2C bus(es)
[-X] External I2C bus(es)
[-b <val>] board-specific bus (default=all) (external SPI: n-th bus
(default=1))
[-f <val>] bus frequency in kHz
[-q] quiet startup (no message if no device found)
[-a <val>] I2C address
default: 48
[-u <val>] Current in mA
default: 17.5
stop
status print status info
safety_button <command> [arguments...]
Commands:
start
stop
status print status info
sht3x start -X
sht3x status
sht3x values
sht3x reset
sht3x <command> [arguments...]
Commands:
start
[-I] Internal I2C bus(es)
[-X] External I2C bus(es)
[-b <val>] board-specific bus (default=all) (external SPI: n-th bus
(default=1))
[-f <val>] bus frequency in kHz
[-q] quiet startup (no message if no device found)
[-a <val>] I2C address
default: 68
[-k] if initialization (probing) fails, keep retrying periodically
stop
status print status info
values Print actual data
reset Reinitialize sensor
tap_esc start -d /dev/ttyS2 -n <1-8>
tap_esc <command> [arguments...]
Commands:
start Start the task
[-d <val>] Device used to talk to ESCs
values: <device>
[-n <val>] Number of ESCs
default: 4
tone_alarm <command> [arguments...]
Commands:
start
stop
status print status info
uwb start -d /dev/ttyS2
uwb <command> [arguments...]
Commands:
start
-d <val> Name of device for serial communication with UWB
values: <file:dev>
-b <val> Baudrate for serial communication
values: <int>
stop
status
voxlpm [arguments...]
start
[-I] Internal I2C bus(es)
[-X] External I2C bus(es)
[-b <val>] board-specific bus (default=all) (external SPI: n-th bus
(default=1))
[-f <val>] bus frequency in kHz
[-q] quiet startup (no message if no device found)
[-a <val>] I2C address
default: 68
[-T <val>] Type
values: VBATT|P5VDC|P12VDC, default: VBATT
[-k] if initialization (probing) fails, keep retrying periodically
stop
status print status info