View this page on MeshCore Docs.
# Full Companion: turn features on and off For side-by-side Companion and infrastructure commands, see [feature switches by role](role_feature_switches.md). MQTT and logging controls differ between these roles. Use the exact `companion_radio_full` image for your board. Full includes its supported transports and MOTA sending in one firmware; ordinary settings do not require rebuilding it. USB remains the normal way to update the Companion itself. WiFi/Bluetooth updates are optional, and Full does not install LoRa MOTA packages on itself. The Wireless Paper Full memory-sharing update keeps 350 contacts and 256 queued messages normally. During an mOTA session, 128 message slots are available while the other half holds its workspace. If more than 128 unread messages are queued, sync them with an app before starting mOTA. Disconnecting the source or turning it off returns all 256 slots. Idle WiFi mOTA listening does not borrow the queue. See the [1.17.1.5 release guide](old-releases/1.17.1.5.md) for the corrected download; the earlier `aa20e927` Wireless Paper image has 150 contacts. ## Open the text terminal Close the app or serial monitor using the USB port, then open a terminal at 115200 baud, or use the [USB web console](https://flasher.meshcore.io/console). A fresh Full Companion boot or observable USB session reset starts in ASCII text mode. If it is already in Binary Companion mode, send this line once and wait for the terminal banner: ```text +++MESHCORE-TERM-START ``` Run `help`, `board`, and `version` to inspect the device. On ESP32 you can alternatively open the node's LAN address and select **CLI**, or connect with `nc DEVICE_IP 5002`. Both use the same terminal commands as USB, including `import meshcore://...`, `list`, `to`, and `send`. Use `disconnect` to release a browser/TCP session. See [the terminal guide](terminal_chat_cli.md). When finished, send `+++MESHCORE-TERM-STOP`, close the terminal, and reconnect your Companion app. These are local text commands; an app's custom-variable editor does not necessarily forward them. ## Common switches | Feature | Turn on | Turn off | When it takes effect | | --- | --- | --- | --- | | Device power saving | `set powersaving on` | `set powersaving off` | Immediately; saved | | LoRa receive power saving | `set radio.rxps on` | `set radio.rxps off` | Saved; radio applies when available | | Radio chip RX boost | `set radio.rxgain on` | `set radio.rxgain off` | Immediately; saved; supported radios only | | External FEM RX boost | `set radio.fem.rxgain on` | `set radio.fem.rxgain off` | Immediately; saved; controllable FEM only | | External FEM TX gain | `set radio.fem.txgain on` | `set radio.fem.txgain off` | Immediately; saved; controllable PA only | | ESP32 USB packet/debug logging | For 1.17.1.5: `set powersaving off`, then `set usb.logging on` | `set usb.logging off` | Immediately; saved; logging owns the USB terminal | | nRF52 separate USB logging port | `set usb.logging on reboot` | `set usb.logging off reboot` | Saves and reboots to add/remove the second USB port | | nRF52 one-port packet stream | `set usb.logging stream reboot` | `set usb.logging off` | Saved; CLI and packets share the primary port for stock serial bridges | | ESP32 browser settings | `set webui on` | `set webui off` | Saved; starts/stops WebConfig | | ESP32 temporary setup portal | `start webconfig ap` | `stop webconfig` | This session; opens a setup network/QR where available | | ESP32 WiFi firmware uploader | `start ota` or `start ota ap` | `stop ota` | This session; only usable with two application slots | | Temporary MOTA radio window | `tempradio 910.525,250,5,5,120` | `normalradio` | Bounded window; saved normal settings return afterward | Check a saved switch with the corresponding `get` command, for example `get usb.logging`, `get radio.rxps`, or `get webui`. Use `get powersaving` to inspect device power saving. Fresh installations enable device power saving and leave USB logging off. Existing saved preferences take precedence. For an **ESP32 1.17.1.5 USB logging session**, use this sequence in the text terminal: ```text set powersaving off set usb.logging on ``` The power-saving step is the documented USB-session workaround for this release. It is saved separately; `set usb.logging off` does not restore power saving. nRF52 does not need the ESP32 workaround. WiFi-only MQTT logging does not need this USB step; see [logging by role](role_feature_switches.md). ESP32 logging and Binary Companion share one USB port. After turning logging off, return to Binary Companion with `+++MESHCORE-TERM-STOP`. nRF52 keeps its optional logging port separate from its primary USB port and BLE connection. See the [USB switching guide](full_companion_usb_switcher.md). ## WiFi, Bluetooth, GPS, and MQTT On ESP32, configure WiFi through the setup portal or these commands: ```text set wifi.ssid MyNetwork set wifi.pwd my-password get wifi.status ``` Credentials are saved. A credential change schedules a reconnect; a TCP terminal will disconnect. The WiFi switch on supported device displays or their assigned WiFi button controls the Companion WiFi services. Stopping WebConfig alone stops its browser service, while the Companion's TCP and MOTA services can remain available. WiFi modem sleep is independent of device power saving. Use `set wifi.powersave min` for normal BLE/WiFi coexistence; inspect the effective state with `get wifi.powersave`. `max` is available only where the firmware's radio coexistence policy permits it. Most Full Companions provide BLE alongside their other transports. On Bluetooth-capable ESP32 and nRF52 Companions, `get bluetooth` reports the running state and `set bluetooth on|off` saves the service preference. Plain `off` requires another active management connection; `set bluetooth off force` explicitly permits disconnecting the only client. Reboot does not undo a saved-off preference. See [Bluetooth controls](cli_commands.md#turn-bluetooth-on-or-off-companion) for reply draining, connection checks, and unavailable boot modes. SenseCAP Indicator selects one secondary wireless transport per boot: ```text set companion.transport wifi reboot ``` Use `set companion.transport ble` followed by `reboot` to select Bluetooth instead. USB stays available. The ESP-NOW layout keeps its primary ESP-NOW mesh active in either mode. For GPS-equipped boards, use `get gps`, `set gps on`, and `set gps off`. The Companion app's `gps=1` / `gps=0` custom setting controls the same GPS. Only boards with a compiled GPS provider expose this setting. Sharing location with contacts is a separate setting. Use `set gps.sync.interval