Saturday, September 3, 2016

Installing Pi-hole on a C.H.I.P

Requirements: C.H.I.P configured as:, with a static IP address

Type the command
sudo cp /etc/resolv.conf resolv.conf.bak
sudo nano /etc/resolv.conf

Edit the nameserver to have the DNS forwader settings of your choice.

Save and Exit Nano.

Install curl using the command

sudo apt-get –y install curl

Download and install pi-hole:
wget –O
chmod +x

Press OK

You should donate (I did!).  Press OK

Chose wlan0 and press OK (wlan1 is bluetooth)

Choose IPv4, IPv6 or both and press OK

If the IP address is correct, select YES

If the IP address you have assigned the CHIP is within the DHCP range of your DHCP Server or router, you may need to exclude this IP address, or modify the range.
Click OK

Select the DNS servers to use as forwarders.  If you are not sure, choose Google, and select OK.

Once the install is complete, press OK

You can add additional block lists by doing the following:
sudo cp /etc/pihole/adlists.default /etc/pihole/adlists.list
sudo nano /etc/pihole/adlists.list

Add the bottom to the file (or add your own)

# Additional #
#Peter Lowes Ad Server List
#Ublock Filters
Reboot the chip with
sudo reboot

Change the DNS on your computer / or router to point to the IP address of the chip.  In a Window DNS environment, change the DNS forwarders

You can check the status and modify the blocklist / whitelist by navigating to:


Monday, August 1, 2016

Installing C.H.I.P headless

Requirements:  miniUSB cable; C.H.I.P, computer running linux, wireless network.
Optional – Powered USB hub, additional miniUSB cable, computer running Windows.

I recieved my C.H.I.P, but had no spare keyboard, mouse, or monitor.  To get the device configured I did the following:
Download and install Chrome
In chrome, navigate to

I chose Headless 4.4.

If you are on a windows computer, click Install the Driver.  Download and run the installer.


And click Finish.

Click Next

Connect a paperclip, or a 1/2 stripped twist tie to FEL and GND

Connect the C.H.I.P to the computer using a USB cable.

If the flashing fails, disconnect the C.H.I.P.  Close Chrome, and reopen Chrome and navigate to – begin the process again (if you already installed the drivers, you don’t need to install them again)

Once the flash has completed, close Chrome, and remove the paperclip / twist tie jumper.  If necessary – connect the C.H.I.P to the linux computer (used a raspberry pi – it was necessary to use a powered USB hub in order to get the C.H.I.P to have enough power).
Install screen on the linux computer: sudo apt-get install screen

Type the command dmesg | tail

In the output above, you can see the C.H.I.P is presented to the OS as ttyACM1. 
Type the following command: screen /dev/ttyACM1 (replace ttyACM1 with the USB port number from the output of dmesg | tail
If the screen appears blank, press <ENTER>

The default credentials are chip / chip

Type the command sudo nmtui

Authenticate if necessary

Select Activate a Connection

Select your wifi connection from the list and press <ENTER>
Enter your wireless passkey and press <ENTER>

Once connected, you will see an asterisk next to the network you are connected to

Select Quit
type sudo nmtui again

Select Edit a connection

Select your wireless connection and select Edit…

Go to the bottom, and select Automatically connect and Available to all users.

If you wish, open IPv4 Configuration, and manually assign an IP address, Gateway and DNS servers.

Select OK and Quit
Verify you can access the internet.  ping
CTRL-C to finish the ping.

Run the command sudo apt-get update to update the package list
Run the command sudo apt-get dist-upgrade
Select ‘Y’ to continue if prompted.
This may take some time.
Once completed, uninstall group-bin and configuration files
sudo apt-get purge cgroup-bin
It may / may not have anything to uninstall.  This can prevent the unit from booting.
Change the name of the device
sudo nano /etc/hostname
CTRL-X, Y and <Enter> to save the name
sudo nano /etc/hosts
Change the line     chip
to     <new name of the device>
CTRL-X, Y and <Enter> to save the name
Reboot the unit with
sudo reboot
you shuld now be able to connect to the chip with SSH via wifi.


Wednesday, July 6, 2016

Configure Raspberry Pi as a router (ethernet and wifi) on Jessie

I used these instructions to create a router with 2 ethernet and 1 wireless connection.  These instructions can be modified for more wireless or more ethernet connections.  I was setting up eth1 as the WAN connection, eth0 and wlan0 as LAN connections.  Wlan0 was to broadcast DHCP from the PI, eth0 would have static IP, and DHCP on this netowrk would be from an external DHCP server.

Pi model B+ running Raspbian Jessie;
Wireless USB dongle;
USB Ethernet Adapter.
In this example I used a Wi-Pi adapter, and a TP-Link UE300
rfkill: a wireless utility
zd1211-firmware: common firmware that works with many Wi-Fi dongles
hostapd: the hostap wireless access point daemon
hostap-utils: supplemental hostap tools
iw: wireless configuration utility
isc-dhcp-server: ISC implementation of DHCP
bridge-utils:  used for connecting multiple Ethernet devices together

Connect to the Pi via SSH

Install requirements by using the command:

sudo apt-get update -y
sudo apt-get install rfkill zd1211-firmware hostapd hostap-utils iw bridge-utils isc-dhcp-server -y

Jessie may have iw preinstalled -- if it does and is updated, running the command above will automatically skip it.

Connect the wifi dongle and USB Ethernet adapter

Use the command lsusb to ensure that the USB wireless dongle is being detected

pi@gw:~ $ lsusb
Bus 001 Device 004: ID 148f:5370 Ralink Technology, Corp. RT5370 Wireless Adapter
Bus 001 Device 003: ID 0424:ec00 Standard Microsystems Corp. SMSC9512/9514 Fast Ethernet Adapter
Bus 001 Device 002: ID 0424:9514 Standard Microsystems Corp.
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub

Use the command iw list to ensure that the adapter has a supported interface mode of AP
Supported interface modes:
         * IBSS
         * managed
         * AP
         * AP/VLAN
         * WDS
         * monitor
         * mesh point

Use ifconfig to identify which interface is which:


Based on the IP Addresses, I could identify eth0 as my LAN connection, and eth1 will be my WAN connection.

Create a backup of /etc/network/interfaces, and edit the file:

sudo cp /etc/network/interfaces /etc/network/interfaces.orig
sudo nano /etc/network/interfaces

Modify the file as appropriate. 

source-directory /etc/network/interfaces.d
auto lo
iface lo inet loopback

allow-hotplug eth0
auto eth0
iface eth0 inet static

allow-hotplug eth1
auto eth1
iface eth1 inet static

allow-hotplug wlan0
auto wlan0
iface wlan0 inet static

Take a backup of /etc/hostapd/hostapd.conf and edit the file (it it doesn’t exist, create the file).

sudo cp /etc/hostapd/hostapd.conf /etc/hostapd/hostapd.conf.orig
sudo nano /etc/hostapd/hostapd.conf

Modify the file as appropriate

wpa_pairwise=CCMP TKIP

Backup and modify /etc/default/hostapd

sudo cp /etc/default/hostapd /etc/default/hostapd.orig
sudo nano /etc/default/hostapd

Edit the DAEMON_CONF=”” line to point to the hostadp.conf file modified earlier.


Configure DHCP
Create a backup of /etc/dhcp/dhcpd.conf and edit it

sudo cp /etc/dhcp/dhcpd.conf /etc/dhcp/dhcpd.conf.orig
sudo nano /etc/dhcp/dhcpd.conf

Make the following changes as appropriate

option domain-name "";
default-lease-time 86400;
option subnet-mask;
max-lease-time 172800;
option broadcast-address;
option routers;

subnet netmask {
option domain-name-servers,;

Backup and edit /etc/default/isc-dhcp-server and setup the interface to broadcast DHCP on

sudo cp /etc/default/isc-dhcp-server /etc/default/isc-dhcp-server.orig
sudo nano /etc/default/isc-dhcp-server

Find and edit the INTERFACES line to the interface to broadcast DHCP on.


(If you wanted to broadcast DHCP on eth0 as well you could add it in here)

Enable routing and Nat

sudo cp /etc/sysctl.conf /etc/sysctl.conf.orig
sudo nano /etc/sysctl.conf

Edit the file to add the line (or uncomment it)


Enable the translation immediately
sudo sh -c "echo 1 > /proc/sys/net/ipv4/ip_forward"

Configure IPTables for NAT

sudo iptables -t nat -A POSTROUTING -o eth1 -j MASQUERADE
sudo iptables -A FORWARD -i eth1 -o wlan0 -m state --state RELATED,ESTABLISHED -j ACCEPT
sudo iptables -A FORWARD -i eth1 -o eth0 -m state --state RELATED,ESTABLISHED -j ACCEPT
sudo iptables -A FORWARD -i wlan0 -o eth1 -j ACCEPT
sudo iptables -A FORWARD -i eth0 -o eth1 -j ACCEPT

sudo iptables-save

If this is the first time modifying iptables, install iptables-persistent by running

sudo apt-get install iptables-persistent

If prompted to make the rules persistent, select YES
If you already have iptables-persistent installed, you can save the iptables rules by running the command

sudo iptables-save

make the changes permanent (starts hostapd and dhcp on boot)

sudo update-rc.d hostapd enable 
sudo update-rc.d isc-dhcp-server enable
save the iptables setup and restore on boot
sudo sh -c "iptables-save > /etc/iptables.ipv4.nat" 
Edit the /etc/network/interfaces file and add the following to the end.
up iptables-restore < /etc/iptables.ipv4.nat

Reboot the device and test

Tuesday, May 31, 2016

Add Raspberrian (Jessie) to a wireless network

Login to the device using SSH
Type the following command:

sudo nano /etc/network/interfaces
Add the following lines at the bottom:

auto wlan0
iface wlan0 inet dhcp
wpa-ssid "SSIDNAME"
Where SSIDNAME is the SSID network name, and PSKPASSPHRASE is the passphrase for the wireless network.
EG: If my network was called:
Front Office Wireless
and my network passphrase is:
The interfaces file will look like:

auto lo
iface lo inet loopback

iface eth0 inet manual
allow-hotplug wlan0
iface wlan0 inet manual
    wpa-conf /etc/wpa_supplicant/wpa_supplicant.conf

allow-hotplug wlan1
iface wlan1 inet manual
    wpa-conf /etc/wpa_supplicant/wpa_supplicant.conf

auto wlan0
iface wlan0 inet dhcp
wpa-ssid "Front Office Wireless"
wpa-psk "QLDWireless3827"

Press CTRL-X to exit, press Y to save changes, and press ENTER to save the file called interfaces

sudo /etc/init.d/networking restart
to restart the networking services.

You should then be able to see the IP Address that is assigned to WLAN0.
type ifconfig to see the network settings in full.


Sunday, May 22, 2016

Headless install of Raspbian (Jessie)

I needed to perform an install of Raspbian (Jessie) on a Raspberry PI, but I didn’t have a spare keyboard, mouse, or monitor / tv to connect it to. 
Download Raspbian from (current Jessie):
At the time of writing it was 4.1 (I used the lite version)
Download and install the SDCard Formatter from
Download and install Win32 Disk Imager from sourceforge:
Connect the SDCard, and run the SDFormatter application as an administrator.
This procedure will delete anything on the SDCard
Ensure the drive letter specified in the SDFormatter is the same as the drive letter of the SDCard connected (Open ‘Computer’ and check if need be)
Click the Option button and set FORMAT SIZE ADJUSTMENT to ON
Click OK.
click Format and Click OK
Click OK
Once the format is finished, click OK and then click Exit.
  Run Win32 Disk Imager as Administrator
Select the correct Device, browse and select the Raspbian Jessie image downloaded, and click Write
Double check the drive letter, and click Yes to proceed
This will copy the Raspbian Jessie image to the SDCard, and may take some time.
Once the write is Successful, click OK, and Exit the Win32 Disk Imager


edit 22/03/17
Open the USB drive in file explorer and create a new blank file called ssh in the root.  (Make sure you don't have an extension on the file).  See note #3

Connect the SDCard back into the Raspberry Pi, connect an eternet cable, and boot the device.
After some time, check your DHCP server or logs to identify the IP address of the device, alternatively query dns for raspberrypi.
Using putty, connect to the device using SSH.
Click Yes to the key warning
Login credentials are:
username: pi
password: raspberry
Run the initial Raspberry Pi Configuration by using the command:
sudo raspi-config
Modify the configuration as required.  Once completed, select Finish
If prompted to reboot, select No
Update the package source by running the commands
sudo sed -i 's/wheezy/jessie/g' /etc/apt/sources.list
sudo sed -i 's/wheezy/jessie/g' /etc/apt/sources.list.d/*
Update the package list using the command
sudo apt-get update
Update the distribution
sudo apt-get dist-upgrade
Select ‘Y’ to continue if prompted.
This may take some time.
Once completed, uninstall group-bin and configuration files
sudo apt-get purge cgroup-bin
It may / may not have anything to uninstall.  This can prevent the unit from booting.
Change the name of the device
sudo nano /etc/hostname
CTRL-X, Y and <Enter> to save the name
sudo nano /etc/hosts
Change the line     raspberrypi
to     <new name of the device>
CTRL-X, Y and <Enter> to save the name
Reboot the unit with
sudo reboot