---
id: device
title: Device Configuration
slug: /settings/config/device
sidebar_label: Device
---

import Tabs from "@theme/Tabs";
import TabItem from "@theme/TabItem";

The device config options are: Role, Serial Output, and Debug Log. Device config uses an admin message sending a `Config.Device` protobuf.

## Device Config Values

### Role

Sets the role of node.

Acceptable values:

|      Value      |                                                                               Description                                                                               |
| :-------------: | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------: |
|    `CLIENT`     |                                                                Client (default) - App connected client.                                                                 |
|  `CLIENT_MUTE`  |                       Client Mute - Same as a client except packets will not hop over this node, does not contribute to routing packets for mesh.                       |
|    `ROUTER`     | Router - Mesh packets will prefer to be routed over this node. This node will not be used by client apps. The WiFi/BLE radios and the OLED screen will be put to sleep. |
| `ROUTER_CLIENT` |            Router Client - Mesh packets will prefer to be routed over this node. The Router Client can be used as both a Router and an app connected Client.            |

### Serial Console

Acceptable values: `true` or `false`

Disabling this will disable the SerialConsole by not initializing the StreamAPI.

### Debug Log

Acceptable values: `true` or `false`

By default we turn off logging as soon as an API client connects. Set this to true to leave the debug log outputting even when API is active.

### GPIO for user button

This is the GPIO pin number that will be used for the user button, if your device does not come with a predefined user button.

### GPIO for PWM Buzzer

This is the GPIO pin number that will be used for the PWM buzzer, if your device does not come with a predefined buzzer.

## Device Config Client Availability

<Tabs
groupId="settings"
defaultValue="apple"
values={[
{label: 'Android', value: 'android'},
{label: 'Apple', value: 'apple'},
{label: 'CLI', value: 'cli'},
{label: 'Web', value: 'web'},
]}>
<TabItem value="android">

:::info

Device Config is available for Android.

1. Open the Meshtastic App
2. Navigate to: **Vertical Ellipsis (3 dots top right) > Device Settings > Device Config**

:::

</TabItem>
<TabItem value="apple">

:::info
All device config options other than NTP Server are available on iOS, iPadOS and macOS at Settings > Radio Configuration > Device.
:::

</TabItem>
<TabItem value="cli">

:::info

All device config options are available in the python CLI. Example commands are below:

:::

| Setting                  | Acceptable Values                                  | Default  |
| ------------------------ | -------------------------------------------------- | -------- |
| device.debug_log_enabled | `true`, `false`                                    | `false`  |
| device.role              | `CLIENT`, `CLIENT_MUTE`, `ROUTER`, `ROUTER_CLIENT` | `CLIENT` |
| device.serial_enabled    | `true`, `false`                                    | `true`   |
| device.button_gpio       | `0` - `34`                                         | `0`      |
| device.buzzer_gpio       | `0` - `34`                                         | `0`      |

:::tip

Because the device will reboot after each command is sent via CLI, it is recommended when setting multiple values in a config section that commands be chained together as one.

```shell title="Example:"
meshtastic --set device.role CLIENT --set device.debug_log_enabled true
```

:::

```shell title="Set the role to client"
meshtastic --set device.role CLIENT
```

```shell title="Disable serial console"
meshtastic --set device.serial_enabled false
```

```shell title="Enable debug logging"
meshtastic --set device.debug_log_enabled true
```

</TabItem>
<TabItem value="web">

:::info
All device config options are available in the Web UI.
:::

  </TabItem>
</Tabs>
