How to Install Linux Bash shell on Windows 10

Latest windows update allows you to have a full Ubuntu-based Bash shell. This allows you to run the Bash shell and the exact same binaries that you would normally run on Ubuntu Linux.

To get started with bash make sure you are using correct version of Windows.

We would need Windows 10 creators update and a 64 bit version of the Windows 10.

Install Linux bash shell

To install Linix bash shell on windows follow the following steps.

Step 1 – Activate the developer mode

Update & Security > For Developers. Activate the “Developer Mode” as shown below:

enable developer mode

Step2: Enable the Windows Subsystem for Linux (Beta)

Next, open the Control Panel, click “Programs,” and click “Turn Windows Features on or Off” under Programs and Features. Enable the “Windows Subsystem for Linux (Beta)” option in the list here and click “OK.” After this it will ask you to reboot.

Step 3:

After your computer restarts, open windows command prompt and type bash as shown below. The first time you run the bash.exe file, it will prompt to accept the terms of service. The command will then download the “Bash on Ubuntu on Windows” application from the Windows Store. It will ask you to create a user account and password for use in the Bash environment.

What can you do with bash shell on windows?

  • You would be able to use standard Linux SSH utility and discard third party tool like putty.
  • You will be able to edit text with VIM from the command line, and manipulate text using Sed and Awk.
  • You can also, apt-get to manage their packages, and to install tens of thousands of Ubuntu binaries.
  • Basically its good utility for developer/administrators. These may not be very useful to general users. But if you are interested in learning Linux you can start it from here without going into the complexity to install LINUX.

Web server on raspberry pi – how to setup?


In this post I will let you know how to set up web server on raspberry pi. There are many web servers for raspberry pi. In out example we will be setting up apache web server. Apache is a popular web server application and we will install it on raspberry pi to server web pages

 Step 1 -Install APACHE

First install apache 2 package by using the following command in to the terminal

sudo apt-get install apache2 -y

 Step 2 – Test the Web Server

By default, Apache puts a test HTML file in the web folder. This default web page is served when you browse to http://localhost/ on the Pi itself, or ( IP address of Pi) from another computer on the network.

Browse to the default web page either on the Pi or from another computer on the network and you should see the following:


This means you have Apache working!

Step 3 – Changing the default Page

This default web page is just a HTML file on the filesystem. It is located at /var/www/index.html.

Navigate to this directory in the Terminal and have a look at what’s inside:

cd /var/www/html

ls -al

This will show you:


Step 4- Install Php

To allow your Apache server to process PHP files, you’ll need to install PHP5 and the PHP5 module for Apache. Type the following command to install these:

 sudo apt-get install php5 libapache2-mod-php5 -y

Now remove index.html file and add index.php with following content

<?php echo "hello world"; ?>
<?php echo date('Y-m-d H:i:s'); ?>
<?php phpinfo(); ?>

Now open the index.php page. You will get following:


You are now done setting up web server on raspberry pi which can server dynamic pages.

In the next post we will use this web server to post real time data from arduino/raspberry pi and also control different appliances from the web page.

How to install Linux on Windows 10 machine?


This blog will show you how to install Linux on Windows 10 machine without dual boot option and partitioning your hard drive. In this method we will be using a software called Virtualbox from Oracle. It will allow you to run other operating systems on top of your current OS.  You can use any version of Linux. I will be using Ubuntu 16.04.2.

Following are the high level steps required to install Linux on Windows 10.

Steps Required To Install Linux On Windows 10

Step 1 - Downloads

  • Download Oracle Virtualbox and virtual box extension pack and install from here.
  • Download Linux from here

Step 2 - Creating Ubuntu virtual machine within Oracle Virtual box. 

Install Virtualbox and create a Ubuntu virtual machine

  • Click on the "New" option on the toolbar
  • Enter a descriptive name into the "Name" box
    • Select Linux as the "Type"
    • Choose Ubuntu as the "Version".
    • Click "Next" to continue.

Choose a correct version of UBUNTU i.e 32 or 64 bit.
If VirtualBox is only showing 32 bit versions in the Version list make sure:
▪ Your Host OS is 64-bits
▪ Intel Virtualization Technology and VT-d are both enabled in the BIOS
▪ The Hyper-V platform is disabled in your Windows Feature list.

  • Allocate Memory to the virtual machine. For Ubuntu16.04.2 2 GB is sufficient but you can allocate more if you have sufficient memory.
  • Create a virtual hard drive. Select default VDI as the hard drive type. Also while selecting physical disk, you can select fixed size or dynamically allocated size. Note that there is no partitioning on your actual hard disk. All that happens is that a file is created on your computer which acts as the hard drive.

Step 3 - Install Ubuntu within Virtual box

Start the Virtual Machine. The first boot requires you to select a start-up disk. You can mount the iso file downloaded earlier. Follow step by step process of installing. I will not cover the details of installing here.

Step 4 - Install Vbox Guest edition(optional)
Download and install Virtualbox Guest Additions
Installing guest editions will help you scale Ubuntu properly in full screen mode.

How to connect 16*2 LCD display Arduino UNO

To Connect 16*2 LCD Display Arduino Uno we will use the previous project to capture temperature and display on console.

Parts required for the project:

  1. Arduino IDE to program the code and upload
  2. OneWire and DallasTemperatre library for the Arduino and DS18B20
  3. One DS18B20 digital temperature sensor
  4. Arduino UNO R3
  5. 16*2 LCD display
  6. Jumper wires
  7. Breadboard/PC/General purpose board
  8. Arduino UNO cable
  9. wires

Steps 1: Wiring Arduino and DS18B20

  • The wiring, of a 1-wire interface, is super simple.
  • The GND pin of the DS18B20 goes to GND on the Arduino. [black]
  • The Vdd pin of the DS18B20 goes to +5V on the Arduino. [red]
  • The Data pin of the DS18B20 goes to a (digital) pin of your choice on the Arduino, in this example I used Pin 7
  • Add a pull-up resistor of 4.7 KΩ. as shown in the schematic diagram. One end of resistor connecting Vdd and another end connecting data pin.

Step 2: Connecting the LCD display

  • VSS –> GND Arduino
  • VDP –> 5V Arduino
  • VO –> output potentiometer (potentiometer VCC -> 5V Arduino, potentiometer GND -> Arduino GND).
  • RS –> pin 12 Arduino
  • RW –> GND Arduino
  • E –> pin 11 Arduino
  • D4 –> pin 5 Arduino
  • D5 –> pin 4 Arduino
  • D6 –> pin 3 Arduino
  • D7 –> pin 2 Arduino
  • A –> 5V Arduino with 1.2 k resistor
  • K –> GND Arduino

 LCD display Arduino UNO breadboard diagram


Machine generated alternative text: fritzing


// Data wire is plugged into digital pin2
#define ONE_WIRE_BUS 7
OneWire oneWire(ONE_WIRE_BUS);
DallasTemperature sensors(&oneWire);
//LCD display pins
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
double temperature;
void setup(void)
 //Serial.println("Temperature Demo");
 lcd.begin(16, 2);
 lcd.print("hello, WORLD");

void loop()
 sensors.requestTemperatures(); // send command to get temperatures
 temperature= sensors.getTempCByIndex(0);
 lcd.setCursor(0, 1);
 lcd.print("Temp: ");
 lcd.setCursor(7, 1);
 lcd.print(" C");

LCD display Arduino UNO Schematic

Screenshot of the Project output

LCD display Arduino UNO project screenshot

How to Measure temperature with Arduino and DS18B20 sensor?

In this example project we will be combining an Arduino and DS18B20 sensor. The DS18B20 is also called 1-wire digital temperature sensor

Arduino and DS18B20 Temperature Sensor The DS18B20 comes in different forms and shapes, so you have plenty of choice when deciding which one works best for you. There are 3 variations available: 8-Pin SO (150 mils), 8-Pin µSOP, and 3-Pin TO-92.

I have used waterproof version as shown below.


Note: DS18B20 is quite versatile. It can be powered through the data line (so called “parasite” mode, which requires only 2 wires versus 3 in normal mode), it operates in a 3.0V to 5.5V range, measures Temperatures from -55°C to +125°C (-67°F to +257°F) with and ±0.5°C Accuracy (from -10°C to +85°C). It converts a temperature in 750ms or less to a up to 12 bits value. Another cool feature is that you can connect up to 127 of these sensors in parallel, and read each individual temperature.

Things you need to get Arduino and DS18B20 sensor work:

  1. Arduino IDE to program the code and upload
  2. OneWire and DallasTemperatre library for the Arduino and DS18B20
  3. One DS18B20 digital temperature sensor
  4. Arduino UNO R3
  5. Jumper wires
  6. Breadboard/PC/General purpose board
  7. Arduino UNO cable

Below is the schematic diagram for the same.




Step 2: Installing and loading OneWire and DallasTemperature Library

Unzip the downloaded zip file. Make sure that folder name is OneWire, which contains the library. Drag it into the Library folder of Arduino IDE. Alternatively you can use Sketch-> Import Library -> Add Library option of Arduino IDE and select the Zip file.

Step3: Writing code and uploading


// Data wire is plugged into digital pin2
#define ONE_WIRE_BUS 2

OneWire oneWire(ONE_WIRE_BUS);

DallasTemperature sensors(&oneWire);
void setup(void)
 Serial.println("Temperature Demo");

void loop()
 Serial.print(" Fetching temperature...");
 sensors.requestTemperatures(); // send command to get temperatures
 Serial.println("Temperature is ");

Output will be shown as follows:

Arduino DS18b20 - Output

Screenshot of the above example:

Arduino and a DS18B20 sensor 1

We can modify this to display it in LCD display. For details on how to display the temperature on LCD display visit my post How to connect 16*2 LCD display Arduino UNO

How to test Arduino UNO


You have received your Arduino UNO and want to quickly verify and test arduino uno that it is in good condition or you want to write your first Arduino UNO program. To do so you need to follow the following steps:

  • Launch the Arduino IDE. If you have not installed, you can download from following site and install it.

  • Connect the Arduino to USB port.
  • Write the following code to blink the on board LEDtest arduino uno 1
  • Compile and upload the code.
  • The on board LED should start blinking every second.


How to transfer domain hosting and domain

There may be situation when you may require to transfer domain hosting from one hosting provider to other. Doing so there are many challenges like making sure that there is minimum downtime such that end user does not get to know that there is any change. To do so follow the following steps in order.

Steps to transfer domain hosting are detailed below:

Step 1 – Backup

Yes, backup everything: Files, database, email settings and all other things that you think is required later to restore in case anything goes wrong.

To backup database, you can use any WordPress plugin( if you are using WordPress) or you can directly go to CPannel to backup everything. Download all your backups on to your local system.

Step 2 – Copy all files to your new host

If you have downloaded all your files in step one, use same to upload it on the new host server.

Note: If you have a dynamic site, you may need to restrict some behaviour for some time or set a read only mode to prevent data being lost during the transfer.

If you are using WordPress then you first install WordPress in your new host. After that Restore database. Then copy all your contents: Plugin, themes and upload folders.

Step 3 – Testing

Test the the copy worked correctly.

Step 4 – Update old DNS system to point to new server

Change the old DNS system to point to the new web server and check the site is loading. At this point if everything goes fine you can re-enable full dynamic behaviour.

If you find any issue revert the DNS settings and fix all issues.

Note: Perform this step during the time when it is least used.

Step 5 – Update/Copy DNS settings in new server

Copy the DNS settings from the old server to the new hosts DNS server

Step 6 – Check the site works

Test the new site for all links working, images are loading fine and so on. Wait a few days for everything everywhere to propagate to the new settings, and then turn off the old nameserver.

Step 7 – Transferring Registrar ( This should be last step)