Eu tenho o mesmo problema. Não parece estar limitado ao hardware de porta serial. Você pode criar dois pseudo terminais usando socat:
$ socat -d -d pty,raw,echo=0 pty,raw,echo=0
2015/09/30 09:46:18 socat[6296] N PTY is /dev/pts/17
2015/09/30 09:46:18 socat[6296] N PTY is /dev/pts/18
2015/09/30 09:46:18 socat[6296] N starting data transfer loop with FDs [3,3] and [5,5]
Você pode se conectar com ambos os dispositivos, por exemplo, usando cu
cu -l /dev/pts/17 -s 115200
e
cu -l /dev/pts/18 -s 115200
e enviar dados em ambas as direções, sem problemas.
Mas a conexão com o Python 2.7 falha com a mensagem de erro que você mencionou
$ python
Python 2.7.6 (default, Jun 22 2015, 17:58:13)
[GCC 4.8.2] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import serial
>>> ser = serial.Serial("/dev/pts/17", 230400, timeout=0.2)
>>> ser.read()
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/usr/lib/python2.7/dist-packages/serial/serialposix.py", line 460, in read
raise SerialException('device reports readiness to read but returned no data (device disconnected?)')
serial.serialutil.SerialException: device reports readiness to read but returned no data (device disconnected?)
Este código funcionou antes de instalar as atualizações para o Ubuntu 14.04 ontem.
Alguma idéia?