exFAT support and patents!
Peter Jakacki
Posts: 10,193
Over the last couple of days I have been adding support to Tachyon for SDHC cards and FAT32. I've just plugged a 64GB microSD into my board now and noticed that it was exFAT formatted. So I popped it into my Linux system and copied files onto it as well as making up one with a long long file name. Looking at how it stores the information is really how it should have been when Microsoft had the opportunity to do so when upgrading to FAT32 which BTW is horrible. Unfortunately Microsoft in their anti-open-anything have "protected" this simple bit of formatting with patents and copyrights etc etc. So it beats me why anyone would want to use it and why can't there just be an open and sensible standard for file formats which it seems to me belongs to everyone. How would it be if books bound on left hand side with cover pages and index pages and appendices were "patented" etc. This whole obvious look and feel stuff being patenting just absolutely irritates me and it goes against the principle of patents in the first place. Imagine if the Superheterodyne was locked up for decades and decades but at least that was a real invention.
Anyway this is just a quick dump of what I found and analysed quickly:
Anyway this is just a quick dump of what I found and analysed quickly:
[FONT=courier new][COLOR=#000000]( exFAT tests )[/COLOR] [/FONT] [FONT=courier new] [/FONT][FONT=courier new][COLOR=#000000]SD[/COLOR][/FONT] [FONT=courier new][COLOR=#000000]Card inserted[/COLOR][/FONT] [FONT=courier new][COLOR=#000000]MFG 03[/COLOR][/FONT] [FONT=courier new][COLOR=#000000]OEM SD[/COLOR][/FONT] [FONT=courier new][COLOR=#000000]Product ID SU64G[/COLOR][/FONT] [FONT=courier new][COLOR=#000000]REV 80[/COLOR][/FONT] [FONT=courier new][COLOR=#000000]S/N AE14F8A1[/COLOR][/FONT] [FONT=courier new][COLOR=#000000]DATE 2013/5[/COLOR][/FONT] [FONT=courier new][COLOR=#000000]CRC 07[/COLOR][/FONT] [FONT=courier new][COLOR=#000000] CSD REGISTER [/COLOR][/FONT] [FONT=courier new][COLOR=#000000]*SDHC CARD*[/COLOR][/FONT] [FONT=courier new][COLOR=#000000]TACC 100ns[/COLOR][/FONT] [FONT=courier new][COLOR=#000000]NSAC 0bps[/COLOR][/FONT] [FONT=courier new][COLOR=#000000]TRANS 50MHz[/COLOR][/FONT] [FONT=courier new][COLOR=#000000]BLKLEN 512[/COLOR][/FONT] [FONT=courier new][COLOR=#000000]SIZE 60,905 Mbytes[/COLOR][/FONT] [FONT=courier new][COLOR=#000000]________________[/COLOR][/FONT] [FONT=courier new][COLOR=#000000] ok[/COLOR][/FONT] [FONT=courier new][COLOR=#000000]8000 1 XDUMP[/COLOR][/FONT] [FONT=courier new][COLOR=#000000]0100_0000: EB 76 90 45 58 46 41 54 20 20 20 00 00 00 00 00 .v.EXFAT .....[/COLOR][/FONT] [FONT=courier new][COLOR=#000000]0100_0010: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................[/COLOR][/FONT] [FONT=courier new][COLOR=#000000]0100_0020: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................[/COLOR][/FONT] [FONT=courier new][COLOR=#000000]0100_0030: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................[/COLOR][/FONT] [FONT=courier new][COLOR=#000000]0100_0040: 00 80 00 00 00 00 00 00 00 D0 6E 07 00 00 00 00 ..........n.....[/COLOR][/FONT] [FONT=courier new][COLOR=#000000]0100_0050: 00 40 00 00 00 40 00 00 00 80 00 00 50 6E 07 00 .@...@......Pn..[/COLOR][/FONT] [FONT=courier new][COLOR=#000000]0100_0060: 04 00 00 00 31 34 61 65 00 01 00 00 09 08 01 80 ....14ae........[/COLOR][/FONT] [FONT=courier new][COLOR=#000000]0100_0070: 00 00 00 00 00 00 00 00 F4 F4 F4 F4 F4 F4 F4 F4 ................[/COLOR][/FONT] [FONT=courier new][COLOR=#000000]0100_0080: F4 F4 F4 F4 F4 F4 F4 F4 F4 F4 F4 F4 F4 F4 F4 F4 ................[/COLOR][/FONT] [FONT=courier new][COLOR=#000000]0100_0090: F4 F4 F4 F4 F4 F4 F4 F4 F4 F4 F4 F4 F4 F4 F4 F4 ................[/COLOR][/FONT] [FONT=courier new] [/FONT][FONT=courier new][COLOR=#000000]( Directory entries seem to be a 64 byte header + name )[/COLOR][/FONT] [FONT=courier new][COLOR=#000000]0204_1620: [/COLOR][COLOR=#FF0000]85[/COLOR][COLOR=#000000] 02 6C DF 20 00 00 00 29 76 FA 42 86 4D E5 34 ..l. ...)v.B.M.4[/COLOR][/FONT] [FONT=courier new][COLOR=#000000]0204_1630: 29 76 FA 42 64 00 00 00 00 00 00 00 00 00 00 00 )v.Bd...........[/COLOR][/FONT] [FONT=courier new][COLOR=#000000]\ Name header -----len--[/COLOR][/FONT] [FONT=courier new][COLOR=#000000]0204_1640: [/COLOR][COLOR=#FF0000]C0[/COLOR][COLOR=#000000] 03 00 [/COLOR][COLOR=#FF0000]0B[/COLOR][COLOR=#000000] DB EE 00 00 38 80 00 00 00 00 00 00 ........8.......[/COLOR][/FONT] [FONT=courier new][COLOR=#000000]0204_1650: 00 00 00 00 59 00 00 00 38 80 00 00 00 00 00 00 ....Y...8.......[/COLOR][/FONT] [FONT=courier new][COLOR=#000000]0204_1660: [/COLOR][COLOR=#FF0000]C1[/COLOR][COLOR=#000000] 00 43 00 45 00 30 00 30 00 35 00 38 00 43 00 ..C.E.0.0.5.8.C.[/COLOR][/FONT] [FONT=courier new][COLOR=#000000]0204_1670: 2E 00 46 00 54 00 48 00 00 00 00 00 00 00 00 00 ..F.T.H.........[/COLOR][/FONT] [FONT=courier new] [/FONT][FONT=courier new][COLOR=#000000]0204_1680: [/COLOR][COLOR=#FF0000]85[/COLOR][COLOR=#000000] 06 B7 70 20 00 00 00 AF 76 FA 42 AD 06 FA 42 ...p ....v.B...B[/COLOR][/FONT] [FONT=courier new][COLOR=#000000]0204_1690: AF 76 FA 42 64 00 00 00 00 00 00 00 00 00 00 00 .v.Bd...........[/COLOR][/FONT] [FONT=courier new] [/FONT][FONT=courier new][COLOR=#000000]0204_16A0: [/COLOR][COLOR=#FF0000]C0[/COLOR][COLOR=#000000] 03 00 [/COLOR][COLOR=#FF0000]44[/COLOR][COLOR=#000000] EF EB 00 00 E2 6F 00 00 00 00 00 00 ...D.....o......[/COLOR][/FONT] [FONT=courier new][COLOR=#000000]0204_16B0: 00 00 00 00 5A 00 00 00 E2 6F 00 00 00 00 00 00 ....Z....o...... [/COLOR][/FONT] [FONT=courier new][COLOR=#000000]0204_16C0: [/COLOR][COLOR=#FF0000]C1[/COLOR][COLOR=#000000] 00 54 00 68 00 69 00 73 00 20 00 69 00 73 00 ..T.h.i.s. .i.s.[/COLOR][/FONT] [FONT=courier new][COLOR=#000000]0204_16D0: 20 00 61 00 20 00 6C 00 6F 00 6E 00 67 00 20 00 .a. .l.o.n.g. .[/COLOR][/FONT] [FONT=courier new][COLOR=#000000]0204_16E0: C1 00 66 00 69 00 6C 00 65 00 20 00 6E 00 61 00 ..f.i.l.e. .n.a.[/COLOR][/FONT] [FONT=courier new][COLOR=#000000]0204_16F0: 6D 00 65 00 20 00 74 00 68 00 61 00 74 00 20 00 m.e. .t.h.a.t. .[/COLOR][/FONT] [FONT=courier new][COLOR=#000000]0204_1700: C1 00 49 00 20 00 61 00 6D 00 20 00 74 00 65 00 ..I. .a.m. .t.e.[/COLOR][/FONT] [FONT=courier new][COLOR=#000000]0204_1710: 73 00 74 00 69 00 6E 00 67 00 20 00 6F 00 75 00 s.t.i.n.g. .o.u.[/COLOR][/FONT] [FONT=courier new][COLOR=#000000]0204_1720: C1 00 74 00 2E 00 77 00 69 00 74 00 68 00 20 00 ..t...w.i.t.h. .[/COLOR][/FONT] [FONT=courier new][COLOR=#000000]0204_1730: 61 00 20 00 6C 00 6F 00 6E 00 67 00 20 00 65 00 a. .l.o.n.g. .e.[/COLOR][/FONT] [FONT=courier new][COLOR=#000000]0204_1740: C1 00 78 00 74 00 65 00 6E 00 73 00 69 00 6F 00 ..x.t.e.n.s.i.o.[/COLOR][/FONT] [FONT=courier new][COLOR=#000000]0204_1750: 6E 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 n...............[/COLOR][/FONT]
Comments
I guess us windoze users caused the FAT to become the standard because we wanted windoze to read the SD cards used by Cameras
But on an individual basis, its ok for anyone to USE code that does that exFAT function, and that code itself that anyone write that may do exFAT of something similar is just fine, as long as its not sold.
So how about just linking to a web page with a piece of free code that might do something like exFAT. Individual users can load it or not. Problem solved?
As far as FAT32, I think the only thing that is patented is the method used for long file names.
Back in the old days of mechanical stuff patents were not about "performing that function" but rather the technique you discovered to do it.
For example: Back in the early days of steam power one problem that cropped up was turning the linear motion of a piston into a rotary motion suitable for driving machines in factories. You could not patent the "linear to rotary" idea but you could patent how you did it.
So it turned out that at the time James Watt could not use the obvious crank shaft as a solution because some other guy had snagged the patent on that. James had to invent other ways to do it, sun and planet gears and so on. It was said, already over a hundred years ago, that these patent fights held back the development of steam power by decades. Seems we never learn.
If we were still in that mind set then the problem of how to use and store long file names in FAT would not be subject to patent but a particular solution would. Something has gone wrong somewhere when a statement of the problem prevents anyone else solving it in their own way.
Anyway I guess you are right. Write the code, solve the problem, give it out for free, why not.Problem comes when anyone is using that code to make a profit some how. Then they can suspect bricks might fall on their head.
As always, consult an IP lawyer if you really want to know what you can do.
Thing is the whole patent contract is that the idea in the patent is published so that we can all learn from it whilst the patent holder has a monopoly right for a limited time to exploit the idea.
But, when we are talking software things if I implement the idea of the patent in source code and publish it all I am doing is exercising my right to discuss that idea. As the original idea of patents intended. It's not for me to worry about anyone out there who may compile that code and use it in patent infringing ways. What ever they may be.
However, since mainframes and minicomputers held various length filenames (and directories), it would seem any method that just has longer filenames in a fat representation (ie not then reducing to an 8+3 format) would not be patentable.
Therefore, why doesn't the community develop an open source FATOS that can use all these monstrous drives and cards?
Problem is, we all want a standard that can be read by the various operating systems (windoze, *nix, mac, etc). Of course, msoft will not want to use anything it cannot get a patent on so that cuts out the (current) majority of users. Unfortunately, I for one am not yet ready to abandon windoze until there is a usable alternative that can do what I do now simply. I am not ready to go to *nix and android is not yet ready for prime time. Android is still primitive IMHO, crashes (more than windoze) including the browser, and just cannot do the things my windoze machine does. Times are changing, but not yet.
Only someone with large buckets of $xxB and free time can work to invalidate msofts patents. Just look at the mess with the mobile phone patent wars!
Don't know if any of that applies. If I sell a prop board with an SD slot, and somebody buys it and loads code that supports exFAT, no law has been broken.
The reason for patents was/is to protect inventors from having his or her ideas and hard work replicated by another person without compensation to the original inventor. It was a a wonderful concept and was needed because the vast majority of inventors were hard working people who needed that type of protection. Without patent protection the worry over having your idea ripped off would have outweighed the chance at being "the guy" to get rich from it- which, in turn, would have stifled innovation.
Today, "the guy" who's already rich is collecting more and more patents, which is stifling innovation because it now takes almost as much time to research patents to see if your "idea" is already patented as it does to invent something.
It's a system that has become nothing more than another tool to be taken advantage of in the name of profit. Jonas Salk was smart enough (and certainly compassionate enough) to realize this.
It's sort of like the West Virginia coal miners union.... a few decades ago, miners were busting their backs to make a living, and the mine owners were taking advantage of it. People were getting killed in the mines left and right, and the only people who cared were the families of those getting killed. The boss wanted more coal and less expense to get it, and a persons life only cost as much as his coffin. Eventually the miners smartened up and organized. They figured out a way to "protect their investment" and have a better work environment, fair wages and the ability to hold the boss accountable. But today the union costs companies (and consumers) 5 bucks for 50 cents worth of coal. It's gotten so ridiculously twisted around and buried in bureaucratic b.s. that the only thing being protected is the right to do no work and get paid lots of money for it.
However, I do intend to patent my Roasted Waffle On-A-Stick invention. And then I will rule the world. Mua-ha-haaaaaa