Refine tcp error messages
Move timeout handling into serial.Read

Should use select