Cómo restablecer y limpiar los números de puerto COM en Windows

Gestionar los puertos COM, especialmente al conectar varios dispositivos o adaptadores Bluetooth, suele ser un auténtico dolor de cabeza. Windows asigna números de puerto COM del 1 al 255 al conectar un dispositivo; a veces, satura el sistema con docenas de puertos, lo que dificulta el trabajo de las aplicaciones antiguas que solo admiten COM1-COM9. Esto resulta molesto porque algunos programas antiguos simplemente se niegan a funcionar si el número de puerto COM es superior a 9, y solucionar este problema no siempre es sencillo. Aprender a cambiar, liberar o restablecer las asignaciones de puertos COM puede ahorrarte mucha frustración, especialmente si tienes problemas con dispositivos conflictivos o controladores.

Cómo cambiar el número de puerto COM de un dispositivo en Windows

Ajuste del puerto COM a través del Administrador de dispositivos

Esto es lo primero que debes probar cuando tu dispositivo tiene una asignación de puerto que no te convence o que no puedes usar. Funciona si el puerto no está muy usado ni reservado. A veces, Windows te permite elegir un nuevo puerto, pero si no, es porque está ocupado o reservado; en ese caso, quizás tengas que profundizar un poco más (ver más abajo).

  • Abra el Administrador de dispositivos: puede hacerlo escribiendo devmgmt.mscen el cuadro Ejecutar ( Win + R) o buscándolo en el menú Inicio.
  • En el menú, seleccione Ver -> Mostrar dispositivos ocultos, porque a veces su dispositivo no es completamente visible a menos que haga esto.
  • Desplázate hasta Puertos (COM y LPT), expándelo y busca tu dispositivo. Si ves varias entradas, identifica la que corresponde a tu dispositivo.
  • Haga clic derecho en su dispositivo, seleccione Propiedades, luego vaya a la pestaña Configuración de puerto y toque Avanzado.
  • Encontrarás el número de puerto COM actual en el menú desplegable Número de puerto COM. Si no quieres un número mayor, prueba a cambiarlo a uno menor (como COM3 o COM5).

Ahora bien, es casi una lotería si Windows te permite elegir un puerto inferior. A veces, si ese puerto ya está ocupado o reservado, el menú desplegable no te permite cambiarlo. En ese caso, necesitas liberar la reserva del puerto (ver más abajo).

Libere o desactive puertos COM con el Administrador de dispositivos

  • Expande nuevamente la sección Puertos (COM y LPT), busca el puerto que quieres liberar, busca el ícono que está pálido (significa reservado pero no conectado).
  • Haz clic derecho en ese puerto y selecciona Desinstalar. No te preocupes, esto no elimina el controlador, solo libera ese número COM.
  • Después de desinstalar, vuelva a conectar su dispositivo o reconfigure el puerto a través de Avanzado en sus propiedades para asignar un puerto COM libre.

Si eso no funciona (porque a veces Windows no libera el puerto directamente), existe un método útil que utiliza PowerShell para enumerar todos los puertos COM ocupados:

Get-WMIObject Win32_SerialPort | Select-Object Name, DeviceID, Description

O limítelo a dispositivos específicos, por ejemplo, si conoce el nombre del dispositivo:

Get-WMIObject Win32_SerialPort | Where-Object { $_. Name -like "*Bluetooth*" } | Select-Object Name, DeviceID

Esto te da una idea rápida de lo que está conectado. No todos los puertos están en uso, pero algunos pueden ser difíciles de liberar sin más pasos.

Descubra qué proceso está bloqueando su puerto COM

Si un proceso o controlador usa activamente un puerto COM, Windows no te permitirá reasignarlo ni desinstalarlo. Necesitas encontrar ese proceso y eliminarlo. La mejor herramienta es Process Explorer de Sysinternals. Es una maravilla para este tipo de cosas.

Paso uno: abra PowerShell y ejecute:

get-pnpdevice -class Ports -ea 0 | Select Name, PNPDeviceID, Status, Service

Esto te indica qué dispositivo está conectado, y la columna Servicio podría indicar Serie o algo similar. Luego, ejecuta Explorador de Procesos como administrador ( aquí tienes el enlace ) y pulsa Buscar -> Buscar identificador o DLL. Escribe el nombre del servicio que mencionaste anteriormente («Serie», «usbser», etc.).

El Explorador de Procesos detectará qué aplicación o controlador está bloqueando el puerto. Quizás tengas que cerrar o reiniciar ese proceso, o modificar los controladores si quieres liberar el puerto COM por completo. Es un poco complicado, pero funciona en casos difíciles.

Restablecer las asignaciones de puertos COM en el Registro

Para una limpieza exhaustiva, el registro contiene las claves que definen qué puertos COM están reservados. Sinceramente, manipular el registro es una mala idea a menos que te sientas cómodo haciéndolo: un desliz y aparecen pantallazos azules. Pero si todo lo demás falla, es el último recurso.

  • Abra regedit ejecutándolo regedit.exedesde el cuadro Ejecutar.
  • Vaya a HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\COM Name Arbiter. Asegúrese de hacer una copia de seguridad de esta clave primero (Archivo -> Exportar).
  • Encuentra el valor ComDB: son datos binarios. Puedes editarlo con precaución. Por ejemplo, si necesitas liberar todos los puertos, establecer este valor en 0 puede restablecer las reservas. Ten en cuenta que editarlo sin pensar puede causar una pantalla azul de la muerte si añades bits adicionales.
  • Otra clave para verificar es HKEY_LOCAL_MACHINE\SYSTEM\HARDWARE\DEVICEMAP\SERIALCOMM. Si está conectada, esta lista los puertos activos en formato legible.
  • Puede eliminar entradas de puerto específicas de Puertos o información de reserva si es necesario y luego reiniciar su PC para aplicar los cambios.

Para las herramientas de limpieza, la Herramienta de Limpieza de Dispositivos ayuda a borrar las entradas de dispositivos huérfanos del registro y a desconectar dispositivos antiguos que podrían estar reservando puertos COM innecesariamente ( consulta el repositorio de GitHub ).Sin embargo, ten cuidado, Microsoft no la soporta oficialmente, así que haz una copia de seguridad primero.

Resumen

Administrar los puertos COM puede ser un caos, especialmente después de conectar varios dispositivos serie o Bluetooth. Ya sea ajustando los números de puerto en el Administrador de dispositivos, liberando puertos mediante PowerShell o editando el registro, estos métodos ayudan a solucionar el problema. No todas las soluciones funcionan a la primera, y a veces Windows simplemente se niega a liberar un puerto; en ese caso, solo es cuestión de paciencia o de realizar ajustes más avanzados en el registro.

Resumen

  • Intente cambiar el puerto COM primero a través del Administrador de dispositivos, pero no siempre es posible si los puertos están ocupados.
  • Si es necesario, cancele la reserva de puertos COM o busque quién los tiene con comandos de PowerShell.
  • Utilice Process Explorer para determinar qué proceso está bloqueando el puerto y cerrarlo si es necesario.
  • En casos difíciles, edite el registro con precaución para restablecer las asignaciones del puerto COM.

Conclusión

Lidiar con problemas de puertos COM no es divertido, pero estos pasos deberían cubrir la mayoría de los casos. A veces, solo se trata de liberar algunos puertos o cambiar las asignaciones sin tener que revisar el registro. Si todo lo demás falla, reiniciar o reinstalar el controlador podría ayudar. Recuerda, siempre haz una copia de seguridad antes de modificar el registro; Windows complica un poco más el cambio de asignaciones. Cruzo los dedos para que esto ayude a alguien que tenga problemas con los puertos COM que saturan su sistema. Es algo que funcionó en varias configuraciones.