Cubieboard2 huis
IP: 192.168.5.248 CPU: 2x1GHz, RAM: 1GB, LAN: 1Gb
Functies:
- Data schijf voor video
- MQTT server
- I/O board uitlezen met GPIO_mqtt.py via MQTT
Aangesloten:
- Wordt gevoed via Cubie 12V-5V converter naar USB
- 120GB SSD schijf via SATA
- JeeLink 868MHz met JeeLink_mqtt.py
- UPS
Verouderd: Cubieboard2 interfaces Om GPIO uit te lezen van de Cubieboard, is gebruik gemaakt van WiringPi. Deze heb ik aangepast voor de Cubieboard2. Maar dit is niet meer nodig, het wordt nu gedaan met een een generieke wiringPi-python module en MQTT.
Cubieboard debian installeren op Cubieboard2
Keuze van Debian distro
Als eerste, waarom de Debian versie van Igor.
Opmerkingen bij Cubian is:
- dat de documentatie goed is: github.com/cubieplayer/Cubian en bij Domotiga.nl
- de installatie scripts goed zijn (om naar SATA over te schakelen bv)
- Er zit een fout bij Cubian update
- Cubian is Debian V7-Wheezy en kan niet naar V8-Jessie geüpgraded worden. De packages voor Cubian staan op: http://packages.cubian.org/dists/
- Upgraden naar Jessie geeft compatibiliteitsproblemen met de Kernel en udev. Udev mist bepaalde opties in de kernel.
Opmerkingen bij igorpecovnik’s CTDebian_2.4_wheezy is:
- Er is een Jessie (Debian V8) versie van.
- De ontwikkeling lijkt door te gaan, van Cubian lijkt het stil te staan.
- de installatie scripts goed zijn (om naar SATA over te schakelen bv)
- Linux update proces is beter Na eerst ontwikkeling gedaan te hebben met Cubian, ben ik later overschakeld naar Debian van Igor
Hardware Specs CubieBoard2
Power connector: 4.0mm (external diameter) x 1.7mm barrel, Adapter: 5V-2A (1A zonder SATA)
- AllWinnerTech SOC A20?ARM Cortex?-A7 Dual-Core ARM Mali400 MP2 Complies with OpenGL ES 2.0/1.1
- 1GB DDR3 480MHz
- 3.4GB internal NAND flash, up to 64GB on SD slot, up to 2T on 2.5 SATA disk
- 5VDC input 2A or USB otg input
- 1x 10⁄100 ethernet, support usb wifi
- 2x USB 2.0 HOST, 1x mini USB 2.0 OTG, 1x micro sd
- 1x HDMI 1080P display output
- 1x IR, 1x line in, 1x line out
- 96 extend pin interface, including I2C, SPI, RGB/LVDS, CSI/TS, FM-IN, ADC, CVBS, VGA, SPDIF-OUT, R-TP, and more
Status huidige Cubieboard installatie
De file N:\Projecten\HuisAutomatisering\Backup\Cubieboard2\Firmware\Cubieboard-installed 30-12-2018-sdcard-boot-only.img bevat een volledig geconfigureerde server. Hier zit in:
- Alle verhuisde services naar RPi-HomeLogic server zijn uitgeschakeld: jeelink, upsread, telegram/home_logic
- Als de SATA drive problemen geeft, wordt er toch doorgestart (fstab: /dev/sda1: defaults,nofail)
- Het VGA scherm is weer leesbaar op resolutie: 1280x1024 ipv 1920x1080
- CB2-Live wordt met de SATA disk gebruikt als fileserver
- Reserve serverboard is ingezet, omdat in de oude een stukje plastic zit/zat waardoor de powerplug er niet in kon.
- Check_MK client is toegevoegd
SD kaart volume vergroten na wegschrijven image
https://elinux.org/Beagleboard:Expanding_File_System_Partition_On_A_microSD
sudo fdisk /dev/mmcblk0
#Verwijder oude partitie en maak een nieuwe grote aan: p, d, n, p, 3x<enter>
#Bekijk nieuwe partitie: p
#Schrijf deze weg: w
#Bij foutmelding als de / was gemount,
sudo reboot
#Na reboot
resize2fs /dev/mmcblk0p1
Installatie van Debian
Hieronder staan de installatie stappen voor een schoon systeem.
Stap 1: Downloaden
->Downloaden van image op www.armbian.com/cubieboard-2 (oude link: www.igorpecovnik.com) Ik gebruik nu Cubieboard2_Debian_3.8_wheezy_3.4.107
Stap 2: Image naar uSD kaart schrijven
De bijgeleverd imagewriter.exe werkt niet (ziet de SD kaart niet), dus gebruik ik Win32DiskImager ->Schrijf de Cubieboard2_Debian_3.8_wheezy_3.4.107.raw file naar de SD disk met Win32DiskImager
Stap 3: Inloggen via SSH
->De image start standaard op met DHCP, dus het IP nr opzoeken met Advanced IP Scanner ->Login met Putty op dit IP nr met user root wachtwoord 1234 ->Het wachtwoord moet direct gewijzigd worden
Stap 4: Configureren
Installeren van vim
apt-get install vim
Wijzig IP adres van DHCP naar statisch
# vi /etc/network/interfaces
auto eth0
iface eth0 inet static
address 192.168.5.246
netmask 255.255.255.0
gateway 192.168.5.1
# service networking restart
Login weer in met Putty op het nieuwe IP adres
Public key toevoegen aan .ssh om automatisch in te loggen Zie handleiding in Evernote: SSH / Putty autologin en KeePass
Aliassen toevoegen Zet in /root/bash.bashrc:
# vi /etc/bash.bashrc
alias pg='ps -ef|grep'
alias vi='vim'
alias ll='ls -l --color'
alias ls='ls --color'
Board ID tonen bij SSH login Foutje in het setten van de armhwinfo. Er wordt Micro getoond ipv Cubieboard2 Dit is te wijzigen in:
# vi [/etc/init.d/armhwinfo](file:///C:/Users/Arjan/Dropbox/ZimNotes/etc/init.d/armhwinfo)
Op regel 69
elif [ "$MEMTOTAL" = 1 ]; then
ID=$HOSTNAME #AW!! was "Micro"
else
ID="Cubieboard"
VGA activeren Bron: github.com/cubieplayer/Cubian/wiki/VGA-output
Default wordt de /boot/bin/cubieboard2.bin file gepakt bij installatie. Deze wordt dan /boot/script.bin, wijzig deze file als volgt:
# cp script.bin script.bin.org
# bin2fex script.bin script.fex
# vi script.fex
[disp_init]
disp_init_enable = 1
disp_mode = 0
screen0_output_type = 4
screen0_output_mode = 4
screen1_output_type = 2
screen1_output_mode = 14
fb0_framebuffer_num = 2
fb0_format = 10
fb0_pixel_sequence = 0
fb0_scaler_mode_enable = 1
fb1_framebuffer_num = 2
fb1_format = 10
fb1_pixel_sequence = 0
fb1_scaler_mode_enable = 1
# fex2bin /boot/script.fex /boot/script.bin
->Wijzig scherm resolutie in /boot/boot.cmd
# vi /boot/boot.cmd
setenv bootargs console=tty1 root=/dev/mmcblk0p1 rootwait rootfstype=ext4 sunxi_ve_mem_reserve=0 sunxi_g2d_mem_reserve=0 sunxi_no_mali_mem_reserve sunxi_fb_mem_reserve=16 hdmi.audio=EDID:0 disp.screen0_output_mode=EDID:1280x768p60 panic=10 consoleblank=0 enforcing=0 loglevel=1
Met Systemd:
setenv bootargs ¨init=/bin/systemd console=tty1 root=/dev/mmcblk0p1 rootwait rootfstype=ext4 sunxi_ve_mem_reserve=0 sunxi_g2d_mem_reserve=0 sunxi_no_mali_mem_reserve sunxi_fb_mem_reserve=16 hdmi.audio=EDID:0 disp.screen0_output_mode=EDID:1280x768p60 panic=10 consoleblank=0 enforcing=0 loglevel=1¨
En converteer deze daarna naar /boot/boot.scr
# cd /boot
# mkimage -C none -A arm -T script -d boot.cmd boot.scr
I2C bus activeren (/dev/i2c-1 activeren)
# vi /boot/script.fex
[twi1_para]
twi1_used = 1
twi1_scl = port:PB18<2><default><default><default>
twi1_sda = port:PB19<2><default><default><default>
# fex2bin /boot/script.fex /boot/script.bin
# apt-get install i2c-tools
# i2cdetect -y -r 1
Gebruik van HDD, SSD of uSD
Resizen naar grotere SD kaart van 2GB backup img naar grotere SD kaart
$ fdisk /dev/mmcblk0
d ENTER # delete
1 ENTER # partition 1 which is the only one
n ENTER # create new
p ENTER # primary
ENTER # default number is 1
ENTER # default start
ENTER # default end
w ENTER # write to disk
$ reboot
En na de reboot
$ resize2fs /dev/mmcblk0p1
HDD/SSD initialiseren
In het geval dat de SSD schijf nog niet geïnitialiseerd is.
Bereken grootte swap SSD: Totaal: 234441647 sectoren Swap voor 1GB geheugen: 1048576 sectoren Datapartitie: 234441647-1048576=233393071
Bereken grootte swap HDD 1TB: Totaal: 1953525168 Swap voor 1GB geheugen: 1048576 sectoren Datapartitie: 1953525168-1048576=1952476592
Grootte uSD Sandisk 64GB Totaal: 63864569856 sectoren 1% kleiner voor het geval dat de kaart naar een iets kleinere kaart gecloned wordt. Nieuw: 63225924157 sectoren
# fdisk /dev/sda
Aanmaken data partitie
- n - new
- p - primary partition
- 1 - partition nr
- default first sector
- 233393071
Aanmaken swap
- n - new
- p - primary partition
- 2 - partition nr
- default first sector
- default last sector (voor swap)
- t - partition type
- 2 - partition nr
- 82 - Linux swap
Controleren en wegschrijven van partities:
- p - check de partitie tabel
- w - schrijf het weg
# mkfs.ext4 /dev/sda1
# mkswap /dev/sda2
# swapon /dev/sda2
Check resultaat met:
# free
Stap 5: Installeren van Debian in NAND & SATA
Met onderstaande instructies wordt het volgende gedaan en bereikt: 1-uSD installatie naar NAND 2-uSD installatie naar SATA 3-Configuratie, zodat eerst via NAND1 gestart wordt en daarna naar SATA
Hiermee is de uSD kaart niet meer nodig. Als er via uSD opgestart wordt, dan staat /boot op de uSD kaart. Als er via NAND opgestart wordt, dan staat /boot in de NAND
Kortom wat er bereikt wordt is dat er via NAND1 (/boot) opgestart wordt en daarna wordt ipv NAND2 de SATA (sda1) opgestart. Met het uitschakelen van de uSD kaart, wordt voorkomen dat door veroudering en stof de uSD connector problemen geeft en het board niet meer opstart.
1-uSD installatie naar NAND Eerste keer draaien van install script naar NAND
./nand-sata-install
Let op! Het script doet geen fdisk van /dev/nand. Als dit nodig is, maak dan 2 partities in /dev/nand
- /dev/nand1: Primair: +64M
- /dev/nand2: Primair: rest
->uSD kaart eruit halen
Voor de tweede keer draaien van install script naar NAND
./nand-sata-install
2-uSD installatie naar SATA Daarna zelfde script draaien voor de SATA disk, maar eerst een bestand verwijderen, anders wordt er weer een automatische NAND installatie gedaan:
# rm /root/test_textbox
# rm /root/nand_mbr.backup
Nu maar 1 maar draaien van install script naar SATA
./nand-sata-install
->uSD kaart eruit halen
3-Configuratie, zodat eerst via NAND1 gestart wordt en daarna naar SATA Na de reboot is het board opgestart via NAND
# mkdir -p /root/sdcard
# mount /dev/mmcblk0p1 /root/sdcard/
# mkdir -p /root/nand
# mkdir -p /root/nand2
# mount /dev/nand1 /root/nand/
# mount /dev/nand2 /root/nand2/
Wijzig nu de uEnv.txt file, om via de NAND de SATA schijf te booten
# vi /root/nand/uEnv.txt
#nand_root=/dev/nand2 rootwait
Herstart nu het board
reboot
Let op! Hierna werkt de uSD kaart niet meer stand-alone. Deze zal zoeken naar de SATA drive.
Nand directory in /root
# vi /etc/fstab
...
/dev/nand1 /root/nand vfat defaults 0 0
Diverse setttings
Als SATA een SSD disk is
Controleer wat de gebruikte scheduler is:
# cat /sys/block/sda/queue/scheduler
[noop] deadline cfq
Anders wijzig de /etc/sysfs.conf and set block/sda/queue/scheduler van cfq naar noop
Disable Bluetooth en Wifi drivers
Disable startup of bluetooth
update-rc.d bluetooth remove
Comment out the following kernel modules, to prevent loading when starting up:
# vi /etc/modules
hci_uart
gpio_sunxi
#bt_gpio -> bluetooth
#wifi_gpio -> wifi
#rfcomm -> bluetooth
#hidp ->bluetooth
lirc_gpio
sunxi_lirc
#bcmdhd -> wifi
sunxi_ss
Systemwide Crontab
vi /etc/crontab
# m h dom mon dow user command
17 * * * * root cd / && run-parts --report /etc/cron.hourly
25 6 * * * root test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.daily )
47 6 * * 7 root test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.weekly )
52 6 1 * * root test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.monthly )
#
54 * * * * linaro /home/linaro/scripts/periodically/duckdns.sh > /dev/null 2>&1
0 7 * * * linaro /home/linaro/scripts/periodically/motionVideoBackup.sh > /dev/null 2>&1
systemctl restart cron.service
Boot medium weergeven bij inloggen
Voor NAND voeg toe aan einde:
# vi /root/nand2/etc/bash.bashrc
echo Started via NAND
Voor SATA voeg toe aan einde:
# vi /etc/bash.bashrc
echo Started via SATA
Alter/Downclock CPU frequency
Eventueel is de CPU frequency in te stellen
vi /etc/init.d/cpufrequtils
change MAX_SPEED=“1200000” to MAX_SPEED=“960000”
service cpufrequtils restart
OnBoardLeds: http://linux-sunxi.org/Cubieboard/Programming/StatusLEDs 1-Wire: http://linux-sunxi.org/1-Wire I2C: http://linux-sunxi.org/I2Cdev
In /root/nand of /dev/nand1 staat de script.bin, waarin de definities staan. Script.bin is binair, maar kan als volgt gelezen worden als script.fex file:
# bin2fex script.bin script.fex
# fex2bin script.fex script.bin
[gpio_para]
gpio_used = 1
gpio_num = 2
gpio_pin_1 = port:PH20<1><default><default><1>
gpio_pin_2 = port:PH21<1><default><default><1>
Onboard led configuration (script.bin/script.fex)
Original configuration
Green led -> always on Blue led -> board heartbeat
[leds_para]
leds_used = 1
leds_num = 2
leds_pin_1 = port:PH20<1><default><default><0>
leds_name_1 = "green:ph20:led1"
leds_default_1 = 1
leds_pin_2 = port:PH21<1><default><default><0>
leds_name_2 = "blue:ph21:led2"
leds_default_2 = 0
leds_trigger_2 = "heartbeat"
Changed configuration
Green led -> “disk-activity” (SATA and/or USB disk) Blue led -> board heartbeat
[leds_para]
leds_used = 1
leds_num = 2
leds_pin_1 = port:PH20<1><default><default><0>
leds_name_1 = "green:ph20:led1"
leds_default_1 = 0
leds_trigger_1 = "disk-activity"
leds_pin_2 = port:PH21<1><default><default><0>
leds_name_2 = "blue:ph21:led2"
leds_default_2 = 0
leds_trigger_2 = "heartbeat"
Wijzig hostname
# vi /etc/hostname
cb2-live
# vi /etc/hosts
127.0.0.1 localhost cb2-live
::1 localhost cb2-live ip6-localhost ip6-loopback
192.168.5.248 domoticz
192.168.5.249 rpi-video1
192.168.5.250 rpi-video2
Linaro gebruiker
# adduser linaro
# adduser linaro sudo
# visudo
...Aan het einde
*linaro ALL=(ALL) NOPASSWD: ALL*
Locales
dpkg-reconfigure locales
Selecteer nl_NL.UTF8
En als default: en_US.UTF-8
Tijdzone
# dpkg-reconfigure tzdata
Samba drive
Installeer samba:
# apt-get install samba
Maak linaro gebruiker aan voor Samba
# smbpasswd -a linaro
Geef toegang als linaro en root
# vi /etc/samba/smb.conf
[global]
#dos charset = UTF-8
dos charset = CP850
# unix charset = ISO-8859-1
server string = Cubieboard2
workgroup = WORKGROUP
# log level = 10
load printers = No
show add printer wizard = no
load printers = no
printcap name = /dev/null
printing = bsd
disable spoolss = yes
dns proxy = No
#config file = /etc/samba/smb.conf
winbind enable local accounts = no
mangled names=no
[linaro]
path = /home/linaro
# force group = users
valid users = linaro, root
force user = linaro
create mask = 0770
directory mask = 0770
force create mode = 0770
read only = No
case sensitive = No
Cubieboard2 Scripts
git clone ssh://root@192.168.5.244/volume1/git/cubieboard2-scripts.git
cd cubieboard2-scripts/
find . -type f -name "*.sh" -exec chmod +x {} \;
find . -type f -name "*.py" -exec chmod +x {} \;
NFS
Server
apt-get install nfs-kernel-server nfs-common
sudo vi /etc/exports
/home/linaro/hdd/motion 192.168.5.249(rw,sync,no_root_squash,no_subtree_check)
/home/linaro/hdd/motion 192.168.5.250(rw,sync,no_root_squash,no_subtree_check)
/home/linaro/hdd/ 192.168.5.248(rw,sync,no_root_squash,no_subtree_check)
/home/linaro/hdd/ 192.168.5.249(rw,sync,no_root_squash,no_subtree_check)
/home/linaro/hdd/ 192.168.5.250(rw,sync,no_root_squash,no_subtree_check)
/etc/init.d/nfs-kernel-server restart
Client
apt-get install nfs-common
Tijdelijk mounten van een directory, login als user pi: mkdir scripts sudo mount -t nfs cb2-live:/home/linaro/scripts /home/pi/scripts
Om altijd gebruik te kunnen maken van de directory, leg deze vast in fstab: sudo vi /etc/fstab cb2-live:/home/linaro/scripts /home/pi/scripts nfs auto 0 0
SSD fstrim
Bij gebruik van een SSD disk moet in Debian Jessie wekelijks een fstrim commando uitgevoerd worden
sudo vi /etc/cron.weekly/fstrim
#!/bin/sh
fstrim /home/linaro/hdd
sudo chmod +x /etc/cron.weekly/fstrim
Hier staat de pySUNXI install beschrijving
Cubieboard dist-upgrade van Debian Wheezy naar Jessie
Bronnen:
- https://forum.armbian.com/index.php/topic/272-upgrading-from-wheezy-to-jessie/
- https://www.howtoforge.com/tutorial/how-to-upgrade-debian-wheezy-to-jessie-stable-release/
linaro@cb2-live:~$ sudo dpkg -r ramlog
(Reading database ... 48367 files and directories currently installed.)
Removing ramlog ...
[....] Disabling ramlog...insserv: script ramlog.uninst: service ramlog already provided!
. ok
# sudo bash
# cd /etc/apt
# cp sources.list sources.list.bak
# apt-get update
# apt-get upgrade
# apt-get dist-upgrade
# vi /etc/apt/sources.list
deb http://ftp.de.debian.org/debian/ jessie main contrib non-free
deb-src http://ftp.de.debian.org/debian/ jessie main contrib non-free
deb http://httpredir.debian.org/debian jessie-updates main contrib non-free
deb-src http://httpredir.debian.org/debian jessie-updates main contrib non-free
deb http://security.debian.org/ jessie/updates main contrib non-free
deb-src http://security.debian.org/ jessie/updates main contrib non-free
# apt-get update
# apt-get upgrade
# apt-get dist-upgrade
# reboot
Check the update
cat /etc/os-release
Installing Systemd
sudo apt-get install systemd systemd-sysv
Cubieboard2 GPIO met Python
Bron: http://docs.cubieboard.org/tutorials/common/using_python_program_control_gpios
Installeren Login als linaro:
# sudo apt-get update
# sudo apt-get install python-dev
# wget <http://dl.cubieboard.org/software/libs/pySUNXI-0.1.12.tar.gz>
# tar zxf pySUNXI-0.1.12.tar.gz
# cd pySUNXI-0.1.12
# sudo python setup.py install
Test programma
#!/usr/bin/env python
import SUNXI_GPIO as GPIO
import time
TERRAS_DEUR = GPIO.PD1 #Pin97
GPIO.init()
GPIO.setcfg(TERRAS_DEUR, GPIO.IN)
while True:
#GPIO.output(RED_LED, GPIO.HIGH)
#time.sleep(1)
#GPIO.output(RED_LED, GPIO.LOW)
#time.sleep(1)
x = GPIO.input(TERRAS_DEUR) # Terrasdeur
if x==0:
print "Terrasdeur: dicht"
else:
print "Terrasdeur: open"
time.sleep(1)
Uitlezen CPU temp
Bron: https://domotiga.nl/boards/3/topics/5285
CPU temp zit op zowel:
- cat /sys/class/i2c-dev/i2c-0/device/0-0034/temp1_input
- cat /sys/devices/platform/sunxi-i2c.0/i2c-0/0-0034/temp1_input
En geeft bij beide terug: 34600
Uitlezen met Python van de waarde:
def getCpuTemperature():
with open('/sys/class/i2c-dev/i2c-0/device/0-0034/temp1_input') as f:
for line in f:
return (float(line.rstrip('\n'))/1000)
print getCpuTemperature()
Cubieboard2 watchdog
Nodig is /dev/watchdog Bij mij was deze er al, anders doe:
#sudo modprobe sunxi_wdt
Daarna als root:
# apt-get install watchdog
# service watchdog start
Configuratie in /etc/watchdog.conf:
watchdog-timeout=20
Om watchdog te testen, genereer een kernel panic:
echo c | sudo tee /proc/sysrq-trigger