Apache NuttX RTOS PMC

It is my great honor to become a PMC (Project Management Committee) member in the Open-Source Apache NuttX RTOS [1]. Thank you for inviting me into this great community and totally amazing project! :-)

NuttX is a real-time operating system (RTOS) with an emphasis on standards compliance and small footprint. Scalable from 8-bit to 64-bit microcontroller environments, the primary governing standards in NuttX are Posix and ANSI standards. Additional standard APIs from Unix and other common RTOS’s (such as VxWorks) are adopted for functionality not available under these standards, or for functionality that is not appropriate for deeply-embedded environments (such as fork()).

[1] https://nuttx.apache.org/

BCI & Neurotechnology Masterclass Baltic Region 1.0

M2.NVM disk + PCI-E controller on FreeBSD

Modern laptops are quite expensive and hard to upgrade. While they are really handy to work in multiple places, they are not that efficient for advanced R&D activities like virtualization and massive software development combined (I/O speeds highly affects overall performance and compilation times). I was wondering if M2.NVM disk over PCI-E controller could work with my old desktop workstation giving additional performance benefit over standard onboard SATA attached SSD drive.

Old desktop PC only supports SATA drives. Switching to SATA SSD (electronics NAND Flash based Solid State Drive) in place of conventional HDD (mechanical drive) can boost I/O performance noticeably. We had 3.5″ (desktop) and 2.5″ (laptop) physical disk dimensions available so far. But new M2 SSD drives showed up, founding a new standard, with smaller form factor to be installed in embedded systems and lightweight laptops. M2 defines only a physical dimensions requirements, while disk itself can implement SATA (with average 500MB/s read/write speed) or NVM (with average 3000MB/s read/write speeds or better) interface.

So I have decided to try M2.NVM Samsung SSD 980 1TB drive over ICYBOX IB-PCI224M2-ARGB PCI-E 4.0 controller on my ASUS M5A97 R2.0 (last available BIOS 2603) that only supports PCI-E 2.0. I have several internal and external SSD SATA drives both in 2.5″ and M2 form factor. Having even basic M2.NVM drive over PCI-E controller seems to be more future proof purchase, for the same amount of money, it will be ready for possible motherboard replacement, and in bay benefit in additional performance gain over onboard SATA attached SSD drive. Operating system is Open-Source FreeBSD Unix version 13-STABLE, filesystem is ZFS (testing done with no compression and no encryption).

It turns out that PCI-E 4.0 card can work on older PCI-E 2.0 bus (for sure speed will be degraded in that case). Mainboard BIOS does not see the NVM controlleri in UEFI mode (TODO) so it is not possible to boot out of it without additional SATA drive with the FreeBSD bootloader / kernel first (TODO). FreeBSD can see and utilize both PCI-E Controller and the M2.NVM drive with no problem. Let’s see the data transfer speed results in numbers.

Average in-filesystem StressDisk large file write speed results:

  • Onboard SATA 2x WDEARS RED 2TB ZFS RAID0 STRIPE: 188MB/s.
  • PCI-E ICYBOX M2.NVM Samsung SSD 980 1TB ZFS: 410MB/s.

DiskInfo single drive summary results:

  • PCI-E ICYBOX M2.NVM Samsung SSD 980 1TB ZFS: O:1087557, M:1099090, I:1160432 kbytes/sec
  • Onboard SATA 3.5″ 2TB 5400RPM HDD WD20EFRX (RED):O:146521, M:116847, I:70159 kbytes/sec
  • Onboard SATA 3.5″ 2TB 5400RPM HDD WDEARS (GREEN): O:113811, M:87543, I:49209 kbytes/sec
  • External USB3.1 M2.SATA SSD disk enclosure: O:31503, M:31850, I:31900 kbytes/sec.

As we can see above, from user perspective in out-of-the-box configuration write speeds are 218% faster on NVM SDD over HDD RAID for large files (this may need some filesystem tuning). Weighted average disk access for NVM SSD is 1 115 693 KB/s, WD20EFRX is 111 176 KB/s, WDEARS is 83 521 KB/s. It turns out that WD RED HDD disks are 133% faster than WD GREEN HDD disks, while NVM SSD disks are over 1000% faster than WD HDD RED disks. On the other hand external USB 3.1 M2.SATA SSD disk has average 47 626 KB/s results. One last but crucial test will be added here containing the onboard SATA SSD drive, just to make sure and prove NVM dominance over SATA.

DiskInfo result for single 3.5″ 2TB 5400RPM HDD WDEARS (GREEN Series) drive attached to onboard SATA controller:

# diskinfo -tv /dev/ada2
/dev/ada2
        512             # sectorsize
        2000398934016   # mediasize in bytes (1.8T)
        3907029168      # mediasize in sectors
        4096            # stripesize
        0               # stripeoffset
        3876021         # Cylinders according to firmware.
        16              # Heads according to firmware.
        63              # Sectors according to firmware.
        WDC WD20EARS-00MVWB0    # Disk descr.
        XXX             # Disk ident.
        ahcich4         # Attachment
        No              # TRIM/UNMAP support
        Unknown         # Rotation rate in RPM
        Not_Zoned       # Zone Mode

Seek times:
        Full stroke:      250 iter in   7.135585 sec =   28.542 msec
        Half stroke:      250 iter in   5.288793 sec =   21.155 msec
        Quarter stroke:   500 iter in   7.540787 sec =   15.082 msec
        Short forward:    400 iter in   3.036829 sec =    7.592 msec
        Short backward:   400 iter in   2.956946 sec =    7.392 msec
        Seq outer:       2048 iter in   0.254515 sec =    0.124 msec
        Seq inner:       2048 iter in   0.199511 sec =    0.097 msec

Transfer rates:
        outside:       102400 kbytes in   0.899735 sec =   113811 kbytes/sec
        middle:        102400 kbytes in   1.169709 sec =    87543 kbytes/sec
        inside:        102400 kbytes in   2.080911 sec =    49209 kbytes/sec

DiskInfo result for single 3.5″ 2TB 5400RPM HDD WD20EFRX (RED Series) drive attached to onboard SATA controller:

# diskinfo -tv /dev/ada0
/dev/ada0
        512             # sectorsize
        2000398934016   # mediasize in bytes (1.8T)
        3907029168      # mediasize in sectors
        4096            # stripesize
        0               # stripeoffset
        3876021         # Cylinders according to firmware.
        16              # Heads according to firmware.
        63              # Sectors according to firmware.
        WDC WD20EFRX-68EUZN0    # Disk descr.
        XXX             # Disk ident.
        ahcich0         # Attachment
        No              # TRIM/UNMAP support
        5400            # Rotation rate in RPM
        Not_Zoned       # Zone Mode

Seek times:
        Full stroke:      250 iter in   6.653120 sec =   26.612 msec
        Half stroke:      250 iter in   5.172312 sec =   20.689 msec
        Quarter stroke:   500 iter in   7.808667 sec =   15.617 msec
        Short forward:    400 iter in   2.082164 sec =    5.205 msec
        Short backward:   400 iter in   3.350534 sec =    8.376 msec
        Seq outer:       2048 iter in   0.141464 sec =    0.069 msec
        Seq inner:       2048 iter in   0.139262 sec =    0.068 msec

Transfer rates:
        outside:       102400 kbytes in   0.698874 sec =   146521 kbytes/sec
        middle:        102400 kbytes in   0.876360 sec =   116847 kbytes/sec
        inside:        102400 kbytes in   1.459537 sec =    70159 kbytes/sec

DiskInfo result for single M2.NVM Samsung SSD 980 1TB drive attached to ICYBOX IB-PCI224M2-ARGB PCI-E 4.0 controller working on PCI-E 2.0 capable motherboard:

# diskinfo -tv /dev/nvd0
/dev/nvd0
        512             # sectorsize
        1000204886016   # mediasize in bytes (932G)
        1953525168      # mediasize in sectors
        4096            # stripesize
        0               # stripeoffset
        Samsung SSD 980 1TB     # Disk descr.
        XXX             # Disk ident.
        nvme0           # Attachment
        Yes             # TRIM/UNMAP support
        0               # Rotation rate in RPM

Seek times:
        Full stroke:      250 iter in   0.008369 sec =    0.033 msec
        Half stroke:      250 iter in   0.005510 sec =    0.022 msec
        Quarter stroke:   500 iter in   0.014519 sec =    0.029 msec
        Short forward:    400 iter in   0.010368 sec =    0.026 msec
        Short backward:   400 iter in   0.020456 sec =    0.051 msec
        Seq outer:       2048 iter in   0.032788 sec =    0.016 msec
        Seq inner:       2048 iter in   0.032863 sec =    0.016 msec

Transfer rates:
        outside:       102400 kbytes in   0.094156 sec =  1087557 kbytes/sec
        middle:        102400 kbytes in   0.093168 sec =  1099090 kbytes/sec
        inside:        102400 kbytes in   0.088243 sec =  1160432 kbytes/sec

DiskInfo resuls for USB 3.1 M2.SATA SSD disk enclosure:

 # diskinfo -tv /dev/da0
/dev/da0
        512             # sectorsize
        256060514304    # mediasize in bytes (238G)
        500118192       # mediasize in sectors
        4096            # stripesize
        0               # stripeoffset
        31130           # Cylinders according to firmware.
        255             # Heads according to firmware.
        63              # Sectors according to firmware.
        USB3.1          # Disk descr.
        XXX             # Disk ident.
        umass-sim0      # Attachment
        No              # TRIM/UNMAP support
        Unknown         # Rotation rate in RPM
        Not_Zoned       # Zone Mode

Seek times:
        Full stroke:      250 iter in   0.096377 sec =    0.386 msec
        Half stroke:      250 iter in   0.099408 sec =    0.398 msec
        Quarter stroke:   500 iter in   0.216023 sec =    0.432 msec
        Short forward:    400 iter in   0.190744 sec =    0.477 msec
        Short backward:   400 iter in   0.203053 sec =    0.508 msec
        Seq outer:       2048 iter in   0.769551 sec =    0.376 msec
        Seq inner:       2048 iter in   0.769675 sec =    0.376 msec

Transfer rates:
        outside:       102400 kbytes in   3.250481 sec =    31503 kbytes/sec
        middle:        102400 kbytes in   3.215029 sec =    31850 kbytes/sec
        inside:        102400 kbytes in   3.210055 sec =    31900 kbytes/sec

Website Look Update 2021

I have updated the website look. I hope you like it :-)

Apple macOS 10.13 High Sierra Fail

Guys at Apple are either stoned or really working hard to make macOS as bad as Windows. macOS High Sierra (10.13) was probably designed by people that were really “high”. They removed TELNET utility that is second most valuable network testing utility after PING. Except for noticeable performance degradation glitches during video modeswitch and other failures macOS really gets close to Windows in its poor design decisions and obvious quality degradation for professional applications.. now I will hardly consider buying another overpriced MacMookPro..

ARM mbed OS DAPLink pyOCD

It is my great honor to join Free-and-Open-Source ARM mbed [1] development team! :-)

[1] https://www.mbed.com

My First Steps in CRW / CF

I am gearing up and starting a new adventure. I have just bought my own PD Lightning 176 canopy dedicated to CRW/CF [1]. Thanks to Simon and the “Lost in Space” crew first jumps were really awsome and safe. Thank you guys! :-)

[1] https://en.wikipedia.org/wiki/Canopy_formation

repeat until success

Each big failure makes me more calm. Strange.
#cogito

Google Books Text-To-Speech

Google have implemented my idea to make Google Books TTS work like an audio player – it can now work in background and being controlled with bluetooth headset – so I can play, pause and rewind paragraphs of the book read by speech synthesizer just as it was music. This is soo fantastic!!

I have been proposing this solution to Amazon to implement in Kindle for Android, but for years they did not listen. I have switched to Kindle application after Amazon bricked my Kindle3 3G reader with a software update (and all other devices worldwide). Now I just wait until Google Books allow to import my Kindle library, and I will never go back to Kindle. Greedy loses twice.

Android Open Source and Hardware Obsolescence

Why only NEXUS devices are sensible choice for Advanced Android Users and Developers? Because NEXUS device vendors provide source code and device drivers.

This makes is possible to re-compile and re-create any customization of the Android by advanced users and developers. The most popular among them is CyanogenMod based on AOSP (Android Open Source Project).

Why is such customization really necessary? Because Vendors does not keep up with the Android development, their releases are flawed, contains unwanted modifications, quite often development is abandoned just after product release.

I know that Drivers Development is time and money consuming task for Vendors. Still, providing source code for device drivers would make it possible to run alternative and/or customized OS, also prolong device life for second-hand users in poor countries. Vendor sells the device anyway and Users can make fixes and customization. Why this Win-Win scheme is so hard to achieve in reality? Is really enforcing sales with mass garbage so important?

UNFOCUS

What if, life is just an illusion of Ego, so convincingly tempting that we forget everything just after birth.. What is the purpose of Meditation? What happens when we really unfocus from Ego? How deep is Void? Who is John Galt?

Mac OSX Bluetooth Modem resource busy

In case you wonder why your device does not connect as Modem via Bluetooth to the Mac OSX, or you cannot see COM port on Windows, your mobile device may not simply support or provide DUN (Dial Up Network) and/or SPP (Serial Port Profile) profile.

On Mac OSX I got following error, until I tried another device and/or starting by hand DUN service on a mobile/client machine:

cannot open /dev/cu.Bluetooth-Modem: Resource busy

Notes:

  • Read Bluetooth specification for Serial Port Profile.
  • Read Bluetooth specification for Dial-Up Network Profile.
  • Modern mobile phones / USB 3G dongles, unfortunately, do not provide direct AT/Hayes access to the Radio Modem anymore.
  • You can install DUN application for your smartphone, but it will be only a simple dummy wrapper imitating modem for simple applications, but they do not provide full modem functionality, beware, its a fake.
  • Its only necessary for devices to be paired first in order to get SPP/DUN working. If device does not provide serial port over bluetooth when devices are paired and online, probably its just not there implemented.

We Are The Universe!

“If the number of distinguishible states is a must, but not enough, for a consciousness to exist [1] in a machine, there must be additional structural factor for consciousness to exist. Given human, biological DNA-based self replicating machine, has this consciousness operational, it is possible to assume that the universe is conscious as well, because there is a sufficient number of interacting bodies, just as in our neural network, and we are all made of the same star dust. We Are The Universe! :-)”/CeDeROM2013

[1] “Phi: A Voyage from the Brain to the Soul”,  Giulio Tononi, Pantheon; First Edition edition (August 7, 2012), ISBN-10: 030790721X, ISBN-13: 978-0307907219.

Open Web and Multimedia

I am happy to notice slow withdrawal of closed-source solutions such as Adobe Flash (and so available only on selected platforms) from the web. When I have working Open-Source and (mostly) BSD-based web browser (Chromium) with some commercial support (Google) at least to display H264 encoded multimedia content (using Open-Source x264 software implementation), and there is HTML5, I start to consider Vimeo a better option than Google’s YouTube, if we speak of quality.

Although Google develops Open and Free multimedia codec called WebM, at the same time they use annoying commercials that makes WebM-ready videos unavailable in most cases on HTML5 YouTube and push users towards Flash anyway, as opposed to Vimeo where all H264 videos works flawlessly in HTML5…

wwwjennifervaughncom

I was even more surprised to see for the first time a very colorful, scalable, interactive and full of multimedia content website of Jennifer Vaughn (created by Phil Giampi) that use NO closed-source Adobe Flash at all!! This website works flawlessly in Chromium browser on my FreeBSD Unix style desktop which use only Open-Source and Free-Software components and embeds Vimeo content. Thank you for supporting high quality open web (although its not totally free)! :-)

What about WebM? Google at one hand creates Free and Open standard such as WebM, but on the other hand Google does not seem to support it at all – neither in its own projects (see advertising with Flash on YouTube that blocks HTML5) nor in external projects (see Mozilla/Firefox struggling alone to promote WebM, see Google Chrome that simply buys restricted H264 license and thus promotes the competitive standard). I think it might be cheaper for Google to make H264/X264 free to use (at least as renderer like Microsoft did) rather than investing into something that is not going to be used anyway… What is the internal organization of Google? Do people need to fight for their projects against each other inside? Why there is no global view for better coordination? This seems to be a great waste of energy, WebM seemed to be very promising Free and Open Standard :-(

new website

After two years of my web inactivity here when social networking steals our private space such as this meanwhile balancing between everyday struggle of survival I have managed to set up a new website. It will be available in English by default, but Google Translate should help to read it also in other languages. There are some basic information copied from old website (it had over 1 500 000 visits since 2006, thanks!) , successively I will add more information from the past, hopefully I will also have something new and interesting to write about in future as well :-)

PhD started

I have started a PhD studies on Biocybernetics with Neural Interfacing as my field of research. Cyberspace here I come! :-)

MSc Level Complete :-)

I have finished the MSc level of the scientific career with my “CeDeROM Brain Computer Interface” design, at last, but still lots of work ahead! Credits goes to everyone who earned it – Thank You for Your Support! :-)

Windows 7/Vista Installer

The new Microsoft Windows Vista/7 brought also new revolution to the installer and bootloader components. If you are in that group who gets their OS preinstalled on the computer and no backup DVD is attached, then you have really bad luck.

If MBR gets modified Windows won’t boot anymore, unless you use installer disk to fix the bootstrap. But hey – you may ask – where is my installer disk, I only got the preinstalled system with rescue partition on the hard drive! So if you dare to install BSD, Linux, or any OS other than Windows, beware and get the installer disk first. Also note that this is not Microsoft duty to provide that system disk, but the Manufacturer, so good luck with getting back what you paid for.

The other issue in Microsoft Windows Vista/7 installer is the nasty welcome screen that lets you select the language for further installation – but, in fact, there is no “Next” button and the list is “one click”, so if you click anything except your language on the list, there is no other choice but to use this foreign language for the installation process – because there is neither “Back” nor “Restart” button (like in the FreeBSD and Linux installers) on the following screen. You can only reboot the computer and wait few more minutes for the installer to load again… assuming that you have the disk and won’t click anything wrong on the welcome screen ;-)

Ah, by the way – you won’t get into fixing the previous installation if the active partition has changed and does not point to windows installation anymore. Also be prepared and download Ethernet Adapter drivers because fresh install does not contain any of them bundled, so in order to download all of the drivers you need at least network up and running. So called “backup disk” contains only system, no drivers.

Now tell me who really creates piracy?