====== 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]]