Você é proprietário de Arduino (duemilanove ou mega 1280), conversores USB-serial ou qualquer coisa que se conecte ao PC via porta USB? Tome cuidado pois a comunicação com seu aparelho pode ficar inoperante após uma rodada do Windows Update. O fabricante de chips USB FTDI, com o intuito de combater a falsificação de seus chips, teve a incrivelmente estúpida idéia de colocar código em seu driver que ao detectar que o chip é falsificado reprograma o chip para que não funcione mais. Isso foi originalmente reportado no HackADay e a FTDI admitiu prontamente.
O sintoma é que a inserção do hardware é detectada, mas o dispositivo não é reconhecido. Em nenhum computador.
O problema para a FTDI é que é incrivelmente difícil distinguir o chip falso do original. Até mesmo empresas sérias podem ter sido enganadas com a falsificação. O chip pode ter marcação laser idêntica à original e se comporta igualzinho ao original, sendo capaz de passar em praticamente qualquer controle de qualidade que não envolva analisar o chip por dentro com um microscópio eletrônico. Como você tem certeza que comprou original? Comprando na Farnell? Na Digikey? HA! Já perdi a conta das empresas com reputação no mercado que se envolveram em baitas “roubadas” (às vezes literalmente) por negligência ou má-fé de seus gerentes. Lembram do Carrefour vendendo celulares roubados? Recentemente uma grande cadeia de lojas de Pernambuco se envolveu com carga roubada também. Vender falso? Mais fácil ainda. O chip falso pode estar em qualquer lugar, em qualquer tipo de aparelho. E intencionalmente danificar propriedade alheia é algo muito difícil de defender. O correto para a FTDI seria, ao detectar o chip falso, exibir uma mensagem de falsificação e desabilitar o driver.
Em fevereiro deste ano a zeptobars fez uma análise com microscópio eletrônico que mostra claramente a diferença entre um FTDI legítimo e um falso. Por dentro, é claro. Na ocasião eles puderam distinguir o falso visualmente pelo fato da marcação não ser a laser (mesmo olhando lado a lado na foto não é fácil notar diferença) mas não duvido nada que existam cópias com gravação a laser. Afinal, o que é uma gravação a laser para quem consegue fazer uma falsificação tão sofisticada? Isso lembra as falsificações de pilhas recarregáveis da Sony que são visualmente tão perfeitas que você só descobre que o produto é falso por causa dos erros de inglês na embalagem. Corrija os erros de inglês e…
A comunidade de segurança está p*ta com a FTDI porque isso é um golpe sério na credibilidade das atualizações automáticas. Eu não me importo porque nunca gostei delas mesmo. É esperado que a MS retire a atualização do ar e não me surpreenderia se isso pudesse resultar em uma pesada multa para a FTDI por violação de contrato com a MS. No mínimo a FTDI pode ser proibida de oferecer novas atualizações pelo Windows Update.
Para quem é técnico, o aparelho não está definitivamente perdido. O que a FTDI faz é reprogramar o USB PID para zero. Isso pode ser desfeito usando um utilitário da própria FTDI que já existia antes desse evento, porque a reprogramação do VID/PID é uma das funcionalidades do chip. Mas incontáveis técnicos vão se deparar com o problema e achar que a interface simplesmente está morta por não estarem sabendo dessa presepada da FTDI. Imagine o consumidor normal.
Caramba… posso apostar que muito chip FTDI falso nem está marcado “FTDI” em cima. E como está morto você não tem como identificar imediatamente por software. O técnico preciso mesmo estar “ligado” nesse problema e testar toda interface serial defeituosa que passar pelas suas mãos com o utilitário da FTDI. Isso hoje, amanhã, daqui a seis meses…
Como a inserção do hardware é detectada ainda é possível identificar que trata-se de uma interface FTDI olhando o par VID/PID exibido. Se tiver algo assim:
VID_0403
É um chip FTDI. Que pode ser original ou falso, já que ambos podem ser maliciosamente reprogramados. É interessante notar que o VID também pode ser alterado. Isso faz parte do design do chip porque o fabricante do equipamento pode querer fornecer seu próprio driver e para isso tem que usar seu próprio par VID/PID. Supostamente a atualização da FTDI só verifica dispositivos comVID 0403 então supostamente fabricantes/montadores que estejam usando chip falso (sabendo ou não) e tenham alterado o VID devem estar imunes.
Segundo a ArsTechnica, a Microsoft informou que a FTDI removeu o driver dois dias atrás:
http://arstechnica.com/information-technology/2014/10/windows-update-drivers-bricking-usb-serial-chips-beloved-of-hardware-hackers/
Ainda bem que o driver foi retirado do ar …
A grande vantagem em deixar o VID/PID intacto para qualquer fabricande de dispositivos que não seja um “gigante” é que mudar o par tem custos … Alocar um PID tem custos, e além disso força o fabricante a distribuir um driver próprio, que precisa ser qualificado pela MS (mais custos).
Logo, sempre que possível, é melhor ficar com o VID/PID original e aproveitar o driver pré-instalado – ao menos esse era o raciocínio até essa mancada fenomenal :-)
Rigorosamente falando o custo de um PID é irrisório. O problema é que pra ter um VID (requerimento para se ter um PID) você precisa desembolsar um mínimo de 5000 dólares. Tendo desembolsado isso, cada PID sai por 5000/65535= 8 centavos de dólar.
O danado é que todo o esquema de VID/PID foi mal pensado. O VID é um número de 16 bits e por isso só é possível existirem pouco mais de 65 mil fabricantes de dispositivos USB no mundo. Essa escassez de VIDs força a coisa a ser cara mesmo, senão já nem existiriam VIDs disponíveis. E cada um deles pode ter até 65535 dispositivos, o que é uma quantidade absurda para muitos. De cara se vê que a coisas foi muito mal balanceada. Se pelo menos a USB-IF tivesse seguido o antigo exemplo dos endereços MAC, o VID teria 24 bits e o número possível de VIDs estaria na casa dos milhões.
E a USB-IF não permite que você forme uma comunidade, faça uma vaquinha e compre um VID para distribuir PIDs entre os membros. Parece draconiano ou ganancioso, mas acho que faz sentido considerando como a coisa funciona. Se o “fabricante” é reconhecido pelo VID e não pelo conjunto VID/PID, quem organiza a bagunça resultante? Faltou novamente sabedoria da USB-IF para seguir o exemplo do endereçamento IPv4 (novamente, algo estabelecido consagrado muitos anos antes do padrão USB) e ter alocado uma faixa de VIDs para uso particular.
Eu vejo um cenário em que seria possível usar o mesmo driver, mas com o arquivo INF contendo o seu VID particular e a identificação do seu dispositivo. Isso seria perfeitamente possível se empresas como a FTDI licenciassem o driver dessa maneira. Eu não tenho certeza agora se alterar o INF quebra a assinatura digital do driver, mas imagino que não. Nesse caso a certificação não seria problema.
Acabo de perceber que a limitação do VID USB de 16 bits pode não ser culpa do USB-IF. O VID PCI, que é atribuído pelo PCI-SIG, também tem 16 bits. Foi miopia da Microsoft?
ahhh… que tolice a minha culpar a Microsoft. É muito mais provável que isso tenha sido culpa da Intel!
A FTDI tentou empurrar essa presepada até mesmo no kernel do Linux.
Mas como ela não tentou esconder o propósito do patch, este foi rejeitado.
Isto é uma puta sacanagem. Ainda bem que eu não atualizei o Windows estes dias. Nem sei quantos equipamentos com chip FTDI eu devo ter, mas um deles é um Arduino Mega chinês, então realmente não dá para botar a mão no fogo.
Espero ter escapado dessa.
Acho que cabe aqui um esclarecimento.
A FTDI é uma empresa familiar escocesa e provavelmente uma completa desconhecida para o grande público, mas é famosa no meio técnico por criar chips USB-UART de grande estabilidade e funcionalidade. O mais conhecido é o FT232. Os concorrentes mais próximos da FTDI nesse campo são Prolific e Silabs que fabricam chips mais baratos.
Aliás, preço é o grande problema do FT232 e em parte o motivo da massiva falsificação. Um único chip custa 5 dólares na Digikey, sem contar o frete. Eu me lembro de ter feito uma pesquisa no ebay a mais de um ano e cada chip custar 10 dólares. Daí não é surpresa nenhum que o Arduino Duemilanove vendido hoje na china por $8 venha com um FT232 falso. Afinal o FT232 nem sequer é a peça mais importante do projeto. E também não é supresa alguma que o projeto Arduino tenha substituído o caro FT232 por um Atmel 8u2 no UNO.
Boa noite a todos!
Acho que tive a infelicidade de cair neste conto do vigário. Tenho um microscópio digital que uso para análises e de um tempo para cá, o winsdows não reconhece o dispositivo conectado na porta USB. Aparece a mensagem “usb vídeo device não reconhecido”.
Alguém pode me dar um help pois preciso que este equipamento funcione para realizar algumas análises que estão paradas me causando prejuízos.
Obrigado.