modified, support UART