Porta COM serial USB some: depuração de reenumeração, driver binding, números de porta e bridges CDC
Como diagnosticar portas seriais COM USB que somem, mudam de número, reenumeram, resets em bridges CDC ACM, falhas de driver binding e aplicações que mantêm handles desatualizados.
Dispositivos seriais USB estão em toda parte: "placas Arduino, controladores industriais, modems, receptores GPS, bancadas de teste, probes de debug, ferramentas para CLPs, leitores de código de barras e firmwares CDC ACM customizados. Quando a porta COM some, a busca costuma ser por "USB serial COM port disappears", "COM port missing Device Manager", "USB serial re-enumerates", "CDC ACM device disconnects" e "COM port changes after reconnect" porque a aplicação geralmente apenas diz que não consegue abrir a porta." O Bus Scope ajuda porque uma porta COM faltando pode ser causada por camadas muito diferentes: "enumeração USB, problema de descritor, vínculo de driver, reset do dispositivo, handle de aplicação preso, falha em requisição de line coding, ou o Windows atribuindo um novo número COM."
A porta COM não é o dispositivo USB
A porta COM é uma abstração do sistema operacional criada depois que o dispositivo USB enumera e o driver de serial vincula. Se o dispositivo USB nunca enumera, nenhuma porta COM pode aparecer. Se o dispositivo USB enumera, mas a interface CDC falha, a porta COM ainda pode estar faltando.
Separe as camadas:
- O dispositivo USB se conectou?
- Os descritores foram lidos corretamente?
- A configuração terminou?
- As interfaces CDC apareceram?
- O driver vinculou?
- O sistema operacional atribuiu uma porta COM?
- A aplicação abriu a porta atual correta?
Reenumeração muda o número da porta
O Windows pode atribuir um novo número de COM quando o dispositivo aparece com outro número de série, outro caminho USB, outro VID/PID ou outra identidade de interface. Um dispositivo que reseta para o modo bootloader pode expor uma porta COM diferente ou nenhuma.
Sintomas:
- O dispositivo era COM8, agora é COM11.
- A aplicação lembra da porta COM antiga.
- Conectar em outra porta USB muda a atribuição.
- O bootloader usa outra porta.
- O dispositivo aparece como desconhecido depois do update de firmware.
O trace do barramento identifica se a identidade do dispositivo mudou.
Requisições de controle CDC ACM
Dispositivos seriais CDC costumam receber requisições de classe:
SET_LINE_CODINGGET_LINE_CODINGSET_CONTROL_LINE_STATESEND_BREAK
Se o firmware trava ou trata essas requisições errado, a porta pode abrir, mas nenhum dado flui, ou o vínculo de driver pode falhar.
Capture o comportamento de abertura de porta, não só a conexão. Muitas falhas acontecem quando a aplicação abre a porta COM e o driver envia line coding ou mudanças de estado DTR/RTS.
Handles de aplicação desatualizados
À vezes o USB reenumera corretamente, mas a aplicação mantém um handle antigo ou uma lista de portas COM em cache. O barramento mostra o novo dispositivo presente. A aplicação ainda falha porque não liberou nem recarregou a porta.
Isso não é falha do barramento USB. É comportamento da aplicação ou do gerenciamento de dispositivo.
Checklist de depuração
Use este fluxo:
- Capture desde a conexão.
- Confirme o descritor de dispositivo e o descritor de configuração.
- Inspecione os descritores de interface CDC.
- Capture a aplicação abrindo a porta COM.
- Inspecione as requisições de classe CDC.
- Confira se há reset ou desconexão depois do line coding.
- Compare a identidade do dispositivo antes e depois da reconexão.
- Confira se o número de COM mudou.
- Confira se a aplicação está usando um nome de porta desatualizado.
- Preserve tanto a evidência USB quanto as anotações de atribuição de porta do SO.
Diagnóstico final
Uma porta COM serial USB que desaparece pode ser falha de enumeração, falha de descritor CDC, falha de driver binding, reenumeração com nova identidade, falha em requisição de line coding, reset sob carga, ou estado de aplicação preso.
O Bus Scope ajuda mostrando o lado USB da história, para que os sintomas da porta COM possam ser amarrados a conexão, descritores, requisições CDC, resets e identidade real do dispositivo.