Miniszámítógépek, SBC-k

rpi SD kartya hasznalat minimalizal

hello,

nemregiben meghalt az SD kartya az rpi-ben. raspbian volt rajta es csak a lakas homersekletet logolta file-ba 5 percenkent.
pontosan nem tudom mi lett as SD kartyaval, de arra gondoltam, hogy minimalizalnam a kellene az uj kartyara irast.
erdekelne, hogy ezt hogyan oldjak meg az expertek.
(mar gugliztam a temaban es talaltam is par dolgot, viszont erdekelne ha valakinek van tenyleges tapasztalata. elso korben arra gondoltam, hogy a /var/log-ot es a file-t amit irok kirakom egy USB-s vinyora, kulso tappal)

koszi!

g6b0r

Ubuntu Touch + Logitech K380

Van egy K380-as bluetooth keyboardom, amit a telóhoz használok. A Logitechnél valamiért úgy tartották jónak, hogy az F billentyűk alapállapotban a médialejátszást vezérlik. Nagyobb baj, hogy az F1, F2, F3 billentyűk váltogatnak 3 csatlakoztatható eszköz között. Ha tényleg az F billentyűre van szükségem (ahogy az esetek 99%-ában), akkor az Fn váltóbillentyűt is hozzá kell nyomni. Hihetetlen faszság. Ha például F2-t akarok nyomni, de elfelejtem, hogy az F2 kétkezes, azaz nem nyomom meg az Fn-t, akkor a billentyűzet _lekapcsolódik_ az eszközről.

Namost, vannak megoldások, amik átkonfigurálják a fenti defaultot, de ezek a programok úgy működnek, hogy írnak valamelyik /dev/hidraw* eszközbe. Ilyen azonban a telón nincs. Na de akkor mi van helyette? Erre nem sikerült rájönnöm, hátha tudja valaki.

[Megoldva] OpenWRT interfész váltása

Sziasztok!

Van egy apró eszköz, ami WiFi-t kezel és csatlakozik hozzá USB-n egy 3G modem is.
Az eszköz routerként működik a LAN interfésze irányában, egy "kiherélt" OpenWrt-n beállítva, 4 MB flash társaságában.

Jelenleg úgy viselkedik, hogy, ha a WiFi elérhető, akkor azon megy a kapcsolat, WiFi hiányában pedig átvált a 3G kapcsolatra.
Ha a WiFi újra elérhető lesz, akkor visszavált WiFi-re.

Ez nagyon szépen működik így.
Ha viszont elérhető a WiFi kapcsolat, de nem lát ki az Internetre rajt, akkor áll az egész - hiába van működő kapcsolat a 3G modemen keresztül.

Nehezítésként az eszközön összesen 64 kbyte szabad hely van, tehát további OpenWrt modulokat nem fog elbírni ebben a formában.

A 3g-wan1 és wlan0 interfészhez is tartozik egy default gateway alapfelállásban.

Kérdésem, hogy viszonylag egyszerű módszerekkel miként tudnám megoldani, hogy akkor sem a wlan-ról üzemeljen a hálózat, amikor van ugyan kapcsolat rajt, de nincs kilátás az internetre, viszont, ha van a wlan-on internet-kapcsolat, akkor arról üzemeljen?

Van esetleg valakinek bevált megoldása erre?
Miként tudnék hatékonyan váltani a két default gateway között?

Az alaprendszert elérem rajt.

Minden javaslatot előre is köszönök.

------------------------------------------------------------------------------------------------------------------------

A következő scriptet készítettem a probléma megoldására - mivel bash nincs rajt, ezért az alapértelmezett ash shell használatával:

#/bin/ash
IFACE=wlan0
IP1=8.8.8.8
IP2=8.8.4.4
RETRY1=3
RETRY2=3
OKMETRIC=0
FAILMETRIC=30
#-------------------------------------------
defroute=$(route | grep default.*$IFACE | tr -s ' ')
currmetric=$(echo $defroute | cut -d " " -f5)

if [[ -z ${currmetric} ]]
then
  exit
fi

let success=0

check_ip(){
  if [[ $success -eq 0 ]]
  then
    ping -q -I $IFACE -W1 -c$2 $1 >/dev/null

    if [[ $? -eq 0 ]]
    then
      let success++
    fi
  fi
}

check_ip $IP1 $RETRY1
check_ip $IP2 $RETRY2

if [[ $success -gt 0 ]]
then
  metric=$OKMETRIC
else
  metric=$FAILMETRIC
fi

if [[ $currmetric -ne $metric ]]
then
  gateway=$(echo $defroute | cut -d " " -f2)

  route del default gw $gateway $IFACE
  route add default gw $gateway metric $metric $IFACE
fi

Nem állítom, hogy nem lehetne szebben / jobban megoldani, de úgy néz ki, működik.

A fenti megoldás alapvetően a wlan0 interfész beállításait módosítja anélkül, hogy magát az interfészt le kellene kapcsolni.
Az alapelgondolás az, hogy az egyes alapértelmezett átjárókhoz tartozó metric értékek változtatásával meg lehet oldani, hogy adott interfészen menjen a kapcsolat, de a másik interfész lekapcsolására ne legyen szükség.

A script elején megadható két IP, és mindegyikhez a próbálkozások száma.
Emellett két metric érték, ami működő, ill. hibás kapcsolatok esetén kerül alkalmazásra a wlan0 interfészen.
A 3g-wan1 interfésznél a metric 20-ra van állítva jelenleg, így a kívánt hatás eléréséhez ez alá, vagy ez fölé kell vinni a wlan0 esetén megadott értéket.

A két tesztelt IP a Google 8.8.8.8 és 8.8.4.4-es DNS szervere, mindkettőt háromszor próbálja pingelni.
Lehet, harmadikként beteszem még a saját szervert is, amit el szeretnék érni majd a rendszer mögül, de talán a Google DNS is elég lesz...

Sorjában a következők történnek:
- Először megkeresi a wlan0 interfészhez tartozó alapértelmezett átjáró sorát a route parancs kimenetén
- Megnézi a metric aktuális értékét az interfészen
- Ha nem kapott értéket (nincs felhúzva az interfész), kilép
- Ellenőrzi a két IP-t a wlan0 interfészen keresztül, és sikeres válasz esetén növel egy változót (sikeres próba esetén a többi IP-t nem teszteli)
- Ha legalább az egyik szervert sikerült elérni, akkor élőnek veszi a wlan0 kapcsolatot
- Megállapítja, hogy a fentiek alapján milyen metric értéket kellene beállítania wlan0 számára
- Ha a beállítandó és beállított metric érték egyezik, akkor nem kell csinálnia semmit (az interfész továbbra sem lát ki az internetre, vagy továbbra is kilát)
- Ha a két érték eltér, akkor megállapítja a hozzá tartozó gateway-t is, törli az ehhez tartozó alapértelmezett átjárót az interfészen és újra létrehozza azt a módosított metric értékkel

Előnye, hogy miután átváltott a 3G modemre, a wlan interfészt úgy tudja tesztelni, hogy a mögöttes hálózat folyamatosan kommunikálhat a 3G kapcsolaton keresztül, és a kapcsolat helyreállása során a visszaváltás wlan-ra egy "pillanat" alatt megtörténik.

Szerk.: Kicsit szépítettem rajt, és bekerült egy másodperces limit, ha nem válaszol a másik oldal - így kicsit gyorsabban lefut, ha nincs internet-kapcsolat a wlan interfészen.

Csökken-e az áramigény RPI zeronál, ha...

...ha lejjebb veszem az órajelét mondjuk 400-ra?

Sziasztok.

Adott egy RPI Zero, rádrótozva egy RTC óra és egy adafruit-GPS, mindkettő gombelemmel ellátva. Semmi kijelző, függelék, csak egy master módba kapcsolható wifikártya pörög benne alkalomadtán.

Egy LiPo Rider Pro-t rendeltem, azzal töltenék egyelőre 5 db 2000 mAh-s aksit, majd az lenne az RPI-hez kötött atomerőmű.
A LiPo Riderhez solarpanel tartozik, az RPI-n van egy plusz led is monitor illetve kijelző helyett, no meg egy gomb.

Azt szeretném elérni, hogy a kis kütyü minél kevesebb áramot egyen, azaz szinte nonstop üzemeljen éjjel-nappal. Ha kell, töltődjön, ha eltűnt a Nap, akkor szükség esetén én adhassak a celláknak töltést.

A kérdésem az, hogy a fenti plusz fogyasztó rákötésével érdemes-e az órajel csökkentésével foglalkozni, vagy tényleg elhanyagolható amit nyernék vele?

Nem lehet ubuntus telefont venni?

Úgy látom, tavaly nyár óta nem lehet ubuntus telefont venni. Mindenhol "sold out" van kiírva. Most akkor mi történt: Túl jól ment a projekt, és azért minden elfogyott, vagy ellenkezőleg, befuccsolt?

Valaki azt írja, hogy androidos Meizu Pro5-re telepített Ubuntut, de most már ez sem megy, mert _már_ Pro5 sincs, az MX6-ra viszont meg _még_ nincs Ubuntu.

Ja, és a mobil platformok fórum témacsoport alatt van Android, iOS, meg még egy-két dolog, de nincs Ubuntu Phone.

python-kód 30% processzorhasználattal

Sziasztok.

Mezei Raspberry Zero el van látva egy gombbal, meg egy leddel. No meg ezzel, ami meghajtja a kettőt. Figyeli, be lett-e nyomva a gomb és ha igen, bekapcsolja a ledet, majd elindít egy scriptet BASH-ban. A led addig világít, míg ki nem kapcsol az rpi.
Valamiért azonban szerintem htop-ban nézve irdatlanul eszi a kód processzort, nem értem, miért.

Íme a kód:

import RPi.GPIO as GPIO
import time, os
GPIO.setmode(GPIO.BCM)
#switch_pin = 21
#led_pin = 17
switch_pin = 21
led_pin = 27


GPIO.setup(switch_pin, GPIO.IN, pull_up_down=GPIO.PUD_UP)
GPIO.setup(led_pin, GPIO.OUT)
led_state = False
old_input_state = True # pulled-up
while True:
 new_input_state = GPIO.input(switch_pin)
 if new_input_state == False and old_input_state == True:
  led_state = not led_state
  GPIO.output(27, True)      # led ON
  os.system("sudo fuss off")
  print("power OFF")
 old_input_state = new_input_state
 GPIO.output(led_pin, led_state)

Szerintetek ez így tényleg erőforrás-zabáló?

Orange Pi PC Plus SPI vezérlés

Sziasztok. Van egy hibátlanul működő OrangePi PC Plus, (armbian server image) amin különböző szenzorok vannak. Minden normálisan működik, ezekkel némi guglizás után sikerült zöldágra vergődni. A project része lenne egy PWM-es motorvezérlő is, ebbe viszont beletört a bicskám. A PWM egy áramkör, amivel "lágy indítást" lehet csinálni villanymotorokon, hogy a táp ne szálljon el a kezdeti nagy amper terheléstől. Ennek az áramkörnek a (kézi vezérlésű)potméterének a helyére került bele egy MCP41100-I/P IC, amit SPI interfészen keresztül lehet vezérelni. A terv az lenne, hogy ezen keresztül lehet változtatni a motor fordulatszámát. A PWM panel(plusz az IC) jó, másról vezérelve működik normálisan. Az orangepi tudja ezt kezelni (elvileg) de nekem eddig nem sikerült. Minden vezérlést a WiringOp nevű API-val csináltam, de ez nem akar működni. Néhány napnyi kínlódás után megpróbáltam ugyanezt Python programokkal is, az eredmény ugyanaz. A bekötés jó (pinek: MOSI, SCLK, CL0) ezt többször leellenőriztem. A programok lefutnak hiba nélkül, de ohmban mérhető változás nincs.
Az ls /dev/spi* kimenete:
/dev/spidev0.0
tehát van eszköz. A /sys/class alatt látszik az spi_master is. Az elsődleges gond, hogy az IC csak írható, így nem nagyon lehet ellenőrizni, hogy mi megy ki. A másik gond, hogy minden IC-nek más-más a használata, ezt például 0x11 küldésével lehet fogadásra állítani, más IC-knél ez másképp történik, vagyis az a néhány példa program, ami a neten megtalálható, ezzel az IC-vel nem működik.
Van valaki, akinek sikerült az SPI interfészt működésre bírnia? Tapasztalatok?