====== Příprava image stanice s ODROID-C2 a SDR-widget ======
Předpokládá se počítač s fungujícím operačním systémem Ubuntu 16.04. LTS. Architektura počítače může být jak ARM, tak i Intel. Oba případy jsou identické až na způsob připojení dalšího hardware, jako je například I²C.
$ sudo apt-get install build-essential cmake libusb-dev cython libudev-dev python-setuptools python-numpy python-cheetah libboost-all-dev libfftw3-dev libcfitsio-dev libjack-jackd2-dev autossh gpsd-clients buffer pv ntp libvolk1-dev git libhidapi-hidraw0 libhidapi-libusb0 libusb-1.0-doc curl python-websocket
===== I2C =====
git clone https://github.com/MLAB-project/i2c-tools.git
cd i2c-tools
make EXTRA="py-smbus"
sudo make install
cd py-smbus
sudo python setup.py install
sudo ldconfig
$ mkdir ~/repos
$ cd ~/repos
$ git clone https://github.com/MLAB-project/pymlab
$ cd pymlab
$ sudo python setup.py develop
U Odroidu-C2 je třeba I2C zprovoznit správným zápisem do ''/etc/modules'', jak je popsáno [[http://wiki.mlab.cz/doku.php?id=cs:odroid-u3#I%C2%B2C%20na%20odroid-U3|na MLAB wiki]].
===== station-supervisor =====
$ cd ~/repos
$ git clone https://github.com/MLAB-project/python-mlab-utils.git
$ cd python-mlab-utils
$ sudo python setup.py install
$ cd ~/repos
$ git clone https://github.com/MLAB-project/station-supervisor.git
===== SDR-Widget =====
==== Nahrání firmware ====
Pro nahrání firmware potřebujeme upravený dfu-programmer, který stáhneme následujícím postupem:
sudo apt-get install autotools-dev automake
git clone https://github.com/MLAB-project/dfu-programmer-sdr-widget.git
cd dfu-programmer-sdr-widget/
./bootstrap.sh
./configure
make
sudo make install
Předkompilovanou verzi Bolidozor firmware lze stáhnout z webu:
wget https://github.com/MLAB-project/sdr-widget/releases/download/bolidozor-v01/widget.elf
Před spuštěním nahrávacího sktiptu stiskneme na desce AVR32TQ tlačítko RESET a opět je pustíme. Následně stiskneme tlačítko BOOT (nepopsané tlačítko, držíme do opětovného stisku a uvolnění tlačítka RESET). Tím aktivujeme interní bootloader MCU a samotné nahrání firmware pak spustíme následujícím příkazem ze složky //dfu-programmer-sdr-widget//.
sudo ./program-widget widget.elf
==== Kontrola konfigurace ====
Po správném nahrání firmware bude [[http://wiki.mlab.cz/doku.php?id=cs:sdr-widget|sdr-widget hardware]] vidět na USB a VID a PID bude nastavené na ''fffe:0007''.
Taktéž po spuštění konfiguračního nástroje uvidíme toto nastavení (nelze jej měnit je pevně nastavené v Bolidozor verzi firmware)
{{:cs:rmds:jackless_rmds_sdr-widget.png?600|Konfigurace SDR-widget hardware.}}
==== Software na straně systému ====
Pro čtení dat z hardware sdr-widget se využívá nástrojů obsažených v repozitáři [[https://github.com/MLAB-project/signal-piping-tools|signal-piping-tools]].
$ cd ~/repos
$ git clone https://github.com/MLAB-project/signal-piping-tools.git
$ cd signal-piping-tools
$ make
==== Nastavení uživatelských práv ====
Standardní nastavení uživatelských práv neumožňuje přímou komunikaci s USB zařízeními přes libusb. Nastavení přístupových práv lze změnit vytvořením vhodného souboru v // /etc/udev/rules.d/ //. Ten vytvoříme následovně:
$ sudo su
# curl https://raw.githubusercontent.com/borgestrand/sdr-widget/d4cc8700429bc1acef826f46d8e40df04e1f6e1c/etc/sdr-widget.rules > /etc/udev/rules.d/sdr-widget.rules
# exit
Nyní je potřeba odpojit a znovu připojit USB zařízení. Pak je možné používat libusb i ze standardního uživatelského účtu.
===== radio-observer =====
$ cd ~/repos
$ git clone https://github.com/MLAB-project/radio-observer.git
$ cd radio-observer/
$ git submodule init
$ git submodule update
$ cd cppapp
$ make
$ cd ..
$ make
===== data-uploader =====
Program zajišťující odesílání zaznamenaných dat nainstalujeme podle návodu na stránce [[cs:data-uploader|Systém pro upload měřených dat ze stanic]].
====== Nastavení staničního času ======
Změníme systémové časové pásmo na UT.
sudo dpkg-reconfigure tzdata
Někdy je také potřeba vygenerovat místní nastavení např:
sudo locale-gen cs_CZ.UTF-8
===== Časová synchronizace NTPd =====
Pro časovou synchronizaci je potřeba daemonu, který se stará o GPS povolit socket pro NTP.
To se udělá v souboru /etc/ntp.conf
server 127.127.28.0 minpoll 4 prefer
fudge 127.127.28.0 time1 0.0 refid GPS
GPSd musí být zároveň nastaven tak, aby dával data i bez připojených klientů. Toho se dosáhne nastavením pří instalaci.
sudo dpkg-reconfigure gpsd
Start gpsd automatically on boot? Yes
Device the GPS receiver is attached to: /dev/ttyACM0
Should gpsd handle attached USB GPS receivers automatically? Yes
Options to gpsd: -b -n
Otestování synchronizace lze provést podle [[http://wiki.mlab.cz/doku.php?id=cs:time_sync|návodu]].
===== Příprava SDkarty =====
Novou SDkartu naformátujeme na souborový systém [[https://en.wikipedia.org/wiki/F2FS|F2FS]]. K tomu potřebujeme do systému nainstalovat podporu souborového systému F2FS.
sudo apt install f2fs-tools gparted
Pak můžeme programem Gparted naformátovat SDkartu na souborový systém F2FS, který je optimalizovaný pro paměťová media s omezeným počtem zápisů. Lze to ale udělat i přes příkazový řádek následujícím postupem:
sudo mkfs.f2fs /dev/mmcblk1p1
Naformátovanou SDkartu pak připojíme do adresáře ''~/bolidozor'' a nastavíme souborová práva pro přístup i jinými uživateli než root.
sudo mount -t f2fs /dev/mmcblk1p1 ~/bolidozor/
sudo chgrp -R odroid bolidozor
sudo chown -R odroid bolidozor
===== Adresáře pro ukládání záznamů a konfigurace stanice =====
Záznamy a konfigurace stanice se ukládají do ''~/bolidozor''.
mkdir -p ~/bolidozor/station/snapshots
mkdir -p ~/bolidozor/station/meteors
mkdir -p ~/bolidozor/station/data
cp ~/repos/radio-observer/Bolidozor.json ~/bolidozor/station/Bolidozor.json
Poslední příkaz nakopíruje výchozí konfiguraci ''radio-observer''u do ''~/bolidozor/station/Bolidozor.json'', kde jí očekává startovací skript. Po nakopírování je třeba na [[https://github.com/MLAB-project/radio-observer/blob/feat/raw/Bolidozor.json#L36|tomto řádku]] změnit název stanice. (V odkazu je název stanice ''debug''.)
===== Spuštění po startu =====
Protože se většina stanic instaluje na počítač zvaný Odroid, jehož výchozí uživatel se jmenuje ''odroid'', předpokládá následující, že se tak jmenuje i uživatel, pod kterým bude běžet staniční software. Dosaďte za ''odroid'' správné jméno, pokud to tak není.
Do ''/etc/rc.local'' je třeba zapsat, co se má spustit po startu. Na všech stanicích by se mělo spustit ''/home/odroid/repos/station-supervisor/start.sh'', což nastartuje všechen staniční software. Protože má staniční software běžet pod uživatelem ''odroid'', bude celý příkaz ke zkopírování vypadat takto:
su odroid /home/odroid/repos/station-supervisor/start.sh
Pokud se mají na Odroidu zapisovat záznamy na SD kartu, mělo by se ještě před ''start.sh'' spustit také ''/home/odroid/repos/station-supervisor/mount-sd-card.sh'', což kartu připojí přes ''/home/odroid/bolidozor''.
Příkazy by se do ''rc.local'' měly přidat před ''exit 0'', které tak zůstane na konci. Příklad ''/etc/rc.local'' po úpravě:
#!/bin/sh -e
#
# rc.local
#
# This script is executed at the end of each multiuser runlevel.
# Make sure that the script will "exit 0" on success or any other
# value on error.
#
# In order to enable or disable this script just change the execution
# bits.
#
# By default this script does nothing.
/home/odroid/repos/station-supervisor/mount-sd-card.sh
su odroid /home/odroid/repos/station-supervisor/start.sh &
exit 0
===== Automatické aktualizace =====
Z bezpečnostních důvodů je vhodné nechat aktivovanou automatickou aktualizaci balíků. Ta je nastavena v souboru ///etc/apt/apt.conf.d/10periodic//. Do něj stačí zapsat následující konfiguraci:
APT::Periodic::Update-Package-Lists "1";
APT::Periodic::Download-Upgradeable-Packages "1";
APT::Periodic::AutocleanInterval "7";
APT::Periodic::Unattended-Upgrade "1";
Pak ještě aktivujeme nastavení odkomentováním potřebných řádků v souboru ///etc/apt/apt.conf.d/50unattended-upgrades//
// Automatically upgrade packages from these (origin:archive) pairs
Unattended-Upgrade::Allowed-Origins {
"${distro_id}:${distro_codename}";
"${distro_id}:${distro_codename}-security";
"${distro_id}:${distro_codename}-updates";
// "${distro_id}:${distro_codename}-proposed";
// "${distro_id}:${distro_codename}-backports";
};
[[https://help.ubuntu.com/lts/serverguide/automatic-updates.html|Podrobný návod na Ubuntu wiki]]