středa 11. března 2015

Sobotní den strávený na 120 % nebo 130 %


Dnešní den pro nás začíná 0:25, kdy už s lepší společností přijíždíme do stanice Kačerov. Chvilku čekáme a posloucháme jak nelehký úkol mají pracovníci ostrahy. Naštěstí opilec se už uklidnil a obsluha nám kontroluje lístky na unikátní projížďku nočním metrem. Hlavní pořadatel nám nejdříve udělí základní bezpečnostní pokyny a hned scházíme do stanice, kde na nás čekají tři původní vagony soupravy sovětské výroby. Na vozu s číslem 1085 studuji tabulku s konstatováním, že moje dvousemestrová exkurze do azbuky je už nutně pokryta prachem ale „zdelano v SSSR" jsem ještě přečetl.




Vždy mně v těchto vagonech fascinovalo chromované držadlo od deštníku u stěny za koženkovou lavicí. Ve skutečnosti se jedná o rukojeť pro nouzové odjištění dveří. Jak z opery jsou také kryty stropních svítidel. Dalším výrazným detailem je tlačítko záchranné brzdy s výraznou červenou tečkou na konci nezdravě dlouhého ukazováčku. Spolu s ostatními účastníky si fotíme soupravu metra ze všech stran, ale to se již z reproduktoru ozve nějaký neznámý hlas s povelem „Ukončete nástup, dveře se zavírají“. V porovnání s novodobými vozy mají tyto ještě žárovkové osvětlení, které při přejezdu v mezerách v napájecích okruzích pohasínají. K tomu nám hlas z reproduktoru vypráví, jak je metro složitý organismus a kolik lidí, které běžně Pražané v metru nepotkají, zajišťují ale jeho bezproblémový chod. Jak je každou noc ve zkratovacích stanicích odvedeno z napájecích okruhů zbytkové ale stále nebezpečné trakční napájení. Jak projíždějí tubusy metra servisní soupravy i to jak pochůzkáři procházejí a kontrolují každý metr kolejí v tunelech. Ve stanici Pražského povstání se po skupinkách namačkáme do místnosti s ovládacím pultem, kde nám pracovník předvádí řízení jeho malého nádraží. Na Vyšehradě si prohlížíme místnost dohledu stanice, prý tu mají nové televize, ale pořád dávají ten stejný pořad, stěžuje si pracovník s úsměvem. Mimo jiné nám ukazuje část panelu, na kterém jsou počítadla příchozích a odcházejících pasažérů. Nedá mi to a hned se pokouším u turniketu přerušovat infračervené paprsky tu jedním a tu druhým směrem. Skutečně to funguje, obě počítadla opravdu fungují.
Ve čtyři ráno uléhám ke spánku, už vím, že dnešní jistě poutavou přednášku o Turrisu asi zatáhnu jako za starých časů. Ještě štěstí, že si ji budu moci v klidu a klidně ve 4k rozlišení pustit později. Mou první přednáškou na letošním Install Festu je duo Linuxových „celebrit“ české kotliny Petra Krčmáře a Ondřeje Caletky. Skutečně jsem nevěděl, že součástí BusyBoxu je i miniaturní web server nebo po Petra nepostradatelný terminálový kalendář. Díky jejich poutavému vyprávění čas, jim vymezení, rychle uplyne a už odcházím si připomenout studentské gurmánské zážitky. Po jednom pečeném vrabci děláme kulisu u točení rozhovorů. Prý je potřeba najít vhodné pozadí, kontejner s modrým víkem je naprosto ideální, nejsou přeci žádná televize Noha.


Oskar volí poněkud decentnější kulisu svého rozhovoru. U vchodu jsem si všiml mapy, kde může každý účastník zapíchnout špendlík přestavující místo, odkud daný účastník přijel. Paní učitelko zeměpisu, doufám, že jsem zelený špendlík do slepé mapy zapíchl alespoň přibližně Dvora Králové. Ale to již poslouchám další zajímavou přednášku o ARMovských procesorech, vždyť ARM hýbe světem. ARMovská tématika pokračuje povídáním o GPIO u RasberyPi. Pro mě poslední částí Install Festu je povídání o SDR. Jen škoda, že tato problematika je tak široká, že za 55 minut ji není možné ani nastínit, ale Jenda Hrach se o to úspěšně pokusil. Odcházím okolo našeho bloku číslo devět k Petřínské rozhledně a zjišťuji, že je to právě deset minut, co odjela zubačka. Prý jezdí každých patnáct minut, a je zajímavé, že odjíždí vždy ve stejnou dobu zespoda i shora, no musím to ještě prozkoumat. Jdu tedy parkem a kochám se pohledy na stověžatou Prahu v podvečerním slunci. V centru se po stylu Jamese Bonda rychle převlékám z ležérního Linuxáckého stylu do obleku a směřujeme k Vinohradskému Divadlu.



Dnešní den završíme shlédnutím Čapkova divadelního kusu „Loupežník“. Po odhalení opony divák shlédne černobílé filmové uvedení do děje. Hned po tom, co se na scéně objevila Hana Maciuchová a Jaroslav Satoranský si vzpomenu ještě na Karakoše a Trautumberka ale to je přece jiná pohádka. Obsahem jeviště jsou v podstatě tři věci, telegrafní sloup, lavička a opevněný dům podobný tomu z Abottabádu. Hra vypráví příběh o lásce dcery pana profesora a loupežníka. Postava loupežníka je ta která všechno spojuje, no zkrátka podle mého názoru „Čapkovská“. Z kritiky jsem věděl, že divadlo pod vedením Tomáše Töpfra, hru nastudovalo trochu specificky. Hra člověka nutí se zamyslet, ukazuje střed mládí a staří. Ale končí to prozřením všech účastníků díky znovunalezení ztracené dcery. Asi jsem obsah hry prozradil ale i tak vřele doporučuji všem si na vinohradského Loupežníka zajít.



neděle 1. února 2015

První pokusy s JTAGem

Oprava rozbitého satelitního přijímače IPBox 910 HD začíná připojením STM32F3 Discovery Boardu a prvním seznámením s OpenOCD.

neděle 11. ledna 2015

I2C tlakoměr BMP180

Tentokrát přišel od Číňana I2C tlakoměr BMP180 od společnosti Bosch. U tohoto senzoru není měření tak jednoduché jako u popisovaného teplotního senzoru. Tlak je závislý na spustě veličin, nejdůležitější je teplota, čidlo tedy musí nejprve změřit teplotu a poté výslednou teplotu započítat při výpočtu aktuálního tlaku.

pondělí 15. prosince 2014

WiFi modulek za 90 Kč

Náhodou jsem na eBay narazil na malý ale šikovný WiFi modulek Wi07c. Dokáže pracovat v režimech AP, jako klient a nebo obojí najednou. Po rozbalení stačilo připojit napájení, Rx a Tx a vývod CH_PD na +3,3 V.



neděle 14. prosince 2014

neděle 7. prosince 2014

OpenWRT a akcelerometr + kompas + gyro

Po zprovoznění I2C sběrnice si k ní můžeme připojit například obvody LSM303DLHC (akcelerometr + kompas) a nebo gyroskop L3GD20, vše skvěle zabaleno na STM32F3 Discovery Boardu. Na Discovery Boardu je nutné vymazat paměť MCU aby nám do komunikace "nekecal" a propojit následující vývody: PB6 na PA5, PB7 na PA7 a v neposlední řade zapojit PA6, tedy pin SA0 gyra, na logickou jedničku (výběr I2C módu).

středa 3. prosince 2014

OpenWRT a teploměr

I na posledním routeru jsem přešel na poslední verzi OpenWRT, tedy na 14.07 branch (Barrier Breaker).

Vše proběhlo bez problémů až na teploměr, ten je připojen prostřednictvím převodníku USB-RS232 s řadičem od FTDI. Digitemp používá 6-ti bitovou komunikaci, patne pro emulaci 1-wire prostřednictvím sériové linky. Bylo tedy nutné maličko upravit ovladač, jinak se v logu zobrazují následující hlášky a teploměr vůbec nefunguje:
ftdi_sio ttyUSB0: requested CSIZE setting not supported

Stačí provést úpravy v souboru /build_dir/target-mipsel_mips32_uClibc-0.9.33.2/linux-brcm47xx_generic/linux-3.10.49/drivers/usb/serial/ftdi_sio.c

Jedná se o sprosté zakomentování příslušné kontroly:

Řádek 2194:
 /*if (C_CSIZE(tty) == CS6) {
  dev_warn(ddev, "requested CSIZE setting not supported\n");

  termios->c_cflag &= ~CSIZE;
  if (old_termios)
   termios->c_cflag |= old_termios->c_cflag & CSIZE;
  else
   termios->c_cflag |= CS8;
 }*/

 cflag = termios->c_cflag;

 if (!old_termios)
  goto no_skip;

A doplnění volby do switche od řádku 2240

switch (cflag & CSIZE) {
 case CS5:
  dev_dbg(ddev, "Setting CS5 quirk\n");
  break;
 case CS6:
  dev_dbg(ddev, "Setting CS6\n");
  break;
 case CS7:
  urb_value |= 7;
  dev_dbg(ddev, "Setting CS7\n");
  break;

Další možností je použití patche:
http://patchwork.ozlabs.org/patch/306740/

Pro Asus 500gP je možné rovnou stahovat balíček z ulož.to.

pátek 14. listopadu 2014

UCI OpenWRT

Pro čtení a zápis parametrů konfiguračních souborů OpenWRT je možné použít UCI, viz několik příkladů:

čtvrtek 13. listopadu 2014

Pěkná jména pro rozšíření Majordomo Turris


Nelíbí se Vám v zobrazení Majordomo pouze MAC adresy? Tento skript vyčte z nastavení DHCP jména příslušející každé MAC a doplní je do souboru. Dokonce ani nevadí, že je do souboru připíše vícekrát, při aktualizace se duplicity odstraní.



sobota 8. listopadu 2014

Zprovoznění SPI, I2C a 1-wire na OpenWRT

Jak zprovoznit SPI na zařízení s OpenWRT, když nemá volný SPI port? Stačí jen najít několik volných GPIO pinů, nainstalovat pár balíčků a už to funguje.



pátek 7. listopadu 2014

Sledování výpadků připojení

#!/bin/sh

# Programátor řekl: nechť je toto voláno periodicky, nejlépe každou minutu
# při každém zavolání dejde k opingnutí strejdy googla,
# pokud se nedopingne, tak pěkně zalogovat čas první detekce výpadku
# a pěkně pokračujeme dále. Následně při úspěšném pokusu opingnutí strejdy googla
# se nám načte čas výpadku (ze souboru v /tmp) a spolu s časem náběhu se odešle na server

# vyzobneme počet úspěšných pingů (5 pingů, měly by se podařit alesoň dva)

tmpSoubor='/tmp/vypadek.txt'
testServer="google.com"
#testServer="google.comn"

ping $testServer -c 15 -q > /tmp/vysledek.txt 2>&1
Ping=`cat /tmp/vysledek.txt | sed -n -e 's/.*packets transmitted, \([0-9]*\).*/\1/p'`
rm /tmp/vysledek.txt
#echo "\"$Ping\""
minPing=2
if [[ -z "$Ping" ]]; then
    echo "Patrně nenalezen DNS záznam pro $testServer!"
else
    if [ $Ping -lt $minPing ]; then
            # sem to spadne při detekci výpadku
            if [ ! -f $tmpSoubor ]; then
                #sem to vleze jen při první rozpoznání výpadku
                    echo "Detekován výpadek připojení!"
                    date +"%Y-%m-%d%%20%H:%M:%S" > $tmpSoubor
            else
                    echo "Připojení nám nefunguje(již zalogováno)!"
            fi
    else
            echo "Připojení funguje!"
            #když nám funguje připojení a máme záznam o výpadku, tak ho naprášíme
            if [ -f $tmpSoubor ]; then
                    CasVypadku=`cat $tmpSoubor`
                    rm $tmpSoubor
                    dalsiCast='&VypadekKonec='
                    treticast=`date +"%Y-%m-%d%%20%H:%M:%S"`
                    Server="http://www.domena.cz/logovani/VlozeniPingDoDB.php?VypadekZacatek="
                    URL=$Server$CasVypadku$dalsiCast$treticast
                    echo $URL
                    wget -O /dev/null -q "$URL"
            fi
    fi
fi


čtvrtek 9. října 2014

DVB-T rekordér pro Turris

Nahrávač se skládá z několika sh a php skriptů. Nahrávač předpokládám zprovozněné streamování například pomocí MumuDVB, jak bylo popsáno v předchozím příspěvku. Každý program (TV kanál) má vyhrazen vlastní TCP port. Uživatelé tedy mohou zároveň sledovat všechny kanály jednoho multiplexu a ještě každý kanál nahrávat. Díky třem DVB-T kartám máme streamované všechny tři multiplexy. Pro zpracování uživatelem zadaných dat je soubor new_record.php. Ošetří, alespoň doufám, vstupní hodnoty a zavolá další soubor.

<html>
<head>
<meta charset="utf-8">
</head>
<body>
<?php
setlocale(LC_ALL, 'czech');
if (   isset($_REQUEST["DOBA_NAHRAVANI_MIN"])
    && isset($_REQUEST["ZACATEK_NAHRAVANI"])
    && isset($_REQUEST["NAZEV_SOUBORU"])
    && isset($_REQUEST["CISLO_KANALU"]))
{
    $DOBA_NAHRAVANI_MIN = intval($_REQUEST["DOBA_NAHRAVANI_MIN"]);
    $ZACATEK_NAHRAVANI = date("H:i d.m.y", strtotime(urldecode($_REQUEST["ZACATEK_NAHRAVANI"]))); // 11:35 01.10.14
    $URL = htmlspecialchars(urldecode($_REQUEST["NAZEV_SOUBORU"]));
    /*$URL = rtrim($URL, "_.");
    $URL = str_replace(" ", "_", $URL);*/
    echo "<p>\$URL=\"$URL\"</p>\n";
    $NAZEV_SOUBORU = preg_replace("/[^a-zA-Z0-9áäčďéěëíµňôóöŕřšťúůüýžÁÄČĎÉĚËÍĄŇÓÖÔŘŔŠŤÚŮÜÝŽ _-]/", "", $URL);
    $CISLO_KANALU = intval($_REQUEST["CISLO_KANALU"]);
   

sobota 23. srpna 2014

Build vlastního balíčku OpenWRT

Balíčky hnízdí v package/ a dále následuje další dělení ale to je z pohledu buildu nepodstatné.
Například v package/utils/hello/src/ si vytvoříme klasický hello world balíček.

Do souboru hello.cpp vložíme toto:

#include <iostream>
using namespace std;

int main()
{
  cout << "Funguje to, mame prvni balicek pro OpenWRT!" << endl;
  return 0;
}

neděle 6. července 2014

DVB-T karty pro Turris

MSI DIGIVOX Micro HD (RTL2832U + FCI2580)
Bus 001 Device 010: ID 1d19:1102 Dexatek Technology Ltd. DK mini DVB-T Dongle

[41340.837991] usb 1-1.1: new high-speed USB device number 5 using fsl-ehci
[41340.971314] usb 1-1.1: dvb_usb_v2: found a 'Dexatek DK mini DVB-T Dongle' in warm state
[41341.034039] usb 1-1.1: dvb_usb_v2: will pass the complete MPEG2 transport stream to the software demuxer
[41341.043649] DVB: registering new adapter (Dexatek DK mini DVB-T Dongle)
[41341.054517] usb 1-1.1: DVB: registering adapter 0 frontend 0 (Realtek RTL2832 (DVB-T))...
[41341.070122] i2c i2c-2: fc2580: FCI FC2580 successfully identified
[41341.087003] Registered IR keymap rc-empty
[41341.091739] input: Dexatek DK mini DVB-T Dongle as /devices/soc.0/ffe22000.usb/fsl-ehci.0/usb1/1-1/1-1.1/rc/rc0/input0
[41341.102574] rc0: Dexatek DK mini DVB-T Dongle as /devices/soc.0/ffe22000.usb/fsl-ehci.0/usb1/1-1/1-1.1/rc/rc0
[41341.112547] usb 1-1.1: dvb_usb_v2: schedule remote query interval to 400 msecs
[41341.131248] usb 1-1.1: dvb_usb_v2: 'Dexatek DK mini DVB-T Dongle' successfully initialized and connected
 


Potřebné moduly:
insmod dvb-core.ko
insmod dvb-pll.ko
insmod rtl2830.ko
insmod rtl2832.ko
insmod qt1010.ko
insmod mt2060.ko
insmod mxl5005s.ko
insmod fc0012.ko
insmod fc0013.ko
insmod e4000.ko
insmod fc2580.ko
insmod tua9001.ko
insmod r820t.ko
insmod rc-core.ko
insmod dvb-usb.ko
insmod dvb_usb_v2.ko
insmod rtl2830.ko
insmod rtl2832.ko
insmod dvb-usb-rtl28xxu.ko


Nepotřebuje fw ve /lib/firmware.