Windows 7: remover portas seriais reservadas

Conversores do tipo USB/Serial normalmente possuem um identificador interno e, cada vez que um novo conversor é conectado ao computador, uma nova porta serial é adicionada ao sistema. Se você troca constantemente de adaptadores e conversores, as portas seriais alocadas no sistema vão crescendo.

Para remover as portas não usadas, não encontrei nenhuma ferramenta prática, então, seguem algumas dicas para removê-las manualmente.

Atenção: nos meus testes, algumas vezes precisei reinstalar os drivers do conversor/adaptador USB/Serial, então, antes de remover as portas, certifique-se que possui os drivers necessários para o caso de serem necessários.

Usando o gerenciador de dispositivos

Abra um prompt de comando como administrador.

Execute os seguintes comandos:

set devmgr_show_nonpresent_devices=1
start devmgmt.msc

Após a execução destes comandos, será apresentada a janela do Gerenciador de Dispositivos. Selecione o menu Ver e selecione a opção Mostrar dispositivos ocultos.

Agora é possível expandir a seção Portas COM e serão apresentadas todas as portas já criadas. Clique com o botão direito do mouse na porta que deseja excluir e selecione a opção Desinstalar.

No entanto, dependendo do número e portas existentes, este trabalho pode ser maçante. Uma outra forma de remover as portas seriais criadas será apresentada no próximo tópico.

Editando o registro

Execute o Editor de Registro como administrador. Há várias maneiras de se fazer isto: abra um prompt de comando como administrador e execute o seguinte comando:

regedit

Outra forma é localizar o editor de registros no menu iniciar, depois clique com o botão direito do mouse e selecione Executar como administrador.

Com o editor de registros aberto, navegue até s seguinte chave:

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\COM Name Arbiter

No painel direito, aparecerá a chave ComDB. Clique nesta chave com o botão direito do mouse e selecione a opção modificar. Na seção Dados selecione todos os valores e apague-os (ficará apenas um item com valor 00).

Reinicie o computador para que as alterações sejam identificadas pelo Windows.

Não se esqueça: depois da reinicialização do computador, pode ser necessário reinstalar o driver do conversor USB/Serial.

Curiosidade: Os valores binários apresentados neste campo representam cada uma das portas seriais reservadas pelo sistema, um bit para cada porta, sendo que um bit 1 indica que a porta correspondente foi reservada. O primeiro byte representa as portas seriais de 1 a 8, o segundo byte representa as portas 9 a 15 e assim por diante. Para cada byte, a contagem do número das portas inicia-se pelo bit menos significativo (da direita para a esquerda). Por exemplo, se o valor apresentado nos dois primeiros bytes for F3 24 (hexadecimal), teremos:

  • 0xF3 0x24 = 1111 0011 0010 0100 (representação binária);
  • Primeiro byte (0xF3 = 1111 0011) indica que as portas seriais 1, 2, 5, 6, 7 e 8 foram reservadas;
  • Segundo byte (0x24 = 0010 0100) indica que as portas 11 e 14 foram reservadas.

Conversor USB/Serial FTDI: Ignorar o Número Serial do Hardware

Se os dispositivos (conversores) possuírem o mesmo Id de fabricante (Vendor ID) e o mesmo ID de produto (Product ID) mas diferentes números de série, normalmente o sistema operacional Windows irá tratá-los como dispositivos diferentes. Isto faz com que o driver tenha que ser instalado para cada dispositivo e sejam c riadas entradas no registro do Windows para cada dispositivo.

É possível alterar este comportamento e fazer com que o sistema operacional ignore o número de série do dispositivo e trate todos os dispositivos com o mesmo Vendor ID e Product ID conectados à mesma porta USB como se eles fossem o mesmo dispositivo. Na prática, isto fará com que o número da porta serial alocado na primeira vez não seja alterado quando o dispositivo USB/serial for alterado, desde que ele possua o mesmo Vendor ID e Product ID e que seja utilizada a mesma porta serial do computador.

Para fazer com que o sistema operacional Windows ignore o número de série do dispositivo, crie uma chave do tipo REG BINARY com valor 01 no registro do Windows seguindo o seguinte formato:

IgnoreHWSerNum{VID}{PID}

Exemplo: para o dispositivo FTDI (VID 0x0403, PID 0x6001), deve ser criada a seguinte chave no registro do Windows:

HKLM\SYSTEM\CurrentControlSet\Control\UsbFlags\IgnoreHWSerNum04036001

Lembrando que o valor da chave deve ser (REG BINARY) 01.

Depois de efetuada a alteração, renicie o sistema operacional.