Since now more and more HD videos are larger than 4GB they can not be stored into FAT32 file system, and require the use of other file systems, the most popular being ext2/ext3 or NTFS. However, since many users may want to access the mass storage devices (IDE / SATA harddisk, USB Harddisk, USB Thumbdrives…) in Windows as well as in their embedded systems (IP STV, Digital Signage..) NTFS seems to the best choice to share data between Windows systems and embedded systems using Linux.
NTFS is available in the Linux kernel. However only read-only is fully supported and the performance is about 25% less than ext-2 or ext-3 for the platforms we tested (EM8623L and SMP8635), but this is still acceptable to play most of HD Videos.
However, if the device also needs to download videos from a server or other P2P clients, having a read-only file system will not do it. For this purpose, NTFS-3G can be used and provide full read/write access to NTFS partitions. The caveat is that NTFS-3G relies on FUSE (File Systems in User Space) and suffers from very poor performance with embedded platforms, at least with Sigma Designs EM862X and SMP863X series probably due to the overhead of transferring data between kernel space and user space.
So there are no ready-made open-source solutions that provide all functionalities and performance required to have NTFS support in embedded systems such as a Set-Top-Box.
There are ways to overcome the issue, however.
- Optimize ntfs-3g for your embedded systems by yourself.
Your abilities to do that depend on the embedded platform. This is quite challenging for the older Sigma Designs since AFAIK there are no working profilers for EM862x/SMP863X platforms. Gprof can not work with uClinux and oprofile requires Linux 2.6 (OK for SMP863X) and some hardware timers are required by not available on the MIPS core used by SMP8634/SMP8635.
- Use commercial solutions
The first solution that can be used is Tuxera made by the developers of NTFS-3G. They have a version of NTFS for embedded systems and boasts some impressive NTFS benchmark for embedded systems , especially in comparison to ntfs-3g. I have never tried a platform using Tuxera NTFS, but based on their benchmark for embedded systems using MIPS Core @ 333Mhz (See below) this should work very well.
The second commercial solution is made by Paragon and called Paragon NTFS for Linux Embedded. This solution is already used in products using Sigma Designs solutions such as TViX M-6500A and for having tried the sample offers pretty decent performance compared to the open source solutions. Actually this is fast enough to record DTV on the NTFS partition.
Jean-Luc started CNX Software in 2010 as a part-time endeavor, before quitting his job as a software engineering manager, and starting to write daily news, and reviews full time later in 2011.
Support CNX Software! Donate via cryptocurrencies, become a Patron on Patreon, or purchase goods on Amazon or Aliexpress
“The caveat is that NTFS-3G relies on FUSE (File Systems in User Space) and suffers from very poor performance with embedded platforms”
According to ntfs-3g’s latest information, it no longer relies on FUSE, hence can use an unmodified kernel (ie. just the same one you have been using with ext3 – no rebuild required).
Cannot comment on the speed aspect, though some kind of profiling of this would be a useful effort for someone with the resources … is it inherent to the filesystem or just the implementation, also with embedded in mind, how does it perform with a) MTD/YAFFS Flash b) SSD drives and c) reliability wrt power cycling.
@ MikeW
Thanks for the update. Would you have the links to the info that shows it does not rely on FUSE? I can’t find it with Google.
I also noticed that NTFS-3G performance was much closer to other file systems on more powerful systems with more available memory such as SMP865x (MIPS @ 500Mhz).