refined-appointment-81829
10/18/2025, 7:31 PMrefined-appointment-81829
10/19/2025, 2:04 PMstep file is the lower shell half and the board/screen. Should be able to draw any case you want with that.
Here is a reference schematic form Waveshare if you want to design or have a starting point for a custom design:
(https://files.waveshare.com/wiki/ESP32-S3-Touch-AMOLED-1.8/ESP32-S3-Touch-AMOLED-1.8.pdf
For prototype you can find those boards easily for $20-40.
I am actually planning on changing this so the screen and board are not stacked. Thinner is more important for my use case.
This is what you would need in board_cft.txt for that board (Hope this will be automagically available with out needing to custom define it in the future)
Board: ESP32_S3_TOUCH_AMOLED_1_8
# I²C0 shared by FT3168/ES8311/QMI8658/PCF85063/AXP2101/TCA9554
i2c: { sda: 15, scl: 14 }
# I²S for ES8311 (verified on schematic)
i2s: { mclk: 16, bclk: 9, ws: 45, din: 10, dout: 8 }
# Audio codec control address (hex 0x18)
out: { codec: ES8311, pa: 46, use_mclk: 1, pa_gain: 6, i2c_addr: 0x18 }
in: { codec: ES8311, i2c_addr: 0x18 }
# LCD: SH8601 over QSPI (per Waveshare docs)
# QSPI_SCL + 4 data lines + CS + (RESET/TE on GPIOs)
lcd: {
bus: qspi, controller: SH8601,
width: 368, height: 448,
clk: 11,
sio0: 4, sio1: 5, sio2: 6, sio3: 7,
cs: 12,
rst: 21, # LCD_RESET (confirm on your PCB rev)
te: 13 # LCD_TE
}
# Touch: FT3168 (I²C, default addr 0x38)
touch: { bus: i2c, sda: 15, scl: 14, i2c_addr: 0x38, int: <TP_INT GPIO>, rst: <TP_RESET GPIO> }
# (Optional) declare other on-board I²C devices so your init code probes correctly
imu: { type: QMI8658C, i2c_addr: 0x6B }
rtc: { type: PCF85063, i2c_addr: 0x51 }
pmic: { type: AXP2101, i2c_addr: 0x34 }
ioexp: { type: TCA9554, i2c_addr: 0x20 } # 0x20–0x27 depending on A0–A2
If you want to do a "non" PTT version you would need to add an ES7210 and echo canceling bits. Or figure out how to get that devices software AEC working.
I needed to mod some of our SDK core code to enable PTT but I hope @freezing-furniture-95502 will make that available out of the box in the near future.
I had the best luck getting this to run with:
idf.py create-project-from-example "livekit/livekit=0.3.2:minimal"
Or just check out the sdk and work directly in the minimal example directory.