Raspberry Pi

Raspberry Pi
Raspberry Pi - http://www.raspberrypi.org/

Power
Power is provided through a Micro USB port with a 700 mA (3.5 W) (Model B) / 300 mA (1.5 W) (Model A) requirement

RPi Hardware - eLinux.org - http://elinux.org/RPi_Hardware#Power

I highly recommend at least a 1.2A power supply (if using wireless or anything more than keyboard/mouse)!

Power Test Points
How Can I tell if the power supply is inadequate? - http://elinux.org/RPi_Hardware#Power
 * "If you think you have a problem with your power supply, it is a good idea to check the actual voltage on the Raspberry Pi circuit board. Two test points labelled TP1 and TP2 are provided on the circuit board to facilitate voltage measurements.
 * Use a multimeter which is set to the range 20 volts DC (or 20v =). You should see a voltage between 4.75 and 5.25 volts. Anything outside this range indicates that you have a problem with your power supply or your power cable, or the input polyfuse F3. Anything inside, but close to the limits, of this range may indicate a problem. "

Raspberry Pi - How to check your power supplys voltage - YouTube - https://www.youtube.com/watch?v=W3nH-Bh1Q0Q
 * Use Multi Meter to check TP1 to TP2 Voltage. 4.75 V - 5.25 V is a valid range.

Power Consumption
"According to Kill-A-Watt meter, power consumption over 40 hours was 0.09 kWh, or 2.3 Watts per hour." 

"about .20 Amps at 12.5V" "Bottom line. Pi uses about 2 watts at idle." 

How To Tell Model
Newer versions: $ cat /proc/device-tree/model $ cat /sys/firmware/devicetree/base/model Raspberry Pi 3 Model B Rev 1.2

--

cat /proc/cpuinfo | grep 'Revision' | awk '{print $3}' | sed 's/^1000//' # or awk '/^Revision/ {sub("^1000", "", $3); print $3}' /proc/cpuinfo

Revision	Release Date	Model		PCB Revision	Memory	Notes Beta		Q1 2012		B (Beta)	? 256 MB	Beta Board 0002		Q1 2012		B		1.0	256 MB 0003		Q3 2012		B (ECN0001)	1.0	256 MB	Fuses mod and D14 removed 0004		Q3 2012		B		2.0	256 MB	(Mfg by Sony) 0005		Q4 2012		B		2.0	256 MB	(Mfg by Qisda) 0006		Q4 2012		B		2.0	256 MB	(Mfg by Egoman) 0007		Q1 2013		A		2.0	256 MB	(Mfg by Egoman) 0008		Q1 2013		A		2.0	256 MB	(Mfg by Sony) 0009		Q1 2013		A		2.0	256 MB	(Mfg by Qisda) 000d		Q4 2012		B		2.0	512 MB	(Mfg by Egoman) 000e		Q4 2012		B		2.0	512 MB	(Mfg by Sony) 000f		Q4 2012		B		2.0	512 MB	(Mfg by Qisda) 0010		Q3 2014		B+		1.0	512 MB	(Mfg by Sony) 0011		Q2 2014		Compute Module 1 1.0	512 MB	(Mfg by Sony) 0012		Q4 2014		A+		1.1	256 MB	(Mfg by Sony) 0013		Q1 2015		B+		1.2	512 MB	(Mfg by Embest) 0014		Q2 2014		Compute Module 1 1.0	512 MB	(Mfg by Embest) 0015		?		A+		1.1	256 MB / 512 MB	(Mfg by Embest) a01040		Unknown		2 Model B	1.0	1 GB	(Mfg by Sony) a01041		Q1 2015		2 Model B	1.1	1 GB	(Mfg by Sony) a21041		Q1 2015		2 Model B	1.1	1 GB	(Mfg by Embest) a22042		Q3 2016		2 Model B 	1.2	1 GB	(Mfg by Embest) 900021		Q3 2016		A+		1.1	512 MB	(Mfg by Sony) 900032		Q2 2016? B+		1.2	512 MB	(Mfg by Sony) 900092		Q4 2015		Zero		1.2	512 MB	(Mfg by Sony) 900093		Q2 2016		Zero		1.3	512 MB	(Mfg by Sony) 920093		Q4 2016? Zero		1.3	512 MB	(Mfg by Embest) 9000c1		Q1 2017		Zero W		1.1	512 MB	(Mfg by Sony) a02082		Q1 2016		3 Model B	1.2	1 GB	(Mfg by Sony) a020a0		Q1 2017		Compute Module 3 1.0	1 GB	(Mfg by Sony) a22082		Q1 2016		3 Model B	1.2	1 GB	(Mfg by Embest) a32082		Q4 2016		3 Model B	1.2	1 GB	(Mfg by Sony Japan) a020d3		Q1 2018		3 Model B+	1.3	1 GB	(Mfg by Sony) 9020e0		Q4 2018		3 Model A+	1.0	512 MB	(Mfg by Sony)

Ref: RPi HardwareHistory - eLinux.org - https://elinux.org/RPi_HardwareHistory

Model A vs B
Model B includes additionally the following:
 * 512 MB RAM (vs 256 MB RAM)
 * 2 USB ports (vs 1)
 * Ethernet
 * Higher power requirement of 700 mA (vs 300 mA)

Model B Rev 1 vs Rev 2
How do you find out if you have a rev 1 or 2 board? Is it worth upgrading? 
 * The rev 2 boards have 2 mounting holes drilled through the board. The rev 1 boards dont have any mounting holes. That's the basic visual check you can perform to check which version you have

Model B Rev 1 came in only 256 MB of RAM. Model B Rev 2 comes in both 256 MB and 512 MB. If you have 512 MB of RAM, it is a Rev 2 board!

Model B Rev 2 Board: Revision       : 000e
 * 1) grep Revision /proc/cpuinfo

Model B Rev 2 (HW Rev 000e): Rev2 Model B, 512MB RAM, Ethernet, two USB sockets, five LEDs, mounting holes, Pin3=GPIO1, Pin5=GPIO2, Pin13=GPIO27, 12C-1, 8 extra IO pads (P5)

Full output of a Model B Rev 2 Board Processor      : ARMv6-compatible processor rev 7 (v6l) BogoMIPS       : 697.95 Features       : swp half thumb fastmult vfp edsp java tls CPU implementer : 0x41 CPU architecture: 7 CPU variant    : 0x0 CPU part       : 0xb76 CPU revision   : 7
 * 1) cat /proc/cpuinfo

Hardware       : BCM2708 Revision       : 000e Serial         : 00000000b4ae7143

References:
 * Raspberry Pi • View topic - Raspbarry Pi Model B Rev 1 or 2 - http://www.raspberrypi.org/phpBB3/viewtopic.php?f=26&t=25479
 * Upcoming board revision | Raspberry Pi - http://www.raspberrypi.org/archives/1929
 * Automatic Raspberry Pi board revision detection: model A, B1 and B2 | Raspberry Alpha Omega - http://raspberryalphaomega.org.uk/2013/02/06/automatic-raspberry-pi-board-revision-detection-model-a-b1-and-b2/

Purchase
Amazon:
 * Amazon.com: Raspberry Pi Model B Revision 2.0 (512MB): Electronics ($43) - http://amzn.com/B009SQQF9C
 * Amazon.com: Raspberry Pi Model A (256MB): Computers & Accessories ($33) - http://amzn.com/B00BC0ZL88

Spark Fun:
 * Raspberry Pi - Model B - SparkFun Electronics ($40 + $4) - https://www.sparkfun.com/products/11546
 * Raspberry Pi - Model A - SparkFun Electronics ($30 + $4) - https://www.sparkfun.com/products/11837

Group: Raspberry Pi - element14 - http://www.element14.com/community/groups/raspberry-pi
 * RASPBERRY-MODA-256M - RASPBERRY-PI - MODEL A - ASSEMBLED BOARD ONLY | Newark - http://www.newark.com/raspberry-pi/raspberry-moda-256m/model-a-assembled-board-only/dp/56W4050?COM=raspi-group
 * RASPBRRY-MODB-512M - RASPBERRY-PI - MODEL B - ASSEMBLED BOARD ONLY | Newark - http://www.newark.com/jsp/search/productdetail.jsp?sku=43W5302&COM=raspi-group

Here are a few places to try that often have a few in stock:
 * Adafruit (the kit is almost always in stock if the singular unit isn't)
 * Amazon (almost always in stock, but through third parties at a premium)
 * Allied Electronics (only available in North America)

GPIO
http://elinux.org/images/2/2a/GPIOs.png

RPi Low-level peripherals - eLinux.org - http://elinux.org/RPi_Low-level_peripherals

"In addition to the familiar USB, Ethernet and HDMI ports, the R-Pi offers lower-level interfaces intended to connect more directly with chips and subsystem modules. These GPIO (general purpose I/O) signals on the 2x13 header pins include SPI, I2C, serial UART, 3V3 and 5V power. These interfaces are not "plug and play" and require care to avoid miswiring. The pins use a 3V3 logic level and are not tolerant of 5V levels, such as you might find on a 5V powered Arduino. CSI (camera serial interface) can be used to connect the 5 MP camera available. Not yet software-enabled is the flex cable connectors with DSI (display serial interface) and a serial link inside the HDMI connector called CEC. (consumer electronics control) "

-

http://elinux.org/images/6/61/RPi_P1_header.png

"General Purpose Input/Output (a.k.a. GPIO) is a generic pin on a chip whose behavior (including whether it is an input or output pin) can be controlled (programmed) through software. "

GPIO Installation
apt-get install pigpio raspi-gpio wiringpi lsmod | grep -i gpio modprobe bcm2835_gpiomem
 * 1) modprobe gpio

Command Line
gpio readall gpio mode [pin] [mode] # mode = in or out gpio read [pin] # returns: 0 or 1 gpio write [pin] [value] # value = 0 or 1

Programming
http://elinux.org/RPi_Low-level_peripherals import RPi.GPIO as GPIO

GPIO.setmode(GPIO.BOARD)
 * 1) use P1 header pin numbering convention

GPIO.setup(11, GPIO.IN) GPIO.setup(12, GPIO.OUT)
 * 1) Set up the GPIO channels - one input and one output

input_value = GPIO.input(11)
 * 1) Input from pin 11

GPIO.output(12, GPIO.HIGH)
 * 1) Output to pin 12

GPIO.setmode(GPIO.BCM) GPIO.setup(17, GPIO.IN) GPIO.setup(18, GPIO.OUT) input_value = GPIO.input(17) GPIO.output(18, GPIO.HIGH)
 * 1) The same script as above but using BCM GPIO 00..nn numbers

GPIO.cleanup

Output
import time import RPi.GPIO as GPIO GPIO.setmode(GPIO.BCM) try: GPIO.setup(18, GPIO.OUT) GPIO.output(18, GPIO.HIGH) time.sleep(1) GPIO.output(18, GPIO.LOW) finally: GPIO.cleanup

Input

 * 1) !/usr/bin/env python

import sys import time

import RPi.GPIO as GPIO

pin = 25

GPIO.setmode(GPIO.BCM) GPIO.setup(pin, GPIO.IN)

try: while True: input_value = GPIO.input(pin) if input_value: sys.stdout.write('-') else: sys.stdout.write('.') sys.stdout.flush time.sleep(.01) finally: GPIO.cleanup

http://www.cl.cam.ac.uk/projects/raspberrypi/tutorials/robot/images/EGHS-PullUpDownSwitchProtected.jpg


 * Pull Up (top) - default High
 * Pull Down (bottom) - default Low

"When a GPIO pin is set as an input it is “floating” and has no defined voltage level. For us to be able to reliably detect whether the input is high or low we need to tie it so that it is always connected and either reads high or low.

To tie the pin we connect either a Pull Up or Pull Down resistor. A Pull down resistor connects the pin to ground through a large resistor, this means that when the switch is open there is a path to ground and so it will read low. When the switch is pressed (with the other side connected to 3.3V) there is a lower resistance path to high and so the pin will read high. The large (10kΩ) resistor ensures that only a little current is drawn when the switch is pressed.

Setting up a circuit like this means that we will be able to take reliable readings from a switch, however we could still damage the pins if they are accidentally set to an output. If we drive it low the output is connected directly to ground. Pushing the button will then create a short circuit between 3.3V and ground! To make this safer we put in a current limiting resistor (1kΩ will do) to make sure the Pi can handle the current drawn." (Buttons and Switches - Physical Computing with Raspberry Pi)

References:
 * Buttons and Switches - Physical Computing with Raspberry Pi - http://www.cl.cam.ac.uk/projects/raspberrypi/tutorials/robot/buttons_and_switches/

--

Inputs - raspberry-gpio-python - How to use inputs in RPi.GPIO - Python library for GPIO access on a Raspberry Pi - Google Project Hosting - http://code.google.com/p/raspberry-gpio-python/wiki/Inputs

Pull up / Pull down resistors GPIO.setup(channel, GPIO.IN, pull_up_down=GPIO.PUD_UP) GPIO.setup(channel, GPIO.IN, pull_up_down=GPIO.PUD_DOWN)

while GPIO.input(channel) == GPIO.LOW: time.sleep(0.01) # wait 10 ms to give CPU chance to do other things

-

Overview | Adafruit's Raspberry Pi Lesson 4. GPIO Setup | Adafruit Learning System - http://learn.adafruit.com/adafruits-raspberry-pi-lesson-4-gpio-setup/overview

"One of the great things about the Raspberry Pi is that it has a GPIO connector to which you can attach external hardware."

-

GPIO Electrical Specifications, Raspberry Pi Input and Output Pin Voltage and Current Capability - http://www.mosaic-industries.com/embedded-systems/microcontroller-projects/raspberry-pi/gpio-pin-electrical-specifications

http://www.mosaic-industries.com/embedded-systems/_media/microcontroller-projects/raspberry-pi/raspberry-pi-circuit-gpio-input-pins.png

-

Computer Laboratory – Raspberry Pi: Section 2: GPIO - http://www.cl.cam.ac.uk/projects/raspberrypi/tutorials/turing-machine/two.html

-

YouTube Video

What are the input voltage thresholds for the Raspberry Pi's GPIO pins? - YouTube - http://www.youtube.com/watch?v=Wr49ia3oID4

LOW: 0V - 1.19V HIGH: 1.34V - 3.30V

Cute Qubit Online - http://cutequbit.zapto.org/

GPIO Interrupts
Check if your version of Python GPIO library has support: sudo python import RPi.GPIO as GPIO GPIO.VERSION
 * 1) need 0.5.1 or higher

Check for falling edge:
 * 1) !/usr/bin/env python

import sys import time

import RPi.GPIO as GPIO

GPIO.setmode(GPIO.BCM) GPIO.setup(25, GPIO.IN)

try: while True: # RISING, FALLING or BOTH GPIO.wait_for_edge(25, GPIO.FALLING) print "Change detected" finally: GPIO.cleanup

Interrupts and Edge detection - To avoid missing a button press while your program is busy doing something else, there are two ways to get round this:
 * the wait_for_edge function
 * the event_detected function
 * a threaded callback function that is run when an edge is detected

wait_for_edge function: GPIO.wait_for_edge(channel, GPIO.RISING)

event_detected function GPIO.add_event_detect(channel, GPIO.RISING) # add rising edge detection on a channel do_something if GPIO.event_detected(channel): print('Button pressed')

GPIO.remove_event_detect(channel)
 * 1) remove event, if needed

Threaded callbacks: def my_callback(channel): ... GPIO.add_event_detect(channel, GPIO.RISING, callback=my_callback)

References:
 * How to use interrupts with Python on the Raspberry Pi and RPi.GPIO » RasPi.TV - http://raspi.tv/2013/how-to-use-interrupts-with-python-on-the-raspberry-pi-and-rpi-gpio
 * How to use interrupts with Python on the Raspberry Pi and RPi.GPIO – part 2 » RasPi.TV - http://raspi.tv/2013/how-to-use-interrupts-with-python-on-the-raspberry-pi-and-rpi-gpio-part-2
 * How to use interrupts with Python on the Raspberry Pi and RPi.GPIO – part 3 » RasPi.TV - http://raspi.tv/2013/how-to-use-interrupts-with-python-on-the-raspberry-pi-and-rpi-gpio-part-3
 * Inputs - raspberry-gpio-python - How to use inputs in RPi.GPIO - Python library for GPIO access on a Raspberry Pi - Google Project Hosting - http://code.google.com/p/raspberry-gpio-python/wiki/Inputs

---

MagPi - Interrupt Test23 - http://ryniker.ods.org/raspberrypi/MagPi/interrupt_test23.py

MagPi - GPIO Interrupts - http://ryniker.ods.org/raspberrypi/MagPi/GPIO_interrupts


 * 1) !/usr/bin/python3


 * 1) Test interrupts.

import select, time, sys

pin_base = '/sys/class/gpio/gpio23/'

def write_once(path, value): f = open(path, 'w') f.write(value) f.close return

f = open(pin_base + 'value', 'r')

write_once(pin_base + 'direction', 'in') write_once(pin_base + 'edge', 'both')

po = select.poll po.register(f, select.POLLPRI)

state_last = f.read(1) t1 = time.time sys.stdout.write('Initial pin value = {}\n'.format(repr(state_last)))

while 1: events = po.poll(60000) t2 = time.time f.seek(0) state_last = f.read(1) if len(events) == 0: sys.stdout.write(' timeout  delta = {:8.4f} seconds\n'.format(t2 - t1)) else: sys.stdout.write('value = {} delta ={:8.4f}\n'.format(state_last, t2 - t1)) t1 = t2

GPIO Permissions
MagPi - gpio_control.c - http://ryniker.ods.org/raspberrypi/MagPi/gpio_control.c

Switch debounce
You may notice that the callbacks are called more than once for each button press. This is as a result of what is known as 'switch bounce'. There are two ways of dealing with switch bounce:
 * add a 0.1uF capacitor across your switch.
 * software debouncing
 * a combination of both

GPIO Boot State
"The RPi is not setting the GPIO to output when first booted. It is turning on a pull down resistor for 740 milliseconds. I have used two 18K resistors ( 3v3 -> GPIO -> GND ) to look at exactly what is going on with the pins. Here is the trace. Blue line is 3v3 power, yellow line is GPIO line." 


 * boot - What is the power on state of the GPIOs? - Raspberry Pi Stack Exchange - http://raspberrypi.stackexchange.com/questions/1032/what-is-the-power-on-state-of-the-gpios
 * Raspberry Pi • View topic - Power on behaviour - http://www.raspberrypi.org/phpBB3/viewtopic.php?t=7443&p=93865

-

"All the GPIO pins can be reconfigured to provide alternate functions, SPI, PWM, I²C and so. At reset only pins GPIO 14 & 15 are assigned to the alternate function UART, these two can be switched back to GPIO to provide a total of 17 GPIO pins[3]. Each of their functions and full details of how to access are detailed in the chipset datasheet."

So don't use GPIO 14 & 15 for sensitive tasks. (14 specifically has boot issues!)

RPi Low-level peripherals - eLinux.org - http://elinux.org/RPi_Low-level_peripherals

-

"I know you want to avoid resistors on the GPIO pins, but I don't know any other way around the issue, as most pins are inputs and are floating. I use a 10k resistor from each GPIO I am using to ground, before my other circuitry. By choosing the proper pins (Pins where MODE=IN and VALUE=LOW at boot. See the chart labeled "Rev 2 pin state at boot time" at the url below) and by adding the resistors, you are guaranteed a LOW at boot, and still are able to set the pins to a LOW or HIGH in software." - Raspberry Pi • View topic - GPIO random voltage upon boot - http://www.raspberrypi.org/phpBB3/viewtopic.php?f=26&t=47895

See also: - Raspberry Pi • View topic - GPIO Pin States a Boot time - Change in 3.6.11+ - http://www.raspberrypi.org/phpBB3/viewtopic.php?f=44&t=35321

Rev 2 pin state at boot time: +--+-Rev2-+--++--+---+ +--+--+--++--+---+ +--+--+--++--+---+
 * wiringPi | GPIO | Phys | Name  | Mode | Value |
 * 0  |  17  |  11  | GPIO 0 | IN   | Low   |
 * 1  |  18  |  12  | GPIO 1 | IN   | Low   |
 * 2  |  27  |  13  | GPIO 2 | IN   | Low   |
 * 3  |  22  |  15  | GPIO 3 | IN   | Low   |
 * 4  |  23  |  16  | GPIO 4 | IN   | Low   |
 * 5  |  24  |  18  | GPIO 5 | IN   | Low   |
 * 6  |  25  |  22  | GPIO 6 | IN   | Low   |
 * 7  |   4  |   7  | GPIO 7 | IN   | Low   |
 * 8  |   2  |   3  | SDA    | IN   | High  |
 * 9  |   3  |   5  | SCL    | IN   | High  |
 * 10  |   8  |  24  | CE0    | IN   | Low   |
 * 11  |   7  |  26  | CE1    | IN   | Low   |
 * 12  |  10  |  19  | MOSI   | IN   | Low   |
 * 13  |   9  |  21  | MISO   | IN   | Low   |
 * 14  |  11  |  23  | SCLK   | IN   | Low   |
 * 15  |  14  |   8  | TxD    | ALT0 | High  |
 * 16  |  15  |  10  | RxD    | ALT0 | High  |
 * 17  |  28  |   3  | GPIO 8 | IN   | Low   |
 * 18  |  29  |   4  | GPIO 9 | IN   | Low   |
 * 19  |  30  |   5  | GPIO10 | IN   | Low   |
 * 20  |  31  |   6  | GPIO11 | IN   | Low   |

Onboard LED
Only the Green is controllable:

echo 0 >/sys/class/leds/led0/brightness # on echo 1 >/sys/class/leds/led0/brightness
 * 1) off

while true ; do echo 0 >/sys/class/leds/led0/brightness ; sleep .5 ; echo 1 >/sys/class/leds/led0/brightness ; sleep .5 ; done

Blink the light (by me): (/usr/local/sbin/blink) echo "Blinking..." trap "{ echo Exiting ; echo 0 >/sys/class/leds/led0/brightness ; exit 0 ; }" SIGINT SIGTERM while true ; do echo -n "." # on echo 1 >/sys/class/leds/led0/brightness sleep .1 # off echo 0 >/sys/class/leds/led0/brightness sleep .1 done
 * 1) !/bin/bash

References:
 * Raspberry Pi • View topic - Can we control the on-board leds - http://www.raspberrypi.org/phpBB3/viewtopic.php?f=31&t=12530

IP Address
Add to /etc/rc.local: _IP=$(hostname -I) || true if [ "$_IP" ]; then printf "My IP address is %s\n" "$_IP" espeak "Welcome to Rasberry pi. My I.P. is $_IP. I repeat: $_IP" else espeak "Welcome to Rasberry pi. No I.P. found." fi

Onboard Audio and Sound
Shell WAV: lsmod | grep snd_bcm2835 # verify audio module loaded amixer cset numid=3 1 # force analog 3.5mm jack amixer  # show devices amixer set PCM 80% # set volume to 80% wget http://www.freespecialeffects.co.uk/soundfx/sirens/police_s.wav aplay police_s.wav

Shell MP3: (not amixer volume does affect this) sudo apt-get -y install mpg321 wget http://www.freespecialeffects.co.uk/soundfx/household/bubbling_water_1.mp3 mpg321 bubbling_water_1.mp3 mpg321 -g 50 bubbling_water_1.mp3 # 50% volume (default is 100%)

Python MP3: import pygame pygame.mixer.init pygame.mixer.music.load("myFile.wav") pygame.mixer.music.play

Text to audio: apt-get install espeak espeak "hello world" espeak "hello world" 2> /dev/null speak "someone going out the garage" -a 200 -p 20 -s 80

Quantum Bits » Project “Jarvis”: step two (speak to me) - """ /usr/bin/curl -A "Mozilla" "http://translate.google.com/translate_tts?tl=en_gb&ie="UTF-8"&q='{msg}' > google.mp3 """.format(msg=msg)

References:
 * Raspberry Pi Command Line Audio | Raspberry Pi Spy - http://www.raspberrypi-spy.co.uk/2013/06/raspberry-pi-command-line-audio/
 * Playing sounds and using buttons with Raspberry Pi | Adafruit Learning System - http://learn.adafruit.com/playing-sounds-and-using-buttons-with-raspberry-pi/
 * Quantum Bits » Project “Jarvis”: step two (speak to me) - http://quantum-bits.org/?p=614

Google Text to Speech
Google TTS - "Google Text-To-Speech is a private REST API. Getting results is less straightforward but noneless very easily manageable."

Get Google TTS through Python: (modified from ) cmd = """ /usr/bin/curl -A "Mozilla"   "http://translate.google.com/translate_tts?tl=en_gb&ie="UTF-8"&q='{msg}' > google.mp3 """.format(msg=msg) os.system(cmd)

References:
 * Quantum Bits » Project “Jarvis”: step two (speak to me) - http://quantum-bits.org/?p=614
 * The Unofficial Google Text-To-Speech API | TechCrunch - http://techcrunch.com/2009/12/14/the-unofficial-google-text-to-speech-api/

Raspbian Installation
Raspbian Download - http://www.raspberrypi.org/downloads/

Write image to SD card: wget http://downloads.raspberrypi.org/raspbian_latest unzip 2014-01-07-wheezy-raspbian.zip sudo dd if=2014-01-07-wheezy-raspbian.img of=/dev/sdh bs=1M

Win32 Disk Imager | SourceForge.net - http://sourceforge.net/projects/win32diskimager/
 * Win32DiskImager-0.9.5-install.exe (installer) or Win32DiskImager-0.9.5-binary.zip (binary)

Note: Ethernet with SSHD configured on by default

Boot Raspberry Pi and Configure: sudo su -
 * 1) Login: pi : raspberry

raspi-config
 * 1) Configure Raspberry Pi
 * 2)    auto runs the first time you sudo to root, and it will reboot the Pi
 * 1) - Expand Filesystem
 * 2) - Change User Password (Optional)
 * 3) - Internaltionalisation Options - Change Locale - (uncheck "en_GB.UTF-8 UTF-8", check "en_US.*" (x3), and set "en_US.UTF-8" as default)
 * 4) - Internaltionalisation Options - Change Timezone - US - Mountain
 * 5) - Advanced Options - Hostname
 * 6) - Advanced Options - Memory Split - Set to 16 (for server) or 128 (for picamera)
 * 7) - Advanced Options - Update

reboot
 * 1) --- REBOOT --- #
 * 2) --- REBOOT --- #
 * 3) --- REBOOT --- #

sudo su -

passwd  # change root password

hostname [HOSTNAME] hostname > /etc/hostname cat /etc/hostname hostname HOSTNAME echo $HOSTNAME > /etc/hostname
 * 1) echo "[HOSTNAME]" > /etc/hostname
 * 2) hostname [HOSTNAME]
 * 3) hostname `cat /etc/hostname`

hostid hostid > /etc/hostid.old wget http://piregister.oeey.com/sethostid.txt -O /usr/local/sbin/sethostid chmod u+x /usr/local/sbin/sethostid sethostid hostid
 * 1) Apply pseudo random number to change default hostid from '007f0101',
 * 2)   which is based on /etc/hosts entries
 * 1) echo $RANDOM > /etc/hostid

mv /etc/localtime /etc/localtime.original ln -s /usr/share/zoneinfo/America/Denver /etc/localtime date
 * 1) set timezone


 * 1) cp /etc/profile /etc/profile.original
 * 2) echo "" >> /etc/profile
 * 3) echo "export EDITOR=vim" >> /etc/profile
 * 4) export EDITOR=vim

cp ~/.bashrc ~/.bashrc.original echo "" >> ~/.bashrc echo "export EDITOR=vim" >> ~/.bashrc export EDITOR=vim echo "alias ls='ls --color'" >> ~/.bashrc alias ls='ls --color'

apt-get update apt-get -y install vim screen espeak mpg321 mercurial tree python-pip rsync wiringpi apt-get -y upgrade

adduser kenneth # this will also set the password
 * 1) --- PASSWORD --- #
 * 2) --- PASSWORD --- #
 * 3) --- PASSWORD --- #

echo "kenneth ALL=(ALL) NOPASSWD: ALL" >> /etc/sudoers
 * 1) passwd kenneth  # set password
 * 2) visudo # add to visudo
 * 3)  kenneth ALL=(ALL) NOPASSWD: ALL
 * 4) --- VISUDO --- #
 * 5) --- VISUDO --- #
 * 6) --- VISUDO --- #

cp /etc/motd /etc/motd.original > /etc/motd

wget http://piregister.oeey.com/piserial.txt -O /usr/local/bin/piserial chmod +x /usr/local/bin/piserial piserial

wget http://piregister.oeey.com/piregister.txt -O /usr/local/bin/piregister chmod +x /usr/local/bin/piregister piregister

wget http://piregister.oeey.com/blink.txt -O /usr/local/sbin/blink chmod +x /usr/local/sbin/blink
 * 1) blink

echo "# m h dom mon dow   command" > tmpcron echo "@reboot  /usr/local/bin/piregister" >> tmpcron echo "0 0 * * *  /usr/local/bin/piregister" >> tmpcron echo "0 * * * * /usr/bin/logger -- \"-- MARK --\"" >> tmpcron crontab tmpcron rm -f tmpcron
 * 1) ADD TO CRON:
 * 1) echo "*/10 * * * * /usr/bin/logger -- \"-- MARK --\"" >> tmpcron
 * 1) will be added as: /var/spool/cron/crontabs/root


 * 1) cp /etc/rc.local /etc/rc.local.original
 * 2) sed -i '/exit 0/d' /etc/rc.local
 * 3) echo "" >> /etc/rc.local
 * 4) echo "/usr/local/bin/piregister" >> /etc/rc.local
 * 5) echo "" >> /etc/rc.local
 * 6) echo "exit 0" >> /etc/rc.local

cat > /etc/wpa_supplicant/wpa_supplicant.conf << "EOF" ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev update_config=1 network={ ssid="toast" #psk="xxx" psk=8085 } EOF
 * 1) WIRELESS (Optional)
 * 1) reading passphrase from stdin
 * 1) ifdown --force wlan0
 * 2) ifup wlan0

service rpcbind restart update-rc.d rpcbind defaults echo "prime:/pub     /pub            nfs     noauto        0 0" >> /etc/fstab mkdir /pub mount /pub
 * 1) NFS

reboot
 * 1) --- REBOOT --- #
 * 2) --- REBOOT --- #
 * 3) --- REBOOT --- #


 * 1) Wireless should now be running

ssh-keygen ssh-copy-id kiloforce@oeey.com ssh kiloforce@oeey.com 'pwd'
 * 1) SSH Key
 * 1) [enter] [enter] [enter]

hg clone ssh://kiloforce@oeey.com//opt/hg/pi /opt/hg ln -sfn /opt/pi-hg /hg hg --cwd /opt/hg pull -u
 * 1) Mercurial
 * 2) apt-get install mercurial
 * 3) hg clone ssh://kiloforce@oeey.com//opt/hg/pi /opt/pi-hg
 * 4) ln -sfn /opt/pi-hg /opt/hg


 * 1) ln -sfn /opt/hg/common/vimrc /root/.vimrc
 * 2) ln -sfn /opt/hg/common/hgrc /root/.hgrc
 * 3) ln -sfn /opt/hg/common/piregister /usr/local/bin/piregister
 * 4) ln -sfn /opt/hg/common/piserial /usr/local/bin/piserial

cd /opt/hg ./rebuild common

./rebuild `hostname`

apt-get update ; apt-get -y upgrade ; apt-get -y autoremove ; apt-get clean all
 * 1) System update
 * 2) apt-get update
 * 3) apt-get -y upgrade
 * 4) apt-get update ; apt-get -y upgrade ; apt-get -y dist-upgrade

reboot
 * 1) reboot

RaspBMC Installation
Write image to SD card: wget http://downloads.raspberrypi.org/raspbmc_latest gzip -d raspbmc-2013-10-02.img.gz sudo dd if=raspbmc-2013-10-02.img of=/dev/sdh bs=1M

Note: Ethernet with SSHD configured on by default

Boot Raspberry Pi
 * 1) WAIT FOREVER - it will go through several reboots and upgrades
 * 2) This will take a while...

Configure Raspberry Pi:
 * 1) Login: pi : raspberry
 * 2) INITIAL CONFIGURATION WILL PROCEED ON FIRST CONNECTION
 * 3) * Locale - en_US
 * 4) * Time - America / Mountain
 * 5) System will now reboot

sudo su -


 * 1) All of the expand filesystem, and other settings are done during the initial setup

passwd  # change root password

hostname pi-wii echo `hostname` > /etc/hostname
 * 1) Set hostname

/etc/init.d/rsyslog restart
 * 1) RESTART SYSLOG

apt-get update apt-get -y install vim screen espeak mpg321 curl alsa-utils wireless-tools wpasupplicant apt-get autoremove
 * 1) This will take a while...

wget http://www.freespecialeffects.co.uk/soundfx/sirens/police_s.wav aplay police_s.wav wget http://www.freespecialeffects.co.uk/soundfx/household/bubbling_water_1.mp3 mpg321 bubbling_water_1.mp3
 * 1) Verify sound

echo "" >> /etc/profile echo "export EDITOR=vim" >> /etc/profile export EDITOR=vim
 * 1) SETUP DEFAULT EDITOR

adduser kenneth # this will also set the password
 * 1) --- PASSWORD --- #
 * 2) --- PASSWORD --- #
 * 3) --- PASSWORD --- #

visudo # add to visudo  (note: need vim as EDITOR has been set) # --- VISUDO --- # # --- VISUDO --- # # --- VISUDO --- # kenneth ALL=(ALL) NOPASSWD: ALL
 * 1) passwd kenneth  # set password

> /etc/motd
 * 1) clear message of the day

cat > /usr/local/bin/piserial << "EOF" cat /proc/cpuinfo | grep Serial | awk '{print $3'} EOF chmod +x /usr/local/bin/piserial piserial
 * 1) !/bin/bash
 * 1) test

cat > /usr/local/bin/piregister << "EOF" _IP=$(hostname -I | awk '{print $1}') || true if [ "$_IP" ]; then printf "My IP address is %s\n" "$_IP" HOSTNAME=`hostname` SERIAL=`/usr/local/bin/piserial` /usr/bin/curl http://pi.oeey.com/register/$SERIAL/$HOSTNAME/$_IP logger "Registered as http://pi.oeey.com/register/$SERIAL/$HOSTNAME/$_IP" #espeak "Welcome to Rasberry pi. My I.P. is $_IP. I repeat: $_IP" logger "Welcome to Rasberry pi. My I.P. is $_IP. I repeat: $_IP" else #espeak "Welcome to Rasberry pi. No I.P. found." logger "Welcome to Rasberry pi. No I.P. found." fi EOF chmod +x /usr/local/bin/piregister piregister
 * 1) !/bin/bash
 * 2) cron: 0 0 * * *   /usr/local/bin/piregister
 * 1) test

echo "# m h dom mon dow   command" > tmpcron echo "0 0 * * *  /usr/local/bin/piregister" >> tmpcron echo "*/10 * * * * /usr/bin/logger -- \"-- MARK -- `date`\"" >> tmpcron crontab tmpcron rm -f tmpcron
 * 1) ADD TO CRON:

sed -i '/exit 0/d' /etc/rc.local echo "" >> /etc/rc.local echo "/usr/local/bin/piregister" >> /etc/rc.local echo "" >> /etc/rc.local echo "exit 0" >> /etc/rc.local
 * 1) ADD TO BOOT

cat > /etc/wpa_supplicant/wpa_supplicant.conf << "EOF" update_config=1 network={ ssid="toast" #psk="1175BurgenerFamily" psk=8085564ae7b7ebaf397eb5eebfe5a1ec093f8b78aa00fadb9cf7f810742bba85 } EOF
 * 1) Wireless: http://wireless.kernel.org/en/users/Documentation/iw
 * 1) ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
 * 1) reading passphrase from stdin

cp /etc/wpa_supplicant/functions.sh /etc/wpa_supplicant/functions.sh.bak sed -i 's/nl80211,//g' /etc/wpa_supplicant/functions.sh

cat >> /etc/network/interfaces << "EOF" auto wlan0 iface wlan0 inet dhcp pre-up wpa_supplicant -D wext -i wlan0 -c /etc/wpa_supplicant/wpa_supplicant.conf -B post-down killall -q wpa_supplicant EOF
 * 1) /sbin/wpa_supplicant -u -s -O /var/run/wpa_supplicant
 * 2) -u enable dbus,  -s log to syslog,  -O override ctrl_interface,  -B daemon,  -D driver,  -i interface

sed -i '/exit 0/d' /etc/rc.local echo "" >> /etc/rc.local echo "/sbin/wpa_supplicant -D wext -i wlan0 -c /etc/wpa_supplicant/wpa_supplicant.conf -B" >> /etc/rc.local echo "" >> /etc/rc.local echo "exit 0" >> /etc/rc.local
 * 1) ADD TO BOOT

ifdown --force wlan0 rm -f /var/run/wpa_supplicant/wlan0 modprobe -r 8192cu for i in `pidof wpa_supplicant` ; do kill $i ; done
 * 1) killall wpa_supplicant
 * 1) wait a second

modprobe 8192cu
 * 1) ifup wlan0

for i in `pidof wpa_supplicant` ; do kill $i ; done ; /sbin/wpa_supplicant -D wext -i wlan0 \ -c /etc/wpa_supplicant/wpa_supplicant.conf -B

iwconfig iwlist wlan0 scan iwconfig wlan0 mode Managed iwconfig wlan0 essid toast

service rpcbind restart update-rc.d rpcbind defaults echo "prime:/pub     /pub            nfs     defaults        0 0" >> /etc/fstab mkdir /pub mount /pub
 * 1) NFS

reboot
 * 1) --- REBOOT --- #
 * 2) --- REBOOT --- #
 * 3) --- REBOOT --- #


 * 1) Wireless should now be running

References:
 * Turn a Raspberry Pi Into an XBMC Media Center in Under 30 Minutes - http://lifehacker.com/5929913/build-a-xbmc-media-center-with-a-35-raspberry-pi
 * Raspberry Pi • View topic - Raspberry Pi Netcomm np910n WiFi Setup - http://www.raspberrypi.org/phpBB3/viewtopic.php?f=26&t=27201

OpenELEC Installation
OpenELEC Mediacenter - http://openelec.tv/

OpenELEC Download - http://openelec.tv/get-openelec/download

Installing OpenELEC on Raspberry Pi - OpenELEC - http://wiki.openelec.tv/index.php?title=Installing_OpenELEC_on_Raspberry_Pi
 * Referenced from: OpenELEC Installation instructions - http://wiki.openelec.tv/index.php?title=Installation

Downloads:
 * OpenELEC Mediacenter - http://openelec.tv/ (newer downloads)
 * Raspberry Pi Downloads - http://www.raspberrypi.org/downloads

Write image to SD card: yum install dosfstools e4fsprogs

wget http://openelec.tv/get-openelec/download/finish/10-raspberry-pi-builds/\ 260-openelec-stable-raspberry-pi-arm -O OpenELEC-RPi.arm-3.2.4.tar tar -xvf OpenELEC-RPi.arm-3.2.4.tar cd OpenELEC-RPi.arm-3.2.4/ sudo ./create_sdcard /dev/sdh sync

Patch: --- create_sdcard 2013-12-02 00:01:00.000000000 -0700 +++ create_sdcard 2013-12-02 00:02:00.000000000 -0700 @@ -207,6 +207,7 @@  echo "telling kernel we have a new partition table..." partprobe "$DISK" + echo -n "waiting" ; while [ ! -e "$PART1" ] ; do sleep 1 ; echo -n. ; done ; echo
 * 1) tell kernel we have a new partition table

echo "creating filesystem on $PART1..."
 * 1) create filesystem

patch -p0 < patch

Tag line: OpenELEC - The living room PC for everyone

WARNING: SSH NOT enabled by default (enable with the initial wizard)

username: root password: openelec

SSH:

There is no working 'passwd'.

The 'passwd' command changes passwords for user accounts.

With OpenELEC it is not possible to change the system password

SSH is included only as a last support resort. SSH is off by default. Most users never need SSH and need help using it so we need a default password. If you need to keep SSH always on then this is unsupported but can be secured with certificates.

TIP: disable password authentication in ssh and use public key authentication.

cd /storage mkdir pub mount prime:/pub /storage/pub

Boot Raspberry Pi
 * 1) WAIT FOREVER - it will go through several reboots and upgrades
 * 2) This will take a while...

Configure Raspberry Pi:
 * 1) Login: pi : raspberry
 * 2) INITIAL CONFIGURATION WILL PROCEED ON FIRST CONNECTION
 * 3) * Locale - en_US
 * 4) * Time - America / Mountain
 * 5) System will now reboot

sudo su -


 * 1) All of the expand filesystem, and other settings are done during the initial setup

passwd  # change root password (eg. Password1)

hostname pi-wii echo `hostname` > /etc/hostname
 * 1) Set hostname

/etc/init.d/rsyslog restart
 * 1) RESTART SYSLOG

apt-get update apt-get -y install vim screen espeak mpg321 curl alsa-utils wireless-tools wpasupplicant apt-get autoremove
 * 1) This will take a while...

wget http://www.freespecialeffects.co.uk/soundfx/sirens/police_s.wav aplay police_s.wav wget http://www.freespecialeffects.co.uk/soundfx/household/bubbling_water_1.mp3 mpg321 bubbling_water_1.mp3
 * 1) Verify sound

echo "" >> /etc/profile echo "export EDITOR=vim" >> /etc/profile export EDITOR=vim
 * 1) SETUP DEFAULT EDITOR

adduser kenneth # this will also set the password
 * 1) --- PASSWORD --- #
 * 2) --- PASSWORD --- #
 * 3) --- PASSWORD --- #

visudo # add to visudo  (note: need vim as EDITOR has been set) # --- VISUDO --- # # --- VISUDO --- # # --- VISUDO --- # kenneth ALL=(ALL) NOPASSWD: ALL
 * 1) passwd kenneth  # set password

> /etc/motd
 * 1) clear message of the day

cat > /usr/local/bin/piserial << "EOF" cat /proc/cpuinfo | grep Serial | awk '{print $3'} EOF chmod +x /usr/local/bin/piserial piserial
 * 1) !/bin/bash
 * 1) test

cat > /usr/local/bin/piregister << "EOF" _IP=$(hostname -I | awk '{print $1}') || true if [ "$_IP" ]; then printf "My IP address is %s\n" "$_IP" HOSTNAME=`hostname` SERIAL=`/usr/local/bin/piserial` /usr/bin/curl http://pi.oeey.com/register/$SERIAL/$HOSTNAME/$_IP logger "Registered as http://pi.oeey.com/register/$SERIAL/$HOSTNAME/$_IP" #espeak "Welcome to Rasberry pi. My I.P. is $_IP. I repeat: $_IP" logger "Welcome to Rasberry pi. My I.P. is $_IP. I repeat: $_IP" else #espeak "Welcome to Rasberry pi. No I.P. found." logger "Welcome to Rasberry pi. No I.P. found." fi EOF chmod +x /usr/local/bin/piregister piregister
 * 1) !/bin/bash
 * 2) cron: 0 0 * * *   /usr/local/bin/piregister
 * 1) test

echo "# m h dom mon dow   command" > tmpcron echo "0 0 * * *  /usr/local/bin/piregister" >> tmpcron echo "*/10 * * * * /usr/bin/logger -- \"-- MARK -- `date`\"" >> tmpcron crontab tmpcron rm -f tmpcron
 * 1) ADD TO CRON:

sed -i '/exit 0/d' /etc/rc.local echo "" >> /etc/rc.local echo "/usr/local/bin/piregister" >> /etc/rc.local echo "" >> /etc/rc.local echo "exit 0" >> /etc/rc.local
 * 1) ADD TO BOOT

cat > /etc/wpa_supplicant/wpa_supplicant.conf << "EOF" update_config=1 network={ ssid="toast" #psk="1175BurgenerFamily" psk=8085564ae7b7ebaf397eb5eebfe5a1ec093f8b78aa00fadb9cf7f810742bba85 } EOF
 * 1) Wireless: http://wireless.kernel.org/en/users/Documentation/iw
 * 1) ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
 * 1) reading passphrase from stdin

cp /etc/wpa_supplicant/functions.sh /etc/wpa_supplicant/functions.sh.bak sed -i 's/nl80211,//g' /etc/wpa_supplicant/functions.sh

cat >> /etc/network/interfaces << "EOF" auto wlan0 iface wlan0 inet dhcp pre-up wpa_supplicant -D wext -i wlan0 -c /etc/wpa_supplicant/wpa_supplicant.conf -B post-down killall -q wpa_supplicant EOF
 * 1) /sbin/wpa_supplicant -u -s -O /var/run/wpa_supplicant
 * 2) -u enable dbus,  -s log to syslog,  -O override ctrl_interface,  -B daemon,  -D driver,  -i interface

sed -i '/exit 0/d' /etc/rc.local echo "" >> /etc/rc.local echo "/sbin/wpa_supplicant -D wext -i wlan0 -c /etc/wpa_supplicant/wpa_supplicant.conf -B" >> /etc/rc.local echo "" >> /etc/rc.local echo "exit 0" >> /etc/rc.local
 * 1) ADD TO BOOT

ifdown --force wlan0 rm -f /var/run/wpa_supplicant/wlan0 modprobe -r 8192cu for i in `pidof wpa_supplicant` ; do kill $i ; done
 * 1) killall wpa_supplicant
 * 1) wait a second

modprobe 8192cu
 * 1) ifup wlan0

for i in `pidof wpa_supplicant` ; do kill $i ; done ; /sbin/wpa_supplicant -D wext -i wlan0 \ -c /etc/wpa_supplicant/wpa_supplicant.conf -B

iwconfig iwlist wlan0 scan iwconfig wlan0 mode Managed iwconfig wlan0 essid toast

service rpcbind restart update-rc.d rpcbind defaults echo "prime:/pub     /pub            nfs     defaults        0 0" >> /etc/fstab mkdir /pub mount /pub
 * 1) NFS

reboot
 * 1) --- REBOOT --- #
 * 2) --- REBOOT --- #
 * 3) --- REBOOT --- #


 * 1) Wireless should now be running

References:
 * Turn a Raspberry Pi Into an XBMC Media Center in Under 30 Minutes - http://lifehacker.com/5929913/build-a-xbmc-media-center-with-a-35-raspberry-pi
 * Raspberry Pi • View topic - Raspberry Pi Netcomm np910n WiFi Setup - http://www.raspberrypi.org/phpBB3/viewtopic.php?f=26&t=27201

---

Wifi:
 * How to setup WIFI on your Raspberry Pi - Openelec XBMC | The Pi Hut | Raspberry Pi Accessories - http://thepihut.com/pages/how-to-setup-wifi-on-your-raspberry-pi-openelec-xbmc

PiMAME
Note: Ethernet with SSHD configured on by default

Projects and Accessories
Raspberry Pi Verified Peripherals - http://elinux.org/RPi_VerifiedPeripherals

SD Card
Need at least a 4GB SD card, at class 4 or higher.

RPi SD cards - eLinux.org - http://elinux.org/RPi_SD_cards

SD Card Reader
[204322.670729] usb 1-1.3: new high-speed USB device number 5 using dwc_otg [204322.771753] usb 1-1.3: New USB device found, idVendor=1a40, idProduct=0201 [204322.771784] usb 1-1.3: New USB device strings: Mfr=0, Product=1, SerialNumber=0 [204322.771800] usb 1-1.3: Product: USB 2.0 Hub [MTT] [204322.783406] hub 1-1.3:1.0: USB hub found [204322.783869] hub 1-1.3:1.0: 7 ports detected [204323.060781] usb 1-1.3.1: new high-speed USB device number 6 using dwc_otg [204323.161813] usb 1-1.3.1: New USB device found, idVendor=1a40, idProduct=0101 [204323.161844] usb 1-1.3.1: New USB device strings: Mfr=0, Product=1, SerialNumber=0 [204323.161860] usb 1-1.3.1: Product: USB 2.0 Hub [204323.162972] hub 1-1.3.1:1.0: USB hub found [204323.163323] hub 1-1.3.1:1.0: 4 ports detected [204323.240696] usb 1-1.3.5: new high-speed USB device number 7 using dwc_otg [204323.354948] usb 1-1.3.5: New USB device found, idVendor=0781, idProduct=b6b7 [204323.354980] usb 1-1.3.5: New USB device strings: Mfr=3, Product=4, SerialNumber=5 [204323.354997] usb 1-1.3.5: Product: ImageMate 9 in 1 Reader/Writer [204323.355011] usb 1-1.3.5: Manufacturer: SanDisk [204323.355026] usb 1-1.3.5: SerialNumber: 200702210B [204323.363171] scsi0 : usb-storage 1-1.3.5:1.0 [204324.362454] scsi 0:0:0:0: Direct-Access    Generic  STORAGE DEVICE   9335 PQ: 0 ANSI: 0 [204324.436649] sd 0:0:0:0: [sda] 15278080 512-byte logical blocks: (7.82 GB/7.28 GiB) [204324.438159] sd 0:0:0:0: [sda] Write Protect is off [204324.438194] sd 0:0:0:0: [sda] Mode Sense: 03 00 00 00 [204324.439747] sd 0:0:0:0: [sda] No Caching mode page present [204324.439775] sd 0:0:0:0: [sda] Assuming drive cache: write through [204324.449264] sd 0:0:0:0: [sda] No Caching mode page present [204324.449298] sd 0:0:0:0: [sda] Assuming drive cache: write through [204324.451678] sda: sda1 sda2 [204324.456653] sd 0:0:0:0: [sda] No Caching mode page present [204324.456688] sd 0:0:0:0: [sda] Assuming drive cache: write through [204324.456711] sd 0:0:0:0: [sda] Attached SCSI removable disk
 * 1) dmesg

[204392.361551] usb 1-1.3.5: USB disconnect, device number 7

USB HDD
[ 1146.126669] usb 1-1.3.7: new high-speed USB device number 11 using dwc_otg [ 1146.229300] usb 1-1.3.7: New USB device found, idVendor=154b, idProduct=007a [ 1146.229331] usb 1-1.3.7: New USB device strings: Mfr=1, Product=2, SerialNumber=3 [ 1146.229347] usb 1-1.3.7: Product: USB 2.0 FD [ 1146.229361] usb 1-1.3.7: Manufacturer: PNY Technologies [ 1146.229374] usb 1-1.3.7: SerialNumber: AD6BHE03000000263 [ 1146.236707] usb-storage 1-1.3.7:1.0: USB Mass Storage device detected [ 1146.246578] scsi0 : usb-storage 1-1.3.7:1.0 [ 1147.678718] scsi 0:0:0:0: Direct-Access    PNY      USB 2.0 FD       1100 PQ: 0 ANSI: 4 [ 1147.680426] sd 0:0:0:0: [sda] 15950592 512-byte logical blocks: (8.16 GB/7.60 GiB) [ 1147.681309] sd 0:0:0:0: [sda] Write Protect is off [ 1147.681343] sd 0:0:0:0: [sda] Mode Sense: 43 00 00 00 [ 1147.682049] sd 0:0:0:0: [sda] No Caching mode page found [ 1147.682077] sd 0:0:0:0: [sda] Assuming drive cache: write through [ 1147.686527] sd 0:0:0:0: [sda] No Caching mode page found [ 1147.686563] sd 0:0:0:0: [sda] Assuming drive cache: write through [ 1147.689505] sda: sda1 [ 1147.693460] sd 0:0:0:0: [sda] No Caching mode page found [ 1147.693498] sd 0:0:0:0: [sda] Assuming drive cache: write through [ 1147.693523] sd 0:0:0:0: [sda] Attached SCSI removable disk

WD My Book USB HDD
usb 1-1.3: new high-speed USB device number 4 using dwc_otg usb 1-1.3: New USB device found, idVendor=1058, idProduct=1230 usb 1-1.3: New USB device strings: Mfr=2, Product=3, SerialNumber=1 usb 1-1.3: Product: My Book 1230 usb 1-1.3: Manufacturer: Western Digital usb 1-1.3: SerialNumber: 574D43344D31303732363938 usb-storage 1-1.3:1.0: USB Mass Storage device detected scsi0 : usb-storage 1-1.3:1.0 scsi 0:0:0:0: Direct-Access    WD       My Book 1230     1050 PQ: 0 ANSI: 6 sd 0:0:0:0: [sda] 3906963456 512-byte logical blocks: (2.00 TB/1.81 TiB) scsi 0:0:0:1: Enclosure        WD       SES Device       1050 PQ: 0 ANSI: 6 sd 0:0:0:0: [sda] Write Protect is off sd 0:0:0:0: [sda] Mode Sense: 53 00 10 08 sd 0:0:0:0: [sda] No Caching mode page found sd 0:0:0:0: [sda] Assuming drive cache: write through sd 0:0:0:0: [sda] No Caching mode page found sd 0:0:0:0: [sda] Assuming drive cache: write through sda: sda1 sd 0:0:0:0: [sda] No Caching mode page found sd 0:0:0:0: [sda] Assuming drive cache: write through sd 0:0:0:0: [sda] Attached SCSI disk

Disk /dev/sda: 2000.4 GB, 2000365289472 bytes 255 heads, 63 sectors/track, 243197 cylinders, total 3906963456 sectors Units = sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disk identifier: 0x4537f807

Device Boot     Start         End      Blocks   Id  System /dev/sda1           2048  3906963455  1953480704    7  HPFS/NTFS/exFAT

Modified: Disk /dev/sda: 2000.4 GB, 2000365289472 bytes 255 heads, 63 sectors/track, 243197 cylinders, total 3906963456 sectors Units = sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disk identifier: 0x4537f807

Device Boot     Start         End      Blocks   Id  System /dev/sda1           2048  3906963455  1953480704   83  Linux

Wireless Wifi
Raspberry Pi Verified Wi-Fi Adapters - http://elinux.org/RPi_USB_Wi-Fi_Adapters


 * Amazon.com: Edimax EW-7811Un 150 Mbps Wireless 11n Nano Size USB Adapter with EZmax Setup Wizard: Computers & Accessories - http://amzn.com/B003MTTJOY ($10)
 * Amazon.com: EW-7811UN IEEE 802.11n (draft) USB - Wi-Fi Adapter: Computers & Accessories - http://amzn.com/B005CLMJLU ($12)
 * Amazon.com: Wi-Pi Raspberry Pi 802.11n Wireless Adapter: Computers & Accessories - http://amzn.com/B00BDW6D7I ($18)

Edimax Wi-Fi Installation:
 * Connect Edimax Wi-Fi adapter
 * lsusb
 * "Bus 001 Device 004: ID 7392:7811 Edimax Technology Co., Ltd EW-7811Un 802.11n Wireless Adapter [Realtek RTL8188CUS]"
 * lsmod
 * 8192cu
 * iwconfig
 * wlan0
 * ifconfig
 * wlan0

lsusb   # look for edimax iwlist  # make sure wlan0 appears iwlist wlan0 scan # scan for access points iwconfig wlan0 essid toast  # set ssid iwconfig wlan0 mode managed # set mode to managed wpa_passphrase [SSID] >> /etc/wpa_supplicant/wpa_supplicant.conf     # set wpa password wpa_supplicant -c /etc/wpa_supplicant/wpa_supplicant.conf -i wlan0 -D wext   # start wpa daemon

Note: if you are unable to connect:
 * Try connecting to a *powered* USB Hub
 * Try running "apt-get update ; apt-get upgrade", this has occasionally worked for me.

References:
 * http://www.frodebang.com/post/how-to-install-the-edimax-ew-7811un-wifi-adapter-on-the-raspberry-pi

---

/etc/network/interfaces auto lo iface lo inet loopback
 * 1) cat interfaces

iface eth0 inet dhcp

auto wlan0 allow-hotplug wlan0 iface wlan0 inet dhcp wpa-ssid "toast" wpa-psk "1175BurgenerFamily" wpa-conf /etc/wpa_supplicant/wpa_supplicant.conf


 * 1) allow-hotplug wlan0
 * 2) iface wlan0 inet manual
 * 3) wpa-roam /etc/wpa_supplicant/wpa_supplicant.conf

iface default inet dhcp

Default /etc/network/interfaces: auto lo

iface lo inet loopback iface eth0 inet dhcp

allow-hotplug wlan0 iface wlan0 inet manual wpa-roam /etc/wpa_supplicant/wpa_supplicant.conf iface default inet dhcp

For static: iface wlan0 inet static address 10.0.0.1 netmask 255.255.255.0

References:
 * Setting up Wifi with the Command Line | Adafruit's Raspberry Pi Lesson 3. Network Setup | Adafruit Learning System - http://learn.adafruit.com/adafruits-raspberry-pi-lesson-3-network-setup/setting-up-wifi-with-occidentalis
 * Raspberry Pi Wireless Network Setup - http://www.raspberryshake.com/raspberry-pi-wireless-network-setup/
 * How to Setup Wi-Fi On Your Raspberry Pi via the Command Line - http://www.howtogeek.com/167425/how-to-setup-wi-fi-on-your-raspberry-pi-via-the-command-line/
 * How To: WiFi your Raspberry PI - http://pingbin.com/2012/12/setup-wifi-raspberry-pi/
 * How to setup WIFI on your Raspberry Pi - Raspbian | The Pi Hut | Raspberry Pi Accessories - http://thepihut.com/pages/how-to-setup-wifi-on-your-raspberry-pi-raspbian

---

wpa_passphrase toast 1175BurgenerFamily >> /etc/wpa_supplicant/wpa_supplicant.conf

/etc/wpa_supplicant/wpa_supplicant.conf ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev update_config=1

network={ ssid="SSID-GOES-HERE" psk="WIFI-PASSWORD-GOES-HERE" }

default /etc/wpa_supplicant/wpa_supplicant.conf: ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev update_config=1

network={ ssid="test" #psk="testtesttest" psk=b6df3a2ab8a19db1b646e4a852892d39fc4e73c13cb2ade0ad9d8887bb414ecd }
 * 1) wpa_passphrase test testtesttest

---

crontab: */10 * * * *   /usr/local/sbin/checknetwork

/usr/local/sbin/checknetwork
 * 1) !/bin/bash

ping -c 3 10.10.10.1 > /dev/null if [ $? -ne 0 ] ; then logger "Network Failure: restarting network" nohup sh -c "ifdown wlan0 ; killall wpa_supplicant ; sleep 1 ; ifup wlan0" fi

References:
 * Debian: Running /etc/init.d/networking restart is deprecated because it may not enable again some interfaces | Code Ghar - http://codeghar.wordpress.com/2011/07/18/debian-running-etcinit-dnetworking-restart-is-deprecated-because-it-may-not-enable-again-some-interfaces/

---

Edimax: [ 297.354979] usb 1-1.2.4.3: new high-speed USB device number 7 using dwc_otg [ 297.456950] usb 1-1.2.4.3: New USB device found, idVendor=7392, idProduct=7811 [ 297.456985] usb 1-1.2.4.3: New USB device strings: Mfr=1, Product=2, SerialNumber=3 [ 297.457001] usb 1-1.2.4.3: Product: 802.11n WLAN Adapter [ 297.457014] usb 1-1.2.4.3: Manufacturer: Realtek [ 297.457030] usb 1-1.2.4.3: SerialNumber: 00e04c000001
 * 1) dmesg

Bus 001 Device 007: ID 7392:7811 Edimax Technology Co., Ltd EW-7811Un 802.11n Wireless Adapter [Realtek RTL8188CUS]
 * 1) lsusb

---

[ 418.976772] usb 1-1.2.4.3: new high-speed USB device number 8 using dwc_otg [ 419.078727] usb 1-1.2.4.3: New USB device found, idVendor=0bda, idProduct=8176 [ 419.078759] usb 1-1.2.4.3: New USB device strings: Mfr=1, Product=2, SerialNumber=3 [ 419.078775] usb 1-1.2.4.3: Product: 802.11n WLAN Adapter [ 419.078789] usb 1-1.2.4.3: Manufacturer: Realtek [ 419.078804] usb 1-1.2.4.3: SerialNumber: 00e04c000001
 * 1) dmesg

Bus 001 Device 008: ID 0bda:8176 Realtek Semiconductor Corp. RTL8188CUS 802.11n WLAN Adapter
 * 1) lsusb

Dec 11 20:23:55 pi-laura kernel: [ 149.545006] usb 1-1.2.4.4: new high-speed USB device number 6 using dwc_otg Dec 11 20:23:55 pi-laura kernel: [ 149.646974] usb 1-1.2.4.4: New USB device found, idVendor=0bda, idProduct=8176 Dec 11 20:23:55 pi-laura kernel: [ 149.647009] usb 1-1.2.4.4: New USB device strings: Mfr=1, Product=2, SerialNumber=3 Dec 11 20:23:55 pi-laura kernel: [ 149.647026] usb 1-1.2.4.4: Product: 802.11n WLAN Adapter Dec 11 20:23:55 pi-laura kernel: [ 149.647039] usb 1-1.2.4.4: Manufacturer: Realtek Dec 11 20:23:55 pi-laura kernel: [ 149.647055] usb 1-1.2.4.4: SerialNumber: 00e04c000001 Dec 11 20:23:55 pi-laura kernel: [ 150.038071] usbcore: registered new interface driver rtl8192cu Dec 11 20:23:55 pi-laura ifplugd(wlan0)[2314]: ifplugd 0.28 initializing. Dec 11 20:23:56 pi-laura wpa_supplicant[2325]: rfkill: Cannot open RFKILL control device Dec 11 20:23:56 pi-laura ifplugd(wlan0)[2314]: Using interface wlan0/00:13:EF:D0:2A:7A with driver (version: ) Dec 11 20:23:56 pi-laura ifplugd(wlan0)[2314]: Using detection mode: wireless extension Dec 11 20:23:56 pi-laura ifplugd(wlan0)[2314]: Initialization complete, link beat not detected. ...
 * 1) tail /var/log/syslog

Bus 001 Device 006: ID 0bda:8176 Realtek Semiconductor Corp. RTL8188CUS 802.11n WLAN Adapter
 * 1) lsusb

Wants to use driver: nl80211, but it should be covered under the 8192cu (rtl8192cu) module

ioctl[SIOCSIWAP]: Operation not permitted ioctl[SIOCSIWENCODEEXT]: Invalid argument ioctl[SIOCSIWENCODEEXT]: Invalid argument

Dec 12 01:45:20 raspberrypi wpa_supplicant[4096]: nl80211: 'nl80211' generic netlink not found Dec 12 01:45:20 raspberrypi wpa_supplicant[4096]: Failed to initialize driver 'nl80211'

Dec 12 01:45:20 raspberrypi wpa_supplicant[4096]: rfkill: Cannot open RFKILL control device

- Netlink -

"Netlink is the new (it's actually not really new, it's been around for a long time) way to configure all things wireless."

"If it really bothers you, there's a line somewhere in the netcfg scripts which contains "-Dnl80211,wext'."

cp /etc/wpa_supplicant/functions.sh /etc/wpa_supplicant/functions.sh.original sed -i "s/nl80211,wext/wext/g" /etc/wpa_supplicant/functions.sh

Reference: Error message on wireless connect after latest netcfg update (Page 1) / Networking, Server, and Protection / Arch Linux Forums - https://bbs.archlinux.org/viewtopic.php?pid=940669

---

Show USB details: Bus 001 Device 004: ID 7392:7811 Edimax Technology Co., Ltd EW-7811Un 802.11n Wi reless Adapter [Realtek RTL8188CUS] ... Device Descriptor: idVendor          0x7392 Edimax Technology Co., Ltd idProduct         0x7811 EW-7811Un 802.11n Wireless Adapter [Realtek RTL8188CUS] iManufacturer          1 Realtek iProduct               2 802.11n WLAN Adapter iSerial                3 00e04c000001 ... Configuration Descriptor: bmAttributes        0x80 (Bus Powered) MaxPower             500mA
 * 1) lsusb -v -d 7392: | less

List all devices and power settings: lsusb -v | grep -i -e power -e vendor

Web Camera
RPi USB Webcams - eLinux.org - http://elinux.org/RPi_USB_Webcams

RPi VerifiedPeripherals - eLinux.org - http://elinux.org/RPi_VerifiedPeripherals#USB_Webcams

-- [ 786.978131] usb 1-1.2.4.4: new high-speed USB device number 10 using dwc_otg [ 787.185706] usb 1-1.2.4.4: New USB device found, idVendor=0ac8, idProduct=332d [ 787.185740] usb 1-1.2.4.4: New USB device strings: Mfr=1, Product=2, SerialNumber=0 [ 787.185756] usb 1-1.2.4.4: Product: boynq iris webcam [ 787.185770] usb 1-1.2.4.4: Manufacturer: yousp Corp. [  787.306853] media: Linux media interface: v0.10 [ 787.334399] Linux video capture interface: v2.00 [ 787.368144] uvcvideo: Found UVC 1.00 device boynq iris webcam (0ac8:332d) [ 787.372609] input: boynq iris webcam as /devices/platform/bcm2708_usb/usb1/1-1/1-1.2/1-1.2.4/1-1.2.4.4/1-1.2.4.4:1.0/input/input0 [ 787.373545] usbcore: registered new interface driver uvcvideo [ 787.373568] USB Video Class driver (1.1.1) [ 787.491639] usbcore: registered new interface driver snd-usb-audio
 * 1) dmesg

Bus 001 Device 010: ID 0ac8:332d Z-Star Microelectronics Corp. Vega USB 2.0 Camera
 * 1) lsusb

fswebcam
Install: sudo apt-get install fswebcam

Use: fswebcam -d /dev/video0 cam.jpeg fswebcam -d /dev/video0 -r 640x480 cam.jpeg

To determine max resolution pick some really high resolution, it will downsample: Adjusting resolution from 1000x1000 to 640x480.
 * 1) fswebcam -d /dev/video0 -r 1000x1000 cam.jpg

Get additional verbose information about the camera and captuer: fswebcam -v -r 640x480 -d /dev/video0 cam.jpg

To flip or rotate an image: --flip h   # Flips the image horizontally. --flip h,v # Flips the image both horizontally and vertically.
 * 1) Flips the image. Direction can be (h)orizontal or (v)ertical. Example:

--rotate # Rotate the image in right angles (90, 180 and 270 degrees). # Note: Rotating the image 90 or 270 degrees will swap the dimensions.

---

If you have a black screen...

Some cameras require YUYV: fswebcam -d /dev/video0 -r 640x480 -p YUYV cam.jpeg

Some cameras require skipping frames: fswebcam -d /dev/video0 -r 640x480 -S 3 cam.jpeg

Try using a powered USB hub.

Some cameras work better with motion than fswebcam.

---

See more at: http://www.slblabs.com/2012/09/26/rpi-webcam-stream/#sthash.6GShyaYY.dpuf fswebcam -r 640x480 -S 15 --flip h --jpeg 95 --shadow --title "SLB Labs" --subtitle "Home" \ --info "Monitor: Active @ 1 fpm" --save home.jpg -q -l 60

Timelapse
Timelapse:
 * 1) !/bin/bash
 * 2) Timelapse controller for USB webcam

DIR=/home/pi/timelapse

x=1 while [ $x -le 1440 ]; do

filename=$(date -u +"%d%m%Y_%H%M-%S").jpg

fswebcam -d /dev/video0 -r 640x480 $DIR/$filename

x=$(( $x + 1 ))

sleep 10;

done;

Build Movie: cd timelapse ls *.jpg > list.txt sudo apt-get install mencoder mencoder -nosound -ovc lavc -lavcopts vcodec=mpeg4:aspect=16/9:vbitrate=8000000 -vf scale=640:480 -o timelapse.avi -mf type=jpeg:fps=24 mf://@list.txt

References:
 * How To Capture Time Lapse Photos With Your Raspberry Pi and DSLR or Webcam - http://www.makeuseof.com/tag/how-to-capture-time-lapse-photography-with-your-raspberry-pi-and-dslr-or-usb-webcam/

---

http://i1.wp.com/www.fotosyn.com/wp-content/uploads/2013/08/9551258809_4d5f0f0457_o.jpg?fit=300%2C200&fixwiki=.jpg

References:
 * Fotosyn » Simple timelapse camera using Raspberry Pi and a coffee tin - http://www.fotosyn.com/simple-timelapse-camera-using-raspberry-pi-and-a-coffee-tin/

Streaming
Raspberry Pi – Webcam streaming | SLB Labs - http://www.slblabs.com/2012/09/26/rpi-webcam-stream/

motion is a rather complete surveillance system with no fancy stuff and straight to the point, yet very customizable. Among what it can do, it is capable of motion detection, frame recording, video recording, timelapse - See more at: http://www.slblabs.com/2012/09/26/rpi-webcam-stream/#sthash.on7sdpoK.dpuf

apt-get install motion

/etc/motion/motion.conf
 * webcontrol_port (default 8080) and stream_port (default 8081)

Run: motion

Web: http://RPI-IP:webcontrol_port

---

mjpeg-streamer

---

FPV setup with raspberry Pi - DIY Drones - http://diydrones.com/profiles/blogs/fpv-setup-with-raspberry-pi

mkfifo buffer nc -p 5001 -l > buffer | /opt/vc/src/hello_pi/hello_video/hello_video.bin buffer

raspivid -t 0 -fps 15 -o - | nc 192.168.1.85 5001

Logitec Webcam
Error: gd-jpeg: JPEG library reports unrecoverable error: Not a JPEG file: starts with 0x89 0x80

Solution: fswebcam -p YUYV -d /dev/video0 -r 640x480 $DIR/$filename

"Try this command, for my camera i need to change -p parametar its logitech c170 and works only with -p YUYV"


 * Raspberry Pi • View topic - fswebcam - gd-jpeg: JPEG library reports unrecoverable error - http://www.raspberrypi.org/forum/viewtopic.php?f=45&t=60076

Video Surveillance
Raspberry Pi as low-cost HD surveillance camera - CodeProject - http://www.codeproject.com/Articles/665518/Raspberry-Pi-as-low-cost-HD-surveillance-camera

Motion detection

sudo apt-get install motion

To support Raspberry Pi Camera Module: cd /tmp sudo apt-get install -y libjpeg62 libjpeg62-dev libavformat53 libavformat-dev libavcodec53 libavcodec-dev \ libavutil51 libavutil-dev libc6-dev zlib1g-dev libmysqlclient18 libmysqlclient-dev libpq5 libpq-dev wget https://www.dropbox.com/s/xdfcxm5hu71s97d/motion-mmal.tar.gz tar zxvf motion-mmal.tar.gz sudo mv motion /usr/bin/motion sudo mv motion-mmalcam.conf /etc/motion.conf

vim /etc/default/motion start_motion_daemon=yes

vim /etc/motion.conf daemon on  logfile /tmp/motion.log width 1280 height 720 framerate 2 pre_capture 2 post_capture 2 max_mpeg_time 600 ffmpeg_video_codec msmpeg4 stream_localhost off stream_auth_method 2 stream_authentication SOMEUSERNAME:SOMEPASSWORD


 * 1) We don't need real-time video, 2 pictures per second are totally ok for our needs:

sudo chmod 664 /etc/motion.conf sudo chmod 755 /usr/bin/motion sudo touch /tmp/motion.log sudo chmod 775 /tmp/motion.log

motion
Raspbian: sudo apt-get install motion

CentOS: yum install motion

Files: /etc/motion /etc/motion/motion.conf /etc/rc.d/init.d/motion /usr/bin/motion /usr/share/man/man1/motion.1.gz

Name      : motion Summary   : Video-surveilance system URL       : http://www.lavrsen.dk/twiki/bin/view/Motion/WebHome License   : GPL Description: Motion is a software motion detector. It grabs images from video4linux : devices and/or from webcams (such as the axis network cameras). Motion : is the perfect tool for keeping an eye on your property keeping only : those images that are interesting. Motion is strictly command line : driven and can run as a daemon with a rather small footprint. It is          : built with MySQL and PostgreSQL support and mpegs generated by ffmpeg : and http remote control.

Help: man motion

motion - Detect motion using a video4linux device
 * DESCRIPTION: Motion uses  a  video4linux  device  to  detect motion. If motion is detected both normal and motion pictures will be taken. Motion can also take actions to notify you if needed. Creation of automated snapshots is also possible.

Home - http://www.lavrsen.dk/foswiki/bin/view/Motion/WebHome
 * Guide: http://www.lavrsen.dk/foswiki/bin/view/Motion/MotionGuide
 * FAQ: http://www.lavrsen.dk/foswiki/bin/view/Motion/FrequentlyAskedQuestions

Configure: mkdir .motion sudo cp /etc/motion/motion.conf ~/.motion/motion.conf motion -s # setup mode

Run: motion # or service motion start

stream camera audio
Find devices: arecord -L

Stream audio through nc: arecord -D default:CARD=webcam -f dat | nc -l 5001

Pick up audio remotely: (play out.wav with VLC) nc remote-server 5001 > out.wav

nc -l 7000 | aplay

References:
 * Quickie : Streaming Audio And Video From A Webcam On The Raspberry Pi » The Rantings and Ravings of a Madman - http://sirlagz.net/2013/03/10/quickie-streaming-audio-and-video-from-a-webcam-on-the-raspberry-pi/
 * Raspberry Pi • View topic - Push to talk (a simple intercom) - http://www.raspberrypi.org/forum/viewtopic.php?f=38&t=52934
 * Raspberry Pi into an audio spying device | Masumi Mutsuda - http://mutsuda.com/2012/09/07/raspberry-pi-into-an-audio-spying-device/

Camera Module
Raspberry Pi Camera

Camera | Raspberry Pi - How to set up the camera hardware (video) - http://www.raspberrypi.org/camera
 * Includes instructions for transmitting/receiving video stream over network

--

Rpi Camera Module - eLinux.org - http://elinux.org/Rpi_Camera_Module

"The Raspberry Pi camera board contains a 5 MPixel sensor, and connects via a ribbon cable to the CSI connector on the Raspberry Pi. A User's Guide describes setup and use. The video and still image quality is better than a USB webcam of similar price.

The Pi camera was released for sale on the 14th of May 2013 and the initial production was 10k units.

The "Pi NoIR" version of the camera was released on the 28th of October 2013. It has the same sensor with the IR filter removed, and a black PCB. With no IR filter, it can see near-IR wavelengths (700 - 1000 nm) like a security camera, with the tradeoff of poor color rendition. It is otherwise the same and uses the same software as the normal Pi camera. Technical Parameters

--

raspi-config - Enable Camera - "Enable this Pi to work with the Raspberry Pi Camera"

/boot/config.txt start_x=1 gpu_mem=128

--

Technical Parameters


 * Sensor type: OmniVision OV5647 Color CMOS QSXGA (5-megapixel)
 * Sensor size: 3.67 x 2.74 mm
 * Pixel Count: 2592 x 1944
 * Pixel Size: 1.4 x 1.4 um
 * Lens: f=3.6 mm, f/2.9
 * Angle of View: 54 x 41 degrees
 * Field of View: 2.0 x 1.33 m at 2 m
 * Full-frame SLR lens equivalent: 35 mm
 * Fixed Focus: 1 m to infinity
 * Video: 1080p at 30 fps with codec H.264 (AVC)
 * Board size: 25 x 24 mm (not including flex cable)

Because the focal length of the lens is roughly the same as the width of the sensor, it is easy to remember the field of view: at x meters away, you can see about x meters horizontally, assuming 4x3 stills mode. Horizontal field of view in 1080p video mode is 75% of that (75% H x 55% V sensor crop for 1:1 pixels at 1920x1080).

--

Camera LED

The cameras red LED lights up when recording video or taking a still picture, this can be turned off by adding the following line to config.txt (RPiconfig)

disable_camera_led=1

It's possible to turn it back on at runtime by using GPIO5

--

User's Guide - http://www.raspberrypi.org/wp-content/uploads/2013/07/RaspiCam-Documentation.pdf

--

Documentation: https://github.com/raspberrypi/userland/blob/master/host_applications/linux/apps/raspicam/RaspiCamDocs.odt

-- Purchase:
 * Raspberry Pi Camera Board ID: 1367 - $29.95 : Adafruit Industries, Unique & fun DIY electronics and kits ($30 + shipping) - http://www.adafruit.com/products/1367?gclid=COTP8fi_rbsCFeZ7QgodVzUAoQ
 * Raspberry Pi Camera Module - DEV-11868 - SparkFun Electronics ($30 + shipping) - https://www.sparkfun.com/products/11868?gclid=CMiV-vm_rbsCFQuUfgodpwQAJQ
 * Amazon.com: Raspberry PI 5MP Camera Board Module: Electronics ($33 w/ Prime) - http://amzn.com/B00E1GGE40

--

Configure:
 * 1) sudo raspi-config
 * 2) Navigate to “camera” and select “enable”.
 * 3) reboot

--

Still image: raspistill -o image.jpg raspistill -o image.jpg -w 320 -h 240 raspistill -o image.jpg -w 640 -h 480

Record 60 seconds of video raspivid -o video.h264 -t 60000

Video:
 * Codec: H264 - MPEG-4 AVC (part 10) (h264)
 * Resolution: 1920x1080
 * Decoded format: Planar 4:2:0 YUV (?is this part of the video of VLC?)
 * Aspect Ratio: 16:9

--

Convert h264 to mp4: ffmpeg -f h264 -i test.avi -vcodec copy test.mp4

Then one can use HandBrake to trim the video.

--

To disable the red camera LED, add the following to /boot/config.txt disable_camera_led=1

Or it is controlled by GPIO 5. I've tried it out in a live Python environment and with the LED diabled in config.txt, toggling GPIO 5 switches the LED on and off at will. import RPi.GPIO as GPIO GPIO.setmode(GPIO.BCM) GPIO.setwarnings(False) GPIO.setup(5, GPIO.OUT, initial=False)
 * 1) !/usr/bin/env python

raspivid -d -t 10000 & sudo ./disablecamled.py

Note: The reason you can toggle GPIO5 with RPi.GPIO and not the bash shell, is because the Python module accesses /dev/mem directly (and prints a warning message, which I've turned off in the code above) whereas the bash shell accesses the GPIO via sysfs (which I guess can't "ignore" the warning message).

---

mmalipc: mmal_vc_init: could not open vchiq service mmal: mmal_vc_component_create: failed to initialise mmal ipc for 'vc.ril.camera' (7:EIO) mmal: mmal_component_create_core: could not create component 'vc.ril.camera' (7) mmal: Failed to create camera component mmal: main: Failed to create camera component mmal: Camera is not enabled in this build. Try running "sudo raspi-config" and ensure that "camera" has been enabled
 * 1) raspistill -o test


 * 5 Enable Camera - Enable this Pi to work with the Raspberry Pi

Streaming
Stream (Transmit) from Raspberry Pi: (must have receiving system setup first) raspivid -t 999999 -o - | nc [insert the IP address of the client] 5001

Linux View: sudo apt-get install mplayer netcat nc -l -p 5001 | mplayer -fps 31 -cache 1024 -

Windows View: Install and run Linux instead.

Download MPlayer. Download Netcat/

[Path to nc.exe]\nc.exe -L -p 5001 | [Path to mplayer.exe]\mplayer.exe -fps 31 -cache 1024 -

Pi NoIR
Pi NoIR - Infrared Camera Module with 5 Megapixel, up to 2592 x 1944 pixels image size, 1080p30 video

Purchase:
 * Raspberry Pi NoIR Camera Board - Infrared-sensitive Camera ID: 1567 - $29.95 : Adafruit Industries, Unique & fun DIY electronics and kits ($30 + shipping) - http://www.adafruit.com/products/1567?gclid=CI-wvN_IrbsCFcxAMgodPWkAJQ
 * Amazon.com: Raspberry Pi 5MP 1080P Camera NoIR (No IR Filter) Night Vision Module: Computers & Accessories ($50) - http://www.amazon.com/Raspberry-Pi-Camera-Filter-Vision/dp/B00G76YEU8/ref=sr_1_5?ie=UTF8&qid=1386947583&sr=8-5&keywords=raspberry+pi+camera

PiNoIR – what’s it for? Comparison of RasPiCam and Pi NoIR output in daylight » RasPi.TV - http://raspi.tv/2013/pinoir-whats-it-for-comparison-of-raspicam-and-pi-noir-output-in-daylight

Wild Life - Instant Wild satellite cameras protect animals through crowdsourcing (video) - http://www.engadget.com/2013/09/07/instant-wild-satellite-cameras/

Pi NoIR | Raspberry Pi - http://www.raspberrypi.org/archives/tag/pi-noir

Public Lab: Near-Infrared Camera - http://publiclab.org/wiki/near-infrared-camera
 * "Vineyards, large farms, and NASA all use near-infrared photography for assessing plant health, usually by mounting expensive sensors on airplanes and satellites. At Public Lab, we've developed a Do-It-Yourself way to take these kinds of photos, enabling us to monitor our environment through quantifiable data."

Pi Car Cam
: Raspberry Pi Car Cam overlaid with OBD data - http://www.stuffaboutcode.com/2013/07/raspberry-pi-car-cam-overlaid-with-obd.html

"I then created a program which converted the OBD-II data into a subtitle file and used mencoder to overlay the data (RPM, MPH, Temperature & Throttle position) as subtitles on top of the video."

filename=$(date -u +"%Y%m%d_%H%M%S").h264 raspivid -o /home/pi/$filename -hf -vf -t 1200000 > /home/pi/camera.log 2>&1 &

Convert H264 to MP4
Convert h264 to mp4: ffmpeg -f h264 -i test.avi -vcodec copy test.mp4 ffmpeg -f h264 -i TEST.H264 -vcodec copy TEST.MP4

Then one can use HandBrake to trim the video.

--- Capturing HD Video With The Pi Camera Module | Raspberry Pi Spy - http://www.raspberrypi-spy.co.uk/2013/05/capturing-hd-video-with-the-pi-camera-module/
 * Convert Raw H264 Video Data To MP4

sudo apt-get install -y gpac MP4Box -fps 30 -add myvid.h264 myvid.mp4

This will wrap your H264 video data in an MP4 container file. This will allow most media players to play the video. This will give you a nice video at 30 frames per second that should play in most modern media players.

Play Video File
In order to play your newly created MP4 files you can use OMXPlayer.

sudo apt-get -y install omxplayer omxplayer myvid.mp4 omxplayer -p -o hdmi myvid.mp4 # over hdmi

VLC also works great.

camera module motion support
---

echo "Content-type: text/html" echo raspistill -o -
 * 1) !/bin/bash

- should be image/jpeg not text/html - send a smaller image, you're sending a massive 2592x1944 - reduce default timeout to 0

Raspberry Pi • View topic - Camera module problem with motion - http://www.raspberrypi.org/phpBB3/viewtopic.php?t=44025

Night Vision
Infrared camera – you asked us, so we’re making them! | Raspberry Pi - http://www.raspberrypi.org/archives/5089

Surveillance Camera
Raspberry Pi as low-cost HD surveillance camera - http://www.instructables.com/id/Raspberry-Pi-as-low-cost-HD-surveillance-camera/

raspistill permissions
Error: failed to open vchiq instance

To give you permissions: sudo usermod -a -G video [your_username]

To give apache permissions: sudo usermod -a -G video www-data

Check device creation rule: etc/udev/rules.d/raspberrypi.rules SUBSYSTEM=="vchiq|input", MODE="0777"

References:
 * Arch Linux ARM • View topic - Raspberry Pi Camera Board: Unable to use commands - http://archlinuxarm.org/forum/viewtopic.php?f=31&t=6421

10 Key Pad
[ 1572.671509] usb 1-1.2.4.1: new full-speed USB device number 11 using dwc_otg [ 1572.785897] usb 1-1.2.4.1: New USB device found, idVendor=05a4, idProduct=9837 [ 1572.785932] usb 1-1.2.4.1: New USB device strings: Mfr=1, Product=2, SerialNumber=0 [ 1572.785950] usb 1-1.2.4.1: Product: USB Keyboard Hub [ 1572.785964] usb 1-1.2.4.1: Manufacturer: ORTEK [ 1572.794726] hub 1-1.2.4.1:1.0: USB hub found [ 1572.796901] hub 1-1.2.4.1:1.0: 3 ports detected [ 1573.082438] usb 1-1.2.4.1.3: new full-speed USB device number 12 using dwc_otg [ 1573.195949] usb 1-1.2.4.1.3: New USB device found, idVendor=05a4, idProduct=9862 [ 1573.195985] usb 1-1.2.4.1.3: New USB device strings: Mfr=1, Product=2, SerialNumber=0 [ 1573.196002] usb 1-1.2.4.1.3: Product: USB Keyboard Hub [ 1573.196016] usb 1-1.2.4.1.3: Manufacturer: ORTEK [ 1573.208928] input: ORTEK USB Keyboard Hub as /devices/platform/bcm2708_usb/usb1/1-1/1-1.2/1-1.2.4/1-1.2.4.1/1-1.2.4.1.3/1-1.2.4.1.3:1.0/input/input1 [ 1573.210887] hid-generic 0003:05A4:9862.0001: input,hidraw0: USB HID v1.10 Keyboard [ORTEK USB Keyboard Hub] on usb-bcm2708_usb-1.2.4.1.3/input0 [ 1573.238276] input: ORTEK USB Keyboard Hub as /devices/platform/bcm2708_usb/usb1/1-1/1-1.2/1-1.2.4/1-1.2.4.1/1-1.2.4.1.3/1-1.2.4.1.3:1.1/input/input2 [ 1573.239788] hid-generic 0003:05A4:9862.0002: input,hidraw1: USB HID v1.10 Device [ORTEK USB Keyboard Hub] on usb-bcm2708_usb-1.2.4.1.3/input1

yum install sudo pip install evdev

sudo apt-get install python-dev sudo apt-get install python-setuptools sudo pip install evdev pip install evdev


 * 1) !/usr/bin/env python

DEVICE = "/dev/input/by-id/usb-ORTEK_USB_Keyboard_Hub-event-kbd"

import string

from evdev import InputDevice from select import select

keys = "X^1234567890XXXXqwertzuiopXXXXasdfghjklXXXXXyxcvbnmXXXXXXXXXXXXXXXXXXXXXXX" dev = InputDevice(DEVICE)

while True: r,w,x = select([dev], [], []) for event in dev.read: if event.type==1 and event.value==1: print( keys[ event.code ] )

References:
 * linux - How can I read input from the hosts keyboard when connected via SSH? - Super User - http://superuser.com/questions/562434/how-can-i-read-input-from-the-hosts-keyboard-when-connected-via-ssh

Starter Pack
955 - ADAFRUIT INDUSTRIES - STARTER PACK, RASPBERRY PI | Newark - http://www.newark.com/jsp/search/productdetail.jsp?SKU=44W3510
 * Pi Box, AC Adapter, Cables, SD Card, microSD Reader, Pi Cobbler, Breadboard

Micro SD
pIO - microSD Adapter for Raspberry Pi by rwinscot — Kickstarter - http://www.kickstarter.com/projects/443556734/pio-microsd-adapter-for-raspberry-pi

Other options:
 * http://amzn.com/B00BXWXVCI ($10)
 * http://amzn.com/B00AKO3EVS ($15)
 * http://amzn.com/B00DS0RFMA ( $9)

Temperature Sensor

 * Overview | DHT Humidity Sensing on Raspberry Pi with GDocs Logging | Adafruit Learning System - http://learn.adafruit.com/dht-humidity-sensing-on-raspberry-pi-with-gdocs-logging
 * New DHT11 DHT 11 Digital Temperature and Humidity Sensor | eBay ($1.45) - http://www.ebay.com/itm/140755374264

See TEMPer

See Temperature @lert

Thermomemters

Real Time Clock
"If your internet is down when a PI boots up, you may want this for your sprinkler system"

DS1302 Real Time Clock Module with CR2032 3V Battery S9 | eBay - http://www.ebay.com/itm/DS1302-Real-Time-Clock-Module-with-CR2032-3V-Battery-S9-/141010415893?pt=LH_DefaultDomain_0&hash=item20d4e03115

Raspberry Pi Real Time Clock - http://www.hobbytronics.co.uk/raspberry-pi-real-time-clock

How to build an USB real-time clock (usb-rtc) for usage with low-cost Linux systems #piday #raspberrypi @Raspberry_Pi « adafruit industries blog - http://www.adafruit.com/blog/2012/12/14/how-to-build-an-usb-real-time-clock-usb-rtc-for-usage-with-low-cost-linux-systems-piday-raspberrypi-raspberry_pi/

Overview | Adding a Real Time Clock to Raspberry Pi | Adafruit Learning System - http://learn.adafruit.com/adding-a-real-time-clock-to-raspberry-pi/overview

Raspberry Pi RS Pi Internal 4 USB Hub RTC Board | eBay - http://www.ebay.com/itm/Raspberry-Pi-Rs-Pi-internal-4-USB-HUB-RTC-Board-/321068980965?pt=UK_Computing_Internal_Port_Expansion_Cards&hash=item4ac133dae5

USB Development
Teensy USB Development Board The Teensy is a complete USB-based microcontroller development system, in a very small footprint, capable of implementing many types of projects. All programming is done via the USB port. No special programmer is needed, only a standard "Mini-B" USB cable and a PC or Macintosh with a USB port.

http://www.pjrc.com/teensy/teensy3.png

PJRC: Electronic Projects with Components Available Worldwide - http://www.pjrc.com/
 * Teensy USB Development Board - http://www.pjrc.com/teensy/index.html

LCD I2C
Adafruit Blue&White 16x2 LCD+Keypad Kit for Raspberry Pi ID: 1115 - $19.95 : Adafruit Industries, Unique & fun DIY electronics and kits - http://www.adafruit.com/products/1115

Relay Module
SainSmart 8-Channel 5V Relay Module for Arduino DSP AVR PIC ARM: Amazon.com: Industrial & Scientific ($13) - http://amzn.com/B0057OC5WK

https://coderwall-assets-0.s3.amazonaws.com/uploads/picture/file/1165/relay.jpg

Craig McNamara : Driving a SainSmart relay with Raspberry Pi - https://coderwall.com/p/izzsig

-

Raspberry Pi • View topic - How to wire a Raspberry Pi to a Sainsmart 5v Relay Board - http://www.raspberrypi.org/phpBB3/viewtopic.php?t=36225

Image is huge, bug good: http://i.imgur.com/4HzhwYB.jpg?ken_wikihack

Bluetooth
RPi USB Bluetooth adapters - eLinux.org - http://elinux.org/RPi_USB_Bluetooth_adapters

Amazon.com: Aitek Bluetooth 4.0 USB adapter (Newest Bluetooth Version Available) Class 2 Smart Ready Adapter w/ Low Energy Technology - For Windows 7/Vista/XP: Everything Else ($10 w/ Prime) - http://www.amazon.com/Aitek-Bluetooth-adapter-Available-Technology/dp/B009WO3Q4M


 * Bluetooth specification 4.0 compliant
 * Symbol rate: 3 Mbps
 * Receiving/Sending range: 20m - 50m
 * Bluetooth low energy Radio USB Dongle
 * Dual-mode Bluetooth transfer
 * Low power selectable 1.2 to 3.6 VI/O
 * WLAN coexistance interface

Driver installation: sudo apt-get install --no-install-recommends bluetooth

Note: The “–no-install-recommends” ensures we just install the bits we need for basic Bluetooth communication and not a load of other stuff such as printer drivers.

Test status: [ ok ] bluetooth is running.
 * 1) sudo service bluetooth status

When connecting a "Bluetooth CSR 4.0 Dongle" Sep 14 16:09:35 pi-ken kernel: [13228.953026] usb 1-1.3.4: new full-speed USB device number 6 using dwc_otg Sep 14 16:09:35 pi-ken kernel: [13229.113306] usb 1-1.3.4: New USB device found, idVendor=0a12, idProduct=0001 Sep 14 16:09:35 pi-ken kernel: [13229.113340] usb 1-1.3.4: New USB device strings: Mfr=0, Product=2, SerialNumber=0 Sep 14 16:09:35 pi-ken kernel: [13229.113356] usb 1-1.3.4: Product: CSR8510 A10 Sep 14 16:09:35 pi-ken kernel: [13229.211827] Bluetooth: Core ver 2.16 Sep 14 16:09:35 pi-ken kernel: [13229.215782] NET: Registered protocol family 31 Sep 14 16:09:35 pi-ken kernel: [13229.215811] Bluetooth: HCI device and connection manager initialized Sep 14 16:09:35 pi-ken kernel: [13229.215825] Bluetooth: HCI socket layer initialized Sep 14 16:09:35 pi-ken kernel: [13229.215837] Bluetooth: L2CAP socket layer initialized Sep 14 16:09:35 pi-ken kernel: [13229.215885] Bluetooth: SCO socket layer initialized Sep 14 16:09:35 pi-ken kernel: [13229.237282] usbcore: registered new interface driver btusb

Scan for other Bluetooth device: hcitool scan

Jumper Wires
Amazon.com: 350 pcs New Flexible Solderless Breadboard Jumper Cable Wires Kits for Arduino Male To Male: Electronics ($10) - http://amzn.com/B00DBUL9YW

Amazon.com : 50 PCS Jumper Wires Premium 200mm M/F Male-to-Female : Electronics ($8) - http://amzn.com/B008MRZSH8

Amazon.com: 40pcs Female to Female 2.54mm 0.1 in Jumper Wires F/F: Electronics ($6) - http://amzn.com/B007MRQC1K

http://ecx.images-amazon.com/images/I/51h5wifFi4L._SX385_.jpg

Magnetic Reed Switch
Amazon.com: Magnetic Switch: Car Electronics ($7 w/ Prime) - http://amzn.com/B0009SUF08
 * One of the only switches with both normally closed contacts

DEI - P/N 8601 (was 633T) - Magnetic Switch - Effective Vehicle Security Component

http://ecx.images-amazon.com/images/I/41DVM6RPZAL.jpg

Home Depot:
 * Sensaphone Magnetic Reed Switch-0006 at The Home Depot ($10) - http://www.homedepot.com/p/Sensaphone-Magnetic-Reed-Switch-0006/203505076#
 * IDEAL Security Wire Contact Sensor Kit-SK619 at The Home Depot ($13) - http://www.homedepot.com/p/IDEAL-Security-Wire-Contact-Sensor-Kit-SK619/203445964#

PIR Motion Sensor
"PIR sensors are used to detect motion from pets/humanoids from about 20 feet away (possibly works on zombies, not guaranteed). "

Overview | Adafruit's Raspberry Pi Lesson 12. Sensing Movement | Adafruit Learning System - http://learn.adafruit.com/adafruits-raspberry-pi-lesson-12-sensing-movement/overview

PIR (motion) sensor ID: 189 - $9.95 : Adafruit Industries, Unique & fun DIY electronics and kits ($10) - http://www.adafruit.com/products/189

Amazon.com: HC-SR501 Human Sensor Module Pyroelectric Infrared: Car Electronics ($7) - http://amzn.com/B007XQRKD4

Amazon.com: 5x Pyroelectric Infrared PIR Motion Sensor Detector Module: Camera & Photo ($15) - http://amzn.com/B008AESDSY

LED
Getting Started with Raspberry Pi GPIO and Python « LWK's Arduino Projects - http://lwk.mjhosting.co.uk/?p=343
 * Raspberry Pi - How to use the GPIO - YouTube - https://www.youtube.com/watch?v=q_NvDTZIaS4

http://www.societyofrobots.com/images/electronics_led_diagram.png

Short leg is negative (cathode), long leg is positive (anode). Flat side is negative.

-

RPi Tutorial EGHS:LED output - eLinux.org - http://elinux.org/RPi_Tutorial_EGHS:LED_output

Relay
Raspberry Pi – Driving a Relay using GPIO | SusaNET - http://www.susa.net/wordpress/2012/06/raspberry-pi-relay-using-gpio/
 * http://www.susa.net/wordpress/wp-content/uploads/2012/06/Relay-Sample.png

QIANJI JQC-3F(T73)
 * http://www.datasheetarchive.com/dlmain/Datasheets-32/DSA-638470.pdf
 * looking from above, so the center to left is connected on relay open, and center to right is connected on relay close.

Open Home Automation | Control a relay from anywhere using the Raspberry Pi - Open Home Automation - http://openhomeautomation.net/control-a-relay-from-anywhere-using-the-raspberry-pi/
 * http://openhomeautomation.net/wp-content/uploads/2013/05/Relay_schem_small.png?ken_wikihack

Easy GPIO Web Interface
Raspberry Pi GPIO - The Easy Way - YouTube - https://www.youtube.com/watch?v=0i2C3Qagosc

Button Audio

 * Playing sounds and using buttons with Raspberry Pi | Adafruit Learning System - http://learn.adafruit.com/playing-sounds-and-using-buttons-with-raspberry-pi/

Analog
ADC - Analog to Digital Converter

"The Raspberry Pi computer does not have a way to read analog inputs. It's a digital-only computer"

"We need a way to make the Pi analog-friendly. We'll do that by wiring up an MCP3008 chip to it. The MCP3008 acts like a 'bridge' between digital and analog. It has 8 analog inputs and the Pi can query it using 4 digital pins. That makes it a perfect addition to the Pi for integrating simple sensors like photocells, FSRs or potentiometers, thermistors, etc.!" 

References:
 * Connecting the Cobbler to a MCP3008 | Analog Inputs for Raspberry Pi Using the MCP3008 | Adafruit Learning System - http://learn.adafruit.com/reading-a-analog-in-and-controlling-audio-volume-with-the-raspberry-pi/connecting-the-cobbler-to-a-mcp3008
 * Reading Analogue Sensors With One GPIO Pin | Raspberry Pi Spy - http://www.raspberrypi-spy.co.uk/2012/08/reading-analogue-sensors-with-one-gpio-pin/
 * Working with analog sensors in the Raspberry Pi | My rambling weblog of things and…stuff - http://antoniolopes.info/wp/blog/2013/03/05/working-with-analog-sensors-in-the-raspberry-pi/

Drive a Servo Motor
The Raspberry Pi has no analog outputs, so this can be a bit tricky.

Tutorial: Raspberry Pi - How-to Drive a Servo Motor via Arduino! - YouTube - http://www.youtube.com/watch?v=tk0QiiD8w7Q

Sprinkler Control
Group: Raspberry Pi - element14 - http://www.element14.com/community/groups/raspberry-pi
 * Carriots | Electrovalve - https://www.carriots.com/tutorials/raspberrypi_carriots/electrovalve

H2O IQ - Raised by Savages - http://blog.valkyriesavage.com/blog/2013/01/18/h2o-iq/
 * valkyriesavage-fluffy-toboggans · GitHub - https://github.com/valkyriesavage/fluffy-toboggans
 * includes Eagle files

Raspberry Pi – Driving a Relay using GPIO | SusaNET - http://www.susa.net/wordpress/2012/06/raspberry-pi-relay-using-gpio/
 * http://www.susa.net/wordpress/wp-content/uploads/2012/06/Relay-Sample.png

Security Alarm Control

 * http://www.ebay.com/itm/171075408477
 * http://en.wikipedia.org/wiki/Transistor%E2%80%93transistor_logic
 * https://www.sparkfun.com/tutorials/215

CPU Temperature
CPU Temp: temp=43.3'C
 * 1) /opt/vc/bin/vcgencmd measure_temp

43312
 * 1) cat /sys/class/thermal/thermal_zone0/temp


 * 1) !/usr/bin/env python

import subprocess import re

cmd = "/opt/vc/bin/vcgencmd measure_temp" p = subprocess.Popen(cmd, shell=True, stdout=subprocess.PIPE, stderr=subprocess.STDOUT) output = ''.join(p.stdout.readlines) rc = p.wait

match = re.findall("temp=([0-9]*\.[0-9]*)'C", output) if match: temp = match[0]

print "{0} C".format(temp)


 * Raspberry Pi • View topic - CPU Temperature Recorder - http://www.raspberrypi.org/phpBB3/viewtopic.php?f=31&t=47469
 * Raspberry Pi Benchmarks - Roy Longbottom's PC benchmark Collection - http://www.roylongbottom.org.uk/Raspberry%20Pi%20Benchmarks.htm
 * Raspberry Pi - ArchWiki - https://wiki.archlinux.org/index.php/Raspberry_Pi

Part of the libraspberrypi-bin package

Waterproof Timelapse Rig
Waterproofing your timelapse rig | Raspberry Pi - http://www.raspberrypi.org/archives/4799

Fotosyn » Simple timelapse camera using Raspberry Pi and a coffee tin - http://www.fotosyn.com/simple-timelapse-camera-using-raspberry-pi-and-a-coffee-tin/

Bitcoin
Bitcoin operated pool table | Raspberry Pi - http://www.raspberrypi.org/archives/4796

-


 * Walkthrough: Raspberry Pi/Block Erupter mining rig setup with autostart and vnc - https://bitcointalk.org/index.php?topic=255582.0
 * Raspberry Pi • View topic - Bitcoin ASIC Erupter Cgminer - http://www.raspberrypi.org/phpBB3/viewtopic.php?f=63&t=54176
 * Mining Bitcoins with USB Block Erupters, a Raspberry Pi and MinePeon | Random Snippets - http://rdmsnippets.com/2013/07/24/mining-bitcoins-with-usb-block-erupters-a-raspberry-pi-and-minepeon/

-

edit /etc/inittab find the getty's and change one of them eg 6 or add another [but not 7] e.g. for 3 find 3:23:respawn:/sbin/getty 38400 tty3 and change that to be 3:23:respawn:/usr/local/bin/cgminer

this means when you reboot it will start mining on alt-f3 terminal

you can test this by sudo kill -HUP 1 to restart init alt-f3 login file you have a prompt then logout and the miner will start

Serial
Raspberry Pi’s onboard Serial connection | Random Hacks - http://benosteen.wordpress.com/2012/04/24/raspberry-pis-onboard-serial-connection/

FTDI
Serial for security system - some sort of FTDI adapter

Wii Remote
Using Wiimote Wii remote to control Gertboard and Pi via Bluetooth - YouTube - http://www.youtube.com/watch?v=7EAUJGyVNFU

Raspberry Pi + Wii Remote + Python = Awesome!! - YouTube - http://www.youtube.com/watch?v=vEQXFn-KuVs

Nintendo Wii Remote, Python and The Raspberry Pi | Raspberry Pi Spy - http://www.raspberrypi-spy.co.uk/2013/02/nintendo-wii-remote-python-and-the-raspberry-pi/

See

Install Bluetooth driver: sudo apt-get install --no-install-recommends bluetooth

Install the CWiid Python Library: sudo apt-get install python-cwiid

Find Wii remote: Scanning ... 00:17:AB:26:3F:48      Nintendo RVL-CNT-01
 * 1) hcitool scan

May need to flush:
 * 1) hcitool scan --flush --refresh

Get script: wget http://www.raspberrypi-spy.co.uk/archive/python/wii_remote_1.py

wii_remote_1.py: import cwiid import time button_delay = 0.1 print 'Press 1 + 2 on your Wii Remote now ...' time.sleep(1) try: wii=cwiid.Wiimote except RuntimeError: print "Error opening wiimote connection" quit print 'Wii Remote connected...\n' print 'Press some buttons!\n' print 'Press PLUS and MINUS together to disconnect and quit.\n' wii.rpt_mode = cwiid.RPT_BTN while True: buttons = wii.state['buttons'] # If Plus and Minus buttons pressed # together then rumble and quit. if (buttons - cwiid.BTN_PLUS - cwiid.BTN_MINUS == 0): print '\nClosing connection ...' wii.rumble = 1 time.sleep(1) wii.rumble = 0 exit(wii) # Check if other buttons are pressed by # doing a bitwise AND of the buttons number # and the predefined constant for that button. if (buttons & cwiid.BTN_LEFT): print 'Left pressed' time.sleep(button_delay) if(buttons & cwiid.BTN_RIGHT): print 'Right pressed' time.sleep(button_delay) if (buttons & cwiid.BTN_UP): print 'Up pressed' time.sleep(button_delay) if (buttons & cwiid.BTN_DOWN): print 'Down pressed' time.sleep(button_delay) if (buttons & cwiid.BTN_1): print 'Button 1 pressed' time.sleep(button_delay) if (buttons & cwiid.BTN_2): print 'Button 2 pressed' time.sleep(button_delay) if (buttons & cwiid.BTN_A): print 'Button A pressed' time.sleep(button_delay) if (buttons & cwiid.BTN_B): print 'Button B pressed' time.sleep(button_delay) if (buttons & cwiid.BTN_HOME): print 'Home Button pressed' time.sleep(button_delay) if (buttons & cwiid.BTN_MINUS): print 'Minus Button pressed' time.sleep(button_delay) if (buttons & cwiid.BTN_PLUS): print 'Plus Button pressed' time.sleep(button_delay)
 * 1) !/usr/bin/python
 * R|a|s|p|b|e|r|r|y|P|i|-|S|p|y|.|c|o|.|u|k|
 * 1) wii_remote_1.py
 * 2) Connect a Nintendo Wii Remote via Bluetooth
 * 3) and  read the button states in Python.
 * 4) Project URL :
 * 5) http://www.raspberrypi-spy.co.uk/?p=1101
 * 6) Author : Matt Hawkins
 * 7) Date   : 30/01/2013
 * 1) Project URL :
 * 2) http://www.raspberrypi-spy.co.uk/?p=1101
 * 3) Author : Matt Hawkins
 * 4) Date   : 30/01/2013
 * 1) Date   : 30/01/2013
 * 1) Import required Python libraries
 * 1) Import required Python libraries
 * 1) Connect to the Wii Remote. If it times out
 * 2) then quit.

Another good one: https://sites.google.com/site/brianhensleyfiles/wiimotetest.py

---

HOWTO: Python Wiimote fun (LEDs, rumble, accel, buttons) - maemo.org - Talk - http://talk.maemo.org/showthread.php?t=60178

Count in binary with LEDs: import cwiid import time print "press 1 + 2" wm = cwiid.Wiimote for i in range(16): wm.led = i   print i    time.sleep(1)

Note: If you want to go fast with LEDs, give a good sleep time after initial connection, or they will all just continue to blink

Rumble: for i in range(16): wm.led = i   wm.rumble = 1-i%2 time.sleep(.2)

Last but not least, let's now also get the accelerometer data by enabling the "RPT_ACC" reporting mode (we keep RPT_BTN here as well for the buttons, but don't need to): wm.rpt_mode = cwiid.RPT_BTN | cwiid.RPT_ACC wm.state

Let me finish off this short tutorial with a complete example that does the following: import cwiid import time
 * If the Wiimote is tilted down on the X axis, enable rumble (otherwise disable)
 * While the "A" button is pressed, increment the LED counter, otherwise leave it the same

print 'Press 1+2 on your Wiimote now...' wm = cwiid.Wiimote

time.sleep(1)

wm.rpt_mode = cwiid.RPT_BTN | cwiid.RPT_ACC

wm.led = 1

while True: wm.rumble = (wm.state['acc'][0] < 126) if wm.state['buttons'] & cwiid.BTN_A: wm.led = (wm.state['led'] + 1) % 16 time.sleep(.2)


 * wm.state['acc'][0] = Roll
 * wm.state['acc'][1] = Pitch (bowling)
 * wm.state['acc'][2] = Both

Nothing seems to affect Yaw. ("Yaw can only be sensed using the Wiimote Plus addon" )

http://embeddedcode.files.wordpress.com/2010/12/pry-wiimote.gif?w=320&h=308

Wiimote and GlovePIE | The Embedded Code - http://embeddedcode.wordpress.com/2010/12/07/wiimote-and-glovepie/

---

PixArt optical sensor?

Follow-up Story: Tearing down the Wii --- 'Sensor Bar' Features No Sensor -- Tech-On! - http://techon.nikkeibp.co.jp/english/NEWS_EN/20061128/124569/

wii.rpt_mode = cwiid.RPT_IR while True: print wii.state time.sleep(.2)

'rpt_mode': 8, 'ext_type': 0, 'rumble': 0, 'error': 0, 'battery': 146}
 * 1) {'led': 0, 'ir_src': [{'pos': (720, 154), 'size': 1}, {'pos': (648, 151), 'size': 1}, None, None],

HOWTO: Python Wiimote fun (LEDs, rumble, accel, buttons) - maemo.org - Talk - talk.maemo.org/showthread.php?p=785206#post785206

Solenoid
Ding a bell with a solenoid
 * http://www.amazon.com/s/?field-keywords=solenoid

Using Wiimote Wii remote to control Gertboard and Pi via Bluetooth - YouTube - http://www.youtube.com/watch?v=7EAUJGyVNFU

Raspberry Pi - IR controlled solenoid alarm bell - YouTube - http://www.youtube.com/watch?v=IkKkYLiNVRE

Pi Cluster
The RPiCluster - YouTube - http://www.youtube.com/watch?v=i_r3z1jYHAc

Beowulf Cluster

Debounce Buffer
RPi Tutorial EGHS:Switch Input - eLinux.org - http://elinux.org/RPi_Tutorial_EGHS:Switch_Input

Opto-isolator
Dream Green House • Features • Raspberry Pi I/O - http://www.dreamgreenhouse.com/features/rpi/io/index.php

"An opto-isolator is basically a light controlled switch. It has the advantages of providing optical isolation and enabling higher voltages to be used to control the input, e.g. 12 V dc shown here. The 2.4 kΩ resistor limits the current into the opto-isolator LED to about 5mA. We typically use a The 3.9 kΩ resistor though, to reduce the current to less than 3 mA. If full electrical isolation is not important, you can also use a common ground. "

"We are using the ILQ74 quad opto-isolator in all of our applications (ILQ74 datasheet). It's cheap and reliable and the input LED is compatible with a wide range of input voltages, including the 3.3V found on the Raspberry Pi. "

http://www.dreamgreenhouse.com/features/rpi/io/optoin.jpg

http://www.dreamgreenhouse.com/features/rpi/io/ilq74.jpg

-

The Raspberry Pi Hobbyist: GPIO Input Circuit - http://raspberrypihobbyist.blogspot.com/2012/09/gpio-input-circuit_19.html

http://3.bp.blogspot.com/--qW2aspVVkw/UFoN88JxggI/AAAAAAAAAIE/JpQy8u6AqMc/s1600/LTV847.gif

http://2.bp.blogspot.com/-PWdrqbSC9-4/UFoT_OleiTI/AAAAAAAAAIk/en-7TYZhPoo/s1600/GPIO-Input-Circuit2.gif

LDR
RPi Tutorial EGHS:LED output - eLinux.org - http://www.raspberrypi-spy.co.uk/2012/08/reading-analogue-sensors-with-one-gpio-pin/

Analog Sensor
RPi Tutorial EGHS:LED output - eLinux.org - http://www.raspberrypi-spy.co.uk/2012/08/reading-analogue-sensors-with-one-gpio-pin/

GPIO Expansion Board
Slice of PI/O - Ciseco PLC - http://shop.ciseco.co.uk/k002-slice-of-pi-o/
 * The Slice of Pi/O gives a Raspberry Pi an extra 16 buffered inputs or outputs. There's now quite a few people making boards with the MCP23017 driver chip on. We think this represents some great lateral thinking and superb design.

Cron
Run script on boot: @reboot python /home/pi/MyScript.py &

Garage Door
Raspberry Pi Garage Door Opener – With Asterisk Integration - Random Brain Farts By Mr. Harper - http://burkeharper.com/knowledge/?p=112

Seco-larm Alarm Switch Screw Terminals Miniature with 2" Gap - White | SM-217Q/W (SM217QW) | Seco-larm - http://www.mcmelectronics.com/product/82-13869
 * The easy-to-install normallyopen magnetic contacts include a wide 2" gap, for use with loose-fitting doors and windows, steel doors, and other applications where wide gaps are found.

---

Raspberry Pi • View topic - Sensing when Garage Door is Open - http://www.raspberrypi.org/phpBB3/viewtopic.php?f=37&t=9770

Raspberry Pi • View topic - Opening Garage Door with Pi - http://www.raspberrypi.org/phpBB3/viewtopic.php?f=37&t=10030&p=113972

Powered USB Hub
RPi Powered USB Hubs - eLinux.org - http://elinux.org/RPi_Powered_USB_Hubs

Amazon.com : 10 Port USB 2.0 Hub : Usb Network Adapters : Electronics ($9 w/ Prime) - http://amzn.com/B00475WJEY
 * AC/DC Adapter (2A @ 5.0V)

http://ecx.images-amazon.com/images/I/41nq1Gx1qHL.jpg

NFS
Error: mount.nfs: rpc.statd is not running but is required for remote locking. mount.nfs: Either use '-o nolock' to keep locks local, or start statd. mount.nfs: an incorrect mount option was specified
 * 1) mount prime:/pub mnt

update-rc.d rpcbind defaults service rpcbind restart

mount prime:/pub /pub

--- Server ---

apt-get install nfs-kernel-server  # alias: nfs-server service nfs-kernel-server restart update-rc.d nfs-kernel-server defaults

/etc/exports /pub           10.10.10.0/24(rw,no_root_squash,no_all_squash,sync) /hdd           10.10.10.0/24(rw,no_root_squash,no_all_squash,sync)

If it doesn't start in the appropriate runlevel: for i in 0 1 6; do ln -s ../init.d/rpcbind /etc/rc$i.d/K07rpcbind; done for i in 2 3 4 5 S; do ln -s ../init.d/rpcbind /etc/rc$i.d/S12rpcbind; done update-rc.d rpcbind defaults

ASIC Bit Coin Mining
See Bitcoin

---

Recommended to use an older version on Raspberry Pi:

Initial Setup & Overview | PiMiner Raspberry Pi Bitcoin Miner | Adafruit Learning System - http://learn.adafruit.com/piminer-raspberry-pi-bitcoin-miner/initial-setup-and-assembly

Install Software | PiMiner Raspberry Pi Bitcoin Miner | Adafruit Learning System - http://learn.adafruit.com/piminer-raspberry-pi-bitcoin-miner/install-cgminer

sudo apt-get update sudo apt-get install libusb-1.0-0-dev libusb-1.0-0 libcurl4-openssl-dev libncurses5-dev libudev-dev

wget http://ck.kolivas.org/apps/cgminer/3.1/cgminer-3.1.1.tar.bz2 tar xvf cgminer-3.1.1.tar.bz2 cd cgminer-3.1.1 ./configure --enable-icarus make

cat > cgminer.conf << EOF {   "api-allow": "0/0", "api-listen": true, "api-port": "4028", "expiry": "120", "failover-only": true, "icarus-options": "115200:1:1", "icarus-timing": "3.0=100", "kernel-path": "/usr/local/bin", "log": "5", "no-pool-disable": true, "pools": [ {           "pass": "[PASSWORD]", "url": "http://pit.deepbit.net:8332", "user": "[USERNAME]" }   ],    "queue": "2", "scan-time": "60", "shares": "0", "worktime": true } EOF

ls /dev/*USB*

sudo nohup ./cgminer --config cgminer.conf -S /dev/ttyUSB0 >/dev/null 2>&1&
 * 1) sudo nohup ./cgminer-3.1.1/cgminer --config /home/pi/cgminer.conf -S /dev/ttyUSB0 -S /dev/ttyUSB1 >/dev/null 2>&1&

---

PiMiner

git clone https://github.com/adafruit/PiMiner.git

Forked to: https://github.com/kiloforce/cgminerminer

git clone https://github.com/kiloforce/cgminerminer.git

Apache
apt-get install apache2 php5

VNC Server
sudo apt-get install tightvncserver tightvncserver # set password
 * 1) alias: sudo apt-get install vnc-server

vncserver :0 -geometry 1920x1080 -depth 24

vim svnc.sh vncserver :0 -geometry 1920x1080 -depth 24 -dpi 96
 * 1) !/bin/sh

/usr/bin/vncserver :0 -geometry 1280x800 -depth 16 -pixelformat rgb565

vncserver :0 -geometry 1024x768 -depth 16 &

References:
 * RPi VNC Server - eLinux.org - http://elinux.org/RPi_VNC_Server
 * Setting up Remote Desktop for Your CentOS or Fedora Linux Dedicated Server | Go Daddy Help | GoDaddy Support - http://support.godaddy.com/help/article/6012/setting-up-remote-desktop-for-your-centos-or-fedora-linux-dedicated-server#access

---

/root/.vnc/xstartup
 * 1) !/bin/sh

xrdb $HOME/.Xresources xsetroot -solid grey export XKL_XMODMAP_DISABLE=1 /etc/X11/Xsession
 * 1) x-terminal-emulator -geometry 80x24+10+10 -ls -title "$VNCDESKTOP Desktop" &
 * 2) x-window-manager &
 * 3) Fix to make GNOME work

Which looks like it runs LXDE

LXDE - Lightweight X11 Desktop Environment

VNC Desktop
To share the current desktop: sudo apt-get install x11vnc x11vnc -display :0
 * 1) as user 'pi'

Or if you want vnc server run after login, you can automate with this script: /usr/bin/x11vnc -nap -wait 50 -noxdamage -passwd PASSWORD -display :0 -forever -o /var/log/x11vnc.log -bg
 * 1) !/bin/bash

get that running on GDM in case the machine isn't already logged in: x11vnc -display :0 -auth /var/lib/gdm/:0.Xauth

From an SSH session, to start an app on the desktop: export DISPLAY=:0 xterm

References:
 * fedora - Enable remote desktop for Gnome from command line? - Unix & Linux Stack Exchange - http://unix.stackexchange.com/questions/73041/enable-remote-desktop-for-gnome-from-command-line

Firmware
rpi-update - An easier way to update the firmware of your Raspberry Pi.

Hexxeh/rpi-update - GitHub - https://github.com/Hexxeh/rpi-update

To update your firmware (and kernel), just run the following command: sudo rpi-update

To upgrade/downgrade to a specific firmware revision, specify its Git hash (from the https://github.com/Hexxeh/rpi-firmware repository) as follows: sudo rpi-update b62ec22eac11772e3a013a0faedd6d790da23c66

---

Check your firmware version

Using the latest firmware version may help various problems with SD card and display compatibility. Check the kernel version with: Linux pi-sprinkler 3.6.11+ #538 PREEMPT Fri Aug 30 20:42:08 BST 2013 armv6l GNU/Linux
 * 1) uname -a

And the GPU firmware with: Sep 1 2013 23:25:25 Copyright (c) 2012 Broadcom version 4f9d19896166f46a3255801bc1834561bf092732 (clean) (release)
 * 1) /opt/vc/bin/vcgencmd version

Note, the version that is displayed here will not match the hash downloaded by rpi-update. Not sure why.

---

"The software package called "raspberrypi-bootloader" also contains the firmware. This will be updated by apt-get upgrade.

The rpi-update command will load the latest "cutting edge" version of the firmware. Occasionally this can cause minor problems, and very rarely could cause your Pi to fail to start up. Unless you need the latest version you are probably better off with apt-get upgrade."

--- References:
 * operating systems - Do I still need rpi-update if I am using the latest version of Raspbian? - Raspberry Pi Stack Exchange - http://raspberrypi.stackexchange.com/questions/4355/do-i-still-need-rpi-update-if-i-am-using-the-latest-version-of-raspbian
 * R-Pi Troubleshooting - eLinux.org - Updating firmware - http://elinux.org/R-Pi_Troubleshooting#Updating_firmware
 * Raspberry Pi • View topic - Pi Firmware - http://www.raspberrypi.org/phpBB3/viewtopic.php?f=29&t=40553

MPEG-2 DVD License
Raspberry Pi • View topic - Playing DVD movies on the R Pi - http://www.raspberrypi.org/phpBB3/viewtopic.php?f=38&t=45502

How To Add MPEG 2 To Your Raspberry Pi Media Centre - http://www.makeuseof.com/tag/how-to-add-mpeg-2-to-your-raspberry-pi-media-centre/

Raspberry Pi Store - http://www.raspberrypi.com/

about $4 for MPEG-2 license key

MPG2 Decode keys go in /boot/config.txt decode_MPG2=0x12345678,0xabcdabcd,0x87654321

Testing Codecs to see if they are Enabled /opt/vc/bin/vcgencmd codec_enabled MPG2 MPG2=disabled

MAME
References:
 * Raspberry Pi • View topic - RetroPie in RaspBMC - http://www.raspberrypi.org/phpBB3/viewtopic.php?f=78&t=37693
 * petrockblog/RetroPie-Setup · GitHub - https://github.com/petrockblog/RetroPie-Setup
 * MAME Arcade Game Fun With A Raspberry Pi | The Developer's Tidbits - http://devtidbits.com/2012/11/26/mame-arcade-game-fun-with-a-raspberry-pi/
 * Raspbian on Raspberry Pi – MAME, MESS, Quake3, NeoGeo, and Cave Story Binaries | Shea Silverman's Blog - http://blog.sheasilverman.com/2012/07/raspbian-on-raspberry-pi-mame-mess-quake3-neogeo-and-cave-story-binaries/
 * mame4all-pi - MAME4all for the Raspberry Pi - Google Project Hosting - http://code.google.com/p/mame4all-pi/
 * MAME | Raspberry Pi - http://www.raspberrypi.org/archives/tag/mame
 * Turn an old CRT Television into a Raspberry Pi Powered MAME Cocktail Cabinet : Getting MAME working - http://www.instructables.com/id/Turn-an-old-CRT-Television-into-a-Raspberry-Pi-Pow/step2/
 * A Straightforward Guide to Arcade Emulation on the Raspberry Pi - Tested - http://www.tested.com/tech/gaming/456272-straightforward-guide-arcade-emulation-raspberry-pi/
 * Overview | Retro Gaming with Raspberry Pi | Adafruit Learning System - http://learn.adafruit.com/retro-gaming-with-raspberry-pi
 * adafruit/Adafruit-Retrogame · GitHub - https://github.com/adafruit/Adafruit-Retrogame
 * Massive Arcade Button with LED - 100mm Red ID: 1185 - $9.95 : Adafruit Industries, Unique & fun DIY electronics and kits - http://www.adafruit.com/products/1185
 * PiMAME | Gaming and Emulators for the Raspbery Pi | Shea Silverman - http://pimame.org/
 * Tutorials - PiMAME | Gaming and Emulators for the Raspbery Pi | Shea Silverman - http://pimame.org/quickstart.html

uinput - Uinput is Linux kernel module which allows attaching userspace device drivers into the Linux kernel. However, its ioctl-interface is pretty low level from an application developer's perspective. This library provides a set of helper functions for making the usage of uinput easier. Libsuinput can be considered thin, because it operates on the same file descriptors as traditional ioctl commands.
 * c - Ensuring that uinput (kernel module) is indeed running/loaded plus some test code - Stack Overflow - http://stackoverflow.com/questions/11899557/ensuring-that-uinput-kernel-module-is-indeed-running-loaded-plus-some-test-cod
 * Getting started with uinput: the user level input subsystem - http://thiemonge.org/getting-started-with-uinput
 * tuomasjjrasanen/libsuinput · GitHub - https://github.com/tuomasjjrasanen/libsuinput
 * Adding Arcade Controls | Retro Gaming with Raspberry Pi | Adafruit Learning System - http://learn.adafruit.com/retro-gaming-with-raspberry-pi/buttons

omxplayer
omxplayer /pub/Gethsemane_Song_Stories_of_Jesus.mp4 omxplayer -o hdmi /path/to/filename.mp4

can play are H264 or Xvid

Full screen: omxplayer -r VIDEOFILE

xterm -fullscreen -fg black -bg black -e omxplayer -o hdmi -r VIDEOFILE

Then right click one of your avi files and select open with, then click custom command line tool, type in: xterm -fullscreen -fg black -bg black -e omxplayer -o hdmi -r %f

Omxplayer Key Bindings: Space or p  Pause/Resume q           Exit OMXPlayer z           Show Info (doesn't appear to work)

-           Decrease Volume +           Increase Volume

i           Previous Chapter o           Next Chapter

Left Arrow  Seek -30 Right Arrow Seek +30 Down Arrow  Seek -600 Up Arrow    Seek +600

1           Increase Speed 2           Decrease Speed

j           Previous Audio stream k           Next Audio stream

n           Previous Subtitle stream m           Next Subtitle stream s           Toggle subtitles d           Subtitle delay -250 ms f            Subtitle delay +250 ms

handbrake-cli handbrake-cli -i outDir -o movie.mp4 -e x264 -q 20 -B 160 -t 1 -q quality -B audio compress rate in Kbps -t title id to convert -e encode format

References:
 * Raspberry Pi • View topic - How to play video on a Pi ? - http://www.raspberrypi.org/phpBB3/viewtopic.php?f=26&t=10419
 * Omxplayer - eLinux.org - http://elinux.org/Omxplayer

you tube
youtube-dl - downloader of videos from YouTube and other sites apt-get install youtube-dl

Updated self: youtube-dl -U

Download a video: youtube-dl http://www.youtube.com/watch?v=vKtwZmhX0lw

Download multiple videos: youtube-dl -a youtube_links.txt

---

Download video: youtube-dl http://www.youtube.com/watch?v=6E2hYDIFDIU

Get video title: youtube-dl --get-title http://www.youtube.com/watch?v=6E2hYDIFDIU

Extract audio: ffmpeg -i 6E2hYDIFDIU.flv 6E2hYDIFDIU.wav

Convert to mp3: lame 6E2hYDIFDIU.wav 6E2hYDIFDIU.mp3

youtube2mp3.sh: # A very simple Bash script to download a YouTube video # and extract the music file from it. address=$1 regex='v=(.*)' if $address =~ $regex ; then video_id=${BASH_REMATCH[1]} video_id=$(echo $video_id | cut -d'&' -f1) video_title="$(youtube-dl --get-title $address)" youtube-dl $address ext="flv" ffmpeg -i $video_id.$ext "$video_title".wav lame "$video_title".wav "$video_title".mp3 rm $video_id.$ext "$video_title".wav else echo "Sorry but the system encountered a problem." fi
 * 1) !/bin/bash

-

Play file directly: youtube-dl -g "http://www.youtube.com/video?v=xyzpdq" | xargs omxplayer -o hdmi

References:
 * Grabbing Your Music from YouTube: Do It Your Way | Linux Journal - http://www.linuxjournal.com/content/grabbing-your-music-youtube-do-it-your-way

---

GPS
Android: Llama, Tasked Tasker, Locale

--

GPS - BlueNEXT GPS USB dongle

Dream Green House • Features • Raspberry Pi - http://dreamgreenhouse.com/features/rpi/gps/index.php

http://dreamgreenhouse.com/features/rpi/gps/bluenext.jpg

Referenced:
 * Raspberry Pi Dashcam Project - http://dreamgreenhouse.com/projects/2013/picar/
 * "We have now successfully added a USB GPS module. The Raspberry Pi does not have a clock by default and we are using the GPS dongle to provide an accurate clock. We also have other plans to use the GPS module for speed and location logging. This part is described in our RPi GPS feature. "

COSM / Xively
COSM used to be Pachube, and is now Xively (by LogMeIn).

Overview | Send Raspberry Pi Data to COSM | Adafruit Learning System - http://learn.adafruit.com/send-raspberry-pi-data-to-cosm/overview
 * "The combination of connecting a Raspberry Pi to COSM makes creating a internet of things much easier than it has been in the past. The Pi with it's easy access to ethernet / WiFi and COSM's drop dead simple usability will graph all sensor data you send to it. This tutorial explains how to connect a analog temperature sensor to the Pi and use a small python script to upload that data for storage and graphing on COSM."

Power Monitoring with hacked Kill-A-Watt
RaspiWatt: discover power consumption using a Kill-A-Watt & Pi - www.raspihub.com/go/393f732cc14546ee0e904c1d434b3568db23dec5eca542961ca32d6317a2a798

rsync
Throttle rsync with: ionice /usr/bin/rsync --progress [SRC] [DEST]

Serial to USB Converter
TRENDnet TU-S9

[319746.693652] usb 1-1.3.4: new full-speed USB device number 34 using dwc_otg [319746.819230] usb 1-1.3.4: New USB device found, idVendor=067b, idProduct=2303 [319746.819268] usb 1-1.3.4: New USB device strings: Mfr=1, Product=2, SerialNumber=0 [319746.819287] usb 1-1.3.4: Product: USB-Serial Controller D [319746.819306] usb 1-1.3.4: Manufacturer: Prolific Technology Inc. [319746.900332] usbcore: registered new interface driver usbserial [319746.902466] usbcore: registered new interface driver usbserial_generic [319746.902639] usbserial: USB Serial support registered for generic [319746.914086] usbcore: registered new interface driver pl2303 [319746.914803] usbserial: USB Serial support registered for pl2303 [319746.914975] pl2303 1-1.3.4:1.0: pl2303 converter detected [319746.928766] usb 1-1.3.4: pl2303 converter now attached to ttyUSB0

/dev/ttyUSB0

X10
"The two dominant standards for powerline transmission are Insteon and X10"

References:
 * X10 Smart House Home Automation Using Debian Linux - http://www.aboutdebian.com/x10.htm
 * Build your own wake-up light alarm using X10, Raspberry Pi & Linux | harmdelaat.com - http://harmdelaat.com/build-your-own-wake-up-light-alarm-using-x10-rapsberry-pi-linux/
 * Home Automation Hardware (X10, Server, etc.) | Do-It-Yourself Home Automation - http://diy-ha.com/home-automation-hardware-x10-server-etc/
 * X10 (industry standard) - Wikipedia, the free encyclopedia - http://en.wikipedia.org/wiki/X10_%28industry_standard%29

heyu
See heyu

mochad
mochad is a Linux TCP gateway daemon for the X10 CM15A RF (radio frequency) and PL (power line) controller and the CM19A RF controller.

echo "pl a1 on" | nc localhost 1099 echo "pl a1 off" | nc locahost 1099

References:
 * Installing mochad on a Raspberry Pi | X10 Linux - http://x10linux.blogspot.com/2012/08/installing-mochad-on-raspberry-pi.html

Arduino IDE
Menu -> Electronics -> Arduino IDE
 * runs the command '/usr/bin/arduino'

3 Packages: arduino - AVR development board IDE and built-in libraries arduino-core - Code, examples, and libraries for the Arduino platform arduino-mk - Program your Arduino from the command line

Installation: apt-get install arduino

If you want to be able to run from the command line: apt-get install arduino-mk # or pip install ino

Getting Started
Open the blink example

Open the LED blink example sketch: File > Examples > 1.Basics > Blink.

http://arduino.cc/en/uploads/Guide/Arduino1Blink.png

A few seconds after the upload finishes, you should see the pin 13 (L) LED on the board start to blink (in orange). If it does, congratulations! You've gotten Arduino up-and-running.

Arduino Getting Started - Windows - http://arduino.cc/en/Guide/Windows

Arduino UNO
[204411.055236] usb 1-1.3.6: new full-speed USB device number 8 using dwc_otg [204411.191446] usb 1-1.3.6: New USB device found, idVendor=2341, idProduct=0043 [204411.191479] usb 1-1.3.6: New USB device strings: Mfr=1, Product=2, SerialNumber=220 [204411.191496] usb 1-1.3.6: Manufacturer: Arduino (www.arduino.cc) [204411.191511] usb 1-1.3.6: SerialNumber: 9523732383435151C091 [204411.261127] cdc_acm 1-1.3.6:1.0: ttyACM0: USB ACM device [204411.267605] usbcore: registered new interface driver cdc_acm [204411.267635] cdc_acm: USB Abstract Control Model driver for USB modems and ISDN adapters
 * 1) dmesg

/dev/ttyACM0

Raspberry Pi vs Arduino
Raspberry Pi and Arduino | Raspberry Pi - http://www.raspberrypi.org/archives/1171
 * "Ultimately, we hope that successful sales of Raspberry Pi will encourage people to buy Arduinos too, and vice versa: the two have what I believe business school-types call “good synergy”."

Raspberry Pi to Arduino Serial Communication
http://4.bp.blogspot.com/--IPvTykhzcw/T51aHWWeIuI/AAAAAAAAAbE/RC2MNbQisBo/s1600/boards_sm.jpg

Arduino Blink Test - When it receives a digit, it flashes the number of times indicated by the digit. const int ledPin = 13;

void setup { pinMode(ledPin, OUTPUT); Serial.begin(9600); }

void loop { Serial.println("Hello Pi"); if (Serial.available) {    flash(Serial.read - '0'); } delay(1000); }

void flash(int n) { for (int i = 0; i < n; i++) {   digitalWrite(ledPin, HIGH); delay(100); digitalWrite(ledPin, LOW); delay(100); } }

There is a Python library for serial communications called 'pySerial' which has history with Arduino.

import serial ser = serial.Serial('/dev/ttyACM0', 9600)

while 1 : ser.readline


 * 1) force a break then test sending...

ser.write('5')

A simple UI with Python and GTK
 * 

References:
 * Dr. Monk's DIY Electronics Blog: Raspberry Pi and Arduino - http://www.doctormonk.com/2012/04/raspberry-pi-and-arduino.html
 * Dr. Monk's DIY Electronics Blog: Raspberry Pi meets Arduino - part 2 - http://www.doctormonk.com/2012/07/raspberry-pi-meets-arduino-part-2.html
 * Arduino Playground - Python - http://playground.arduino.cc/Interfacing/Python

Pandora Internet Radio
Instructables - Arduino / Raspberry Pi Internet Radio - http://www.instructables.com/id/Arduino-Raspberry-Pi-Internet-Radio/
 * Raspberry Pi runs mpd music player daemon to receive and decode the internet radio stream.
 * ALSA running on the Raspberry Pi provides the sound through either the Jack Socket or the HDMI output.
 * We want to control the Radio from the Buttons on the Arduino and we want to see which Radio Station we're listening to on the LCD display.

--

Note: Pidora - is not what we are looking for!

pianobar
pianobar - console based player for Pandora radio

Install and Configure: apt-get install pianobar

mkdir -p ~/.config/pianobar

cat > ~/.config/pianobar/config << "EOF" user = [USERNAME] password = [PASSWORD] tls_fingerprint = 2D0AFDAFA16F4B5C0A43F3CB1D4752F9535507C0 autostart_station = 713040038180498234 EOF

amixer cset numid=3 1
 * 1) make sure audio is going to audio jack

pianobar

---

Control Piano Bar mkfifo ~/.config/pianobar/ctl

New song: echo -n 'n' > ~/.config/pianobar/ctl

Another example: while true; do; nc -l -p 12345 -s localhost localhost > ~/.config/pianobar/ctl; sleep 1; done

echo -ne 'n\x1a' | nc -q 0 127.0.0.1 12345

---

Autostart a station: autostart_station = 713040038180498234

When you run pianobar, and you select a station it says |> Station "{station name}" ({station number}) I believe you just copy {station number} and replace 123456 in the example with that.

---

Error about fingerprint:

Get fingerprint: openssl s_client -connect tuner.pandora.com:443 < /dev/null 2> /dev/null | \ openssl x509 -noout -fingerprint | tr -d ':' | cut -d'=' -f2

Another: fingerprint=`openssl s_client -connect tuner.pandora.com:443 < /dev/null 2> /dev/null | openssl x509 -noout -fingerprint | tr -d ':' | \ cut -d'=' -f2` && echo tls_fingerprint = $fingerprint >> ~/.config/pianobar/config

---

Finally, enter the following command to make sure audio is routed to the headphone jack rather than the HDMI port (you can skip this step if using a USB audio device): sudo amixer cset numid=3 1

---

Configuration examples:
 * https://github.com/PromyLOPh/pianobar/blob/master/contrib/config-example

---

Wireless Raspberry Pi Radio: Pianobar - Instructables - http://www.instructables.com/id/Wireless-Raspberry-Pi-Radio-Pianobar/

Pandora's Box - An Internet Radio player made with a Raspberry Pi! - Instructables - http://www.instructables.com/id/Pandoras-Box-An-Internet-Radio-player-made-with/

Turning your raspberry pi into a remote Pandora music box, part 1 | Claire Vo Lawless - http://clairevo.com/post/47546482645/turning-your-raspberry-pi-into-a-remote-pandora-music

handle_hc_chhltd_intr_dma - DMA Mode - ChHltd set, but reason for halting is unknown
[ 247.414548] ERROR::handle_hc_chhltd_intr_dma:2592: handle_hc_chhltd_intr_dma: Channel 7, DMA Mode -- ChHltd set, but reason for halting is unknown, hcint 0x00000012, intsts 0x04400001 [ 345.628872] ERROR::handle_hc_chhltd_intr_dma:2592: handle_hc_chhltd_intr_dma: Channel 1, DMA Mode -- ChHltd set, but reason for halting is unknown, hcint 0x00000012, intsts 0x04400001 [ 5688.587194] ERROR::handle_hc_chhltd_intr_dma:2592: handle_hc_chhltd_intr_dma: Channel 5, DMA Mode -- ChHltd set, but reason for halting is unknown, hcint 0x00000012, intsts 0x04600001 [ 5764.631908] cp210x ttyUSB3: cp210x_open - Unable to enable UART [ 5767.213534] cp210x ttyUSB3: cp210x_open - Unable to enable UART [ 5768.516800] cp210x ttyUSB3: cp210x_open - Unable to enable UART [ 5771.479220] cp210x ttyUSB2: cp210x_open - Unable to enable UART [ 5773.653528] cp210x ttyUSB2: cp210x_open - Unable to enable UART


 * Raspberry Pi • View topic - ERROR::handle_hc_chhltd_intr_dma:2537: - http://www.raspberrypi.org/phpBB3/viewtopic.php?t=49840
 * Raspberry Pi • View topic - [SOLVED] Wireless no longer working - latest kernel? - http://www.raspberrypi.org/phpBB3/viewtopic.php?t=49223
 * Raspberry Pi • View topic - Wired network disconnect when samba transfer is initiated - http://www.raspberrypi.org/phpBB3/viewtopic.php?t=49902

This channel is already in use, continuing anyway
python gpio_test_script.py RuntimeWarning: This channel is already in use, continuing anyway. Use GPIO.setwarnings(False) to disable warnings.

The pins are configured in a bad state at boot. The first time you run any of script using a GPIO pin you will get this error.

At the begging: GPIO.setwarnings(False)
 * 1) Alerts OFF

At the end: try: main finally: GPIO.cleanup

"It's all to do with Linux "exporting" the gpio to be visible to a user, so an ordinary user can read and write the gpio. The external program should have "unexported" the gpio when it was finished." 

View of Model A
http://upload.wikimedia.org/wikipedia/commons/4/45/Raspberry_Pi_-_Model_A.jpg

View of Model B
http://upload.wikimedia.org/wikipedia/commons/3/3d/RaspberryPi.jpg?breakwiki=.xxx

Remote Desktop Sharing
sudo apt-get install dconf-editor dconf-editor # as pi user, org -> gnome -> desktop -> remote access -> [ ] encryption

sudo apt-get install vino vino-preferences

RPi VNC Screen Sharing - eLinux.org - http://elinux.org/RPi_VNC_Screen_Sharing

---

sudo apt-get install vino dconf-editor

gsettings set org.gnome.Vino require-encryption false gsettings set org.gnome.Vino prompt-enabled false gsettings set org.gnome.Vino authentication-methods "['none']"
 * 1) as pi user...


 * 1) sudo su -
 * 2) cat > /etc/sudoers.d/vsrv.sh << "EOF"
 * 3) #!/bin/bash
 * 4) /usr/lib/vino/vino-server
 * 5) EOF
 * 6) chmod +x /etc/sudoers.d/vsrv.sh
 * 7) cat >> /etc/xdg/lxsession/LXDE/autostart << "EOF"
 * 8) @/etc/sudoers.d/vsrv.sh
 * 9) EOF
 * 1) EOF

sudo su - cat > /etc/xdg/autostart/vino-server.desktop << "EOF" [Desktop Entry] Name=Desktop Sharing Comment=GNOME Desktop Sharing Server Exec=/usr/lib/vino/vino-server Terminal=false Type=Application X-GNOME-Autostart-Phase=Applications X-GNOME-AutoRestart=true NoDisplay=true EOF

RPi VNC Screen Sharing - eLinux.org - http://elinux.org/RPi_VNC_Screen_Sharing

Disable pi password warning
SSH is enabled and the default password for the 'pi' user has not been changed. This is a security risk - please login as the 'pi' user and type 'passwd' to set a new password.

Solution:
 * remove /etc/profile.d/sshpasswd.sh (now /etc/profile.d/sshpwd.sh)

Disable wifi warning

 * remove /etc/profile.d/wifi-country.sh

Upgrade Jessie to Stretch
apt-get update apt-get upgrade apt-get dist-upgrade

dpkg -C apt-mark showhold

dpkg --audit dpkg --get-selections | grep hold

sudo rpi-update

sed -i 's/jessie/stretch/g' /etc/apt/sources.list

grep -lnr jessie /etc/apt

apt-get update

apt-get --simulate upgrade

apt-get upgrade apt-get dist-upgrade

apt-get autoremove apt-get autoclean

rpi-update

cat /etc/os-release reboot

References:
 * Raspbian GNU/Linux upgrade from Jessie to Raspbian Stretch 9 - LinuxConfig.org - https://linuxconfig.org/raspbian-gnu-linux-upgrade-from-jessie-to-raspbian-stretch-9
 * How to Upgrade Debian 8 (Jessie) to 9 (Stretch) safely - https://www.howtoforge.com/tutorial/how-to-upgrade-debian-8-jessie-to-9-stretch/
 * Upgrade Raspbian Jessie to Stretch - bad.robot - http://baddotrobot.com/blog/2017/10/26/upgrade-raspian-jessie-to-stretch/

tmpfs
Extending the life of your Raspberry PI SD Card - Domotic Project

https://domoticproject.com/extending-life-raspberry-pi-sd-card/

4.1 /run and /run/lock 4.2 /dev/shm 4.3 /var and /var/tmp 4.4 /var/log 4.5 /var/www/html 4.6 /var/lib/weewx 4.7 /var/lib/upsd

tmpfs
Extending the life of your Raspberry PI SD Card - Domotic Project

https://domoticproject.com/extending-life-raspberry-pi-sd-card/

4.1 /run and /run/lock 4.2 /dev/shm 4.3 /var and /var/tmp 4.4 /var/log 4.5 /var/www/html 4.6 /var/lib/weewx 4.7 /var/lib/upsd

Under Voltage Warning
If the Red Power LED is not illuminated this means the supply voltage is inadequate. (The newer Pi have a well engineered power circuit, and may continue to function even if the input voltage is below spec; the same may not be true of peripherals). The GUI had an rainbow indicator (replaced by a lightning bolt) which comes up in the top right if the voltage is inadequate. This has a 3 second timer, and may display even if the LED appears to be lit.

NOTE the Red Power LED on the Pi3B+ only functions if the SD Card/USB key has up to date firmware because it is controlled by software - it is meaningless otherwise.

-

Check throttled, due to under voltage:

vcgencmd get_throttled

-

root@mypi:~# vcgencmd get_throttled throttled=0x50005

The 5 on the left means it has been throttled before (since boot), and the 5 on the right means it is currently throttled.

-

root@mypi:~# vcgencmd get_throttled throttled=0x50000

The 5 on the left means it has been throttled before (since boot), and the 0 on the right means it is currently not throttled.

-

root@mypi:~# vcgencmd get_throttled throttled=0x0

This means it has never throttled (since boot).

-

$ vcgencmd get_throttled throttled=0x50005

The bits represent:

0101 0000 0000 0000 0101 0: under-voltage 1: arm frequency capped 2: currently throttled 16: under-voltage has occurred 17: arm frequency capped has occurred 18: throttling has occurred

under-voltage occurs when voltage drops below 4.63V. The Pi is throttled arm frequency capped occurs with temp > 80'C over-temperature occurs with temp > 85'C. The Pi is throttled

Throttling removes turbo mode, which reduces core voltage, and sets arm and gpu frequencies to non-turbo value. Capping just limits the arm frequency (somewhere between 600MHz and 1200MHz) to try to avoid throttling. If you are throttled and not under-voltage then you can assume over-temperature. (confirm with vcgencmd measure_temp).

So 0x50005 means you are currently under-voltage and throttled

Ref:

-

You can not monitor voltage, because the Pi has no analog capability. (You could, of course, add an ADC to monitor the voltage.)

The under-voltage warning is produced by a chip, and is ON or OFF. See Raspberry Pi Power Limitations (http://raspberrypi.stackexchange.com/questions/51615/raspberry-pi-power-limitations) for details.

vcgencmd get_throttled will show the current state. You may be able to write something to monitor this, but AFAIK there is nothing currently available. See the following for detail https://www.raspberrypi.org/forums/viewtopic.php?f=63&t=147781&start=50#p972790

https://raspberrypi.stackexchange.com/a/72473

-

Troubleshooting power problems - https://elinux.org/R-Pi_Troubleshooting#Troubleshooting_power_problems

Test between TP1 and TP2 (test points). You should see a voltage between 4.75 and 5.25 volts

https://elinux.org/images/thumb/d/d1/RPI_Test_Points.JPG/400px-RPI_Test_Points.JPG

Monitoring Power and Thermal Issues
$ vcgencmd measure_clock core frequency(1)=250000000

$ vcgencmd measure_volts core volt=1.2000V

$ vcgencmd measure_temp temp=42.2'C

$ vcgencmd get_throttled throttled=0x50000

1110000000000000010
 * |||_ under-voltage
 * ||_ currently throttled
 * |_ arm frequency capped
 * _ under-voltage has occurred since last reboot
 * _ throttling has occurred since last reboot
 * _ arm frequency capped has occurred since last reboot

Ref: https://harlemsquirrel.github.io/shell/2019/01/05/monitoring-raspberry-pi-power-and-thermal-issues.html

vcgencmd commands
List commands:
 * 1) vcgencmd commands

$ vcgencmd measure_clock arm && vcgencmd measure_temp && vcgencmd get_throttled frequency(45)=600064000 temp=36.5'C throttled=0x0

Running at 600 Mhz

Ref: https://elinux.org/RPI_vcgencmd_usage