I’ll verify the existing pushbuttons and ensure both ESP32-S3 processors can be put into download mode and reset reliably. If the controls are incomplete, I’ll correct the schematic and rerun the electrical review.
The two existing buttons are currently disconnected. Because the two ESP32s use isolated power domains, they cannot safely share direct BOOT or RESET switches; I’m adding independent BOOT and RESET controls for each processor so either firmware image can be flashed without backfeeding the other side.
Status: Release-critical schematic remediation attempted; blocked by a platform canonical-net persistence defect described below. PCB placement/routing remains out of scope.
Intended Behavior
PC1 sees a 1 ms / 1 kHz emulated or passed-through HID device.
A physical mouse/keyboard attaches to the USB-A host port.
PC2 controls behavior through a CH343 USB COM interface.
Left MCU forwards modified HID descriptors/reports to PC1; right MCU hosts/parses the peripheral and handles commands.
Architecture
U8: ESP32-S3-MINI-1-N4R2, PC1 native USB device.
U9: ESP32-S3-MINI-1-N4R2, USB-A peripheral host.
U10: CH343G USB-to-UART on PC2.
Inter-MCU link: GPIO15-18, four independent signals, each with 4.7 kΩ series resistance to limit powered-off injection current to approximately (3.3-0.3)/4.7k = 0.64 mA maximum.
Grounds are common for signaling. PC1 and PC2 VBUS rails are not intentionally tied.
Split Power Tree
PC1: J1 VBUS → F1 500 mA PPTC → PC1_VBUS_PROT → U11 AP63203 → intended 3V3_LEFT → U8 and left-domain support.
PC2: J2 VBUS → F3 1206L200PR → PC2_VBUS_PROT → U6 AP63203 (3V3_RIGHT) plus U10 and U7/TPS2051C → USB-A VBUS.
No ideal-diode ORed shared SYS_5V rail remains; U4/U5 were removed.
TPS2051C provides explicit approximately 500 mA USB-A current limiting.
Independent Source Budgets
Table
Source
Conservative allocation at 5 V input
Peak
PC1
U8 500 mA at 3.3 V reflected at 88% = 375 mA; support/path margin = 50 mA
425 mA
PC2
U9 500 mA at 3.3 V reflected at 88% = 375 mA; CH343/control = 75 mA; USB-A current limit = 500 mA; margin/path loss = 100 mA
1.05 A
PC1 fits a post-enumeration USB 2.0 500 mA budget. PC2 does not fit default USB current. Normal operation requires J2 to be connected to a USB-C source advertising at least 1.5 A at 5 V. Firmware must disable U7 unless adequate advertised current is confirmed or a product-level fixed-source assumption is enforced. F3 is a 2 A-hold protection device and is not the policy limiter; U7 limits the peripheral branch.
UART Connectivity Intent
CH343 command link only: U10.TXD ↔ U9.RXD0 and U9.TXD0 ↔ U10.RXD.
U8 TXD0/RXD0 intentionally unused and marked no-connect.
Inter-MCU data/flow control is separate on GPIO15-18 through R17/R7/R8/R18.
Canonical-Net Blocker
After deleting and rebuilding the affected UART and power nets with fresh names, readback returned two distinct canonical nets both named 3V3_LEFT: one contains U11/U8 and one contains U6/U9/U10. A requested 3V3_RIGHT readback is absent. This is a platform-level canonical persistence/name collision defect. Release is blocked until the two canonical rail identifiers can be made uniquely named and verified. No claim of completed power isolation is made while this defect remains.
Interfaces
Both USB-C PC ports are USB 2.0 sinks with independent 5.1 kΩ Rd. USB data paths remain independent. USB-A uses TPS2051C current limiting.
PCB Requirements
Four layers classified as Top signal, L2 ground plane, L3 power plane, Bottom signal. All USB pairs target 90 Ω differential with continuous ground reference. Placement and routing were not attempted in this pass.