MAVLINKHUD

Overview

The NET parameter group configures the Ethernet and Networking subsystem for high-end flight controllers (e.g., Pixhawk 5X, 6X, Orange Cube Plus with Ethernet Carrier).

This system allows the autopilot to communicate over a standard Local Area Network (LAN) using TCP or UDP, providing extremely high bandwidth compared to traditional serial telemetry.

Key Concepts

1. Static vs. Dynamic IP (NET_DHCP)

  • DHCP (1): Autodetect IP address from a router.
  • Static (0): Use the IP addresses manually defined in NET_IPADDR0...3.

2. Network Ports (NET_Pn_...)

ArduPilot supports multiple concurrent network connections (Sockets).

  • NET_P1_TYPE: 0=UDP Client, 1=UDP Server, 2=TCP Client, 3=TCP Server.
  • NET_P1_PORT: The network port number (e.g., 14550 for MAVLink).
  • NET_P1_PROTOCOL: Selects the protocol (1=MAVLink, 5=GPS, etc.).

3. MAC Address Configuration

Allows overriding the hardware MAC address for network environments with strict MAC filtering.

Parameter Breakdown

  • NET_ENABLE: Master switch.
  • NET_IPADDRx: Static IP configuration.
  • NET_NETMASK: Network mask (usually 24 for 255.255.255.0).

Integration Guide

  1. Hardware: Plug the autopilot into an Ethernet switch or companion computer.
  2. Enable: Set NET_ENABLE = 1.
  3. Configure Port: Set NET_P1_TYPE = 1 (UDP Server) and NET_P1_PORT = 14550.
  4. Connect: Open Mission Planner and select "UDP" with port 14550.

Developer Notes

  • Library: libraries/AP_Networking.
  • Performance: Ethernet can handle much higher logging and telemetry rates (100Hz+) without saturation.

NET_DHCP

Default 1
Range 0 1

DHCP Enable (NET_DHCP)

Description

NET_DHCP tells the autopilot to ask your network router for an IP address automatically.

  • 0 (Static): You must manually set NET_IPADDR, NET_NETMASK, and NET_GWADDR. Use this for point-to-point connections (e.g. drone directly to laptop).
  • 1 (DHCP): The drone will get its settings from the router. Use this if the drone is plugged into a home/office network.

Tuning & Behavior

  • Default Value: 1.
  • Recommendation: Use 0 (Static) for mission-critical telemetry to ensure the IP address never changes.

NET_ENABLE

Default 0
Range 0 1

Networking Enable (NET_ENABLE)

Description

NET_ENABLE activates the IP (Internet Protocol) communications stack on the flight controller.

If your flight controller has an Ethernet port (like the Cube Orange with an ADS-B carrier board or the Holybro Pixhawk 6X), this parameter must be set to 1 to enable MAVLink over UDP or TCP.

Tuning & Behavior

  • 0: Disabled.
  • 1: Enabled.
  • Reboot Required: Yes.

NET_IPADDR0

Default 0
Range 0 255

IPv4 Address Byte 0 (NET_IPADDR0)

Description

NET_IPADDR0 is the first part of your drone's static network address.

If you are using an Ethernet-capable flight controller (like the Cube Orange with an Ethernet carrier) and have disabled DHCP (NET_DHCP = 0), you must manually set the IP address using the NET_IPADDR parameters.

  • Example: For an IP of 192.168.1.50, set NET_IPADDR0 to 192.

Tuning & Behavior

  • Default Value: 0.
  • Reboot Required: Yes.
  • Constraint: Only active if NET_DHCP is set to 0.

NET_IPADDR1

Default 0
Range 0 255

IPv4 Address Byte 1 (NET_IPADDR1)

Description

NET_IPADDR1 is the second part of your drone's static network address.

  • Example: For an IP of 192.168.1.50, set NET_IPADDR1 to 168.

NET_IPADDR2

Default 0
Range 0 255

IPv4 Address Byte 2 (NET_IPADDR2)

Description

NET_IPADDR2 is the third part of your drone's static network address.

  • Example: For an IP of 192.168.1.50, set NET_IPADDR2 to 1.

NET_IPADDR3

Default 0
Range 0 255

IPv4 Address Byte 3 (NET_IPADDR3)

Description

NET_IPADDR3 is the fourth and final part of your drone's static network address.

  • Example: For an IP of 192.168.1.50, set NET_IPADDR3 to 50.

NET_MACADDR0

Default 0
Range 0 255

MAC Address Byte 0 (NET_MACADDR0)

Description

NET_MACADDR0 is the first byte of your flight controller's unique physical network ID.

Normally, the flight controller generates a unique MAC address automatically based on its hardware Serial Number. You only need to change this if you have multiple drones on the same network that accidentally have the same MAC address, or if you need to bypass network security filters.

Tuning & Behavior

  • Default Value: 0 (Automatically generated on boot).
  • Reboot Required: Yes.

NET_MACADDR1

Default 0
Range 0 255

MAC Address Byte 1 (NET_MACADDR1)

See NET_MACADDR0 for details.

NET_MACADDR2

Default 0
Range 0 255

MAC Address Byte 2 (NET_MACADDR2)

See NET_MACADDR0 for details.

NET_MACADDR3

Default 0
Range 0 255

MAC Address Byte 3 (NET_MACADDR3)

See NET_MACADDR0 for details.

NET_MACADDR4

Default 0
Range 0 255

MAC Address Byte 4 (NET_MACADDR4)

See NET_MACADDR0 for details.

NET_MACADDR5

Default 0
Range 0 255

MAC Address Byte 5 (NET_MACADDR5)

See NET_MACADDR0 for details.

NET_NETMASK

bits
Default 24
Range 0 32

Network Mask (NET_NETMASK)

Description

NET_NETMASK defines the size of your local network. It uses CIDR notation (the number of bits set to 1).

  • 24: Equivalent to 255.255.255.0. Standard for most home networks.
  • 16: Equivalent to 255.255.0.0.

Tuning & Behavior

  • Default Value: 24.

NET_OPTIONS

Default 0
Range 0 127

Networking Options (NET_OPTIONS)

Description

NET_OPTIONS enables specialized networking "Bridges" and "Gateways."

  • Bit 0 (1): Enable PPP Ethernet Gateway. Allows the drone to share its internet connection (e.g. from a cellular modem) with other devices on the Ethernet bus.
  • Bit 1 (2): Enable CAN1 Multicast Endpoint. Forwards DroneCAN traffic to the network so you can use GCS tools over Wifi/Ethernet to tune CAN devices.
  • Bit 2 (4): Enable CAN2 Multicast Endpoint.

Tuning & Behavior

  • Default Value: 0.
  • Recommendation: Enable Bit 1 if you want to use the "DroneCAN GUI Tool" on your laptop without plugging in a USB cable to the flight controller.

NET_P1_PORT

Default 0
Range 1 65535

Network Port 1 Number (NET_P1_PORT)

Description

NET_P1_PORT defines the "Door Number" for network traffic.

Tuning & Behavior

  • Default Value: 0.
  • MAVLink Standard: Set to 14550 or 14551 for standard ground station compatibility.

NET_P1_PROTOCOL

Default 0
Range 0 60

Network Port 1 Protocol (NET_P1_PROTOCOL)

Description

NET_P1_PROTOCOL identifies the "Language" spoken on the virtual network port. This uses the same values as the physical SERIALx_PROTOCOL parameters.

  • 2: MAVLink 2 (Default for most GCS).
  • 5: GPS.
  • 20: NMEA Output.

Tuning & Behavior

  • Default Value: 0 (None).
  • Recommendation: Set to 2 for GCS telemetry.

NET_P1_TYPE

Default 0
Range 0 4

Network Port 1 Type (NET_P1_TYPE)

Description

NET_P1_TYPE creates a "Virtual Serial Port" over the network.

This allows you to send MAVLink data or GPS corrections over Ethernet or Wifi without using a physical UART cable.

  • 0: Disabled.
  • 1: UDP Client. The drone initiates a connection to a specific IP (defined in NET_P1_IP).
  • 2: UDP Server. The drone waits for a GCS to send data to it.
  • 3: TCP Client. Reliable connection initiated by the drone.
  • 4: TCP Server. Reliable connection where the drone acts as a host.

Tuning & Behavior

  • Default Value: 0.
  • Recommendation: Use 2 (UDP Server) for standard GCS connections over Wifi. Use 3 (TCP Client) if you are connecting to a fixed MAVLink routing server.

NET_P2_PORT

null
Default 0
Range null

Control port

Note: This parameter functions identically to NET_P1_PORT.

NET_P2_PROTOCOL

null
Default float(AP_CAN::Protocol::DroneCAN
Range null

Enable use of specific protocol over virtual driver

Note: This parameter functions identically to NET_P1_PROTOCOL.

NET_P2_TYPE

null
Default TILT_TYPE_CONTINUOUS
Range null

Tiltrotor type

Note: This parameter functions identically to NET_P1_TYPE.

NET_P3_PORT

null
Default 0
Range null

Control port

Note: This parameter functions identically to NET_P1_PORT.

NET_P3_PROTOCOL

null
Default float(AP_CAN::Protocol::DroneCAN
Range null

Enable use of specific protocol over virtual driver

Note: This parameter functions identically to NET_P1_PROTOCOL.

NET_P3_TYPE

null
Default TILT_TYPE_CONTINUOUS
Range null

Tiltrotor type

Note: This parameter functions identically to NET_P1_TYPE.

NET_P4_PORT

null
Default 0
Range null

Control port

Note: This parameter functions identically to NET_P1_PORT.

NET_P4_PROTOCOL

null
Default float(AP_CAN::Protocol::DroneCAN
Range null

Enable use of specific protocol over virtual driver

Note: This parameter functions identically to NET_P1_PROTOCOL.

NET_P4_TYPE

null
Default TILT_TYPE_CONTINUOUS
Range null

Tiltrotor type

Note: This parameter functions identically to NET_P1_TYPE.

NET_P5_PORT

null
Default 0
Range null

Control port

Note: This parameter functions identically to NET_P1_PORT.

NET_P5_PROTOCOL

null
Default float(AP_CAN::Protocol::DroneCAN
Range null

Enable use of specific protocol over virtual driver

Note: This parameter functions identically to NET_P1_PROTOCOL.

NET_P5_TYPE

null
Default TILT_TYPE_CONTINUOUS
Range null

Tiltrotor type

Note: This parameter functions identically to NET_P1_TYPE.

NET_P6_PORT

null
Default 0
Range null

Control port

Note: This parameter functions identically to NET_P1_PORT.

NET_P6_PROTOCOL

null
Default float(AP_CAN::Protocol::DroneCAN
Range null

Enable use of specific protocol over virtual driver

Note: This parameter functions identically to NET_P1_PROTOCOL.

NET_P6_TYPE

null
Default TILT_TYPE_CONTINUOUS
Range null

Tiltrotor type

Note: This parameter functions identically to NET_P1_TYPE.

NET_P7_PORT

null
Default 0
Range null

Control port

Note: This parameter functions identically to NET_P1_PORT.

NET_P7_PROTOCOL

null
Default float(AP_CAN::Protocol::DroneCAN
Range null

Enable use of specific protocol over virtual driver

Note: This parameter functions identically to NET_P1_PROTOCOL.

NET_P7_TYPE

null
Default TILT_TYPE_CONTINUOUS
Range null

Tiltrotor type

Note: This parameter functions identically to NET_P1_TYPE.

NET_P8_PORT

null
Default 0
Range null

Control port

Note: This parameter functions identically to NET_P1_PORT.

NET_P8_PROTOCOL

null
Default float(AP_CAN::Protocol::DroneCAN
Range null

Enable use of specific protocol over virtual driver

Note: This parameter functions identically to NET_P1_PROTOCOL.

NET_P8_TYPE

null
Default TILT_TYPE_CONTINUOUS
Range null

Tiltrotor type

Note: This parameter functions identically to NET_P1_TYPE.

NET_P9_PORT

null
Default 0
Range null

Control port

Note: This parameter functions identically to NET_P1_PORT.

NET_P9_PROTOCOL

null
Default float(AP_CAN::Protocol::DroneCAN
Range null

Enable use of specific protocol over virtual driver

Note: This parameter functions identically to NET_P1_PROTOCOL.

NET_P9_TYPE

null
Default TILT_TYPE_CONTINUOUS
Range null

Tiltrotor type

Note: This parameter functions identically to NET_P1_TYPE.

NET_PASS1_BAUD1

bps
Default 115200
Range 1 4000000

Networking Passthrough BAUD 1 (NET_PASS1_BAUD1)

Description

NET_PASS1_BAUD1 sets the communication speed for the first endpoint in the passthrough bridge.

  • 115200 (Default): Standard for most telemetry and GPS units.

Tuning & Behavior

  • Constraint: This only applies if NET_PASS1_EP1 is set to a Serial UART (0-9).

NET_PASS1_BAUD2

bps
Default 115200
Range 1 4000000

Networking Passthrough BAUD 2 (NET_PASS1_BAUD2)

Description

NET_PASS1_BAUD2 sets the communication speed for the second endpoint.

See NET_PASS1_BAUD1 for details.

NET_PASS1_ENABLE

Default 0
Range 0 1

Networking Passthrough Enable (NET_PASS1_ENABLE)

Description

NET_PASS1_ENABLE activates a powerful "Digital Patch Bay" feature on peripheral nodes.

This allows you to take data coming in from one port (like an Ethernet socket) and pipe it directly out of another port (like a physical UART Serial port) on the same device. This is essential for transparently connecting specialized sensors or companion computers that are not natively CAN/DroneCAN compatible to the rest of the network.

Tuning & Behavior

  • Default Value: 0 (Disabled).
  • Use Case: Use this on an H7-based peripheral board to bridge a MAVLink telemetry stream from Ethernet to a Serial radio.

NET_PASS1_EP1

Default -1
Range -1 59

Networking Passthrough Endpoint 1 (NET_PASS1_EP1)

Description

NET_PASS1_EP1 defines the first "Socket" in your data bridge.

You can select from a wide variety of physical and virtual ports. Data received on Endpoint 1 is sent to Endpoint 2, and vice versa.

Values

  • -1: Disabled.
  • 0-9: Physical Serial Ports (Serial0 is usually USB).
  • 21-29: Network Ports (UDP/TCP sockets configured in NET_Pn_).
  • 41-49: CAN1 Virtual Ports.
  • 51-59: CAN2 Virtual Ports.

Tuning & Behavior

  • Reboot Required: Yes.
  • Example: To bridge a TCP socket (Network Port 1) to a Serial GPS (Serial 3), set EP1 = 21 and EP2 = 3.

NET_PASS1_EP2

Default -1
Range -1 59

Networking Passthrough Endpoint 2 (NET_PASS1_EP2)

See NET_PASS1_EP1 for details.

NET_PASS1_OPT1

Default 0
Range 0 255

Network Passthrough 1 Options 1 (NET_PASS1_OPT1)

Description

NET_PASS1_OPT1 enables specific features for the first side of the bridge, such as RTS/CTS flow control or parity settings.

NET_PASS1_OPT2

Default 0
Range 0 255

Network Passthrough 1 Options 2 (NET_PASS1_OPT2)

Description

NET_PASS1_OPT2 enables specific features for the second side of the bridge.

NET_PASS2_BAUD1

null
Default 115200
Range null

Endpoint 1 Baud Rate

Note: This parameter functions identically to NET_PASS1_BAUD1.

NET_PASS2_BAUD2

null
Default 115200
Range null

Endpoint 2 Baud Rate

Note: This parameter functions identically to NET_PASS1_BAUD2.

NET_PASS2_ENABLE

null
Default 0
Range null

Enable pullup after altitude wait

Note: This parameter functions identically to NET_PASS1_ENABLE.

NET_PASS2_EP1

null
Default -1
Range null

Endpoint 1

Note: This parameter functions identically to NET_PASS1_EP1.

NET_PASS2_EP2

null
Default -1
Range null

Endpoint 2

Note: This parameter functions identically to NET_PASS1_EP2.

NET_PASS2_OPT1

null
Default 0
Range null

Serial Port Options EP1

Note: This parameter functions identically to NET_PASS1_OPT1.

NET_PASS2_OPT2

null
Default 0
Range null

Serial Port Options EP2

Note: This parameter functions identically to NET_PASS1_OPT2.

NET_PASS3_BAUD1

null
Default 115200
Range null

Endpoint 1 Baud Rate

Note: This parameter functions identically to NET_PASS1_BAUD1.

NET_PASS3_BAUD2

null
Default 115200
Range null

Endpoint 2 Baud Rate

Note: This parameter functions identically to NET_PASS1_BAUD2.

NET_PASS3_ENABLE

null
Default 0
Range null

Enable pullup after altitude wait

Note: This parameter functions identically to NET_PASS1_ENABLE.

NET_PASS3_EP1

null
Default -1
Range null

Endpoint 1

Note: This parameter functions identically to NET_PASS1_EP1.

NET_PASS3_EP2

null
Default -1
Range null

Endpoint 2

Note: This parameter functions identically to NET_PASS1_EP2.

NET_PASS3_OPT1

null
Default 0
Range null

Serial Port Options EP1

Note: This parameter functions identically to NET_PASS1_OPT1.

NET_PASS3_OPT2

null
Default 0
Range null

Serial Port Options EP2

Note: This parameter functions identically to NET_PASS1_OPT2.

NET_PASS4_BAUD1

null
Default 115200
Range null

Endpoint 1 Baud Rate

Note: This parameter functions identically to NET_PASS1_BAUD1.

NET_PASS4_BAUD2

null
Default 115200
Range null

Endpoint 2 Baud Rate

Note: This parameter functions identically to NET_PASS1_BAUD2.

NET_PASS4_ENABLE

null
Default 0
Range null

Enable pullup after altitude wait

Note: This parameter functions identically to NET_PASS1_ENABLE.

NET_PASS4_EP1

null
Default -1
Range null

Endpoint 1

Note: This parameter functions identically to NET_PASS1_EP1.

NET_PASS4_EP2

null
Default -1
Range null

Endpoint 2

Note: This parameter functions identically to NET_PASS1_EP2.

NET_PASS4_OPT1

null
Default 0
Range null

Serial Port Options EP1

Note: This parameter functions identically to NET_PASS1_OPT1.

NET_PASS4_OPT2

null
Default 0
Range null

Serial Port Options EP2

Note: This parameter functions identically to NET_PASS1_OPT2.

NET_PASS5_BAUD1

null
Default 115200
Range null

Endpoint 1 Baud Rate

Note: This parameter functions identically to NET_PASS1_BAUD1.

NET_PASS5_BAUD2

null
Default 115200
Range null

Endpoint 2 Baud Rate

Note: This parameter functions identically to NET_PASS1_BAUD2.

NET_PASS5_ENABLE

null
Default 0
Range null

Enable pullup after altitude wait

Note: This parameter functions identically to NET_PASS1_ENABLE.

NET_PASS5_EP1

null
Default -1
Range null

Endpoint 1

Note: This parameter functions identically to NET_PASS1_EP1.

NET_PASS5_EP2

null
Default -1
Range null

Endpoint 2

Note: This parameter functions identically to NET_PASS1_EP2.

NET_PASS5_OPT1

null
Default 0
Range null

Serial Port Options EP1

Note: This parameter functions identically to NET_PASS1_OPT1.

NET_PASS5_OPT2

null
Default 0
Range null

Serial Port Options EP2

Note: This parameter functions identically to NET_PASS1_OPT2.

NET_PASS6_BAUD1

null
Default 115200
Range null

Endpoint 1 Baud Rate

Note: This parameter functions identically to NET_PASS1_BAUD1.

NET_PASS6_BAUD2

null
Default 115200
Range null

Endpoint 2 Baud Rate

Note: This parameter functions identically to NET_PASS1_BAUD2.

NET_PASS6_ENABLE

null
Default 0
Range null

Enable pullup after altitude wait

Note: This parameter functions identically to NET_PASS1_ENABLE.

NET_PASS6_EP1

null
Default -1
Range null

Endpoint 1

Note: This parameter functions identically to NET_PASS1_EP1.

NET_PASS6_EP2

null
Default -1
Range null

Endpoint 2

Note: This parameter functions identically to NET_PASS1_EP2.

NET_PASS6_OPT1

null
Default 0
Range null

Serial Port Options EP1

Note: This parameter functions identically to NET_PASS1_OPT1.

NET_PASS6_OPT2

null
Default 0
Range null

Serial Port Options EP2

Note: This parameter functions identically to NET_PASS1_OPT2.

NET_PASS7_BAUD1

null
Default 115200
Range null

Endpoint 1 Baud Rate

Note: This parameter functions identically to NET_PASS1_BAUD1.

NET_PASS7_BAUD2

null
Default 115200
Range null

Endpoint 2 Baud Rate

Note: This parameter functions identically to NET_PASS1_BAUD2.

NET_PASS7_ENABLE

null
Default 0
Range null

Enable pullup after altitude wait

Note: This parameter functions identically to NET_PASS1_ENABLE.

NET_PASS7_EP1

null
Default -1
Range null

Endpoint 1

Note: This parameter functions identically to NET_PASS1_EP1.

NET_PASS7_EP2

null
Default -1
Range null

Endpoint 2

Note: This parameter functions identically to NET_PASS1_EP2.

NET_PASS7_OPT1

null
Default 0
Range null

Serial Port Options EP1

Note: This parameter functions identically to NET_PASS1_OPT1.

NET_PASS7_OPT2

null
Default 0
Range null

Serial Port Options EP2

Note: This parameter functions identically to NET_PASS1_OPT2.

NET_PASS8_BAUD1

null
Default 115200
Range null

Endpoint 1 Baud Rate

Note: This parameter functions identically to NET_PASS1_BAUD1.

NET_PASS8_BAUD2

null
Default 115200
Range null

Endpoint 2 Baud Rate

Note: This parameter functions identically to NET_PASS1_BAUD2.

NET_PASS8_ENABLE

null
Default 0
Range null

Enable pullup after altitude wait

Note: This parameter functions identically to NET_PASS1_ENABLE.

NET_PASS8_EP1

null
Default -1
Range null

Endpoint 1

Note: This parameter functions identically to NET_PASS1_EP1.

NET_PASS8_EP2

null
Default -1
Range null

Endpoint 2

Note: This parameter functions identically to NET_PASS1_EP2.

NET_PASS8_OPT1

null
Default 0
Range null

Serial Port Options EP1

Note: This parameter functions identically to NET_PASS1_OPT1.

NET_PASS8_OPT2

null
Default 0
Range null

Serial Port Options EP2

Note: This parameter functions identically to NET_PASS1_OPT2.

NET_PASS9_BAUD1

null
Default 115200
Range null

Endpoint 1 Baud Rate

Note: This parameter functions identically to NET_PASS1_BAUD1.

NET_PASS9_BAUD2

null
Default 115200
Range null

Endpoint 2 Baud Rate

Note: This parameter functions identically to NET_PASS1_BAUD2.

NET_PASS9_ENABLE

null
Default 0
Range null

Enable pullup after altitude wait

Note: This parameter functions identically to NET_PASS1_ENABLE.

NET_PASS9_EP1

null
Default -1
Range null

Endpoint 1

Note: This parameter functions identically to NET_PASS1_EP1.

NET_PASS9_EP2

null
Default -1
Range null

Endpoint 2

Note: This parameter functions identically to NET_PASS1_EP2.

NET_PASS9_OPT1

null
Default 0
Range null

Serial Port Options EP1

Note: This parameter functions identically to NET_PASS1_OPT1.

NET_PASS9_OPT2

null
Default 0
Range null

Serial Port Options EP2

Note: This parameter functions identically to NET_PASS1_OPT2.

NET_PPP_BAUD

Default 57
Range 1 2000

PPP Baud Rate (NET_PPP_BAUD)

Description

NET_PPP_BAUD sets the speed for the PPP connection.

This is used when a serial modem (like an LTE modem) is connected to a UART port and the autopilot is acting as a PPP client or gateway.

Tuning & Behavior

  • Default Value: 57 (57600 baud).
  • Recommendation: Set to match your modem's baud rate (often 115 or 921).

NET_PPP_PORT

Default 0
Range 0 10

PPP Serial Port (NET_PPP_PORT)

Description

NET_PPP_PORT selects which physical UART (TELEM port) is connected to the PPP modem.

  • 0: Serial 0 (USB).
  • 1: Serial 1 (Telem 1).

NET_TESTS

Default 0
Range 0 15

Networking Tests (NET_TESTS)

Description

NET_TESTS enables standard debugging services on the drone's IP address.

  • Bit 0 (1): UDP Echo (Port 7). The drone bounces back any UDP packet sent to port 7.
  • Bit 1 (2): TCP Echo (Port 7).
  • Bit 2 (4): TCP Discard (Port 9). Accepts connections but ignores data.
  • Bit 3 (8): TCP Reflect (Port 19?).

Tuning & Behavior

  • Default Value: 0.
  • Recommendation: Leave 0 unless you are debugging the network stack itself.