Installing Raspberry Pi & TPLink
28-1-15
Michael, Tom, An

BACKLINK: http://pad.constantvzw.org/p/2016-05-12-wtc-etherspace

RASPBERRY PI
connect to pc: ethernet cable
* cards are separate
-> download image, burn it
Raspbian Wheezy: https://www.raspberrypi.org/downloads/raspbian/
(larger cummunity, not the latest)

* dd
moves 'input' to 'output' (disk destroyer :-))
no need to unzip image to your computer, straight pipeline

for dd: to be safe, remove other devices connected to your laptop.
never use dd on /dev/sda (your hard disk) 

The normal way with an image file is:
    dd if=image.img of=/dev/YOURSDCARD bs=4M

Save disk space and time!
Use a pipeline to UNZIP and DD to the card in one step:    unzip -p raspian.zip | sudo dd of=/dev/YOURSDCARDID!!! bs=4M

When writing a rule, never use a number (e.g. SDB1)
when download done, check
$ sync
sync will wait for all writing to be finished

____ connect a screen -> needs an adapter (vga-usb)
connect keyboard + mouse

____ runs Rasberry config
1. Expand Filesystem / hit enter
Finish (using Tab) + Reboot
Login: pi
password: raspberry (in UK-Qwerty)

$ sudo raspi-config
-> brings you to first interface

4. Internationalization options
-> 3. Change keyboard layout -> Generic International -> Other -> Belgian
-> Finish

_____ plug-in ethernet cable TP-Link
$ sudo reboot
-> indicates an ip-address

$ sudo apt-get update
$ sudo apt-get upgrade


* install Chromium/IRC server

TP-LINK
in the box: gpl-license 
Linksys developed router with GPL software -> had to release their source code (share-alike) which became the Open WRT project
* Download image: http://wiki.openwrt.org/toh/tp-link/tl-mr3020
or via homepage: https://openwrt.org/ -> Supported Devices -> look for TP-Link 3020

* consumes a lot of power: plug in eventually usb-cable in your laptop as well

* Install
copied from here: http://ediy.com.my/index.php/blog/item/50-flashing-openwrt-to-tp-link-tl-mr3020-3g-4g-wireless-n-router
Installing OpenWRT
*Connect TP-Link TL-MR3020 to computer.
*Open a Browser
*Enter 192.168.0.254 which is the default IP address
*Enter admin for User Name and admin for Password
*Go to Status page  & check for status, this is optional. Picture below shows the status  of my TL-MR3020 router, the Hardware Version is V1
*Go to System Tools and select Firmware Upgrade
*Click Browse button and choose the OpenWRT firmware that you had downloaded previously as shown in figure below
*Click on Login button to login to OpenWRT
*Make sure click on Go to password configuration to change the login password and enable SSH

Login to OpenWRT
*Restart router
*Open a browser
*Enter 192.168.1.1 (use your own router IP) and you should able to see the LUCI login screen

Configuring an OpenWRT to an existing wireless network + serve as a hotspot
===================================================================================

Starting from a vanilla openwrt.

Following [this tutorial on setting up a wireless hotspot](http://www.ediy.com.my/index.php/blog/item/110-setting-up-a-wireless-hotspot-using-tp-link-tl-mr3020-wireless-n-router), I connected my laptop to the OpenWRT using an ethernet cable, set my wireless settings to Manual 192.168.1.10 / 255.255.255.0 and cleared the gateway & DNS etc to be blank (Clearing the gateway setting is important if you don't want to interfere with your own wifi connection).

Using the web interface, I navigated to Network -> Wifi, and pressed the SCAN button to find my wifi network.
Once found, I entered a password under Wireless Security and left all other options default. (The Network setting remains on wwan (empty)).

After clicking "Save & Apply". I then tested the internet connection via the patch cable. In this case I needed to turn *off* my wifi connection and then add 192.168.1.1 as both gateway *and* DNS in my wired ethernet settings. (Without setting this, the connection was not working).

Once confirmed that this was working, I returned to the web interface, returned to Network -> Wifi and clicked ADD.
Under ESSID, I changed the default "OpenWrt" to "botnet". Ensured that the mode was set to "Access Point", and selected "lan" as the network.

After clicking "Save & Apply". I then cut off my wired connection and restarted my wifi, selecting the network "botnet". After a bit of time, it joined the network and internet was working!

NB: According to the original tutorial, what *is* important is to make sure that the OpenWRT network is not in the same subnet as the external wireless. So it might be better to use something less standard than 192.168.1.1 which may well be the subnet of a wireless network.



*  password wifi (botnet):  botswaller
if you want to change networks: remove first existing networks + scan to get the new one

Configuring the Raspberry PI
=============================

* Expand / reboot (raspi-config)
* Login: pi/raspberry

* sudo raspi-config to set keyboard layout to English (US). (default is UK)
* sudo raspi-config : Advanced to force audio to the headphone jack.

Used the image of 05_05_2015 (need to copy it)
OpenSSH seems to be running by default

avahi-daemon seems already to be installed (Using [.local address](http://www.howtogeek.com/167190/how-and-why-to-assign-the-.local-domain-to-your-raspberry-pi/) on the Pi.)


Network
----------

Configured a static IP address following the [Debian manual](https://wiki.debian.org/NetworkConfiguration#Configuring_the_interface_manually).

sudo nano /etc/network/interfaces
------------------------
#iface eth0 inet manual
iface eth0 inet static
    address 192.168.1.2
    netmask 255.255.255.0
    gateway 192.168.1.1

* Connected to net via cable + did an apt-get update / upgrade.

        sudo nano /etc/hostname

and changed to "botnet"

From now on (restart) you should be able to reach the server at botnet.local, for instance:

        ssh pi@botnet.local   (password is raspberry)

SHUTTING DOWN NICELY

ssh to the pi; and then...

sudo shutdown -h now



Installing stuff
-------------------
* figlet
* links
* emacs23-nox
* espeak
* festival
* apache2
* ircd-hybrid

Personalizing the server
-------------------------
* /etc/motd
* /var/www/index.html


Settings for IRC Server
------------------------------------------

sudo nano /etc/ircd-hybrid/ircd.conf

Raised setting:
number_per_ip from 2 (default) to 50

        class {
                /* name: the name of the class.  classes are text now */
                       name = "users";
                /* ping time: how often a client must reply to a PING from the
                 * server before they are dropped.
                 */
                ping_time = 2 minutes;
                /* number per ip: the number of users per host allowed to connect */
                number_per_ip = 50;
                /* max number: the maximum number of users allowed in this class */
                max_number = 100;
                /* sendq: the amount of data allowed in a clients queue before
                 * they are dropped.
                 */
                sendq = 100 kbytes;
        };

AND (it seems important) I added the IP address:

        /* listen {}: contain information about the ports ircd listens on (OLD P:) */
        listen {
                /* port: the specific port to listen on.  if no host is specified
                 * before, it will listen on all available IPs.
                 *
                 * ports are seperated via a comma, a range may be specified using ".."
                 */

                /* port: listen on all available IPs, ports 6665 to 6669 */
                host = "0.0.0.0";   # change this!                                                                                              
                port = 6665 .. 6669;
        };


Restart the irc server
    sudo /etc/init.d/ircd-hybrid restart

After this I could connect with pidgin to botnet.local.


More software
-----------------
* sudo apt-get install ipython python-pip screen mplayer
* sudo pip install irc









xtras


Attaching an external USB stick for storage
---------------------------------------------
(Also nice if SD card craps out)

Formatted it ext4 (on laptop).

Created a mount point:

        sudo mkdir /media/GREEN

And edited the fstab, adding a line:

### /etc/fstab
proc            /proc           proc    defaults          0       0
/dev/mmcblk0p1  /boot           vfat    defaults          0       2
/dev/mmcblk0p2  /               ext4    defaults,noatime  0       1
/dev/sda1        /media/GREEN        ext4        defaults,noatime  0          0        

Then edited the apache default "site" definition, to change location *and* to add a custom header + footer (readme) to the directory listings:

### /etc/apache2/sites-available/default

        <VirtualHost *:80>
                ServerAdmin webmaster@localhost

                ## CHANGED
                DocumentRoot   /media/GREEN/www

                <Directory />
                        Options FollowSymLinks
                        AllowOverride None
                </Directory>

                ## CHANGED
                <Directory /media/GREEN/www/>
                        Options Indexes FollowSymLinks MultiViews
                        AllowOverride None
                        Order allow,deny
                        allow from all
                </Directory>

                ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
                <Directory "/usr/lib/cgi-bin">
                        AllowOverride None
                        Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
                        Order allow,deny
                        Allow from all
                </Directory>

                ErrorLog ${APACHE_LOG_DIR}/error.log

                # Possible values include: debug, info, notice, warn, error, crit,
                # alert, emerg.
                LogLevel warn

                CustomLog ${APACHE_LOG_DIR}/access.log combined

                # CHANGED: CUSTOM listing HEADER + FOOTER
                HeaderName /include/HEADER.html
                ReadmeName /include/README.html

        </VirtualHost>


Auto login (shell)
----------------------

The raspi-config gives options to automatically start up the graphical shell, but you can also login via the console without starting X.

Following [this tutorial](http://raspisimon.no-ip.org/rpi_autologin.php):

        sudo nano /etc/inittab

change

        1:2345:respawn:/sbin/getty 115200 tty1

to

        #1:2345:respawn:/sbin/getty 115200 tty1
        1:2345:respawn:/bin/login -f pi tty1 </dev/tty1 >/dev/tty1 2>&1

Image Viewer
--------------

fbi & fim!


Media
------------
omxplayer, aplay, mplayer ...


Starting something, and stopping it with pid
-----------
In most shells (including Bourne and C), the PID of the last subprocess you launched in the background will be stored in the special variable $!.

        #!/bin/bash
        ./app1 &
        PID=$!
        # ...
        kill $PID



fim
-----------


        usleep '0';
        reduce;
        usleep '0';
        reduce;
        usleep '192000';
        reduce;
        usleep '203000';
        reduce;
        usleep '479000';
        reduce;
        usleep '0';
        reduce;
        usleep '566000';
        magnify;
        usleep '0';
        reduce;
        quit;


        cat fimscript | fim -p robby.jpg

or

        fim -p robby.jpg < fimscript

overscan
---------------
/boot/config.txt



Bigger Font
-----------------

[Tutorial](http://www.raspberrypi-spy.co.uk/2014/04/how-to-change-the-command-line-font-size/)

To see a list of available fonts: ls /usr/share/consolefonts/

        setfont /usr/share/consolefonts/Lat15-TerminusBold32x16.psf.gz

sudo nano /etc/default/console-setup
and filled in:

FONTFACE="Terminus"
FONTSIZE="16x32"