Haciendo funcionar el conversor USB-Serial Prolific PL2303HX en Windows 8.1 o 10


Como parece que me gustan los desafíos, me compré en dx.com un conversor a USB a RS232 TTL para usarlo como debug de la consola desde mi Raspberry Pi, pues estaba muy barato. 
Conversor USB a Serial, enchufado en el notebook. El led prendido es realmente de color rojo y no media fucsia como aparece en la foto que tomé con el celular. ¿Falta de filtro IR?


La tarjeta se ve simple de usar, pues la salida serial tiene simplemente las señales TXD (datos transmitidos hacia el dispositivo desde el PC) y RXD (datos recibidos desde el dispositivo hacia el PC), junto con las de energía como 5V y 3.3V y GND (tierra). Estas últimas aunque parecen bien convenientes, no me atrevería a usarlas así no más con el Raspberry Pi, pues tengo que averiguar si con ello se setea el voltaje de operación de la puerta serial hacia el dispositivo, o si las saca desde la puerta USB y son para energizar el dispositivo. ¡A revisar el Datasheet!

 Aparecen los problemas

Sin embargo no funcionó en el notebook con Windows 8.1 x64: al enchufarlo me aparecía el diálogo de instalación, pero luego de esto quedaba con error en el Administrador de Dispositivos:
  
 


Mirando el porqué, el mensaje de error hablaba de que el dispositivo no se podía iniciar (código 10).

Buscando en internet, me topé con muchos casos en que conversores con chip Prolific PL2303 no funcionaban, en Windows 7, 8 y 8.1. En algunos se buscaban soluciones como ir al sitio del fabricante (http://www.prolific.com.tw) y bajar drivers.

Eso intenté, bajando los últimos drivers pero tampoco andaba. Sin embargo leyendo las notas del Driver (a veces es bueno detenerse y leer ;-), indican que este funciona para chips modelo PL2303 HXA, XA, HXD, EA, RA, SA, TA y TB, pero con la importante salvedad que no funciona para Windows 8, 8.1 y 10 para las versiones PL-2303HXA y PL-2303X que están EOL ,End-of-Line, o sea que ya no se fabrican mas ni se soportan: o sea están obsoletos (programadamente).


Identificando el Chip

Bueno, me dije ¿como tendré tan mala suerte para justo tener los chips obsoletos?

Bueno, verifiqué que correspondiera al mismo dispositivo, pues en la página se indica que tiene identificadores USB VID_067B&PID_2303 y PID_2304.
Mirando en las propiedades del dispositivo, veo que corresponde al primero:



Mirando el chip mismo, tenía la inscripción PL-2303HX, lo que no parecía muy concluyente, pues no estaba en la lista ni incluida ni excluída, por lo que pasé susto de que no fuera siquiera un producto original, como advertían en el sitio de prolific, sobre ciertas tarjetas hechas en China y que decían ser este chip y no lo eran.
Foto del chip en la tarjeta de conversión, hecha con mi microscopio digital USB. Se aprecia parte del texto en chino que trae la tarjeta. ¿Mala señal?
Para salir de la duda, busqué los datasheet del chip en la página respectiva, para buscar que tipo de marcas tenían las versiones HXA revisión D y la antigua que sospechaba yo tener. Ojo: para entrar hay que usar el usuario GUEST y password GUEST, como lo sugiere la misma página.

Imagen del Chip revisión D, desde el datasheet.
Bajé los archivos "ds_pl2303HXD_v1.4.4.pdf" para la versión D sí soportada, y el archivo "ds_pl2303HX_v1.6.pdf" para la antigua versión A obsoleta, que se encuentra al final de la página.
Mirando en este último archivo en la sección 11 Ordering Information, aparecen descritas las marcas del chip, concordando completamente, como un modelo PL2303HX revisión 3A, versión sin plomo, fabricado el 2010 en la semana 19 de ese año (a mediados de Mayo).

Mirando el otro archivo en la sección correspondiente, el chip tiene tres líneas y no dos como el mío, junto con que la especificación del modelo en la segunda línea termina en D. ¡Así que el mío era justo el descontinuado!
  

Solución para Windows 8 y 10: usar driver antiguo

Cuando ya me estaba resignando a que funcionaría solo en linux, pues la página de drivers de Prolificseñalaba que el kernel incluía el driver desde la versión 2.4.31, volví al sitio donde lo compré y dentro del foro para el producto se mencionaba para Windows 8.1 que se podía usar una versión antigua para Windows Vista y así andaba.
Actualización Abril 2016: Lo mismo funciona para Windows 10, aunque las pantallas mostradas aqui son las de Win8.


Busqué qué versión del driver se estaba usando, y en las propiedades del dispositivo aparece como 3.4.67.325.

Uhmm, esa parece que es la última. Así, buscando en internet, encontré la mejor guía para resolver el problema, dentro del sitio http://www.miklor.com/COM/UV_Drivers.php. Este sitio lo conocía, pues está dedicado a la programación (y hackeo en buen sentido) de Walkie Talkies, que en varios casos utilizan un conversor serial a USB.

Lo que indican es que se puede bajar una versión antigua para Windows Vista (version 3.2.0.0), y que no tiene el bloqueo para el dispositivo.

La bajé e instalé, pero con eso no basta, pues hay que seguir las instrucciones siguientes, adaptadas desde su sitio (sección "Installing the Proper Older Prolific PL-2303 Driver 3.2.0.0"):
  1. Bajar el instalador del driver desde la página y guardarlo en el disco duro en el directorio que nos guste más (o nos acordemos).
  2. Desenchufar el conversor.
  3. Instalar el driver completamente haciendo doble click en el archivo que bajamos.
  4. Ahora sí enchufar el conversor y esperar que aparezca y termine la detección del dispositivo. A diferencia de las instrucciones de Miklor que por las imágenes parece que se hacían en Windows 7 o Vista, en mi Windows 8.1 nunca me apareció el mensaje de que la instalación había fallado.
  5. Abrir el Administrador de Dispositivos y revisar el estado del conversor. Ahí sí tenía lo mismo, pues aparecía con el dichoso código de error 10.
  6. Al hacer doble click en el dispositivo, y abriéndose sus propiedades, hay que ir a la pestaña "Controlador" y apretar el botón "Actualizar controlador...".
  7. Ahí aparece una ventana para actualizar el driver, dentro de la cual hay que elegir la opción de "Buscar software de controlador en el equipo".
  8. Aunque el asistente ofrece buscar en algún directorio, se debe elegir la opción "Elegir en una lista de controladores de dispositivo en el equipo".

  9.  Si todo anda bien, aparece dentro de la lista de drivers disponibles el driver antiguo (versión 3.2.0.0), debiendo elegir ese y apretar el botón siguiente.
  10. Tras un poco de malabares de instalación, se llega al final de la instalación exitosa.
  11. Verificar en las propiedades del dispositivo que el driver utilizado es ahora el correcto (versión 3.2.0.0) y que no aparezca con error en el Administrador de dispositivos.
     
¡Ahora sí aparece correcto el dispositivo! :-)

Limitaciones de la Solución

Como nota final, hay que hacer notar que todo funcionará bien si es que siempre utilizamos el mismo puerto USB para enchufar el conversor. Si se nos olvida, y usamos otro puerto, el administrador de dispositivos lo intentará detectar por su cuenta, utilizando siempre el driver más reciente y de nuevo dará error. Ocurrido es, aunque volvamos a enchufarlo al puerto original, igual se usará el driver más reciente, perdiéndose el ajuste que habíamos hecho antes.

Sin embargo, esto no es tan terrible, puesto que el driver antiguo no se ha perdido, solo tenemos que "Actualizar controlador", partiendo desde el paso 5 del procedimiento, sin tener que reinstalar nada más.