Projects & Studies

Raspberry Pi Benchmarks: V4B, V3B+, V3B, V2B, V1B & Pi Zero

posted Oct 11, 2019, 3:32 AM by Tom Pedersen   [ updated Nov 3, 2019, 2:56 AM ]

I recently re-ran a series of benchmarks on my collection of Raspberry Pi's to see what I had to work with for upcoming projects.  CPU, I/O, network and browser benchmarks below were completed on RPI Zero, V1 Model B, V2 Model B, V3 Model B,  V3 Model B+ and V4 Model B.  Results/comparisons may be useful to others.

Config and Tools

Simple test - booted/ran a series of benchmarks on all RaspberryPis using the same SD card and power supply.  Card was loaded with the latest version of Raspbian plus a couple of common profiling and benchmarking tools.  Setup notes:



  • O/S:  Raspbian 10 (buster) via NOOBS 3.2.1, Dated: 2019-09-30.  
    Installed Hardinfo (v0.6=alpha) profiling & CPU benchmark tool from repository ("sudo apt-get install hardinfo")
  • Project page @  
    Doc/usage via "hardinfo --help"
  • Installed sysbench (v0.4.12) benchmark tool from RPI repository ("sudo apt-get install sysbench")
    Project page @
    Doc/usage via "sysbench --help"sysbench 
  • Installed iperf (v2.0.13) network speed tester from RPI resository.  Homepage @
  • Hardinfo, sysbench and iperf ran via script in terminal window on GUI desktop (script attached below)
  • Browser tests completed using default browser (chromium) via (graphics, java script, etc)


Profile Summary

Raspberry Pi 4 Model B Rev 1.1 RaspberryPi 3,
Model B+ Rev 1.3
RaspberryPi 3,
Model B Rev 1.2
RaspberryPi 2, 
Model B Rev 1.1
Raspberry Pi 1,   Model B Rev 2 RaspberryPi 
Zero W Rev 1.1
Processor Broadcom BCM2711, Quad-core Cortex-A72 (ARM v8) 64-bit SoC @ 1.5GHz Broadcom BCM2837B0, Quad-core Cortex-A53 (ARMv8) 64-bit SoC @ 1.4GHz Broadcom BCM2837, Quad-core 64bit CPU @ 1.2GHz Broadcom BCM2836, Quad-core ARM Cortex-A7 @ 900MHz Broadcom BCM2835, Single-core ARM1176JZF-S @ 700MHz Broadcom BCM2835, Single-core ARMv7-A @ 1GHz
Memory 3999MB (364MB used) 948MB
(185MB used)
948MB (154MB used) 949MB (187MB used) 443MB (153MB used) 443MB
(158MB used)
O/S Raspbian GNU/Linux 10 (buster) Raspbian GNU/Linux 10 (buster) Raspbian GNU/Linux 10 (buster) Raspbian GNU/Linux 10 (buster) Raspbian GNU/Linux 10 (buster) Raspbian GNU/Linux 10 (buster)

A number of hardware updates over the years, see also:'s Raspberrypi Models Comparison

CPU Benchmarks

Google Chart


Sequential I/O Benchmarks

Sequential Writes w/ file create

"sysbench --test=fileio --file-test-mode=seqwr --validate run"

Sequential Reads

"sysbench --test=fileio --file-test-mode=seqrd --validate run"

Random I/O Benchmarks

Random Writes

"sysbench --test=fileio --file-test-mode=rndwr --validate run"

Random Reads

"sysbench --test=fileio --file-test-mode=rndrd --validate run"


"sysbench --num-threads=4 --test=threads --validate run"


Tested using Chromium via 

PI4 Model B

PI3 Model B+
PI3 PI2 PI1 Model B PI Zero
Motion Mark  8.12
5.09 1.98 1 1
Speedometer  18.44  7.77 6.97 4.18 .7 1.06
JetStream  23.47  17.142 14.744 8.6197 1.5255 2.5604

Google Chart

Network (iperf)

Ethernet only - no WiFi testing


That's it for now 

*Kickback Alert! T. Pedersen Ventures is a participant in the Amazon Services LLC Associates Program, an affiliate advertising program designed to provide a means for sites to earn advertising fees by advertising and linking to

Putting RaspberryPi Monitor to Sleep (DPMS)

posted Oct 10, 2018, 3:54 AM by Tom Pedersen   [ updated Jan 1, 2022, 4:42 AM ]
I recently stumbled upon a fix for a longstanding Raspberry PI annoyance - getting the monitor into powersave mode after a period of idle time.  Here's a quick tweak that seems to work fine on native HDMI and VGA (via adapter*) monitors.  Hopefully helpful to others.

I've played with Linux Power Management commands, utilities, screen savers and such in attempts to get Pi's to turn off (standby) monitors when idle.  I recently hit upon a Raspberry Pi config option that seems to do the trick - not really sure when/where it appeared, but it does switch off the HDMI when Display Power Management (DPMS) is triggered, as opposed to simply blanking the screen.  Works on Raspbian Stretch, have not tested previous versions.

Dec 2021 FINAL Update - I STILL Use this!  Procedure below has been moved to so I don't lose it when Google shuts down this site!

Jun 2020 Update - In spite of Buster Update noted below ... I STILL manually adjust /boot/config.txt & /boot/cmdline.txt to get HDMI to standby.  Tested again today using 2020-05-27-raspios-buster-lite-armhf.  Yeeesh!

Feb 2020 Update - Looks like it's included in latest Buster Update.  Screen Blanking under Advanced Options of Raspi-Config.

Nov 2019 Notes - RPI 4 is fixed (or darn close).  The Open Issue shows progress - Seems to work for me.  May not be in latest release, but coming soon!  Also - noticed that boot.txt and cmdline.txt were overwritten when I upgraded an RPI from stretch to buster ... had to redo blanking

Sept 2019 Note - hdmi_blanking doesn't appear to be implemented on RPI 4 yet.  Details here.


Oct 2018 (Original Post)

The fix involves editing a couple of key configuration files - as always remember to make a backup copies before
type-o'ing in these files!  
Use sudo to edit files in boot partition *and* be careful!
  1. Edit /boot/config.txt (RPi's main System Config File

    Add the following line to force HDMI output to switched off when DPMS is triggered.  This config option was not explicitly defined in my Raspbian (Stretch) config.txt - apparently defaults to 0/off.  


    I added this below hdmi_mode in config.txt, but it probably doesn't matter.  See complete details in  There are some notes/considerations.

  2. Make sure Screen Savers are installed/configured to take advantage of hdmi_blanking.  

    For Console Mode (no Desktop UI) set console blanking ...

    Check current setting of consoleblank kernel parameter, it sets the inactivity time. 

    $ cat /sys/module/kernel/parameters/consoleblank

    Edit (sudo) /boot/cmdline.txt to set time in seconds or zero (0) to disable screen blanking in console mode

    Carefully add the string "consoleblank=<numsec>" to /boot/cmdline.txt - MUST be a single line text file like this:

    $ cat /boot/cmdline.txt

    dwc_otg.lpm_enable=0 console=serial0,115200 console=tty1 consoleblank=300 root=/dev/mmcblk0p7 rootfstype=ext4 elevator=deadline rootwait

    For Desktop GUI set Display Power Management (DPMS) via screensaver or power manager applications - you may need to install these.   


    sudo apt-get install xscreensaver

    Power Manager:

    sudo apt-get install xfce4-power-manager

    See RPI Screensaver doc @ for complete details.  

  3. Reboot and check your work!

As they say in IT - Works for me!  Hope it works for others too.  

Couple of random notes:


* T. Pedersen Ventures is a participant in the Amazon Services LLC Associates Program, an affiliate advertising program designed to provide a means for sites to earn advertising fees by advertising and linking to

IoT in the Home: Part 2 - IoT Containment

posted Mar 9, 2018, 4:50 AM by Tom Pedersen   [ updated Sep 12, 2018, 3:55 AM ]
Finally organizing my notes to share network tactics and practices used to throw a fence around smart devices in our home. These smart things are becoming unavoidable, yet most lack mature security and privacy controls. Here's a recap of my initial assessment, network adjustments and a few resources - hopefully useful to others.  


Smart device cloud contacts
A review of our 
home network traffic combined with an understanding of current-state IoT security practices provided plenty of inspiration to revamp our home network to better accommodate the ongoing surge of 'smart' things.

Monitoring network connections on our home network revealed some interesting chatter between smart devices and their internet end-points - domestic and international.  Much of the wayward traffic appeared to be associated with device overhead (NTP Pooling, etc), but there were also a fair number of connections and conversations that seemed a tad creepy.

The lack of apparent security strategies by smart device manufacturers is also disconcerting.  Most of the smart devices in our home have been around for a number of years yet lack evidence of established security practices or controls (SSAE16, ISO 27001, etc).  Furthermore, IoT security & privacy standards really haven't matured in the past 2-3 years - device manufactures seem to be learning as they go.  

Based on my comfort level with devices in our home, I settled on a "Containment" strategy that keeps our smart device world separate from our existing home network (personal computers, phones/tablets, shared peripherals ...).  The Containment subnet also accommodates a couple of unavoidable constraints, like the ISP-supplied gateway/router that is required for our TV set-top boxes.  I also decided to steer clear of smart devices that could be a physical security or safety issue for the time being - avoiding smart door locks, garage door openers, pacemakers and such.

Network Adjustments

Our home network tweaks involved adding an isolated personal network behind a better firewall/router and recasting the original network as a combination guest WiFi and IoT Containment area.  

Network objectives/characteristics
  1. Protected Personal network
    • Set behind a new/capable Firewall/Router
    • Separate/dedicated IP subnet - LAN & WiFi Network
    • Portable - network is plug-n-play if we decide to change ISPs
    • Firewall rules prohibit traffic initiated on IoT Containment subnet
    • Can be shutdown when we are away w/o affecting the 'smart' home
  2. Isolate Smart Devices 
    • Behind original ISP-Supplied internet gateway 
    • Smart devices connected to separate/dedicated IP subnet 
    • When possible, IoT devices are wired to network (ethernet) 
    • If wireless-only device:
      • Connected to dedicated Containment WiFi network (Separate SSID) 
        Only authorized wireless connections permitted on Containment network
      • DHCP Reservations & MAC filtering required
  3. Smart(er) Switch added
    • Port-Mirroring for network monitors, probes & IDS
    • VLAN Features
New network looks something like this:




    Guidance (not much) 
    Inspiration (plenty)

That's it ... The network will likely continue to evolve as our smart world evolves and matures.   Not exactly a step-by-step, but hopefully useful.  Feel free to Drop me a line if you have thoughts or questions.


* T. Pedersen Ventures is a participant in the Amazon Services LLC Associates Program, an affiliate advertising program designed to provide a means for sites to earn advertising fees by advertising and linking to

Business Planning Google Doc Collection

posted Nov 28, 2017, 7:34 AM by Tom Pedersen   [ updated May 8, 2019, 5:02 AM ]

An updated collection of business planning Google Docs & templates.   Current collection includes Google Doc versions of MS Office templates from US Small Business Administration,, and a number of interesting business planning resource sites.   Hopefully useful to others, Comments/suggestions always welcomeRevision history and conversion notes/experience can be found HERE.

You will need a google account to access/use the docs, sheets and templates on this page.  Login with your gmail or G Suite credentials.  

Most of the gdoc templates on this page are 'View Only' - to use:  please create a copy (Menu -> File -> Make a copy ...) and save to your own google drive.  Please DO NOT 'Request Access' to the templates.

My original collection (circa 2011) from and (useful book, btw).  
 Google Doc Template  Description (original format)    
 SBA_BizPlan_Template.gdoc  Simple Business Plan Template from old SBA Generator (MS Word doc)
 SBA_form_finasst_incomestmt.gdoc  SBA Income Statement (MS Excel spreadsheet)
 SBA_010150 (Balance Sheet).gdoc  SBA Balance Sheet (MS Excel spreadsheet)
 SBA_finasst_cshflstmt.gdoc  SBA Cash Flow Budget Worksheet (MS Excel spreadsheet)
 Business Model Canvas.gdoc  Simple Business Model Canvas Spreadsheet based on PDF from  Now
More SBA forms, guidance, templates @

Entries from old/defunct Google Drive Public Template Gallery (Click "Use Template" in upper right) 
  Google Doc Template Source/Original Description from Gallery 
  Business Model Canvas Template Google Drawing template, works very well.  Canvas home:  

 Drawings Template - Business Model Canvas By Ian Broom
Rating: 4.86 out of 5

A highly usable business model canvas with sticky notes based on and extended by: 1. grouping items so they are easier to drag around 2. adding text boxes so that you can type on the canvas, name, date, etc areas, or use sticky notes (they are quite large) - just double click on the sticky note or on a section of the canvas to add text 3. added text boxes to the sticky notes and reduced their size - drag then press 'ctrl' when you release to duplicate a sticky note 4. Added tips on how to use the sticky notes - delete them once you've read them 5. Tweaked the font sizes

Preview - Browse defunct template gallery

 Idea Sketch Pad  Check out latest version @

Drawings Idea Sketch Pad - DIY Innovation Toolkit (TM) By Alex Bruton
 Rating: 4.86 out of 5

This is the online collaborative version of the Really Big Value Idea Sketch Pad found here: The focus of this tool is on idea generation. It uses Google Drawing tools to allow collaboration and sharing between many business model designers.

Current Google Doc Public Template Gallery @

From Business Planning & Financial Statements Template Gallery (there are many more)
 Google Doc Template SCORE link (original format)    
SCORE-Deluxe-Startup-Business-Plan-Template.gdoc Business Plan Template for a Startup Business  (MS Word Doc)  
SCORE-OnDeck-Business-Plan-Template-Existing-Business.gdoc Business Plan Template for Established Business
(MS Word Doc) 
SCORE-S4-Financial-Projections-Spreadsheet-June2018Rev.gdoc Financial Projections Spreadsheet (Big!)
(MS Excel Workbook)
SCORE-Annual_Marketing_Budget.gdoc Annual Marketing Budget Spreadsheet
(MS Excel Sheet) 
SCORE-Sales_Forecast_1yr.gdoc One Year Sales Forecast 
(MS Excel Sheet)
SCORE-Start-Up-Expenses.gdoc Start-Up Expenses
(MS Excel Sheet)
SCORE-Opening-Day-Balance-Sheet.gdoc Opening Day Balance Sheet
(MS Excel Sheet)
SCORE-Profit_and_Loss_Projection_1yr.gdoc 12-Month Profit and Loss Projection 
(MS Excel Sheet)
SCORE-Profit_Projection_3Yr.gdoc 3-Year Profit and Loss Projection 
(MS Excel Sheet)
SCORE-12-Month-Cash-Flow.gdoc 12 Month Cash Flow Statement 
(MS Excel Sheet)
SCORE-3-Year_Cash_Flow_Projections.gdoc 3-Year Cash Flow Statement 
(MS Excel Sheet)
SCORE-Balance-Sheet.gdoc Balance Sheet Template 
(MS Excel Sheet)
SCORE-Breakeven_Analysis.gdoc Break-Even Analysis Template 
(MS Excel Sheet)
SCORE-SBAMONTHLYCASHFLOWSHEET.gdoc Monthly Cash Flow - SBA Form 1100 (3-93) 
(MS Excel Sheet)

From - Australian Government's Department of Industry, Innovation & Science.  Great Info here!
 Google Doc Template (A4 paper) link (original format - A4 paper)    
Business plan template.gdoc Business Plan Template
(MS Word Docx)        
Business plan guide doc.pdf  PDF'd version of Business Plan Template Guide
(MS Word Docx)
Marketing plan template and guide.gdoc Marketing Plan Template and Guide
(MS Wod DocX)
Emergency management and recovery plan template.gdoc Emergency Management Template and Guide
(MS Word Docx)
Emergency management and recovery plan guide.pdf Emergency Management Guide
(MS Word Docx)
Prepare your business checklist DOC.pdf Emergency Management Business Checklist
(MS Word Doc)
Take action checklist DOC.pdf Emergency Management Take Action Checklist
(MS Word Doc)
Business recovery checklist DOC.pdf Emergency Management Business Recovery Checklist
(MS Word Doc
Social media plan template and guide.gdoc Social Media Plan Template and Guide
(MS Word Docx
Succession plan template and guide.gdoc Succession Plan Template and Guide
(MS Word Docx)
More Interesting Checklists - posted in PDF format  Starting Your Business Checklist

Growing Your Business Checklist

Checklist Companion Guide

 Google Docs "General" Template Gallery  Check new official gdoc gallery, seems to be growing
 Business Plan Template - English  From  Nice (33p) general purpose template
 Lots of Free Biz related Google Doc/Sheet Templates  From Smartsheet.comInteresting product
 Business Plan Template (little lighter, 8 page template)  From's Templates
 <more as I stumble upon them>  
Here's my Business Planning Drive folder - may contain other works-in-process, "to be posted", etc ... 

Business Planning Google Docs

That's it for now ... hope it helps

RaspberryPi Zero, v1, v2, v3 & v3B+ Benchmarks

posted Oct 15, 2017, 5:10 AM by Tom Pedersen   [ updated Oct 11, 2019, 8:12 AM ]


This post has been replaced by:  

Raspberry Pi Benchmarks: V4B, V3B+, V3B, V2B, V1B & Pi Zero


DIY Apple AirPlay/Print and HomeKit on RaspberryPI

posted May 9, 2017, 6:33 AM by Tom Pedersen   [ updated May 3, 2021, 7:53 AM ]

I cobbled together a Raspberry Pi to stand-in as an Apple HomeKit and AirPlay/Print server as an experiment. The little gizmo allows us to control smart devices, print on household printer and play music on our stereo from iPhones & iPads. The HomePi has been working like a champ, so I decided to retrace my steps and share the recipe - hopefully useful to others.


Many of the techno problems around our home tend to revolve around integrating older equipment with modern devices or attempting to deal with the deluge of new 'smart' devices, each with its own App or interface.   Our 'vintage' stereo and network printer are prime examples of the old world - simply not iPhone/iPad compatible in terms of streaming music or printing.  On the other end of the spectrum, we seem to be constantly fumbling with a variety of apps provided with our newfangled smart home (lights, switches, appliances, etc).  I originally dropped the Raspberry PI onto our network to fill the Air gap by emulating Apple AirPlay and AirPrint services and recently added HomeKit services so Siri could begin helping out around the house. A cheap, easy and fun little project - no programming but RPI/Linux knowledge will come in handy. Probably a couple of hours to get things installed and running.


Our original AirPi was built on a Raspberry Pi 1 Model B, which worked great for Play/Print services for a couple of years - totally amazed by reliability and performance,  it even handled print jobs while playing streamed music without missing a beat.  The latest HomePi is based on a RPI 3 Model B which seems to be just as reliable and handle the additional HomeKit activity. The contraption is connected to our WiFi network and wired to an aux port on our stereo via headphone (3.5mm) to RCA Y-Cable.  

Here's the list of hardware components involved.  There is flexibility here, but the following works for me:


The software used for the original AirPi was somewhat version specific due to the combination of hardware and software required to pull the thing together using Raspbian Weezy, Shairport open source project and some sound/alsa struggles attempting to get my cheap-o USB sound card up and running.  The HomePi rebuild went VERY smoothly under Jessie, but noted original software versions below - just in case.  Seems to work fine under Stretch too.


Following is a sing-a-long with stopping points along the way for systems that won't require all services.  Not exactly a HowTo, more of the personal log used to build/rebuild this rascal.  It does Include links to installation guides and a number of HowTo articles that I found useful during the project.  Hopefully helpful to others.

*** 2021 The HomePi Recipe has been moved to ***

*** 2019 - Updated/Simplified recipe @ HomePi V3: Apple AirPrint/Play/Homekit on Raspberry Pi ***

Raspberry Pi OS Prep 

  • Follow Raspberry Pi Setup Guide for initial setup - Approx 15 Minutes, not including download time
    • Couple of notes/potential gotcha's:
      • Remember to set Language and Keyboard at bottom of NOOBS initial screen (I always forget)
      • Raspbian only - no need to install other OSs for this project
  • Some post installation cleanup from my checklist and log
    • Review Pi config options via command line Raspi-Config or GUI Preferences/Raspberry Pi Configuration.  Minimally set:
      • Change user pi's password (default is pi/raspberry)
      • Boot Options
        • Start in Text Console mode (CLI) - no need for GUI desktop
        • Auto Login as user pi
      • Advanced Options
    • Update Raspbian 

      sudo apt-get
      sudo apt-get upgrade

    • Install favorite editor - I like Joe, many use inbuilt nano

      sudo apt-get install joe

    • WiFi Setup/Tweaks
      • Configure WiFi to connect to your network 

AirPrint (CUPS)

  • Install latest CUPS via Pi's packaging tool (apt-get) - install/setup ~30 mins 
    Good guide @  The following seems to work on Stretch (cup 2.2.1) as well as Jessie (cups v1.75).
    • Install avahi - required for network discovery

      sudo apt-get install avahi-discover

    • Installs CUPS and friends 

      sudo apt-get install cups cups-pdf python-cups

    • Mod user pi to be CUPS admin, it will be used to login to web interface 

      sudo usermod -aG lpadmin pi 

    • Make sure CUPS and friends are running after the install

      ps -A | grep cups

      ps -A | grep avahi

  • CUPS Config, phase 1 - cupsd.conf
    Edit /etc/cups/cupsd.conf to permit remote browser access via port 631. See Lynsay's guide above, a number of edits here ... in case I miss one
    • Comment out Localhost restriction & add line to permit access via port 631

      #Listen localhost:631
      Port 631

    • Permit local network access to cups paths via local network - add "Allow @Local" line right after "Order allow,deny" in following sections for http(s) access to server, admin, config and log pages.   
      <Location />
        Order allow,deny
        Allow @Local
      <Location /admin>
        Order allow,deny
        Allow @Local
      <Location /admin/conf>
        AuthType Default
        Require user @SYSTEM
        Order allow,deny
        Allow @Local
      <Location /admin/log>
        AuthType Default
        Require user @SYSTEM
        Order allow,deny
        Allow @Local
    • Remember to bounce CUPS

      sudo /etc/init.d/cups restart

  • CUPS Config, phase 2 - via CUPS web interface @ http://<your PI IP address>:631 (https in latest cups)
    • Log in to CUPS administration using pi system user & password 
    • Administration page: check "Share Printers" and "Allow Remote Admin"
    • Administration/Add Printer - "Discovered Network Printers" found our Dell M5200 w/ a couple of tweaks:
  • HowTo Use AirPrint to print from your iPhone, iPad, or iPod touch by Apple Support

AirPlay (Shairport-sync)

  • Shairport-sync install using  - Install/testing takes 45min - 1hr
  • Install steps below were distilled from README - Should work on Jessie or Stretch!  Read through the README to season to taste and understand the process. 
    • Install required Linux packages 

      sudo apt-get install build-essential git xmltoman

      sudo apt-get install autoconf automake libtool
      libdaemon-dev libasound2-dev libpopt-dev libconfig-dev

      sudo apt-get install 
      avahi-discover avahi-daemon libavahi-client-dev 

      sudo apt-get install libssl-dev

      sudo apt-get install libsoxr-dev

    • Latest README included a step that turns off WiFi Power Management
      I didn't include this in original DIY (jessie) - see Shairport Troubleshooting
      sudo iwconfig wlan0 power off
    • Download/Build Shairport - Installs to /home/pi/shairport-sync directory
      Note: configure has a number of options and IS version dependent (Jessie) - see README for details

    • cd /home/pi

      git clone

      cd /home/pi/shairport-sync

      autoreconf -i -f

      ./configure --sysconfdir=/etc --with-alsa --with-avahi --with-ssl=openssl --with-metadata --with-soxr --with-systemd


    • Create shairport-sync group & user

      getent group shairport-sync &>/dev/null || sudo groupadd -r shairport-sync >/dev/null

      getent passwd shairport-sync &> /dev/null || sudo useradd -r -M -g shairport-sync -s /usr/bin/nologin -G audio shairport-sync >/dev/null

    • Create directories, man pages and set to start with system

      sudo make install

      sudo systemctl enable shairport-sync

    • Run thru /etc/shairport-sync.conf file w/ your editor and season to taste.  There is A LOT in there
      • Set "name" to something descriptive. It shows on iphone/pad (e.g. "Family Room Bose")
      • Sample configuration file is installed @ /etc/shairport-sync.conf.sample
  • USB Sound Card setup (also dependent on Jessie):
    • Use aplay to get list of playback hardware - see below output, USB card highlighted //

aplay -l

**** List of PLAYBACK Hardware Devices ****
card 0: ALSA [bcm2835 ALSA], device 0: bcm2835 ALSA [bcm2835 ALSA]
  Subdevices: 8/8
  Subdevice #0: subdevice #0
  Subdevice #1: subdevice #1
  Subdevice #2: subdevice #2
  Subdevice #3: subdevice #3
  Subdevice #4: subdevice #4
  Subdevice #5: subdevice #5
  Subdevice #6: subdevice #6
  Subdevice #7: subdevice #7
card 0: ALSA [bcm2835 ALSA], device 1: bcm2835 ALSA [bcm2835 IEC958/HDMI]
  Subdevices: 1/1
  Subdevice #0: subdevice #0
card 1: Device [USB Audio Device], device 0: USB Audio [USB Audio]
  Subdevices: 1/1
  Subdevice #0: subdevice #0

  • Modify /home/pi/.asoundrc, setting card # to USB Audio Device.  File appears to be auto generated/created if you start in the GUI, I had to create it myself from CLI ... it looks like this
    $cat .asoundrc

    pcm.!default {
           type hw
           card 1
    ctl.!default {
            type hw
            card 1
  • copy .asoundrc to /etc/asound.conf to get thing to work at boot/service

    sudo cp /home/pi/.asoundrc /etc/asound.conf  
  • Make sure Serice is up and OK.  After reboot too

    sudo systemctl start 
    sudo systemctl status shairport-sync

  • I preset volumes to minimize fiddling with device volume using alsamixer
    • Set Mic to zero
    • Set Capture to zero
    • Set Speaker to redline (93 on mine)
  • HomeBridge homepage @
    Install can take some time, count on an hour with minimal plugin playtime!
  • One preliminary - check for plugins for your smart devices before you go through install  - just to make sure you'll be able to control your device.  Go to and search for  "homebridge-<your dev>".  For example or
  • RPI Homebridge Install from :
    • Check for c++ compiler, you should see response ending with "gcc version 4.92"

      g++-4.9 -v

    • Install nodejs

      curl -sL | sudo -E bash -

      sudo apt-get install -y nodejs
      sudo apt-get install libavahi-compat-libdnssd-dev

    • HomeBridge Install:  README

      sudo npm install -g --unsafe-perm homebridge

    • Fire it up, it will complain about no plugins, but should see it run & offer a pairing code,  <Ctl>C to kill


    • Create config.json file in /home/pi/.homebridge directory see README if you have probs, it could be your editor
  • Plugins installation.  Steps are dependent on the smart device.   Plugins are also installed using npm, will have their own readme/instructions including a snippet to add to your config.json file.  Get plugins by searching for "homebridge-" on  Expect some trial/error and fiddling to get plugins working
  • Testing:  Once Plugins are installed,  Fire up Homebridge and test.  I test in a terminal window for a day or two to keep an eye on message chatter
  • To start Homebridge when RPI boots, create a systemd service from
    • Create /etc/default/homebridge file using example from

      cat /etc/default/homebridge

      # Defaults / Configuration options for homebridge
      # The following settings tells homebridge where to find the config.json file
      # and where to persist the data (i.e. pairing and others)
      HOMEBRIDGE_OPTS=-U /var/lib/homebridge

      # If you uncomment the following line, homebridge will log more
      # You can display this via systemd's journalctl: journalctl -f -u homebridge
      # DEBUG=*

    • Create /etc/systemd/system/homebridge.service file using example from
    • Check homebridge location - response should be usr/bin or usr/local/bin

      $ which homebridge

    • Edit /etc/systemd/system/homebridge.service - set ExecStart to homebridge location (e.g. usr/bin/) 
      $ cat /etc/systemd/system/homebridge.service

      Description=Node.js HomeKit Server

      # Adapt this to your specific setup (could be /usr/bin/homebridge)
      # See comments below for more information
      ExecStart=/usr/bin/homebridge $HOMEBRIDGE_OPTS


    • Set execute permissions for service

      sudo chmod +x /etc/systemd/system/homebridge.service

    • Add Homebridge system account, user and group created, no home directory (-M)

      sudo useradd -M --system homebridge

    • Create system dir and copy config.json file for new homebridge service - set ownership and write

      sudo mkdir /var/lib/homebridge

      sudo chmod +w /var/lib/homebridge 
      sudo chown -R homebridge:homebridge /var/lib/homebridge 
      sudo cp /home/pi/.homebridge/config.json /var/lib/homebridge/.

    • Enable/Run/Check the service

      sudo systemctl daemon-reload
      sudo systemctl enable homebridge
      sudo systemctl start homebridge
      sudo systemctl status homebridge

    • Check /var/log/daemon.log if anything goes bump.

      tac /var/log/daemon.log | less

    • Reboot to get the witches out and test service startup

      sudo shutdown now -r

  • Set up phone via
    • if you forgot your pin/scan code dig it out of systemd journal

      sudo journalctl -u homebridge

  • Debugging:  Troubleshooting Guide @
    • Running in terminal window is very helpful 
    • See Also:  Common Issues section in the README

  • Apple Home info @

Revision History

That's it for now - works for me!  Quite amazed by these little PIs.  I'll post some utilization stats at some point in the future.  Drop me a line if you see something or have need or comment.  Hope it helps

* T. Pedersen Ventures is a participant in the Amazon Services LLC Associates Program, an affiliate advertising program designed to provide a means for sites to earn advertising fees by advertising and linking to

Online Privacy Checkup

posted Jan 30, 2017, 8:55 AM by Tom Pedersen   [ updated Apr 13, 2018, 5:53 AM ]
Reviewing privacy settings and personal information collected/maintained online was a great way to celebrate Data Privacy Day.  Totally amazing to see how much personal information is collected and spread around the Interweb to provide our personalized experiences.  Here are notes and links from privacy checkups at a few popular websites - hopefully useful to others.  


Safety Center - designed to help manage the security and privacy of personal data. 
Privacy Checkup - Review/Adjust important Privacy Settings
Take out - Create/Download archive of personal information 
Notes:  Review of personal information will take some time!  They maintain a LOT of personal data!  


Privacy Basics - "Learn how to customize your privacy settings so you can confidently share your moments." 
Data Policy - Quite a site (and sight!) -  Comprehensive discussion of FB personal data collection & use 
Permanently Delete Facebook Account - Unlikely that all personal information will be removed
Notes:  Review took a long time and seemed inconclusive.  Lots of data, confusing/conflicting procedures.  Creepy!
** If you don't have a FB account, check "
This doesn't answer my question" for further instructions

Yahoo (Oath)

Yahoo's Privacy Center - Details how Yahoo treats your personal information & ways to control 
Data Storage and Anonymization - Describes data that is collected, no controls offered
Oath Privacy Controls Page - Probably now the best place to start
Safety Center contains Privacy & Identity section, but strictly informational
Ad Interest Manager allows you to opt-out of personalized advertisements
Account Settings - Access to very limited Yahoo Account information 
Notes:  In June 2017 Verizon rolled Yahoo under umbrella (others include AOL, Techcrunch, Tumblr ...)
I took a quick run thru links above after Oath, but still pretty hard (impossible) to determine extent of personal information retained.  No huge improvement in controls


Account Settings - Access to limited personal information
Privacy Dashboard (new in Jan 2017!) - Informational w/ controls to manage & Dowload
Microsoft Trust Center - Security, Privacy and compliance info for MS Cloud Services
Opt-Out of Interest-Based Advertising - Control "personalized Ads" in browsers & windows 
Privacy Statement - Appears to be comprehensive, covering all Microsoft products/services
Notes:  There is now download option for activity history, but no obvious access to ALL data maintained by MS
If you are a Windows 10 user remember to work your way through Settings/Privacy for more MS review     


Privacy Policy - Reasonably straight forward*  BUT you have to opt-out, NO Privacy by default
Account Settings - Quite comprehensive, provides Archive Download
Account Settings -> Safety and Privacy -> Personalization and Data* - START HERE
Account Settings -> Apps - Amazed by number of authorized apps, revoked access to many 
Account Settings -> Your Twitter Data - Snapshot of Account information, A LOT here, dig down
Notes:  Pretty easy to review personal information and update privacy settings.


Privacy Policy - Set some time aside to review this one!
Data Privacy and Advertising Settings are worth the visit - interesting 
Privacy Settings - Spend some time in here.  LinkedIn digs deep, collects A LOT!
Personal Data Export Page - Download copy of LinkedIn Data (presented in unwieldy csv files) 
Notes:  Pretty intrusive.  Lots of options, surprised by some of the collected information   

* June 2017 Twitter Update - New Privacy Policy and Personalization and Data Settings 

VirtualBox Windows 10 Upgrade Error C1900101-20017

posted Apr 4, 2016, 8:13 AM by Tom Pedersen   [ updated Apr 4, 2016, 8:16 AM ]
A quick note to share the tweaks I used to upgrade a VirtualBox Windows 7 VM to Windows 10 after many attempts to get around update error C1900101-20017.  Simply thought I'd share my experiences in case others are struggling with the same frustrating issue.

In a Nutshell

For the past few months I've periodically attempted to upgrade a simple VirtualBox Win7 VM to Win10.  It is a very minimal system used exclusively for testing, but ended up being amazingly difficult to update - always failing at initial Win10 reboot (frozen animated win10 logo) with:  "Error(s) found:  C1900101-20017 Windows Update encountered an unknown error".

Config Details

  • VirtualBox v5.0.2 r102196 (running under Linux Mint 17)
  • 32-bit Win7 Ultimate Upgraded to Win10 Pro (simple test machine, 1.5g mem, single CPU, 60g VDI)
  • No significant apps installed - Windows Defender AV + 1 or 2 utility programs - VERY vanilla
Final Tweaks

Many attempts over the past few months, beginning with matching the VM specs to Windows 10 requirements to disabling network & antivirus and downloading/upgrading from Win10 Image and finally playing with VM System Settings until the update actually worked!  

In the end, I THINK the following VM System settings got past the error:
  • System/Motherboard tab:  Checked "Enable I/O APIC"
  • System/Acceleration tab:  Paravirtualization Interface changed to "Default" (I previously had "Legacy" set)
Screenshots of final/working System tabs in case I tweaked something else - click to enlarge:

 System Motherboard Settings
 System Processor Settings
 System Acceleration Settings

Just a quick entry here because this error drove me nuts for quite a while - I hope it helps.

IoT in the Home: Part 1 - Traffic Analysis Hardware & Tools

posted Oct 15, 2015, 2:58 PM by Tom Pedersen   [ updated Sep 7, 2017, 4:56 AM ]

Part 1 of a series [hopefully] of notes relating to managing traffic on modern home networks, a project inspired by the Internet of Things (IoT) and a growing number of Smart Devices in our home.   Many of these devices converse on our internal network, others communicate with Cloud services - few offer details of their net-chatter. Simply curious to see Who's talking to Who while learning a few network management tools and techniques. 


The number of devices on our home network has grown significantly in the past year or so as we continue to add network connected lights, switches, appliances and other smart devices to our world.  This Internet of Things (IoT) tends to blend private and public networks as smart devices are dropped inside of our firewalls - right next to the PCs and storage we chose to protect from the 'outside world'. Furthermore, we have little/no control of smart device communications and may even be asked to open ports/connections with external (public internet) services to facilitate their interactions with the cloud.

This initial article is focused on home network reconfiguration and tweaks performed to simplify network traffic analysis and security as our pile of smart device grows.  Hardware and software tools listed here will initially be used to add traffic monitoring capabilities but are also expected to play role establishing a network architecture that will safely [securely] accommodate many more future smart devices.   


Many home networks are now cobbled together behind equipment provided by Internet Service Providers (ISP), generally your cable television or phone company.  Internet 'Gateways' supplied by ISP's are typically consumer-grade Switch/Routers that simply provide internet connectivity for wired and wireless devices.  It is a little tricky to monitor traffic on these switched networks because packets are specifically forwarded only to sending and receiving ports.  Furthermore, consumer-grade switches rarely provide network management or monitoring features that would allow us to 'tap-in' to peek at network traffic or isolate traffic to prevent untrusted smart devices from intermingling with devices on our private LAN.

Commercial networks and data centers routinely deploy Managed Switches as part of their network design.  This class of switch provides a variety of configurable features to control/monitor traffic and tune network performance.  Managed switch features of particular interest for this project include port mirroring and network virtualization (VLAN).

Port Mirroring is a feature that allows you to configure a redirect or 'Mirror' port to facilitate network monitoring. Traffic analyzers connected to these ports will see all packets sent/received on the mirrored port.   Virtual LAN  capabilities allow you to configure logical sub-networks to improve performance or security by separating untrusted devices/traffic from existing devices on our home network.


I searched for economical network hardware that would satisfy my initial IoT network requirements and settled on the following (I'm sure there are MANY other alternatives):

Smart Switch:  TP-LINK TL-SG108E 8-Port Gigabit Easy Smart Switch with 8 10/100/1000 Mbps RJ45 Ports, MTU/Port/Tag-Based VLAN, QoS and IGMP* - around $35 when I bought on  Not a full-blown managed switch, but does support port mirroring and VLANs.  Seems to work fine, but you may need a windoze machine to configure/manage.
Wired/Wireless Switch/Router:  DD-WRT is alternative OpenSource firmware suitable for a wide variety of consumer grade routers.  DD-WRT firmware includes many features found in commercial switches.  I am repurposing an old Linksys WRT320N running dd-wrt to isolate/secure wired and wireless IoT devices to learn about more about this traffic.

Network Analyzer: My trusty old Acer Aspire One netbook, running Kali Linux (see below). Kali contains several hundred tools aimed at various information security tasks including loads of traffic analysis tools.   Kali also runs great on the AAO.


My initial list of network analysis tools include the following (likely to change as I learn):
Kali Linux is a Debian-based Linux distribution aimed at advanced Penetration Testing and Security Auditing. The Kali distribution contains MANY interesting open source tools and will save a lot of installation/configuration time.  Also runs fine via "live" USB drive.  Well documented.
Wireshark is a very popular network protocol analyzer (sniffer). It lets you see what's happening on your network at the packet or conversation level and is widely used and well documented.  Wireshark is preinstalled on Kali Linux, but can also be downloaded here.
ntop is an OpenSource network traffic probe that shows the network usage, similar to what the popular top Unix command does. Users navigate/interface via web browser to monitor realtime network conversations and traffic.   My now be included with Kali, but also downloadable here.
EtherApe is an OpenSource graphical network monitor for Unix modeled after etherman.  It displays network activity graphically. Hosts and links change in size with traffic. Color coded protocols display.  Doesn't appear to be included with Kali - but looks interesting.  Download via this page

That's it for now - hope it is useful to others.  Will try to document/post more as I learn  


* T. Pedersen Ventures is a participant in the Amazon Services LLC Associates Program, an affiliate advertising program designed to provide a means for sites to earn advertising fees by advertising and linking to

Garmin eTrex 10: How to Add Coordinates to Compass Display

posted Aug 20, 2015, 5:41 AM by Tom Pedersen   [ updated Aug 20, 2015, 5:53 AM ]
Here's a quick Garmin eTrex 10 techno adjustment that seems to reduce aimless wandering when elementary students tackle GPS activities like Hide-N-Seek.  In a nutshell:   Add current location (GPS coordinates) to the eTrex 10 compass display to provide realtime tracking of longitude/latitude changes.   

The following setup procedures adjusts eTrex 10 Compass Display Screen.

Setup - Approx 40 Seconds/Unit to set this up

  1. Select "Profile Change" then select "Recreational"

  2. Select "Compass" then press Menu button (on left)

  3. Highlight/Select "Change Dashboard" then select "Large Data Field"

  4. From Compass display (again) press Menu button

  5. Highlight/Select "Change Data Fields" then select top field on screen

  6. Scroll thru Fields (alphabetically) to find/select "Location (lat/lon)"

  7. Hit Back button to return to compass display

Usage - Students navigate using compass display.

  1. Select “Where To?” then select “coordinates”

  2. Enter coordinates of desired destination using Thumbstick - remember to hit DONE

  3. Hit Back button (Upper right) until main screen appears

  4. Select “Compass” - you should see pointer on Compass and current Location

  5. Wander until Location on Compass = Target Destination!

Some handy Garmin eTrex 10 links

That's it - hope it helps

1-10 of 37