Hi all,
I'm running a custom Buildroot (2026.02) image on a Raspberry Pi Zero W, booting directly (no U-Boot). UART console output is garbled/corrupted from the very first boot message onward — it never becomes readable, even after 30+ seconds.
Setup:
- Board: Raspberry Pi Zero W (BCM2835)
- Kernel: mainline linux (rpi fork), DTS- Terminal: (confirmed correct baudrate)
- USB-serial adapter on GPIO14 (TXD)/GPIO15 (RXD), 3.3V, wired crossed, common GND confirmed
config.txt (relevant parts, post-processed by build script):
cmdline.txt:
I intentionally disabled Bluetooth () to free up the full PL011 hardware UART on GPIO14/15, instead of the Mini-UART, specifically to avoid the classic mini-UART/VPU-clock baudrate drift issue.
What I've already tried:
- Confirmed terminal baudrate matches (115200 8N1)
- Added in addition to — no change
- Verified actually deployed to the boot partition matches source (post-image script confirmed working)
- Captured raw bytes directly from with : output is dominated by bytes with sparse single set bits (not random noise, not repeating printable-char garbage) — suggests receiver is oversampling relative to actual bit rate, i.e. sender's real baud rate is lower than expected 115200.
Question
Given PL011 is selected (not mini-UART) via, and are both set, what else determines the UART reference clock on the Zero W specifically? I'm about to try adding — has anyone confirmed this is still needed even with the full PL011 UART on BCM2835, or is there another firmware parameter I'm missing?
Any pointers appreciated — happy to post more logs/config if useful.
I'm running a custom Buildroot (2026.02) image on a Raspberry Pi Zero W, booting
Code:
zImageSetup:
- Board: Raspberry Pi Zero W (BCM2835)
- Kernel: mainline linux (rpi fork), DTS
Code:
bcm2708-rpi-zero-wCode:
minicom -b 115200 -D /dev/ttyUSB0- USB-serial adapter on GPIO14 (TXD)/GPIO15 (RXD), 3.3V, wired crossed, common GND confirmed
config.txt (relevant parts, post-processed by build script):
Code:
core_freq=250force_turbo=1enable_uart=1dtoverlay=disable-btcmdline.txt:
Code:
console=tty1 console=serial0,115200I intentionally disabled Bluetooth (
Code:
disable-btWhat I've already tried:
- Confirmed terminal baudrate matches (115200 8N1)
- Added
Code:
force_turbo=1Code:
core_freq=250- Verified
Code:
config.txt- Captured raw bytes directly from
Code:
/dev/ttyUSB0Code:
stty ... raw + xxdCode:
0x00aQuestion
Given PL011 is selected (not mini-UART) via
Code:
disable-btCode:
core_freq/force_turboCode:
init_uart_clock=48000000Any pointers appreciated — happy to post more logs/config if useful.
Statistics: Posted by Coolba — Sun Sep 13, 2026 7:10 am — Replies 0 — Views 16





