Purifying indoor air with 3 20-in box fans and 3 x Honeywell CF200A1024 (FPR 10/MERV 12 Air Filters)

posted May 12, 2015, 3:17 PM by Justin Piszcz   [ updated Mar 1, 2018, 2:43 PM by Justin Piszcz ‎(A)‎ ]

Update 2018-03-01, additional details regarding the health benefits of Air Purifiers can be found at Jen's reviews:


PART 1 - Initial Introduction

My room has a bit of dust in it and I sneeze every so often.  While thinking about how to address this I started researching Air Purifiers.  I eventually stumbled across the following YouTube videos which I found very interesting:

In order to quantify these findings, I used a Dylos Pro DC1700 [1] which has been used by students at MIT in their own research papers [2]

During my research I started by looking at some low-end ~$200 Honeywell Air Purifiers, particularly the HPA300B.  However, as I began to read more, ultimately I found what is considered one of the best air purifiers in the industry--the IQ Air Health Pro Plus which retails for $800-$1200 depending on your options.

It was fascinating one could achieve a ~90% reduction in air particulates with only a fraction of the cost by using a box fan.  Further, with box fans I could distribute the load across multiple fans in different areas in the room.  So out I went, I bought 3 box fans ($16.98/ea) and 3 air filters (Model: Honeywell CF200A1024) ($31.98/ea), on the side of the air filter box it says they can last up to 1 year!

Here is one of the three air filters being used, attached one of the box fans:



I started out with 1 box fan and 1 air filter and within about 30 minutes the air "seemed" fresher and cleaner.  It is difficult to describe as I have never worked in a clean room.  I needed to quantify whether this was true or just wishful thinking.  After seeing the YouTube videos above, particularly the first one I bought 2 more fans and filters.  Then I ordered the Dylos air quality monitor to check the particulates in the air.  What 3 box fans can do is really amazing as you will soon see below.

This article is split up into 3 parts:
1. This initial introduction.
2. The before/after of when I got home and after 1 hour of having all 3 fans run on low.
3. Once #2 reached its lowest point, I turned off the filters for ~1hr and see where the particulates went, initially it was slow for them to increase; however, once I turned on the HVAC and AC as it is summer where I live, the particulates sky rocketed.  However, once I turned the filters back on even with the HVAC running, the particulates dropped down to much better levels.

PART 2- Before and after

When I took my first sample of the ambient air in the room (left) and after 1 hour on (right)

Per the manual [3] above on page 6:

The number on the left represents small particles and the number on the right large particles.


PART 3 - Air quality over time

For part 3 I performed an experiment:

1. At 5:07PM I turned off the air filters (speed was low setting)
2. At 5:13PM I turned on the HVAC system w/Air Conditioning.
3. At 5:32PM I turned on the air filters (speed was low setting)
4. At 5:40PM I turned on the ceiling fan (to improve overall air circulation)

The data speaks for itself, the box fans and air filters with good air circulation can really work wonders for your air quality!

In the next graph we see the particle high as when I am at work I turn off the air filters.  The small particle count increases to 100,000+ particles and small particles to upwards of around 400-800 per cubic foot. Once I get home, I turn on the filters and it drops dramatically.  The spike occurred when I was tearing apart some cardboard boxes.  It stayed very low throughout the night which is clearly seen below:

Testing a Cornet ED78S with iPhone 5s with Bluetooth and Wi-Fi disabled

posted Jan 14, 2014, 5:29 AM by Justin Piszcz   [ updated Jan 14, 2014, 5:29 AM ]

In my first test, I had Bluetooth and Wi-Fi enabled outlined here: Testing a Cornet ED78S with iPhone 5s when receiving a phone call.  A recent viewer commented on performing the test again, this time with Bluetooth and with Wi-Fi disabled.  The results were much different.  I tried to keep the testing conditions as close as possible to the original video, including performing the test at the same time of day.  The video below shows the updated results.

Testing a Cornet ED78S with iPhone 5s with Bluetooth and Wi-Fi disabled (1080p HD)

Roku 3 User Interface Review

posted Jan 7, 2014, 5:50 PM by Justin Piszcz   [ updated Jan 7, 2014, 5:53 PM ]

I recently subscribed to Amazon Prime for both the shipping perks and the ability to have access to a wide array of movies and TV shows.  I currently own an Apple TV but it does not support Amazon Prime.  The next best thing was a Roku 3.  In the video review below, I walk through the user interface of the Roku 3 and also show some of the channels the device offers.  The review is a little long at 8 minutes 40 seconds but hopefully it will give the viewer a good insight into the Roku 3's user interface.

Roku 3 User Interface Review

Analyzing blocked telemarketer calls from asterisk with MySQL

posted Dec 29, 2013, 7:15 AM by Justin Piszcz   [ updated Dec 29, 2013, 7:18 AM ]

When one is subscribed to multiple PSTN carriers, one can gather a lot of data about who calls, when they call and if they are blocked or not.  In this configuration, Asterisk is used passively to deny callers that are in added to asterisk's blacklist.  I wrote a custom script to extract the inbound callers from each carrier and then insert the data into a MySQL database for further analysis.  Asterisk is highly effective in this scenario as I use the blacklist across all PSTNs as nobody wants these calls.  Note, in this scenario I have a total of 201 blocked calls in 2013.  A blocked call represents a telemarketer calling a second time after asking to be removed from the list. In the examples below, I analyze the calls and graph them accordingly.  Note the times are in EST.

The raw data, as stored in MySQL:

Analyzing the data for blocked calls by months of the year:


Analyzing the data for blocked calls by days of the month:


Analyzing the data for blocked calls by days of the week:


Analyzing the data for blocked calls by time of day:



After analyzing the data, the following conclusions are reached:

1. The number of blocked calls per month of the year rises dramatically during the summer, perhaps due to summer break and summer jobs?
2. The number of blocked calls per day of the month rises the most at the start and in the middle of the month.
3. The number of blocked calls per day of the week start high and ramp up in the beginning of the week and taper off at the end.
4. The number of blocked calls per hour spike in the morning (9AM EST) and slowly ramp up over the course of the day, tapering off at night (9PM EST).

Testing a Cornet ED78S with iPhone 5s when receiving a phone call

posted Dec 29, 2013, 5:59 AM by Justin Piszcz   [ updated Dec 29, 2013, 6:18 AM ]

While investigating various wireless routers I became interested in measuring what the power emitted from various devices.  I picked out the Cornet ED78S to use as testing as it measures between 100MHz and 8.0GHz. There is a Cornet ED85EXA model which measures 1MHz-8GHz but it requires a special separate antenna, without the antenna its range is 700MHz to 6.0GHz.  Please note this is only a single-axis meter so it will depend on where your head/body is in-relation to the phone, in this example I put them side by side.  This is for informational purposes only.  Any type of measurements should be taken with multiple devices that are calibrated to confirm accuracy and preferably with a tri-axis meters, although those can be quite expensive.

Testing a Cornet ED78S with iPhone 5s when receiving a phone call ‎(1080p HD)‎

There are other videos on YouTube which show the differences if the meter is directly in front of the iPhone such as this one here, please note he is using mW/m2 in the video below.

Smart phone, cell mobile phone radiation madness!!! Cornet ED-7

Geekbench 3 - Benchmarks

posted Dec 26, 2013, 9:23 AM by Justin Piszcz   [ updated Dec 26, 2013, 9:24 AM ]

After watching several YouTube videos concerning benchmarks and comparison testing between mobile devices I saw one thing in common: Geekbench.  I decided to give it a spin on a wide variety of hardware.  Please keep in mind these are benchmarks only and mostly are CPU-specific at that, as part of any new system build, there is a lot more that needs to be taken into account such as memory, I/O subsystems and the number PCI-e lanes.  This is just to provide at-a-glance view of what the output looks like after you've benchmarked a number of machines.

The top two machines tested:

1. Supermicro X8DTH-6F (2 x Intel Xeon 5645 6-core)
2. Supermicro X9SRL-F (1 x Intel Xeon E5-1660 v2 6-core)

The benchmarks:

                        ( Click to see full image )

Netatmo Weather Station Review

posted Dec 18, 2013, 7:52 AM by Justin Piszcz   [ updated Dec 19, 2013, 4:27 PM ]

Have you ever walked into a room and noticed it felt "stuffy"? While looking to analyze indoor air quality, I scoped out what I found to be the best solution: the Netatmo Weather Station (NWS).  I didn't find any good pictures via Google Image search at the time in relation what the Web UI looks like for what was important to me (CO2 levels).  The NWS base station comes with the central unit and an outdoor unit.  You can expand the system with up to 3 additional expansion modules.  There is a slight issue with the humidity sensors in the base unit, both the indoor and outdoor units; however, you can contact support and have them re-calibrated-- you can find more information on Netatmo's forums or other websites that sell this product.

The hardware:

- The first, tallest module is the "main" module that communicates with all other devices.
- The middle module is the outdoor module which has been designed to be able to survive outdoor conditions.
- The third module on the right is one of the expansion modules you can purchase.

             (images courtesy of Netatmo's website)


Overall, setting up with iOS was a breeze, the user manual is simple and easy to understand [1].  One tricky thing that some folks had asked was how to pair the 3 additional modules?  In that scenario, you'll actually attach the device via USB to your computer, traverse the Web UI and you'll download an application if using Windows that will allow you to pair the device.  It is also noted in the forums that the master module and the expansion module should be right next to each other to ensure a successful pairing.  Once they are paired, the expansion modules can be moved around your living space.

Why would you care about CO2 levels anyway?

To quote Wikipedia [2]:

"To eliminate most Indoor Air Quality complaints, total indoor carbon dioxide should be reduced to a difference of less than 600 ppm above outdoor levels. NIOSH considers that indoor air concentrations of carbon dioxide that exceed 1,000 ppm are a marker suggesting inadequate ventilation.[18] The UK standards for schools say that carbon dioxide in all teaching and learning spaces, when measured at seated head height and averaged over the whole day should not exceed 1,500 ppm. The whole day refers to normal school hours (i.e. 9:00am to 3:30pm) and includes unoccupied periods such as lunch breaks. European standards limit carbon dioxide to 3,500 ppm. OSHA limits carbon dioxide concentration in the workplace to 5,000 ppm for prolonged periods, and 35,000 ppm for 15 minutes. These higher limits are concerned with avoiding loss of consciousness (fainting), and do not address impaired cognitive performance and energy, which begin to occur at lower concentrations of carbon dioxide."

Where is the Web UI?

Web UI screenshot of what the dashboard looks like, it is customizeable and can be re-arranged to your liking, in the screenshot below I am only concerned with the CO2 readings in Parts Per Million (PPM).

Click the image to see the full size dashboard using the maximum of 3 expansion modules.

What impact will this have on my network?

The average is 10-23 bits per second (bps) back and forth with the Netatmo server, this is shown below by using munin and custom iptables firewall rules to grab these metrics:

What about CO2 sensor accuracy?

To confirm the accuracy of this device, I verified the readings with another vendor's CO2 sensor.  I compared the Netatmo's readings with a SUPCO IAQ50 and they are generally with in +/- 50PPM of each other.  Overall, I am happy with the Netatmo and it brings another set of monitoring tools and metrics for your home environment.

The SUPCO is located near the main unit, note: the picture below was not taken at the same time as the screenshot/Web UI above.  The Netatmo was reading 542PPM with the SUPCO reading 572PPM; however, they are at slightly different elevations.


What does it cost?

The Netatmo Weather Station (NWS) retails for $179 which includes the main module with an outdoor module.  The expansion modules go for $79/each.  However, there are often discount codes during the holidays that can help to bring these prices down.


The Netatmo Weather Station offers more than is described here, it provides user-defined push-notifications for all of its sensors, including audio volume in decibels; however, that is on the main unit only, none of the external or expansion modules contain a audio microphone/sensor.  In addition to sensor-specific notifications, the Netatmo also pushes storm and weather alert notifications relevant to your area.  Another great feature I found is if your wireless cuts out or you are performing maintenance-- from what I've seen initially the unit will backfill the metrics once it reconnects so there should not be any gaps on the graphs.


I was not given any product or asked to perform this review, I was interested in air quality and environmental monitoring, such as the temperature, humidity, CO2 and ambient noise, thus far, nothing beats Netatmo for this functionality.  Could you do it for cheaper with your own components using a Raspberry Pi?  Probably, but there would be a lot more needed for the iOS integration piece and storing the data in the cloud.

Compression algorithms for the Linux kernel source tree

posted Dec 18, 2013, 5:42 AM by Justin Piszcz   [ updated Dec 18, 2013, 5:48 AM ]

Have you ever wondered which compression algorithm provides the best compression for the Linux kernel source tree?  For the Linux Kernel I had pondered this awhile back (yes, in the 2.6.x days) before the xz format had been on the kernel FTP mirrors.  Unless otherwise noted, I used the maximum compression options as noted from the manpage.  Clearly xz [1] and 7z [2] come out on top.  I've only done brief testing with xz; however, with 7zip using the lzma2 compression algorithm it can scale to the number of cores in your system, which is a plus if you need to compress files quickly.

Click the image for the full size graph:

compression algorithms for Linux kernel source

The data in table format:

 Size(KB) Filename Compression Ratio Options    
 32160 linux- (7.10846:1) (-9e)
 32392 linux- (7.05755:1) 
 32404 linux- (7.05493:1) (-9)
 33520 linux- (6.82005:1) 
 33760 linux- (6.77156:1) 
 38064 linux- (6.00588:1) 
 39472 linux- (5.79165:1) 
 39520 linux- (5.78462:1) 
 39936 linux- (5.72436:1) 
 40000 linux- (5.7152:1) 
 40656 linux- (5.62298:1) 
 47664 linux- (4.79624:1) 
 49940 linux- (4.57765:1) 
 49968 linux- (4.57509:1) 
 50000 linux- (4.57216:1) 
 51344 linux- (4.45248:1) 
 57552 linux- (3.9722:1) 
 57984 linux- (3.9426:1) 
 81136 linux- (2.81759:1) 
 94544 linux- (2.41801:1) 
 101216 linux- (2.25862:1) 
 228608 linux- (1:1) 


High pitch noise detection with SPLnFFT Noise Meter for iPhone

posted Dec 18, 2013, 3:25 AM by Justin Piszcz   [ updated Dec 18, 2013, 6:06 AM ]

For some people, certain hardware devices such as hard drives (HDDs) and some power supplies can emit a high pitch "whine" which can be very annoying to the customer.  It can be expected for high-performance enterprise HDDs (10-15K RPM) as those generally live in datacenters or separate server rooms.  However, when it comes to consumer products that exist in living rooms or bedrooms, consumers who can hear these tones want products that do not emit high-pitch frequencies.  Other examples include: Uninterruptible Power Supplies (UPS'), the power supply for your PC or a power adapter for your media streamer.

Recently I purchased a media streamer and the power supply was emitting a high pitch frequency.  Instead of hearsay, I wanted a method to measure and prove the device was emitting what some would consider an "annoying" high-pitch frequency.  There are several hardware-based sound analyzers one can purchase; however, I found a better solution that works on an iPhone, SPLnFTT Noise Meter for iPhone ($3.99) [1].  I used an iPhone 5s for testing--it works with iOS 7 and gave me the data I needed to prove to a manufacturer there was an issue.  While there are reports of other users experiencing the same problems on their forums and elsewhere, I do realize when a company manufactures 100k+ devices, it is possible to get a lemon.  For that reason I've hidden the logo on the manufacturer's AC power adapter.

With any analysis and review, I have tested this to reproduce the issue multiple times and the results are consistent.  I am not an audio engineer, nor do I work with professional audio equipment.  An iPhone is probably not the best tool if you are looking for high-accuracy audio analysis/results; however, this app was able to provide me the data I was looking for to prove my case.

Here is the AC power adapter I used:

media streamer power adapter

Using SPLnFTT for iPhone, you can clearly see 12,532Hz being emitted from the AC power adapter:

SPLnFFT meter with adapter plugged in

After disconnecting the AC power adapter, it drops to 474Hz:

Curious what 12,000Hz sounds like?  If so, make sure your volume is set low before you play the video [2]:

12000 Hz

I was not selected to review this sound application, I searched the gamut of sound apps for iOS and this was the best one I found that met my requirements.

Optimizations for lftp on 10GbE networks

posted Dec 13, 2013, 11:01 AM by Justin Piszcz   [ updated Dec 13, 2013, 11:10 AM ]

While syncing some large datasets between two Linux hosts, I wanted to know if I could do it faster, there is GNU parallel with rsync that works well, there is NFS too but I wanted to use FTP for high speed data transfers.  After some analysis, I determined lftp was constantly hitting 100% utilization, I contacted the developer of lftp: Alexander V. Lukyanov.  We went back and forth a few times over the past 2-3 weeks and through benchmark/analysis and checking the memory allocation buffers with strace, we finally found the best way to achieve maximum performance with lftp for 10GbE links.  There was an initial thread that kicked off on the lftp list [1].

The current snapshot from today (and moving forward) has better performance from a memory allocation perspective, that is located here:

Further, in your $HOME/.lftprc replace the default (0x10000) with:
set xfer:buffer-size 0x20000

Compile and install the new application and then test the speed again on 10GbE:

lftp client performance with 4.4.13 (was current production version at the time)
<--- 150 152837731.5 kbytes to download
`...-11e0-a3b1-806e6f6e6963.vhd' at 87779540224 (56%) 714.06M/s eta:99s
`...-11e0-a3b1-806e6f6e6963.vhd' at 120031762432 (76%) 712.21M/s eta:50s
`...-11e0-a3b1-806e6f6e6963.vhd' at 128500216832 (82%) 667.87M/s eta:39s
<--- 226 222.418 seconds (measured here), 671.06 Mbytes per second
156549891072 bytes transferred in 223 seconds (670.60M/s)

After iterating and debugging/stracing with Alexander, the final and best result with lftp was obtained in lftp-pre4.5.0.20131214.tar.gz, the final results are shown below using the increased buffer size with many fewer -EAGAIN's and increased performance.  The new version was tested and the results were confirmed via e-mail to the lftp-devel mailing list [2]

156505837056 bytes transferred in 159 seconds (939.49M/s)
5.86user 152.38system 2:38.88elapsed 99%CPU (0avgtext+0avgdata 3244maxresident)k
0inputs+0outputs (2major+1288minor)pagefaults 0swaps

156505837056 bytes transferred in 173 seconds (862.45M/s)
8.60user 162.37system 2:53.09elapsed 98%CPU (0avgtext+0avgdata 3388maxresident)k
0inputs+0outputs (12major+1337minor)pagefaults 0swaps

156505837056 bytes transferred in 169 seconds (885.41M/s)
6.37user 159.36system 2:48.60elapsed 98%CPU (0avgtext+0avgdata 3364maxresident)k
0inputs+0outputs (12major+1333minor)pagefaults 0swaps

This represents a 33% performance increase: 167s over 223s with the older version of lftp (4.4.13).
Thanks to Alexander to improving lftp for high speed 10GbE networks!

1-10 of 20