Чет у них драйвер уарта дрисня какая-т. Нормальные драйвера при отсутствии входа 0 при read возвращают, этот зачем-то рингбуффер возвращает при том, что определить конец потока без фактического прекращения передачи невозможно (ни /n, ни /0, ни какой-то фиксированной длины). Видели еще такое где нить? Я пока встречал только адекватное поведение - нет передачи, значит нуль.
Кроме того, драйвер никогда не возвращает EAGAIN.