FTDI removes counterfeit-bricking driver from Windows Update
eevblog.com
eevblog.com
If they want to redesign their driver so it fails to work with non-genuine FTDI chips, go for it. Nobody will judge them. Heck if they want to show a message that informs the user they're using a fake, that's fine too.
I think most people seemed to agree that bricking fakes was too far (and also could be considered illegal in some countries/areas). It also negatively impacted innocent parties (e.g. consumers who purchased generic goods, which happened to contain fake FTDI chips).
Plus if you're in the business of bricking things, it is too easy to make a mistake and brick your OWN stuff. I mean software bugs are common, and it is best to stay away from a set of them which indefinitely makes chips malfunction.
PS - I wonder if Microsoft got in touch and essentially told them "we will pull your driver from Windows Update unless you do it first. It won't return until it is fixed." We know from the previous thread that Microsoft was looking into this.
"Microsoft has given us a statement: Yesterday FTDI removed two driver versions from Windows Update. Our engineering team is engaging with FTDI to prevent these problems with their future driver updates via Windows Update."
As a user, if my device stops working randomly, my first thought is certainly not "there was a counterfeit chip in the supply chain for this hardware and the drivers must be rejecting it!"
A little bit more user notification around "you have a counterfeit FTDI" or, even better, a tool to find out if your FTDI is fake would be a lot better than "oh, you can tell if the chip is fake because it will only work properly with drivers before 2.08.14, otherwise it will randomly crash!"
Prolific do the same thing, but their drivers at least fail to start with a common error code which is easy to Google.
Yep. Believing the consumer cares about your product as much as you do is a line of thinking that's easy for engineers to fall into when their lives and livelihoods depend on the product. It's why smart companies employ someone with the capacity to sit in a more objective position to evaluate the market and public perception.
They've used this code to make counterfeits intentionally unpredictable in the last few versions of their driver, rather than simply stopping the device with an error code (like Prolific do) or notifying the user or client library (like all of these vendors should be doing).
So, for FTDI at least, it should be very straightforward to do something other than intentionally making fakes of their devices behave unpredictably.
Whether or not that behavior was intentional, there is clearly an exploitable property of the fake devices which can determine that they are fake without bricking the device.
FTDI should use it rather than playing these games. Their reaction to the discovery of the bricking issue on Twitter and elsewhere yesterday strongly suggests that it was anything but an "oh shit, our driver bricks some of those crappy fakes" moment.
A bunch of chips failing with COUNTERFEITCHIP may have been pretty obvious
Or maybe because the fake chip is not working in some corner case exactly as the original chip?
It's probably not something deliberate.
Edit: Do you really think the manufacturer should test their driver agains all fake chips and see how they behave? Really?
They test their chips and their software first and foremost. What happens outside of that is not their responsibility.
Why? How many fakes are there? How do you make sure that's the "most popular" fake?
It's possible they do it? Sure! That, or they add features to their silicon and drivers and don't care what happens to other chips.
Yes, I'm against bricking fakes or causing random malfunctions.
For example I have a Prolific chip that is almost certainly a fake that only works with driver X.Y.Z, I always assumed that was because the fakers targeted that driver and made an imperfect spoof.
http://dreamlayers.blogspot.com/2011/10/pl-2303-code-10-erro...
Thankfully, Prolific chose to simply prevent their drivers from starting with an easy-to-Google code, rather than causing frustrating failures or bricks.
I would assume but honestly don't know that the FTDI random failure code was also intentional. All signs point to intentionality: it appeared in all drivers after a specific version, was accompanied by a change to the EULA indicating that counterfeit chips wouldn't work, and accompanied a lot of messaging from FTDI about avoiding counterfeits.
I suppose someone should break out a disassembler and some USB snooping tools to check for sure.
Coincidentally, PL-2303 sounds like chip model I have from Prolific.
I have no idea about the bricking though.
Is there some country where it's legal to break somebody's property because you have a beef with a third party?
Certainly in the US if somebody produced a virus that did this nobody would even blink at a federal prosecution. That FTDI slipped a bit of text into a document nobody reads doesn't strike me as relevant. If a piece of malware also popped up an innocuous dialog with a terms link and a user clicked ok, nobody sane would say that the malware-writer was legally in the clear.
If FTDI doesn't end up prosecuted over this, I think it's less about the relevant laws and more about how prosecutors view people with money and status who commit crimes in pursuit of profit. Versus, of course, somebody like Aaron Swartz, who not only failed to wear a suit, but was engaged in a political act against the status quo. Crime that improves profits is currently more acceptable than crime that harms profits.
https://en.wikipedia.org/wiki/Sony_BMG_copy_protection_rootk... to be specific
And you seemingly can buy FTDI clones that are not marked as FTDI on the casing.
In a way it's both, but since end users almost never see the VID, I suspect a lawyer would have an easy time that under the law it's more the former than the latter, and therefore not covered under trademark and related laws.
Also.. Can you even claim any special rights to a non-government registered trademark/brand name (one that is registered at a non-government entity - the USB Implementers Forum in this case)?
It's a stupid USB to RS232, not a rocket control system, there should be no famous brand, it's the lowest of the commodities.
That said, I do have an FTDI USB to serial adapter (no idea of the authenticity), because I didn't know better or care, I needed to plug my MCU board to my computer and I bought the first one I found (and it's just used for debug, I never ever use serial in real life).
Given that as a consumer/purchaser I have no way of knowing if I have a counterfeit chip or if the next batch produced by a manufacturer will have them… I now have an incentive to avoid FTDI entirely when given a choice.
The V8's of the micro-controller world are great, but sometimes you have just 2000mAh to get you through a year of operation.
This made me choose FTDI for my homemade everything-and-the-kitchen-sink UART dongle.
Oh, and they can blink LEDs.
Failing to work with counterfeit devices is completely fine and would have been a much better approach than straight up bricking them.
http://zeptobars.ru/en/read/FTDI-FT232RL-real-vs-fake-supere...
The only way the FTDI driver could determine if the chip counterfeit was a slight difference in how the counterfeit chips handled a certain EEPROM write. And the counterfeiters will be sure the next revision of the chip takes care of this corner case.
The chip dies may be incredibly different, but the fake operated 99.99% like the real one. There were no "obvious ways" to tell them apart.
Edit: after actually looking up the issue instead of guessing it turns out that in most places (other than France and Italy) there isn't much at stake for the end user, and almost all of the laws are written to stop the sale or manufacture of counterfeit items.
Sure, but the mechanism for combating counterfeiting is the government and law enforcement organizations, not unilateral action by the aggrieved party.
FTDI has no authority - moral or legal - to be bricking devices. This is vigilantism.
Now that may violate the terms and lic of the driver software on windows (not on linux because it is GPLv2) but that would not make it illegal to buy nor would it give them (FTDI) the legal right to modify that hardware
Something similar happened earlier in the year with Nintendo 3DS flashcards, however the software was not just disabling the flashcard, but would brick the users 3DS.
Their response was essentially, "Yeah? What are you going to do about it?" and promising to replace the 3DS of anyone who could prove they were using a legitimate card.
At the time they were the only functioning solution (They may still be? I'm out of the loop now) and everything else on the market were clones of their cards.
It was almost like a hostage situation with the community, a lot of people hating on the company, while hyping up their next update.
Your post is accurate, but to those not already familiar with this incident (such as myself, until I searched for stories about it), a quick read will give the impression that this was Nintendo's doing, when it wasn't.
One big problem is that civil courts in the US do not work that way at all. FTDI could easily be found 5% responsible for an enormous judgement.
I'm serious. This kind of behavior needs to be nipped in the bud and made a massive example of, or else we will see it in the future.
There's a time and a place for mercy, and giving positive feedback to the company for rapidly reversing course. They ate their crow; save the nuclear escalation for a company that refuses to.
They need to be made an example of.
http://www.reddit.com/r/sysadmin/comments/2k6wjk/fyi_ftdi_de...
Class actions were never about this until recently . The original purpose was to make it easier to manage the case (vs 50 separate cases) for the justice system. It was about "the efficient administration of justice". Nothing more, nothing less.
When they were created (out of thin air) in the US, this was the goal. AFAIK, nobody thought about, or wanted, what has happened now. It's not even a good vehicle to accomplish "beating misbehaving corporations" , because when used for that purpose, it mostly makes money for lawyers, encourages nuisance suits, etc.
Is there some signature to the USB device that would allow the OS to know what to do with the affected gizmos? Or do you have to explicitly tell the system "no, really, the device on this USB port is specifically this"? If it's not automatically deployed like the initial driver but rather actually requires the user to screw with firmware-style updates, then it's effectively ruined for many beginners with these chips. (Thankfully, there's been a lot of fuss over this, so newbies will likely be able to troubleshoot this problem after a few hours of groping in the dark for why their device has gone silent.)
http://www.reddit.com/r/arduino/comments/2k0i7x/watch_that_w...
Still, perhaps it could be automated somehow via a responding Windows Update? That's the thing that gets me - it was autmatically propagated, it oughtta be automatically fixed.
Nice find though.
There is an untold amount of bricked gear out there. Those people are entitled to replacements and compensation for their time spent dealing with this malfeasance.
I'm guessing they've already done plenty of self-inflicted financial damage that they're going to have to explain to their investors.
- unbrick devices they bricked, so the chips will at least work with drivers other than theirs
- log something to the windows event log about a clone device being detected
It's their choice whether they should work with the clone device or not; I would hope they would choose to. I understand their reluctance, but people are going to be only slightly less mad about a device not working than a bricked device.
It would be bad for their driver to pop UI warning about a clone device. Drivers that do this make life very, very difficult for devices attached to headless servers (also, I believe it's against the MS WHQL rules).
https://en.wikipedia.org/wiki/Device_Manager#Error_Codes
I think it's the #43 I've seen from time to time: "Windows has stopped this device because it has reported problems."
http://technet.microsoft.com/en-us/library/cc725873(v=ws.10)...
They get a special icon in "Device Manager", and, if I remember right, the statusbar-thingie that dances around while newly-connected devices are detected will put up a bubble with an error message.
A friend of mine, in the course of his work, bricked a BMW [1]. It took an engineer, flown in [2] to fix the issue.
[1] He worked at a company making automobile diagnostic tools for mechanics. He was reflashing the BMW when the power went out. That scrambled the on-board computer system enough to brick the car.
[2] South Florida (Miami/Ft. Lauderdale area) I'm sure the German engineer wasn't all that upset.
The device is still there, and it will talk, there's just no matching driver in the system for it now.
So you add PID=0x0000 to your existing driver (I think this is just an edit to the INF file on Windows) and sniff the device to see if it's one you've likely (semi) bricked, and make the attempt. You own the VID, so this operation should be safe in your namespace.
Brickness is a measure of the user's ability and motivation to restore a device. I've worked on systems where you have to unsolder really tiny devices in order to unbrick. It's a continuum of inconvenience, really. To most users, the evil FTDI driver made a brick because it was beyond their skill to do the repair (hey, you can write a driver for PID=0x0000 any time you want to, oaky?)
The real Linux patch which adds support for broken clones is here: https://git.kernel.org/cgit/linux/kernel/git/johan/usb-seria...
No.
While it's great FTI reversed their decision (I'd hate to see this sort of thing become wide-spread), it's a little off-putting that so many non-users of the chip could force a company into something.
In the FTI situation, I'm indifferent, but I just don't like the "crowd mentality" thing where people get stirred up about things that only a few hours ago, they had no idea even existed.
This can affect many, many people not in a particular industry, depending on where the device is embedded.
As soon as I heard about this, I notified our senior design EE so he could pass the information on if necessary. This is not to be taken lightly.
My warehouse has a couple Sharp Max baggers w/ counter and sorter, which are just as expensive as your medical instruments. The electronics check to ensure you are using only the Sharp brand parts, otherwise the machine refuses to work.
Most printer cartridges won't work in printers unless they are the name-brand cartridge (printers read the chip on the cartridge).
Neither permanently damage the counterfeit parts, but it doesn't matter much if you can't use the counterfeit part you just bought (thinking you were going to save a buck or two).
Frankly, I don't buy the argument that a lot of users didn't know they had bought counterfeit. For a device that retails for $15 and you got it new for $1.50, well, something is up.
Perhaps a better way for FTI to go would be to detect the counterfeit when it's plugged in, then just refuse to do anything with it. (although this would allow someone to get a non-FTI driver to work)
All it takes is one bad chip in a critical location in one instrument and that instrument is down, or at least rolled back to "limp mode" depending on which feature the chip supports. That instrument may be processing hundreds or thousands of patients a day if it is installed in a large medical lab. Do you see the problem here?
Sure, an Emergency Service Call will take care of the problem, but that can take hours (over a day in some locations).
(funny that I kinda end up invoking Godwin law)
A wide variety of non-users of the chip have a very strong interest in Windows Update not becoming a vector for malware. I doubt this situation would have gained the quick public notice it did if it had been the work of a driver available for download on FTDI's website.
It's their driver, it operates in a specific way, perhaps responding to possible device output. Using it with non-compatible parts advertising themselves as compatible and any resulting behaviour, including unwanted, is the responsibility of the user. To play it safe, don't use any drivers with incompatible hardware.
As many have noted, all that's needed is an alert for the user that the driver's incompatible. That way the user can take rectification measures, be it getting new compatible chips/devices, or using unofficial drivers.
I believe it is not allowed by WHQL certified drivers.
(It's also non-trivial to do in a Windows kernel driver. You can't call MessageBox(), you can't process user input, you can't even get a context to draw on the screen. Basically you have to rely on a user-mode helper app that gets launched at boot time, which is one of the reasons you see so many device-tweaking utilities for graphics cards and sound cards).
Like, I'd rather go to jail and be inconvenienced instead of shot on sight, but I feel both are overkill for a parking ticket.
Do you have any evidence specifically that their driver destroyed your chip, or could there be reasonable doubt that your counterfeit chip died? For a class-action suit that a lot of people seem to be talking about, you would have to have evidence that this was what did your chip in. And getting enough people (who appear to be mostly end-users) to submit the necessary evidence could be quite the task (most probably will just assume the device croaked one day and toss it out).
I just don't see a class-action really able to take off. Especially since we're talking about otherwise illegal counterfeit chips in the first place.
The line of argument "I, as some random anonymous person on the internet, can't see X" doesn't do much for me. Lots of people can't see lots of things, but most of the time that turns out to be about failures of knowledge or imagination, not evidence that that what they're talking about is impossible.
Further, I don't think it's really my job to make people see things. (Well, actually, it is, but I charge by the day for that.) If you don't see it, I can live with that.
I think you meant to argue:
"There is one source of media coverage, although it's largely just twitter comments. And just because something is difficult to prove doesn't mean it's not provable."
Both are valid arguments.
I don't count ZDnet as a very credible source of news, and in this case, some googling seems to show they are practically the only "news site" running this story. Although, as pointed out, it's mostly just a paragraph followed by several twitter posts.
Secondly, the evidence thing is important if a case like this were to proceed. In order to sign onto the class action, you would have to prove you purchased an effected chip/board, and that this driver is what killed your product.
Two problems here:
1) You bought a counterfeit chip/board. It's unlikely any award will be levied for illegal/infringing products.
2) Users would have to show evidence they were effected. Even in the RedBull class action case that is settling now, you must prove you bought a RedBull during the time period the case covers (receipt or whatever). Again, you have a counterfeit product, which was illegal to sell/buy in the first place. Not to mention, getting average-joe to test his device, even if someone made a testing utility and freely distributed it, will be close to impossible. People who are technical and care may do it, but average-joe will assume his arduino went belly-up one day, and likely toss it in the garbage.
Let's be realistic. A handful of people in-the-know will care passionately, and do everything they can to further a claim. Several handfuls of people will care enough to do something if they believe they will get something in return (a payout). The rest will have no clue this is even a thing, and will simply throw away their "defective" device.
What FTI did was wrong. But there is no real recourse here.
The problem isn't knowing the driver itself can cause a bricked chip and therefore bricked device.
The problem is Joe-Average isn't going to be able to prove it was this driver and not just a defective device/chip for another reason. Even with a free "testing" tool someone can make to check for the flipped PID bit, Joe-Average has no clue this is even going on, and is likely to just throw away his bricked device.
Even if such existed (it does not), this standard is not applicable to a civil case, only to the criminal trials for destruction of property/malicious mischief that every single person involved should have to go through.
None-the-less, someone will try I'm sure. Then everyone can enjoy the $5 check they get in the mail 1 year later.
They figured out how to program the clones without programming their own chips. Looks freaking intentional to me, I don't know any reason to send commands to write to an eeprom and do a pre-image attack on a checksum just on opening a connection. Also explains why just the PID is changed, not the VID. It would have affected their chips if they tried changing the VID.
I would be ok if the driver simply refused to work. But making hardware unusable on purpose is too much.
Whatever the code for changing the PID is, it (supposedly) would work as well for a malfunctioning but real product, as well as a counterfeit.
I agree that their updated driver will probably continue to not work with these counterfeit chips, and while it shouldn't mess up the chips' functionality in Linux, fixing the PID in Linux is fairly straightforward.
In the case where the driver will continue to not work with these chips, "bricking" only refers to not resetting the PID which causes the device not to work in Linux as well.