IP: 192.168.5.248 CPU: 2x1GHz, RAM: 1GB, LAN: 1Gb
Functies:
Aangesloten:
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.
Als eerste, waarom de Debian versie van Igor.
Opmerkingen bij Cubian is:
Opmerkingen bij igorpecovnik’s CTDebian_2.4_wheezy is:
Power connector: 4.0mm (external diameter) x 1.7mm barrel, Adapter: 5V-2A (1A zonder SATA)
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:
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
Hieronder staan de installatie stappen voor een schoon systeem.
->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
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
->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
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
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
$ resize2fs /dev/mmcblk0p1
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
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
->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
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 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
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
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
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>
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"
# 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
# adduser linaro
# adduser linaro sudo
# visudo
...Aan het einde
*linaro ALL=(ALL) NOPASSWD: ALL*
dpkg-reconfigure locales
Selecteer nl_NL.UTF8
En als default: en_US.UTF-8
# dpkg-reconfigure tzdata
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
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 {} \;
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
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
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
Bronnen:
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
cat /etc/os-release
sudo apt-get install systemd systemd-sysv
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)
Bron: https://domotiga.nl/boards/3/topics/5285
CPU temp zit op zowel:
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()
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