Homebrew (Wikipedie), správce balíčků pro macOS a od verze 2.0.0 také pro Linux, byl vydán ve verzi 4.5.0. Na stránce Homebrew Formulae lze procházet seznamem balíčků. K dispozici jsou také různé statistiky.
Byl vydán Mozilla Firefox 138.0. Přehled novinek v poznámkách k vydání a poznámkách k vydání pro vývojáře. Řešeny jsou rovněž bezpečnostní chyby. Nový Firefox 138 je již k dispozici také na Flathubu a Snapcraftu.
Šestnáctý ročník ne-konference jOpenSpace se koná 3. – 5. října 2025 v Hotelu Antoň v Telči. Pro účast je potřeba vyplnit registrační formulář. Ne-konference neznamená, že se organizátorům nechce připravovat program, ale naopak dává prostor všem pozvaným, aby si program sami složili z toho nejzajímavějšího, čím se v poslední době zabývají nebo co je oslovilo. Obsah, který vytvářejí všichni účastníci, se skládá z desetiminutových
… více »Richard Stallman přednáší ve středu 7. května od 16:30 na Technické univerzitě v Liberci o vlivu technologií na svobodu. Přednáška je určená jak odborné tak laické veřejnosti.
Jean-Baptiste Mardelle se v příspěvku na blogu rozepsal o novinkám v nejnovější verzi 25.04.0 editoru videa Kdenlive (Wikipedie). Ke stažení také na Flathubu.
TmuxAI (GitHub) je AI asistent pro práci v terminálu. Vyžaduje účet na OpenRouter.
Byla vydána nová verze R14.1.4 desktopového prostředí Trinity Desktop Environment (TDE, fork KDE 3.5, Wikipedie). Přehled novinek i s náhledy v poznámkách k vydání. Podrobný přehled v Changelogu.
Bylo vydáno OpenBSD 7.7. Opět bez písničky.
V Tiraně proběhl letošní Linux App Summit (LAS) (Mastodon). Zatím nesestříhané videozáznamy přednášek jsou k dispozici na YouTube.
Olimex A20 je relativně levná a výkonná deska, která existuje i ve verzi s 4GiB NAND pamětí. Je osazena dvoujádrovým Cortex-A7 s dvoujádrovou Mali 400, obsahuje 1GiB DDR3, dva USB porty, LAN port, HDMI, spoustu programovatelných GPIO portů, konektor pro diplej a dvě nezávislá UEXT rozhraní. Olimex disponuje také konektorem na baterii, kterou lze použít jako UPS. K dispozici je např. údaj, kdy 6600mAh baterii lze použít jako záložní zdroj pro staršího bratříčka A13-OLinuXino (příklad s výdrží pro A20 nemám k dispozici), který by v takovém případě při plné zátěži měl vydržet běžet 20 hodin. A20 lze dále napájet pomocí klasického adaptéru (6-16V), nebo pomocí USB-OTG (5V). Pro jednoduchý popis desky vizte Board Layout. Kromě základního vybavení jsou právě stěžejní ony programovatelné GPIO porty, které lze mj. mapovat do UEXT rozhraní.
Mnozí si jistě řeknou, že při takovém to popisu je to pro RFID těžký overkill. Samozřejmě ano, ale poměr cena/výkon/možnosti převyšují nad ušetřenými pár stovkami a uspořenou energií.
UEXT je univerzální konektor (Universal EXTension connector), jenž obsahuje 3 základní komunikační rozhraní:
Vizte kompletní popis v PDF.
Olimex disponuje spousty UEXT moduly, jejichž počet se stále rozšiřuje. Tyto moduly většinou obsahují programovatelné čipy s nějakým výchozím firmware (programem), jehož zdrojový kód je volně k dispozici, takže není problém si upravit vnitřní logiku dle vlastních požadavků (pokud umíme programovat a máme programmer).
V našem případě bude potřeba komunikovat s RFID čtečkou po seriové lince (buď napřímo přes UART, nebo pomocí RS232), takže bude potřeba minimálně na jedno UEXT rozhraní namapovat UART. Taktéž budeme potřebovat relátka, resp. modul MOD-IO2, který ke komunikaci používá I2C.
O první bootování se A20 samozřejmě snaží z SD karty, pokud neuspěje, jde se na vnitřní NAND paměť. Jako bootloader slouží U-Boot. U-Boot se zapisuje na začátek zařízení:
dd if=u-boot-sunxi-with-spl.bin of=/dev/sda bs=1024 seek=8
První partition musí být vfat a měla by začínat aspoň na 2048 sektoru, aby měl U-Boot se SPL(Second Program Loader) dostatek prostoru před začátkem první partition. Tato vfat partition může být 16MiB velká, slouží jen pro kernel a script.bin. Další partition je již pro systém a ta se formátuje na ext2/3/4. Bootovací sekvence je tedy následující:
Tento soubor je velmi důležitý, popisuje konfiguraci Olimexu, tedy např. mapuje GPIO porty, nastavuje parametry paměti, rozlišení obrazu atd. Díky tomu lze provádět celkem zajímavé změny, aniž bychom museli překompilovávat jádro stále dokola.
Tento soubor vytvoříme konverzí textového souboru „*.fex“, vizte aktuální verzi a20-olinuxino_micro.fex. Konverzi pak provedeme pomocí programu fex2bin:
./fex2bin a20-olinuxino_micro.fex > script.bin
Pro více vizte např. wiki: Configuration of hardware in the debian image a Fex Guide.
Mapování GPIO portů lze vyčíst z Programmable I/O Pins nebo z pokusů nadšenců o grafické zmapování A20 GPIO map.
Dále je k dispozici celkem přehledný manuál : A20-OLinuXino-Micro.pdf nebo z pro laiky naprosto smrtící dokumentace A20 User Manual 2013-03-22.pdf.
Základem je rychlá a relativně kvalitní MicroSD karta. V současné době je originální obraz disku Debianu by Olimex celkem kvalitní a pro naše potřeby nepotřebuje žádné větší úpravy. S tímto standardním obrazem je odzkoušená funkčnost i2c na obou UEXT rozhraní, stejně jako UARTy, funkční síť, HDMI, grafické prostředí, OTG, SATA, audio atd. Také konečně obsahuje modul „CDC ACM“ (/dev/ttyACM), který je nutný pro připojení čtečky přes USB. Aktuální verzi obrazu s popisem odzkoušených částí je možné stáhnout z wiki Olimexu: ULTIMATE A20 Debian 4GB SD-card image release-5.
Obraz dostaneme na sd kartu klasicky pomocí dd:
dd if=a20_debian_kernel_3_4_LAN_USBx2_Cards_LCD_HDMI_SATA_TS_X_GPIO_OTG_MIC_release5.img of=/dev/sdX
Kdo si chce hrát nebo něvěří firmě Olimex či Google Drive (tam link ke stažení míří), tak si může zkusit vytvořit vlastní image:
Obraz SD karty má několik menších nedostatků, které by se daly vylepšit, jedním z nich je logování, které není moc vhodné zapisovat na SD kartu, stejně tak jako mít tmp na kartě:
# logování a dočasné soubory v paměti: nano /etc/fstab tmpfs /tmp tmpfs nodev,nosuid,size=15M 0 0 tmpfs /var/log tmpfs nodev,nosuid,size=100M 0 0
Další možností je logovat např. na nějaký syslog server.
Nastavíme si časové pásmo:
dpkg-reconfigure tzdata
Dále si nastavíme sync času podle vlastních NTP serverů:
nano /etc/ntp.conf ... server ntp.firma.local iburst server ntp.nic.cz iburst ...
Samotný sync času bych řešil skokově pomocí ntpdate (Olimex nemá rtc/baterii, nedrží čas – po každém restartu je resetován) a poté spustil ntpd na drobné odchylky:
nano /etc/rc.local ... ntpdate ntp.firma.local /etc/init.d/ntp start
Kdo chce řešit realtime, tak si může vyzkoušet MOD-RTC.
Program na čtení RFID tagů je napsaný v Pythonu a má grafické rozhraní. Vzhledem k urychlení nasazení a lepší kontrole ze strany kolegů se rozhodlo, že se program nechá tak, jak je. Olimex obraz standardně obsahuje Xfce, což je pro mé „linux laik“ kolegy ideální. Spouštěcí sekvence tedy bude:
Instalace potřebných a vhodných balíčků:
# update seznamu balíčků : apt-get update # pro vnc server a RFID program : apt-get install tightvncserver python python2.7-wxgtk2.8 python-serial python-fpconst python-soappy # další vhodné balíčky : apt-get install setserial rsync screen mc htop iptraf iperf unzip minicom
Kdo používá proxy server, tak si jej pro apt nastaví:
nano /etc/apt/apt.conf.d/75proxy Acquire::http::Proxy "http://IP_proxy:3128";
Dále si vytvoříme uživatele, pod kterým poběží vnc server a RFID program na čtení tagů, a nezapomeneme přidat uživatele do skupiny dialout, která má oprávnění pro přístup k /dev/ttySx:
useradd -d /home/admin -m -s /bin/bash admin -G dialout passwd admin
Nyní nastavíme heslo pro VNC server:
root@A20:~# su - admin admin@A20:~$ cd admin@A20:~$ vncpasswd Using password file /home/admin/.vnc/passwd VNC directory /home/admin/.vnc does not exist, creating. Password: Verify: Would you like to enter a view-only password (y/n)? n
Dále vytvoříme spouštěcí script VNC serveru:
cd .vnc/ nano xstartup #!/bin/bash /usr/bin/startxfce4 &
A nastavíme oprávnění:
chmod 755 xstartup
Dále je potřeba zařídit, aby se vnc server spustil po spuštění systému pod uživatelem admin, čehož docílíme vhodným rc skriptem:
nano /etc/init.d/vncserver #!/bin/sh ### BEGIN INIT INFO # Provides: vncserver # Required-Start: x11-common # Required-Stop: # Default-Start: 2 3 4 5 # Default-Stop: # X-Start-Before: ### END INIT INFO PATH=/bin:/sbin:/usr/bin:/usr/sbin # The Username:Group that will run VNC USER="admin" #${RUNAS} # The display that VNC will use DISPLAY="0" # Color depth (8,15,16 and 24) DEPTH="16" # The Desktop geometry to use. #GEOMETRY="<WIDTH>x<HEIGHT>" #GEOMETRY="800x600" GEOMETRY="1024x768" #GEOMETRY="1280x1024" # The name that the VNC Desktop will have. NAME=`hostname` OPTIONS="-name ${NAME} -depth ${DEPTH} -geometry ${GEOMETRY} :${DISPLAY}" . /lib/lsb/init-functions case "$1" in start) log_action_begin_msg "Starting vncserver for user '${USER}' on localhost:${DISPLAY}" su - ${USER} -c "/usr/bin/vncserver ${OPTIONS}" ;; stop) log_action_begin_msg "Stoping vncserver for user '${USER}' on localhost:${DISPLAY}" su - ${USER} -c "/usr/bin/vncserver -kill :${DISPLAY}" ;; restart) $0 stop $0 start ;; esac exit
Nastavíme oprávnění a přidáme do příslušného runlevelu:
chmod 755 /etc/init.d/vncserver update-rc.d vncserver defaults
Můžeme vyzkoušet (jako root), zda funguje:
/etc/init.d/vncserver start
Nyní by se měl spustit vncserver na výchozím portu 5900 a mělo by se na něj dát přihlásit pod heslem, které jsme si nastavili do „~/.vnc/passwd“.
Program s RFID umístíme do domovského adresáře uživatele a nastavíme jeho automatické spouštění v xfce a provedeme lehké úpravy nastavení v Xfce:
# nastavíme rfid po spuštění xfce4: Applications Menu -> Settings -> Session and Startup -> Application Autostart -> Add -> ... # nastavíme zástupce na ploše (kdyby bylo potřeba spustit dodatečně): Pravý tl. na plochu -> Create Launcher -> ... (ikonka je ze sekce "Device Icons -> gnome-dev-wavelan") # vypneme pozadí, aby bylo rychlejší vnc: pravý tl. myši na plochu -> Desktop Settings -> zde vypneme obrázek plochy a nastavime jen barvu bez gradientu # vypneme screensaver: Applications Menu -> Settings -> Screensaver -> Mode -> Disable Screen Saver # vypneme removable devices z plochy: Pravý tl. na plochu -> Desktop Settings -> Icons -> Odškrtneme "Removable Devices"
A takto to nějak vypadá, když čtečka naběhne:
Veškeré nastavení se ukládá přímo do čtečky a program si jej při spouštění ze čtečky čte.
V tuto chvíli bychom měli mít v systému tři UART rozhraní, viz výpis dmesg :
root@rfid-sdm-in:~# dmesg |grep uart [ 0.624022] [uart]: used uart info.: 0xc1 [ 0.628771] [uart]: serial probe 0 irq 33 mapbase 0x01c28000 [ 0.655074] sunxi-uart.0: ttyS0 at MMIO 0x1c28000 (irq = 33) is a U6_16550A [ 1.395151] [uart]: serial probe 6 irq 51 mapbase 0x01c29800 [ 1.427070] sunxi-uart.6: ttyS1 at MMIO 0x1c29800 (irq = 51) is a U6_16550A [ 1.438859] [uart]: serial probe 7 irq 52 mapbase 0x01c29c00 [ 1.470730] sunxi-uart.6: ttyS2 at MMIO 0x1c29c00 (irq = 52) is a U6_16550A
Používat tedy budeme „/dev/ttyS1“ nebo „/dev/ttyS2“.
RFID program je napsán pro dvojkovou řadu Pythonu, kdo si jej tedy chce vyzkoušet třeba na Arch Linuxu, kde je jako výchozí python3, tak by měla stačit jedna malá úprava main.py:
nano main.py z: #!/usr/bin/env python na: #!/usr/bin/env python2
Tento modul je moc pěkná a zajímavá věc. Modul obsahuje tři diody, jedna svítí červeně a říká, že je modul napájen. Poté má dvě diody (každé relátko má jednu) a pokud svítí, tak to znamená, že je relátko sepnuté.
Menší nevýhodou tohoto modulu je to, že nezná, neví, neumí zjistit, v jakém stavu je relé, zda je sepnuté, nebo ne. Z tohoto důvodu dochází vždy při spuštění čtečky k inicializaci relátek, tzn, pošle se jim výchozí stav – vše vypnout. Poté si stav relátek udržuje upravený RFID program.
Relátka se nastavují pomocí „i2set“, syntaxe je následující:
i2cset -y 2 0x21 0x40 0x03
"2" – znamená, na které sběrnici (1 nebo 2) se modul nachází, to lze zjistit pomocí příkazu i2cdetect
root@rfid-sdm-in:# i2cdetect -y 1 0 1 2 3 4 5 6 7 8 9 a b c d e f 00: -- -- -- -- -- -- -- -- -- -- -- -- -- 10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 20: -- 21 -- -- -- -- -- -- -- -- -- -- -- -- -- -- 30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 50: 50 51 52 53 54 55 56 57 -- -- -- -- -- -- -- -- 60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 70: -- -- -- -- -- -- -- -- root@rfid-sdm-in:# i2cdetect -y 2 0 1 2 3 4 5 6 7 8 9 a b c d e f 00: -- -- -- -- -- -- -- -- -- -- -- -- -- 10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 70: -- -- -- -- -- -- -- --
MOD-IO2 má u defaultní verze firmware adresu „0x21“, tudíž se náš modul nachází na první sběrnici, což by odpovídalo UEXT1.
„0x21“ – již jsme si vysvětlili, že toto je adresa modulu, která by měla jít zápisem měnit (nezkoušel jsem)
„0x40“ – patří operaci s relátky, tudíž říkám, že chceme operovat s relátky
„0x03“ – toto je již samotný příkaz relátku, celkem můžeme poslat čtyři hodnoty :
Více viz dokumentace v MOD-IO2.pdf. K dispozici je také i pěkná knihovna modio.py
Ve firmě máme IS, ten má data v Oracle. Kolega trochu přiohnul RFID program, ten po spuštění provede:
Vzhledem k menší čtecí vzdálenosti tagů jsme umístili antény do takové pozice, aby byly co nejblíže k řidiči. Většina řidičů nemá problém a nemusí ani stahovat okénko, aby byl tag načten. Jedinou výjimkou může být velmi zřídka vyskytující se americký machr. Konkrétní prostředí pak může vypadat takto:
Někoho může zarazit, proč máme dvě zařízení u sebe, proč dvě A20 a né jedno, které by zvládlo obě brány? Je to z toho důvodu, že jen na tomto místě máme dvě brány, všude jinde operujeme s jednou čtečkou, jednou akcí. Ono se nezdá, ale vzhledem k tomu, že relátko nezná své stavy + pár dalších nepříjemností celou logiku značně komplikuje. V rámci zjednodušení se jasně rozhodlo, že lepší dát 1800,- navrch, než si docela nepříjemně komplikovat život.
Do budoucna ještě přidáme teplotní čidla a možná i nějaké menší chlazení. Výkon A20 je úplně akorát, při čtení tagů se lehce zatěžuje CPU, VNC má velmi přijatelné odezvy. Řidiči si postupně zvykají být blíže k anténám a hlavně si začínají zvykat, že to konečně funguje. Po dvou měsících nemáme hlášenou jedinou výtku, že by někdy někdo nebyl přečten, že by se nezvedla závora apod. Uvidíme za pár let. Na čtečkách je uptime 21 dní a využito 68 MiB paměti, zdá se tedy, že VNC server ani RFID program neleakují paměť.
Zatím jsme s A20 i RFID čtečkami Metra Blansko spokojeni. A20 máme nasazenou jen v tomto případě, RFID čtečky jsme začali nasazovat před delší dobou do našich kiosků s průmyslovými Windows PC. Dát Debian na NAND flash už by také neměl být problém. Nakonec si ukážeme, jak řidič tahače dohazuje 4h bokovky Iťákům, poznáte deset rozdílů při pohledu z téže kamery? :)... (malá nápověda: druhý snímek je o 50s mladší).
Nástroje: Tisk bez diskuse
Tiskni
Sdílej:
fajny clanok, ale co ma uplne najviac tesi ze stale su firmy ktorych hlavna dogma nie je IT, ale su ochotne bez problemov (dufam) vrazit $$ a cas do kvazi vyvoja nejakeho riesenia
parada
D.