# Properties

Configuration, status and telemetry download from the device is handled using a number of property variables. Each variable has a type (signed/unsigned integers, floating point numbers, strings, etc.) and a default value. Some properties are used for configuration and can be modified and stored in (optionally write-protected) non-volatile memory. Others are read-only and used for telemetry purposes. Some property changes take effect immediately, while others require a store and a system reset after update.

The system properties are divided into a number of property groups, each covering a specific part of the firmware.

Property values can be listed, modified and stored using the `prop` debug shell commands or remotely through the Property Client Library library. As an example, to change the CSP address of the device to 11 and the default interface to RS422/KISS, run:

    [srs-3] prop get sys.csp.address
    21
    [srs-3] prop set sys.csp.address 11
    [srs-3] prop set sys.csp.routes "0/0 KISS"
    [srs-3] prop unlock sys
    [srs-3] prop save sys
    [srs-3] prop unlock -f sys
    [srs-3] prop save -f sys
    [srs-3] reboot
    ...
    [srs-3] prop get sys.csp.address
    11
    [srs-3] prop get sys.csp.routes
    "0/0 KISS"

## System Group

The `sys` group contains system parameters that should remain fixed after launch. The group can be stored twice in `boot` and `fallback` configuration. Both are write-protected and must be unlocked using `prop unlock` before they can be written to.

Property | Type | Default | Description
--- | --- | --- | ---
sys.name | string | srs-3 | String name for the system
sys.serial | uint32 | — | Serial number/ID of the device
sys.sw.version | uint32 | — | Running software version
sys.bootcount | uint32 | — | Number of times the system was booted
sys.gwdt.init | uint32 | 86400 | Ground watchdog timer reset value
sys.gwdt.counter | uint32 | — | Ground watchdog timer current value
sys.gwdt.reset | uint32 | — | Ground watchdog timer trigger
sys.csp.address | uint8 | 21 | CSP address of the device
sys.csp.routes | string | — | Additional CSP routes in CIDR notation
sys.can.rate | uint32 | 1000000 | CAN-bus bitrate
sys.can.promisc | bool | true | Accept all CSP/CFP CAN-frames
sys.uart.rate | uint32 | 1000000 | RS422 baudrate
sys.net.enable | bool | false | Enable IP routing
sys.net.en.ip | string | 192.168.100.2 | Ethernet IP address
sys.net.en.prefix | uint8 | 24 | Ethernet subnet mask bits
sys.net.en.gw | string | 192.168.100.1 | Ethernet gateway IP address
sys.net.rf.ip | string | 192.168.200.2 | Space link IP address
sys.net.rf.prefix | uint8 | 24 | Space link subnet mask bits
sys.net.rf.gw | string | 192.168.200.1 | Space link gateway IP address

## Calibration Group

The `cal` group contains factory calibration settings and should not be modified.

## Configuration Group

The `conf` group contains runtime settings. The group can be stored to the `boot` configuration and is not write protected.

Property | Type | Default | Description
--- | --- | --- | ---
conf.reboot | uint16 | 0 | Reboot timer
conf.led.enable | bool | false | Onboard LEDs enabled
conf.power.eth | bool | false | Ethernet power channel

## Transmitter Group

The `tx` group contains settings for the transmitter. The group can be stored twice in `boot` and `fallback` configuration. Both are write-protected and must be unlocked using `prop unlock` before they can be written to.

Property | Type | Default | Description
--- | --- | --- | ---
tx.freq | uint32 | 2229500000 | Transmit frequency
tx.rate | uint32 | 512000 | Transmit bitrate
tx.bt | uint8 | 50 | Transmit GMSK BT product
tx.pout | float | 25.00 | Transmit power in dBm
tx.gain | uint16 | 1000 | Transmit gain manual setting
tx.alc.mode | uint8 | 2 | ALC mode
tx.alc.kp | float | 40.0 | ALC Kp
tx.alc.limit | uint16 | 200 | ALC maximum allowed gain adjust
tx.rs | bool | true | Enable Reed-Solomon coding
tx.cc | bool | true | Enable convolutional coding
tx.rand | bool | true | Enable randomization
tx.crc | bool | true | Enable CRC32C checksum
tx.size | uint16 | 217 | Maximum payload size
tx.frames | uint32 | 0 | Number of transmitted frames
tx.pwd.fwd | float | — | Measured forward power of last frame in dBm
tx.pwd.rfl | float | — | Measured reflected power of last frame in dBm
tx.overpower | uint16 | 0 | Number of overpower events
tx.pllnolock | uint16 | 0 | Number of PLL lock lost events

## Receiver Group

The `rx` group contains settings for the transmitter. The group can be stored twice in `boot` and `fallback` configuration. Both are write-protected and must be unlocked using `prop unlock` before they can be written to.

Property | Type | Default | Description
--- | --- | --- | ---
rx.freq | uint32 | 2029500000 | Receive frequency
rx.rate | uint32 | 128000 | Receive bitrate
rx.bw | uint8 | 150 | Receive bandwidth in percent of bitrate
rx.rs | bool | true | Enable Reed-Solomon coding
rx.cc | bool | true | Enable convolutional coding
rx.rand | bool | true | Enable randomization
rx.crc | bool | true | Enable CRC32C checksum
rx.size | uint32 | — | Maximum payload size
rx.frames | uint32 | 0 | Number of received frames
rx.detected | uint32 | 0 | Number of detected frames
rx.rssi | float | — | Measured RSSI of last frame in dBm
rx.pllnolock | uint16 | 0 | Number of PLL lock lost events

## Telemetry Group

Telemetry values are stored in the `tm` group and updated once every second. The group does not support storage.

Property | Type | Default | Description
--- | --- | --- | ---
tm.temp.core | int16 | 0 | MCU junction temperature in 1/100 ℃
tm.temp.mcu | int16 | 0 | MCU package temperature in 1/100 ℃
tm.temp.power | int16 | 0 | Power regulators temperature in 1/100 ℃
tm.temp.lna | int16 | 0 | LNA temperature in 1/100 ℃
tm.temp.pa | int16 | 0 | PA temperature in 1/100 ℃
tm.volt.vin | uint16 | 0 | Input voltage in mV
tm.volt.vreg | uint16 | 0 | 3.75 V rail voltage in mV
tm.volt.3v3 | uint16 | 0 | 3.3 V rail voltage in mV
tm.cur.vin | int16 | 0 | Input current in mA
tm.cur.vreg | int16 | 0 | 3.75 V rail current in mA
tm.cur.3v3 | int16 | 0 | 3.3 V rail current in mA
tm.power.vin | uint16 | 0 | Input power in mW
tm.power.vreg | uint16 | 0 | 3.75 V rail power in mW
tm.power.3v3 | uint16 | 0 | 3.3 V rail power in mW