Considerações sobre FT232: Pirataria e Propriedade Intelectual

FT232 FTDI

Nota do Embarcados: Não apoiamos a prática de pirataria. Caso a compra do componente seja feita através de canais oficiais sempre se conseguirá trabalhar com itens originais, e é isso que recomendamos. Esse artigo pode ajudar o pessoal que possui placas que possuem CIs que nao são da FTDI.

No dia 22/10/2014 a empresa Future Technology Devices International atualizou o driver de um de seus chips mais famosos, o FT232, um conversor USB-RS232, uma verdadeira “mão na roda” para conectar um microcontrolador a um PC (talvez uma das melhores invenções em chip desde o 555 ou o 741). A versão 2.12.00 do driver apresenta algumas melhorias, correções de praxe e uma feature muito interessante: impede o uso de chips piratas com o driver da empresa.

Pirataria é crime. Por sugestão do STJ, o crime de pirataria deve ser enquadrado em violação de direito autoral e está previsto no artigo 184, parágrafo 2° do Código Penal brasileiro.

Achei muito interessante e prática a ideia da empresa de proteger seu produto fazendo com que os drivers projetados por ela só funcionassem com o chip original, conforme atesta a Licença de Uso do driver 2.12.00:

1. GRANT AND SCOPE OF LICENCE

 

1.1 In consideration of you agreeing to abide by the terms of this Licence, the Licensor hereby grants to you a non-exclusive, non-transferable, royalty free licence to use the Software on the terms of this Licence.

 

1.2 In this Licence a "Genuine FTDI Component" means an item of hardware that was manufactured for, and sold by, the Licensor or a member of the Licensor's group of companies. It does not include any counterfeit or fake products.

 

1.3 If you are a manufacturer of a device that includes a Genuine FTDI Component (each a "Device") then you may install the Software onto that device. If you are a seller or distributor of a Device then you may distribute the Software with the Device. If you are a user of a Device then you may install the Software on the Device, or onto a computer system in order to use the Device.

 

1.4 In each of those cases you may:

 

     1.4.1 install and use the Software for your purposes only; and

 

     1.4.2 only use the Software in conjunction with products based on and/or incorporating a Genuine FTDI Component.

O texto cita que o uso do software (o driver, no caso) só pode ser realizado com produtos baseados ou que incorporem chips genuínos. Caso não seja utilizado um chip original o usuário não tem permissão de uso do software. O que me deixou muito preocupado é o item 1.5 a seguir:

1.5 The Software will not function properly on or with a component that is not a Genuine FTDI Component. Use of the Software as a driver for, or installation of the Software onto, a component that is not a Genuine FTDI Component, including without limitation counterfeit components, MAY IRRETRIEVABLY DAMAGE THAT COMPONENT. It is the Licensee's responsibility to make sure that all chips it installs the Software on, or uses the Software as a driver for, are Genuine FTDI Components. If in doubt then contact the Licensor.

A FTDI explicita que o software poderá causar danos irrecuperáveis ao componente. Do ponto de vista técnico é um pouco estranha essa afirmação, na verdade eu estava esperando algo mais como: “Não garantimos o correto funcionamento do driver se utilizado em chips não originais”. Pareceu-me um pouco estranha essa afirmação com tanta ênfase. Mas logo percebi que era necessária.

O driver, de modo PROPOSITAL, faz alterações no chip não original com o intuito de inutilizá-lo, de modo que o dispositivo não funcione mais. Quando ele percebe um chip não original ele regrava a EEPROM do chip fazendo a alteração de uma das informações [3] do dispositivo, o PID, que é responsável por identificar qual é o dispositivo conectado à porta USB. Ele troca o valor original de 0x6001 para 0x0000, inutilizando o chip. Como o valor 0x0000 é um valor reservado, o dispositivo fica praticamente inutilizável (Figura 1).

Figura 1 – FTDI não reconhecido por ter PID 0x0000

Neste ponto entra o meu questionamento: até que ponto na intenção legal (legal do ponto de vista legislativo) de proteger seu patrimônio intelectual uma empresa pode propositalmente danificar propriedade alheia sem consentimento judicial? Afinal de contas é esse o cenário que se colocou. A FTDI “entrou” na casa de várias pessoas com uma atualização automática de driver e sem consentimento, nem aviso, danificou uma propriedade privada. Nesse ponto peço atenção a todos os projetistas que utilizam o FTDI em algum dispositivo crítico. Como descobri que existem sim muitas falsificações, estou temeroso por empresas que possam estar utilizando chips falsificados, sem saber que foram lesadas pelos fornecedores e correndo o risco de sua aplicação parar de funcionar sem aviso prévio.

Com relação ao update automático do windows, a FTDI até “voltou atrás”, mas apenas no envio do update automático. Se você tem um chip FTDI e baixar a versão 2.12.00 do site da FTDI ele vai alterar o PID.

Eles enviaram também um patch pra colocar essa alteração na mainline do linux. Virou piada “Funny patch, you should have saved it for April 1, otherwise people might have actually taken this seriously :)”.

Descobri todo esse processo por causa de alguns projetos de alunos aqui na universidade, que provavelmente devido ao processo de licitação acabou comprando de fornecedores não muito confiáveis.

Existe solução para esse problema? Sim, regravar o PID do chip para o valor padrão e não fazer uso do driver da FTDI. Recomendo a utilização do libFTDI e o artigo “Regravando o PID de chips FTDI-like”. Utilizando um driver opensource não estamos infrigindo nenhuma questão de propriedade intelectual, afinal de contas o protocolo utilizado pelo FTDI não é patenteado, qualquer um pode fazer um chip FTDI-like.

Referências

http://www.tecmundo.com.br/pirataria/46415-pirataria-e-crime-no-brasil-reforca-superior-tribunal-de-justica.htm
http://wiki.osdev.org/Universal_Serial_Bus#Packet_Identifier_Field
http://hardware.slashdot.org/story/14/10/24/1330252/ftdi-removes-driver-from-windows-update-that-bricked-cloned-chips
https://lkml.org/lkml/2014/10/23/129
https://lkml.org/lkml/2014/10/23/151
http://www.intra2net.com/en/developer/libftdi/
https://www.embarcados.com.br/regravando-pid-ftdi-like/