A UART can provide the perfect timing for the WS2812. One bit of the WS2812 stream is built from 3 bits of the UART. A zero is transmitted with 1 of 3 bits set. A one is transmitted with 2 of 3 bits set. With 2.4MBaud the timing is 417us / 833us. This matches perfectly the specification. Each WS2812 bit is formed with 3 UART Bits. The first is always 1, the last always 0. The Bit in the middle defines the State. Three of these WS2812 bits (WB) require 9 UART bits. This is 1 Start- 7 Data- and 1 Stopbit. STA /WB0 0 1 /WB1 0 1 /WB2 STO The output signal must be inverted for proper polarity of STA and STO. Since a HCT driver is needed anyway, the only difference is to use an inverting buffer (NAND / NOR) Only 8 Bytes are required to drive 1 LED. TxFIFO if available reduces ISR rate furthermore. I'd be glad to help improving the support for WS2812. I use this kind of driver with CortexM3 devices LPC1343, LPC1517. It works fine ! Can anyone confirm that the Pi UART supports a Baudrate between 2.25MBaud and 2.4MBaud ?