antes do kernel 6.8 [ edição: na verdade, antes e incluindo o 6.3; não estou em condições de verificar kernels entre 6.3 e 6.8 ], o caminho do driver para portas seriais fixas (ttySxx) era resolvido para /sys/bus/platform/drivers/serial8250 e simplesmente verificar se o nome era " serial8250 " era suficiente para decidir entre um dispositivo fixo e um removível (USB) - se o nome do driver NÃO fosse " serial8250 ", então alguém poderia assumir que era (a) um dispositivo removível e (b) nenhuma verificação adicional era necessária para garantir que era um dispositivo real (ou seja, não apenas um espaço reservado).
isso foi usado na solução para verificação de portas oferecida por Soren Holm aqui: https://stackoverflow.com/questions/2530096/how-to-find-all-serial-devices-ttys-ttyusb-on-linux-without-opening-them Tenho usado uma tradução Pascal do código de Soren por vários anos em softwares que escrevi sem problemas ou reclamações.
mas do kernel 6.8 em diante (Ubuntu 24.04LTS), o caminho do driver mudou. agora ele resolve para /sys/bus/serial-base/drivers/port , e o nome " port " é um pouco genérico demais para ser usado como base para tomar decisões - o kernel 6.8 quebra o código de Soren. até agora, não consegui encontrar nenhuma discussão útil online sobre essa mudança no kernel.
minha pergunta é, com o kernel 6.8 e posteriores, existe alguma verificação alternativa confiável para determinar se uma porta serial está associada ao que era o driver " serial8250 "? Existe algum especialista por aí que saiba sobre as mudanças no driver da porta serial, por que elas foram feitas e soluções alternativas para as consequências?
Saudações, Rob :-)
adendo: esclarecido que verifiquei os kernels 6.3 e anteriores, 6.8 e posteriores, mas NÃO os kernels entre 6.3 e 6.8. portanto, as alterações podem ter sido feitas em qualquer lugar após o kernel 6.3
o nome do driver não é mais útil para identificar dispositivos seriais fixos, então criei um código alternativo (escrito em Pascal) que parece funcionar com os kernels Ubuntu 6.8 e anteriores: