quinta-feira, outubro 23, 2014

Novos drivers FTDI para Windows estão Desconfigurando Chips Falsos

Imagine a cena: você liga ao PC aquele clone do Arduino que você comprou baratinho na DX ou no Mercado Livre (e vem usando faz tempo) e ele não é reconhecido. Você tenta em outros micros e nada de funcionar. Você decide que a placa pifou e tenta com aquele outro que você comprou de reserva (já que estava tão barato) e acontece a mesma coisa. O que está acontecendo?


Vamos começar do começo: o Arduino (e muitos outros produtos tanto para hobbistas como de consumo) precisa realizar comunicação serial via USB, mas o microcontrolador só tem comunicação serial assíncrona. A solução mais usada é colocar um chip projetado justamente para isto. A empresa FTDI é especializada nisto, a tal ponto que muita gente usa FTDI como sinônimo para conversão serial assíncrona para USB.

Na comunicação de um dispositivo USB existem dois códigos importantes: o VID (vendor id) e o PID (product id). Eles identificam o fabricante e o modelo do dispositivo. Estes códigos são vendidos pelo USB-IF (USB Implementor Forum) e são usados pelos sistemas operacionais para escolher o driver apropriado.

A FDTI, além de fabricar o chip, desenvolve os drivers para o Windows e outros sistemas operacionais. Ela possui um para VID/PID para cada modelo, mas quem usa o chip em uma placa tem duas opções: pode usar o VID e PID da FDTI ou adquirir códigos próprios. Para isto o chip permite reprogramar os códigos. No Windows, a associação entre o VID/PID e o driver é feita através de um arquivo INF.

Até aqui, tudo bem. Só que algumas empresas, no afã de reduzir os custos, não hesitam em fazer algumas falcatruas. Surgem então cópias não autorizadas de chips, uso de VID/PID e drivers de outros, etc. É claro que a FTDI não fica nem um pouco contente com isto. Qualquer um que já fez alguma coisa e viu outro usar sem pedir permissão (e ainda ganhar dinheiro com isto), entende este sentimento. Mas o que a FTDI pode fazer a respeito, fora tentar processar empresas normalmente estrangeiras?

Uma ideia (que não é nova) é o driver tentar descobrir se o chip é legítimo. E se achar que não é? Bem, provavelmente o comprador do dispositivo é um pão duro sem vergonha, que comprou um produto pirata na cara de pau, portanto deve ser ferrado, não é? Que tal zerar o PID impedindo que o chip seja reconhecido pelos sistemas operacionais?

Ao que tudo indica, foi isto que a FTDI fez na versão mais recente (2.12.00 de 29/09).O twitter oficial deles praticamente confirma isto. Esta versão foi encaminhada para a Microsoft, que a está distribuindo como uma atualização opcional.

Mesmo que alguém ache que isto seja uma providência justa para quem comprou sabidamente chips falsificados, é preciso lembrar que em muitos casos o comprador do dispositivo nem sabe que existe falsificação de chips. Em alguns casos, até o fabricante do dispositivo foi uma vítima de algum revendedor inescrupuloso.

É o fim do mundo? Certamente não. Em primeiro lugar, se você não usa Windows o seu sistema não usa os drivers da FTDI e você está salvo. Se você for usuário do Windows XP, a Microsoft não está mais enviando atualizações para vocês. Se você usa um Windows mais recente, tome cuidado com as atualizações (mas você já sabia disto, não é?). Se o pior acontecer, já existem relatos de reconfiguração do chip falso para restaurar o PID e funcionar com os drivers antigos.


Fontes:
https://groups.google.com/forum/#!topic/hackerspacesp/73eVw6j9SFY
http://hackaday.com/2014/10/22/watch-that-windows-update-ftdi-drivers-are-killing-fake-chips/
http://www.eevblog.com/forum/reviews/ftdi-driver-kills-fake-ftdi-ft232/

Comparação de um chip real com um chip falso:
http://zeptobars.ru/en/read/FTDI-FT232RL-real-vs-fake-supereal

Nenhum comentário: