He encontrado pyserial ser bastante usable, por lo que si te gusta Python, no debería ser demasiado difícil escribir algo así.
strace es muy útil para esto. Tiene una visualización de todas las llamadas ioctl, con la estructura correspondiente decodificada. Las siguientes opciones parecen particularmente útiles en su caso:
-e leer=establecer
Realice un volcado hexadecimal y ASCII completo de todos los datos leídos de los descriptores de archivo enumerados en el conjunto especificado. Por ejemplo, para ver toda la actividad de entrada en los descriptores de archivo 3 y 5, utilice -e read=3,5. Tenga en cuenta que esto es independiente del seguimiento normal de la llamada al sistema read(2) que se controla mediante la opción -etrace=read.
-e escribir=establecer
Realice un volcado hexadecimal y ASCII completo de todos los datos escritos en los descriptores de archivo enumerados en el conjunto especificado. Por ejemplo, para ver toda la actividad de salida en los descriptores de archivo 3 y 5, use -e write=3,5. Tenga en cuenta que esto es independiente del seguimiento normal de la llamada al sistema write(2) que se controla mediante la opción -etrace=write.