Skip to content

Add BOARD_TTGO_TOI_PLUS (LilyGO T-OI Plus ESP32-C3) - #551

Open
nikki-uwu wants to merge 2 commits into
SlimeVR:mainfrom
nikki-uwu:feature/ttgo-t-oi-plus
Open

nikki-uwu wants to merge 2 commits into
SlimeVR:mainfrom
nikki-uwu:feature/ttgo-t-oi-plus

Conversation

@nikki-uwu

Copy link
Copy Markdown

My friends and I have been using a custom tracker based on the LilyGO T-OI Plus (ESP32-C3) with a BNO085 for a while. I tried to update mine and another friend tried to build a fresh one, and it started to fail.

The way to reproduce it: take a board, open the firmware tool in SlimeVR server, pick any board from the list - e.g. Lolin C3 Mini, set the firmware version, set your pins correctly - the tracker works, it even sees the IMU and connects to WiFi if the credentials were already stored in memory. But you only see serial messages, you cannot send anything. So with a clean board you cannot set up WiFi at all, and talking to the tracker over the COM port does not work in any shape or form.

This happens because BOARD_LOLIN_C3_MINI builds with ARDUINO_USB_MODE=1 and ARDUINO_USB_CDC_ON_BOOT=1, so Serial is bound to the native USB which the T-OI Plus does not expose - the board talks over a UART bridge instead.

PlatformIO has a specific board definition for this board, ttgo-t-oi-plus, which is supposed to be used for it and configures the serial correctly. The board is still cheap and popular and people will keep using it, so I suggest adding it as its own selection.

This PR adds the board with the same structure as every other board, 4 files only:

  • platformio.ini: [env:BOARD_TTGO_TOI_PLUS] (board = ttgo-t-oi-plus)
  • src/consts.h: board id 28 + name string
  • board-defaults.json: defaults entry (single IMU_BNO085 I2C SCL18/SDA19/INT5, BAT_EXTERNAL pin 2, LED pin 3, applicationOffset 65536)
  • board-defaults.schema.json: BOARD_TYPES enum

Tested both ways: built the old way in PlatformIO with the proper settings, and through the official flow - running the cloud firmware builder locally, sending it the same build request the server sends, getting the firmware back, flashing it and confirming the tracker boots with the IMU detected and answers serial commands.

@nikki-uwu

nikki-uwu commented Oct 6, 2026 •

Copy link
Copy Markdown
Author

Maybe one additional moment.
The resistor values are not real. The board has a 2x voltage divider (checked with a multimeter), so I set the values to produce the correct scaling in the simplest way. I hope that is not a problem.

@nikki-uwu

Copy link
Copy Markdown
Author

Just checked - they have just one resistor 100 kOhms which goes to the GPIO2 and this way makes divider by 2. So i think resistance of 1 and 1 and shiled at 0 should be fine to keep.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant