Differences between revisions 11 and 14 (spanning 3 versions)
Revision 11 as of 2017-04-12 12:49:27
Size: 17190
Editor: asbesto
Revision 14 as of 2017-04-12 18:35:12
Size: 17220
Editor: asbesto
Deletions are marked like this. Additions are marked like this.
Line 2: Line 2:
#acl FreaknetGroup:read,write,admin,delete,revert All: #acl FreaknetGroup:read,write,admin,delete,revert All:read
Line 356: Line 356:

Raspberry setup by Asbesto

A solid setup for a raspberry sending videos / slideshow, can be rebooted / accessed by remote vpn, and make coffee.

This is for Rasp PI 3, quad core.

Howto about video / slideshow

  • .mp4 files goes ONLY INTO /home/pi/video
  • Pictures goes ONLY INTO /home/pi/foto

A script generate the video list to go on play, reading that dir /home/pi/video and creating a new list every X minutes or at every reboot.

so every added video will be added to the playlist.

To play only a particular video you must remove all others.


* ffprobe doesn't exist because DEBIAN SHIT, it was named avprobe. so dur.sh didn't worked. so listamp4.sh didn't generate any list. PORCODIO! changing ffprobe in avprobe inside dur.sh fixed everything.


  • Based on Raspbian
  • All standard repo's
  • Disk image ready with everything, <3GB

  • READ ONLY boot partition to avoid shit on the FS in case of brutal poweroff. But so, crontab doesn't work, "at" also maybe not. TO BE CHECKED
  • Simple network config in /etc/network/interface. Nothing else needed.
  • Very simple startup bash script that launch everything. Other scripts in /home/pi/shells/
  • Network config via ETH0 o WLAN0, cable o wifi.
  • Automatic hostname as "raspamiXX" where XX = last number of the wlan0 IP address (same can be done with eth0)
  • USB wifi dongles already configured with their own firmware etc.
  • Implement a wifi scanner
  • Screensaver & screen blanking disabled

  • Automatic network check: if disconnected, reboot network subsystem, checking every 2 minutes.
  • VPN access / mosh / screen
  • VNC access under VPN :)

  • Chromium installed
  • ansible and recipes to mod every rasp in the network
  • USB wifi dongles configured without the FUCKING POWERSAVING MODE.


  • underclock sistema? non necessario al momento, non serve a un cazzo-
  • VPN gestita interamente dai nostri server (zaverio.com) (voyanet cmq e' affidabile ed io sono root su una macchina apposita, quindi non so quanto

questo sia necessario)

  • Mplayer accelerato per rasp pi: fare check su quei 2 link che sono spariti
  • Test su programma in PYTHON per controllare OMXPlayer, che PARE usi addirittura OSC per fare solo POCHE cose.
  • Check telecamerina del raspberry e test di streaming audio/video


USER pi, PW vivabasaglia. Root pw is "ciaras".

System boots and launch /home/pi/shells/start.sh - from there, everything starts.

Automagic check for network up/down

Every 2 minutes this piece of shit check for network and eventually put it on again.

It's in background with "sleep 120" because here NO crontab due to the RO fs.

<pre> #!/bin/bash while (true); do

  • x=ping -c2 google.com 2>&1 | grep unknown if [ ! "$x" = "" ]; then

    • echo date >> /home/pi/netcheck.log echo "Line is down. restarting..." >> /home/pi/netcheck.log service networking restart echo "done" >>/home/pi/netcheck.log


sleep 120 done </pre>

This script is named netcheck, in /usr/local/sbinand starts from /etc/rc.local:

<pre> # into rc.local nohup /usr/local/sbin/netcheck & </pre>

Hostname with last IP number in it

The script is "ultimo" in /usr/local/sbin/ultimo:

<pre> #!/bin/bash # # in base all'ultimo numero dell'IP del wifi, crea /etc/hostname. # IP=ifconfig wlan0 | grep addr: | sed 's/.*inet *//; s/ .*//' cn=$(awk -F. '$0=$4' <<< $IP) echo "raspami"$cn > /etc/hostname </pre>

and start from /etc/rc.local:

<pre> # change /etc/hostname adding last IP number from wifi /usr/local/sbin/ultimo & </pre>


We use Voyager's vpn :)

VPN install on rasp

<pre> sudo apt-get install openvpn </pre>

next, copy the .conf file already prepared with all certs etc. (ex. for rasp number 50 use 50.conf)

after that

<pre> openvpn ./50.conf </pre>

or copy 50.conf into /etc/openvpn/client.conf

and launch from /etc/rc.local

<pre> service openvpn start </pre>

VPN on our computers

Same shit but using our personal certs.

VNC server/client install and usage

A teamviewer-like piece of shit, very handy!

VNC installation on raspberry

Look https://www.raspberrypi.org/documentation/remote-access/vnc/

<pre> sudo apt-get install tightvncserver </pre>

and launch tightvncserver to configure it, here you give a password that you will need to access.

in ~/shells/start.sh I added

<pre> vncserver :1 & </pre>

VNC installation on our computers

<pre> sudo apt-get install xtightvncviewer </pre>

so just launch

<pre> vncviewer </pre>

put the pw and desktop appears. END OF SHIT

Installazione ansible, e modo d'uso

*TODO - TODO - e' stato fatto ma e' da documentare.*

Ansible recipe to configure all raspberry

that's is /home/pi/pi.yml


<pre> --- - hosts: pi

  • remote_user: pi sudo: yes tasks: # netcheck # # files to be added # - copy: src=/usr/local/sbin/netcheck dest=/usr/local/sbin/netcheck owner=root group=staff mode=0755 - copy: src=/usr/local/sbin/ultimo dest=/usr/local/sbin/ultimo owner=root group=root mode=0755 - copy: src=/etc/modprobe.d/8192cu.conf dest=/etc/modprobe.d/8192cu.conf owner=root group=root mode=0644 - copy: src=/etc/rc.altrirasp dest=/etc/rc.local owner=root group=root mode=0755 # # Line to be added in /etc/rc.local # # - lineinfile: dest=/etc/rc.local state=absent regexp="exit 0"

    # - lineinfile: dest=/etc/rc.local line="nohup /usr/local/sbin/netcheck &" # - lineinfile: dest=/etc/rc.local line="exit 0" # # Stuff to install/remove # # - name: nmap installation # apt: name=nmap state=present - name: reboot

    • command: /sbin/reboot



LAUNCH with:

<pre> ansible-playbook --ask-pass ./pi.yml </pre>

For a single ip, ex. il, use

<pre> ansible-playbook --ask-pass -l ./pi.yml </pre>

IP must be configured into /etc/ansible/hosts, as follow:

<pre> # This is the default ansible 'hosts' file. # # It should live in /etc/ansible/hosts # # - Comments begin with the '#' character # - Blank lines are ignored # - Groups of hosts are delimited by [header] elements # - You can enter hostnames or ip addresses # - A hostname/ip can be a member of multiple groups

# Ex 1: Ungrouped hosts, specify before any group headers.

[pi] 10.0.1.[51:99] ansible_ssh_user=pi # </pre>

Disk settings

I made the sdcard as a 4GB one, also if is 32gb. To copy it:

<pre> dd if=/dev/sdb of=milano2.img bs=4096 count=1048576 </pre>

Now it is as follow:

<pre> pi@raspami1 ~ $ cat /etc/fstab proc /proc proc defaults 0 0 /dev/mmcblk0p1 /boot vfat defaults,ro 0 2 /dev/mmcblk0p2 / ext4 defaults,rw,noatime 0 1 /dev/mmcblk0p3 /home ext4 rw,nosuid,nodev,relatime,data=ordered 0 0 tmpfs /tmp tmpfs defaults 0 0

(parted) print all Model: SD SL32G (sd/mmc) Disk /dev/mmcblk0: 31.9GB Sector size (logical/physical): 512B/512B Partition Table: msdos

Number Start End Size Type File system Flags

  • 1 4194kB 62.9MB 58.7MB primary fat16 2 62.9MB 2943MB 2880MB primary ext4 3 2943MB 4277MB 1334MB primary ext4

root@raspami1:/home/pi# mount /dev/root on / type ext4 (rw,noatime,data=ordered) devtmpfs on /dev type devtmpfs (rw,relatime,size=470368k,nr_inodes=117592,mode=755) tmpfs on /run type tmpfs (rw,nosuid,noexec,relatime,size=94936k,mode=755) tmpfs on /run/lock type tmpfs (rw,nosuid,nodev,noexec,relatime,size=5120k) proc on /proc type proc (rw,nosuid,nodev,noexec,relatime) sysfs on /sys type sysfs (rw,nosuid,nodev,noexec,relatime) tmpfs on /run/shm type tmpfs (rw,nosuid,nodev,noexec,relatime,size=189860k) devpts on /dev/pts type devpts (rw,nosuid,noexec,relatime,gid=5,mode=620,ptmxmode=000) /dev/mmcblk0p1 on /boot type vfat (ro,relatime,fmask=0022,dmask=0022,codepage=437,iocharset=ascii,shortname=mixed,errors=remount-ro) /dev/mmcblk0p3 on /home type ext4 (rw,nosuid,nodev,relatime,data=ordered) tmpfs on /tmp type tmpfs (rw,relatime) root@raspami1:/home/pi#

root@raspami1:/home/pi# df -h Filesystem Size Used Avail Use% Mounted on rootfs 2.6G 2.0G 467M 82% / /dev/root 2.6G 2.0G 467M 82% / devtmpfs 460M 0 460M 0% /dev tmpfs 93M 264K 93M 1% /run tmpfs 5.0M 0 5.0M 0% /run/lock tmpfs 186M 0 186M 0% /run/shm /dev/mmcblk0p1 56M 15M 42M 26% /boot /dev/mmcblk0p3 1.2G 129M 1.1G 12% /home tmpfs 464M 12K 464M 1% /tmp </pre>

Using gparted you can resize it as you need.


Ethernet: eth0, fixed.

Login: user pi, pw vivabasaglia. sudo give root. pw root: ciaras

Wifi: wlan0 and up, gw


in /etc/network/interfaces SET JUST ONE GW, OTHERWHISE 2nd network card (wlan0) won't start!


Make our distro compatible for arm 7 -> arm 8

<pre> sudo apt-get update sudo apt-get upgrade sudo apt-get dist-upgrade sudo apt-get install raspberrypi-ui-mods

sudo halt </pre>

and reboot.


Edit /boot/cmdline.txt

boot log:


  • console=tty3


instead of tty1

NO: better have logs to understand if it's booting or not. I left only loglevel=3 & logo.nologo

Fuck the logo: add at the end

  • loglevel=3 logo.nologo


Actually /boot/cmdline.txt is like that:


  • dwc_otg.lpm_enable=0 console=ttyAMA0,115200 kgdboc=ttyAMA0,115200 console=tty1 root=/dev/mmcblk0p2 rootfstype=ext4 elevator=deadline rootwait loglevel=3 logo.nologo


== lxde startup and HOW THEY'RE SON OF BITCHES ===

THOSE RASPBIAN BASTARDS CHANGED LXDE in LXDE-pi INTO ~/.config/lxsession so autostart didn't worked.



It's from there that I launch ~/shells/start.sh ;)

WIFI dongle


From here you download the zip file, inside is the fucking firmware.

The .bin goes in /lib/firmware/rtlwifi

Next you need the correct driver according to the kernel: https://www.raspberrypi.org/forums/viewtopic.php?p=462982

For our kernel, Linux raspami1 3.18.7-v7+ #755 SMP PREEMPT Thu Feb 12 17:20:48 GMT 2015 armv7l GNU/Linux

the correct firmware is

3.18.7-v7+ #755, #756 - 8188eu-v7-20150212.tar.gz

So, from root:

<pre> wget https://dl.dropboxusercontent.com/u/80256631/8188eu-v7-20150212.tar.gz tar xzf 8188eu-v7-20150212.tar.gz ./install.sh </pre>

and reboot!

Old notes

<pre> wget https://dl.dropboxusercontent.com/u/80256631/8188eu-20140307.tar.gz //make sure you use the correct dropbox url for your Raspberry version tar -zxvf 8188eu-20140307.tar.gz sudo cp rtl8188eufw.bin /lib/firmware/rtlwifi //not needed anymore if your operating system is above 3.10.33+ sudo install -p -m 644 8188eu.ko /lib/modules/3.10.33+/kernel/drivers/net/wireless sudo insmod /lib/modules/3.10.33+/kernel/drivers/net/wireless/8188eu.ko sudo depmod -a sudo reboot </pre>

WIFI Scanner

Get rid of LXDE background, putting a black background

Remove from background, and put it black. You do it from X. After that, from desktop options, remove trash icon, so now you have to just kill the panel.

Killing the panel

Kill lxpanel. If you need it again, relaunch with lxpanel --profile LXDE-pi : launch directly ~/shells/panel.sh

BLANK SCREEN disabling

<pre> xset -dpms xset s noblank xset s off </pre>

it's into ~/shells/start.sh

solve SLOW SSH

One workaround is to edit /etc/sshd_config on the sshd server machine, not your ssh client machine to set "UseDNS" to "no". (From the way you originally wrote your question, it sounded like you may have edited that file on your client, which wouldn't make a difference.)

Another solution would be to have your ISP (or whatever institution is responsible for your publicly-routable IP addresses) fix their reverse-DNS record for your IP address on their DNS name servers that are authoritative for the reverse-DNS records for that block of IP addresses. In other words, "make it so people can find your host name based on your IP address, and make sure the hostname they find maps back to your IP address". 7 mins · Unlike · 1

Set into ssh config: UseDNS no

HIDE X cursor after some seconds of inactivity

<pre> sudo apt-get install unclutter unclutter -display :0 -noevents -grab </pre>

Automagic wifi connection

Our wifi:

Edimax EW-7811Un 150Mbps 11n Wi-Fi USB Adapter, Nano Size Lets You Plug it and Forget it, Ideal for Raspberry Pi, Supports Windows, Mac OS, Linux

IDEAL this DICK!!!



GET RID OF POWERSAVING on wifi dongles!!!

With "lsmod" we see we have this driver:

<pre> 8192cu 528365 0 </pre>

Create /etc/modprobe.d/8192cu.conf with:

<pre> # Disable power saving, FFS! options 8192cu rtw_power_mgnt=0 rtw_enusbss=1 rtw_ips_mode=1 </pre>

and reboot / reload driver.

Network configuration

Put this in etc/network/interfaces

<pre> # ultima config testata, funziona, tira su tutto auto lo iface lo inet loopback

up eth0 allow-hotplug iface eth0 inet static

  • address # ogni schedino col suo IP ovviamente netmask # non usarlo! gateway # nota: un solo gw per le interfacce # altrimenti non sale la rete wifi!

auto wlan0 allow-hotplug iface wlan0 inet static

  • address netmask broadcast gateway dns-nameservers wpa-ssid KIP01 wpa-psk vivabasaglia


and REMOVE /etc/wpa_supplicant/wpa_supplicant.conf


<pre> apt-get install feh feh --recursive --randomize --auto-zoom -D 20 -F ./slideshow/ </pre>

-D delay, -F fullscreen. GIF not supported!

LIGHT problem in raspberry PI 2

U16 is sensible to light. Cover it!.


Sistema in READ ONLY?


Only /boot for now is read only, /tmp is in tmpfs ramdisk, with some /var links. So crontab is volatile.

MAYBE we can put crontab symlinks on /boot so we can have a fixed crontab to be modified into /boot.

HDMI port always ON

WE NEED THIS Because if we don't have hdmi active, the raspberry switches itself on the crappy video out connector.

Add these two lines to */boot/config.txt* and reboot Raspbmc:

<pre> hdmi_force_hotplug=1 hdmi_drive=2 </pre>

SDCARD duplication

image is milano2.img

  • Insert sdcard into the pc
  • sudo dd if=milano2.img of=/dev/sdb bs=4096
  • eject / reinsert it
  • sudo gparted /dev/sdb
  • expand /home partition to the maximum
  • exit from gparted
  • sudo joe /mountpoint/schedina/etc/network/interfaces and CHANGE WLAN IP WITOUTH CHANGING EVERYTHING ELSE.
  • sync, umount


~~~~ CategoryMuseo

Museo/RaspberrySetup (last edited 2020-01-26 16:47:43 by asbesto)