Sunday, January 21, 2018

10-Second $10 Upgrade to Triple Your Raspberry Pi 3 Network Speed

ADVERTISEMENT:

Subscribe by Email!
By Gabriel Staples
Written: 20 Jan. 2018
Last Updated: 20 Jan. 2018

Site Map/Table of Contents

tldr;

Buy one of these USB to Gigabit Ethernet adapters for $10, plug it in to your Raspberry Pi 3 and voilá! Your new Pi 3 Ethernet connection is now 3x faster than the built-in Ethernet port and 12x faster than the built-in WiFi adapter (source: see my test results below)!

This really matters when you're using your Pi 3 as a network device, server, router, hotspot, NAS, or remote development machine. Pretty much it really matters whenever you want it to work better on your local or wide area network, which includes ssh-ing or otherwise remoting into it.

Details:



I bought the above adapter this past week (here's my Amazon review) and discovered that it worked natively with Linux, including Ubuntu and Raspbian. I was thrilled! No configuration required! Just plug and go. I then decided to test it meticulously in 4 different computers to see how well it can use my new 1 Gbps fiber optic internet connection. I discovered that many factors influence your network and internet speed, including: your computer's ethernet or wifi adapter, your router, your internet service, your USB port (2.0 vs 3.0), and even I believe your hard drive. The hard drive one is interesting to me but I didn't test it thoroughly. It appears however that since Solid State Drives [SSDs] are way faster at random access than Hard Disk Drives [HDDs], which are magnetic spinning drives, they can also run programs faster, and that matters when your browser or system is doing a lot of file reading/writing or caching.

You can play around and do your own internet speed testing with this device in various machines and configurations with a nice command-line Python tool called speedtest-cli.  Note that although the device is rated for 1 Gbps, the fastest speeds I logged were 732 Mbps download and 551 Mbps upload, and that was on a super fast laptop while plugged into one of its USB 3.0 ports. On the Pi 3, the best I could get with this device was 304 Mbps download and 279 Mbps upload, but that's still 3x faster than the Pi 3's built-in Ethernet port and 12x faster than its built-in WiFi adapter.

Details, full test results, and speedtest-cli testing program install instructions are below.

Tested with `speedtest-cli` command-line Python tool in Windows and Linux
 - This tool connects to speedtest.net without all of the fluff, graphics,
   browser, and ads which otherwise get in the way and interfere with the
   quality of internet speed tests
To install in Linux Ubuntu:
  sudo apt install python-pip
  sudo pip install speedtest-cli
To install in Windows:
  Google how to install Python and Pip in Windows, then in the
  Command Prompt run:
  pip install speedtest-cli
To run the internet speed test from the command line in Windows or Linux:
  speedtest-cli
ADVERTISEMENT:
============================================================
Computer Speed Tests:
------------------------------------------------------------
Command: `speedtest-cli`
My Internet connection: I am paying for 1 Gbps AT&T U-verse
  symmetric download/upload speeds via a fiber-optic connection.
My Router: TP-LINK Archer C5 AC1200 Dual Band Wireless AC
  Gigabit Router, 2.4 GHz 300Mbps + 5 GHz 867 Mbps
Testing conditions: all devices were tested on the same day,
  and in the same room as the router. The Pi 3 was the
  closest to the router, being about 1 ft away from it.
  Each result was obtained through approx. 3~10 test runs.
------------------------------------------------------------
Speed Test Results format:
 (Mbps reported connection speed) / Mbps DOWNLOAD / Mbps UPLOAD
============================================================

------------------------------------------------------------
1) Macbook white from 2008 running Linux Ubuntu 14.04
------------------------------------------------------------
 - Built-in Wifi
   - 2.4 GHz: (130 Mbps) / 23~46 Mbps   / 19~33 Mbps
   - 5 GHz:   (243 Mbps) / 133~160 Mbps / 73~86 Mbps
 - Ethernet
   - Built-in Ethernet adapter:
                        (1000 Mbps) / 412~816 Mbps (usu. 600~800) / 156~606 Mbps (usu. 300~600)
   - Rankie USB to Ethernet 1000 Mbps adapter
     - In USB 2.0 port: (1000 Mbps) / 287~305 Mbps / 130~221 Mbps (usu. ~200)
     - In USB 3.0 port: NA

------------------------------------------------------------
2) Dell super fast high-end 8-core 64GB RAM 1 TB SSD 2017
   laptop running Linux Ubuntu 14.04
------------------------------------------------------------
 - Built-in Wifi
   - 2.4 GHz: (300 Mbps) / 59~127 Mbps  (usu. ~100) / 42~58 Mbps   (usu. ~48)
   - 5 GHz:   (866 Mbps) / 297~391 Mbps (usu. ~350) / 110~179 Mbps (usu. ~160)
 - Ethernet
   - Built-in Ethernet adapter:
                        (1000 Mbps) / 527~845 Mbps (usu. 600~800) / 292~462 Mbps (usu. 300~450)
   - Rankie USB to Ethernet 1000 Mbps adapter
     - In USB 2.0 port (via external USB 2.0 hub):
                        (1000 Mbps) / 315~326 Mbps (usu. ~320)    / 259~290 Mbps (usu. ~265)
     - In USB 3.0 port: (1000 Mbps) / 299~732 Mbps (usu. 600~700) / 177~551 Mbps (usu. 400~500)

------------------------------------------------------------
3) Toshiba mid-grade laptop from 2015 running Windows 8.1
------------------------------------------------------------
 - Built-in Wifi
   - 2.4 GHz: (150 Mbps) / 36~42 Mbps / 36~42 Mbps
   - 5 GHz: NA
 - Ethernet
   - Built-in Ethernet adapter:
                        (100 Mbps) / 92~93 Mbps / 94 Mbps
   - Rankie USB to Ethernet 1000 Mbps adapter
     - In USB 2.0 port: (1000 Mbps) / 183~246 Mbps (usu. ~200) / 175~228 Mbps (usu. ~200)
     - In USB 3.0 port: (1000 Mbps) / 157~309 Mbps (usu. ~200) / 252~328 Mbps (usu. ~275)

------------------------------------------------------------
4) Raspberry Pi 3 mini computer running Raspbian 8.0 Jessie
------------------------------------------------------------
 - Built-in Wifi
   - 2.4 GHz: (estimated 54 Mbps) / 21~25 Mbps / 23~28 Mbps
   - 5 GHz: NA
 - Ethernet
   - Built-in Ethernet adapter:
                        (100 Mbps) / 91~93 Mbps / 89~94 Mbps
   - Rankie USB to Ethernet 1000 Mbps adapter
     - In USB 2.0 port: (1000 Mbps) / 243~304 Mbps (usu. ~300) / 159~279 Mbps (usu. ~200)
     - In USB 3.0 port: NA
   
Note: Pi 3 WiFi connection speed is estimated from output of `iwlist wlan0 scanning` and `iwconfig`. Ethernet connection speed is read from output of `ethtool eth0 | less`, or `ethtool eth1 | less`, etc (see `ifconfig` for network interface device list).

END

Keywords: Raspberry Pi speed boost; Raspberry Pi 3 internet speed, speed up Raspberry Pi network speed, 3x speed boost on Raspberry Pi network speeds, Raspberry Pi 3 USB ethernet adapter, Raspberry Pi 3 NAS speed boost, Raspberry Pi 3 faster ssh/faster remote logins/faster home server

Test Time: 3 hrs.
Draft Time: 30 min., since I copy-pasted all test results from the file where I originally logged them

***Subscribe by Email!***

Sunday, December 31, 2017

WowGo 2 Electric Skateboard

ADVERTISEMENT:

Subscribe by Email!
Written: 30 Dec. 2017
Last Updated: 30 Dec. 2016

The WowGo Electric Skateboard is one of the greatest products I've ever had the privilege of owning. It's a thrill to ride, so much fun, and practical too! I've owned it now for 2 months and have probably already put close to 150 or 200 miles on it. When riding downhill at 22+mph, carving back and forth, I actually get the same sensation I feel when snowboarding--except in this case I can do it right outside my house in my local neighborhood, and all-year-round!

I recently moved to a big city and I have been using my WowGo electric skateboard for the last month to ride to and from the subway station to get to work each day. I also use it for city commuting down-town. The ride to the subway station is just over 3 miles but I can complete it in 9~15 minutes, depending on traffic lights.

Because of how great this board is, and how much potential it has, I've decided to start selling them on Amazon Prime, right here at this link actually--get it now--not many in stock at the moment!



Me selling the WowGo 2 electric skateboard on Amazon Prime gives you the advantage of:
  1. Trusted and well-known customer service directly from Amazon
  2. Additional, expert product support and advice from me
  3. Super-fast 2-day shipping (eventually, once I get enough in stock to actually be distributed at many of Amazon's different warehouses all across the nation)
This is great for the WowGo company run by Jason and Aiden in mainland China because it means they sell more boards by reaching a market which wants the Amazon benefits listed above (especially the 2-day shipping part), *and* they get additional expert help and support to their customers.

What else is coming? I have tons of killer plans for this board! I'm not just "another man in the middle." Rather, I'm an innovator and an embedded programmer. As I get established in my new home and get my workshop set back up I intend to slowly-but-surely work on new and innovative, expert and custom embedded features to add to the board such as:
  1. Bluetooth
    1. Bluetooth to phone interface
    2. Bluetooth to PC interface
  2. data logging
  3. speedometer
  4. odometer (measures distance), with multiple resettable trip meters, like in a car
  5. power, current, and voltage meter
  6. Coulomb counter (allows really accurate battery indicator and State of Charge [SoC] readings, including the potential to write battery health and wear-and-tear determination algorithms)
  7. 2nd battery support--would allow you to plug in an addition battery you can strap on the top center of the board to double the range
I've already spent hours testing and messing with the board, and look forward to implementing the above features. I'm sure they'll be very hacky at first, but eventually I'd like to refine them and sell customization kits and PCBs and/or work with the manufacturer directly to implement these features. The best part is I plan on doing the embedded work, programming, and PCB board design myself. Not only is this a super fun thing for me to do, but it's super useful, and a valuable learning experience too!


ADVERTISEMENT:
And what's more? With dual in-hub motors and a 36V 4.4Ah 10S2P Li-Ion battery, the board is more-than-powerful enough to pull my kids around in a wagon! That makes for great father-daughters bonding time. The other weekend I took them on a ~5 mile ride around to different parks to play, including pulling them on some off-road dirt trails and up some pretty long and fairly steep hills. Our total vertical climb was 274 ft. This is not a cheapo board--not just a kids' toy--this is the real deal, a truly functional, powerful yet economical board with room for growth and the ability to act as a regular commuter board to and from work on a daily basis. Not only that, but all spare parts can be purchased separately and economically and replaced by the user to keep it running for years to come. What a board!



UPCOMING ARTICLE: 
WowGo 2 Electric Skateboard Commuter Special Specs & Instructions

END

Keywords: electric skateboard, esk8board, wowgo electric skateboard, meepo skateboard, meepo electric skateboard, wowgo 2 electric skateboard, wowgo 2 commuter special, wowgo2 commuter special, wowgo2 electric skateboard

Draft Time: 2 hrs.

***Subscribe by Email!***

Monday, October 23, 2017

Which Programming Language Should I Learn?

ADVERTISEMENT:

Subscribe by Email!
Investing time into learning a first (or new) programming language is a seriously-time-consuming endeavor. For me it wasn't something to take lightly, as I knew I'd be investing thousands of hours into any given single language when I began. When people ask which programming languages they should learn or use, a great way to make recommendations is to consider these 3 things:
  1. Popularity
  2. Is it a scripted (interpreted) or compiled language, and how does that affect what I want to do with it?
  3. Which languages are most used in my industry or application?

1) Consider the popularity of languages. The more popular the language, the higher the priority it should be, within reason, since that's what industry uses and that's where you're going to find the most resources, help and support, compatibility with others, and jobs. The TIOBE index is the place to check:
"TIOBE programming community index is a measure of popularity of programming languages, created and maintained by the TIOBE Company based in Eindhoven, the Netherlands.[1] TIOBE stands for 'The Importance of Being Earnest' which is taken from the name of a comedy play written by Oscar Wilde at the end of the nineteenth century.[2]" (https://en.wikipedia.org/wiki/TIOBE_index).



Here's the index for 2017: https://www.tiobe.com/tiobe-index/. As shown above, the top 6, in this order, are:
  1. Java
  2. C
  3. C++
  4. C#
  5. Python, and 
  6. JavaScript. 
My top 3 recommendations are Java, C++, and Python, but not necessarily in that order. When it comes to you and your personal needs, goals, and desires, however, you need to choose for yourself! Here's some tips to help you make that decision.


***Subscribe by Email!***

Sunday, October 1, 2017

Arduino sine wave siren code using a lookup table in flash memory (PROGMEM)

ADVERTISEMENT:

Subscribe by Email!
By Gabriel Staples
Posted: 30 Sept. 2017
Last Updated: 30 Sept. 2017

Related Articles:
Other Articles:
(*Articles containing or linking to source code are marked with an asterisk)
Demo Video: 



***Subscribe by Email!***

Saturday, August 26, 2017

How to make a Linux Live USB with a 2nd, Windows-readable partition for storage

ADVERTISEMENT:

Subscribe by Email!
This article is a "Notes to Self" article. That means I wrote it for my own personal reference and use, with myself as the target audience during drafting, but decided to post it here because I believe it is useful to others too, and I want to reach as many people as possible, not just me. 

Ever wanted to have a bootable Linux USB flash drive with a separate, Windows-readable partition for general file storage? Here's how.

By Gabriel Staples
Written: 26-27 May 2016
Posted online: 26 Aug 2017
Updated: 26 Aug 2017

The Gist of it/The super short version:
-for the experienced Linux user
  1. Use gparted on a Linux computer to make 2 FAT32 partitions on the thumb drive. The partition created first must be for storage, while the 2nd one must be for the Linux distro you are putting on the Live USB.
  2. Use UNetbootin on a Linux computer to install your iso file for the Live USB onto the 2nd partition you just made above.
  3. Done. You can now boot from the USB thumb drive, from its 2nd partition, while its 1st partition only is readable and usable by Windows still (as well as by Linux or Mac too of course).


***Subscribe by Email!***