From a schematic read of the Waveshare ESP32-S3-Touch-LCD-4.3 and -7 (2026-09-04). Needs a bench check before anyone edits — this is a report, not a diagnosis.
Both board files carry:
board_configs/fbdisplay/esp32-s3-touch-lcd-4_3/board_peripherals.py:11-15
board_configs/fbdisplay/esp32-s3-touch-lcd-7/board_peripherals.py:11-15
_CAN_TX = 15 / _CAN_RX = 16
_RS485_TX = 44 / _RS485_RX = 43
The schematics say CAN is GPIO19/20 through the FSUSB42UMX mux (common side = ESP_USB_N/P, one throw to the USB-C connector, the other to the CAN transceiver) and RS485 is GPIO15/16 at the SP3485. That is consistent with our own board_config.py:25-30 comment, which already documents EXIO5 selecting between native USB and the CAN transceiver on those same native-USB pins.
If that reading is right, the two pin pairs were transposed and RS485 inherited a wrong one — and the pair it inherited, 43/44, is the CH343P console UART. Calling rs485() on these boards would then reconfigure the console pins out from under the REPL. _CAN_SEL_EXIO = 5 # high = CAN mode is correct either way.
Second-order: can() drives the mux to CAN mode, which steals the USB-C connector. Worth a docstring warning on any board being used as a USB host.
From a schematic read of the Waveshare ESP32-S3-Touch-LCD-4.3 and -7 (2026-09-04). Needs a bench check before anyone edits — this is a report, not a diagnosis.
Both board files carry:
board_configs/fbdisplay/esp32-s3-touch-lcd-4_3/board_peripherals.py:11-15board_configs/fbdisplay/esp32-s3-touch-lcd-7/board_peripherals.py:11-15The schematics say CAN is GPIO19/20 through the FSUSB42UMX mux (common side = ESP_USB_N/P, one throw to the USB-C connector, the other to the CAN transceiver) and RS485 is GPIO15/16 at the SP3485. That is consistent with our own
board_config.py:25-30comment, which already documents EXIO5 selecting between native USB and the CAN transceiver on those same native-USB pins.If that reading is right, the two pin pairs were transposed and RS485 inherited a wrong one — and the pair it inherited, 43/44, is the CH343P console UART. Calling
rs485()on these boards would then reconfigure the console pins out from under the REPL._CAN_SEL_EXIO = 5 # high = CAN modeis correct either way.Second-order:
can()drives the mux to CAN mode, which steals the USB-C connector. Worth a docstring warning on any board being used as a USB host.