Was man noch zum RPi dazu sagen sollte ist, das dieser nicht nur diesen ganzen Multimedia Schnick-schnack kann. Sondern viel mehr sind es die GPIO Pin's mit denen sich eben viele schöne Sachen realisieren lassen, wenn man kreativ ist.
Zur Hausautomatisierung oder zum einfachen auslesen von Sensoren und Motorsteuerung. Hier ist der Raspberry vielen anderen MiniPC's, die teilweise im USB-Stick Gehäuse daher kommen, überlegen.
Oft wird der RPi mit anderen MiniPC's verglichen und es kommt am Ende des Vergleichs raus, der mit den dicksten CPU ist der bessere. Aber der RPi hat eben ganz andere Qualitäten, mit viel Anschluss Potential und mittlerweile eine große Community welches nicht zu unterschätzen ist.
Die Temperatur lässt sich über die Shell ganz einfach und schnell über folgendes Kommando auslesen:
vcgencmd measure_temp
Zurückgegeben wird z.B. folgendes:
temp=47.6'C
Mit vcgencmd kann man übrigens nicht nur die Temperatur der CPU, sondern auch Spannung und Takt auslesen:
vcgencmd measure_volts
Bzw.
vcgencmd measure_clock arm
Es wurde der WLAN Chip BCM43143 verbaut, welcher 2,4 GHz, b/g/n unterstützt.
~ $ modinfo brcmfmac filename: /lib/modules/4.14.50-v7+/kernel/drivers/net/wireless/broadcom/brcm80211/brcmfmac/brcmfmac.ko license: Dual BSD/GPL description: Broadcom 802.11 wireless LAN fullmac driver. author: Broadcom Corporation firmware: brcm/brcmfmac4373-sdio.bin firmware: brcm/brcmfmac4356-sdio.bin firmware: brcm/brcmfmac4354-sdio.bin firmware: brcm/brcmfmac43455-sdio.bin firmware: brcm/brcmfmac43430-sdio.bin firmware: brcm/brcmfmac43430a0-sdio.bin firmware: brcm/brcmfmac4339-sdio.bin firmware: brcm/brcmfmac43362-sdio.bin firmware: brcm/brcmfmac4335-sdio.bin firmware: brcm/brcmfmac43341-sdio.bin firmware: brcm/brcmfmac43340-sdio.bin firmware: brcm/brcmfmac4334-sdio.bin firmware: brcm/brcmfmac4330-sdio.bin firmware: brcm/brcmfmac4329-sdio.bin firmware: brcm/brcmfmac43241b5-sdio.bin firmware: brcm/brcmfmac43241b4-sdio.bin firmware: brcm/brcmfmac43241b0-sdio.bin firmware: brcm/brcmfmac43143-sdio.bin firmware: brcm/brcmfmac4373.bin firmware: brcm/brcmfmac43569.bin firmware: brcm/brcmfmac43242a.bin firmware: brcm/brcmfmac43236b.bin firmware: brcm/brcmfmac43143.bin srcversion: 80D355F77AD3A822E27B771 alias: usb:v04B4p0BDCd*dc*dsc*dp*ic*isc*ip*in* alias: usb:v0A5Cp0BDCd*dc*dsc*dp*ic*isc*ip*in* alias: usb:v043Ep3101d*dc*dsc*dp*ic*isc*ip*in* alias: usb:v04B4pBD29d*dc*dsc*dp*ic*isc*ip*in* alias: usb:v13B1p0039d*dc*dsc*dp*ic*isc*ip*in* alias: usb:v0A5CpBD27d*dc*dsc*dp*ic*isc*ip*in* alias: usb:v0A5CpBD1Fd*dc*dsc*dp*ic*isc*ip*in* alias: usb:v0A5CpBD17d*dc*dsc*dp*ic*isc*ip*in* alias: usb:v0A5CpBD1Ed*dc*dsc*dp*ic*isc*ip*in* alias: sdio:c*v02D0d4373* alias: sdio:c*v02D0d4356* alias: sdio:c*v02D0d4354* alias: sdio:c*v02D0dA9BF* alias: sdio:c*v02D0d4345* alias: sdio:c*v02D0dA9A6* alias: sdio:c*v02D0d4339* alias: sdio:c*v02D0d4335* alias: sdio:c*v02D0dA962* alias: sdio:c*v02D0dA94D* alias: sdio:c*v02D0dA94C* alias: sdio:c*v02D0d4334* alias: sdio:c*v02D0d4330* alias: sdio:c*v02D0d4329* alias: sdio:c*v02D0d4324* alias: sdio:c*v02D0dA887* depends: brcmutil,cfg80211 intree: Y name: brcmfmac vermagic: 4.14.50-v7+ SMP mod_unload modversions ARMv7 p2v8 parm: txglomsz:Maximum tx packet chain size [SDIO] (int) parm: debug:Level of debug output (int) parm: p2pon:Enable legacy p2p management functionality (int) parm: feature_disable:Disable features (int) parm: alternative_fw_path:Alternative firmware path (string) parm: fcmode:Mode of firmware signalled flow control (int) parm: roamoff:Do not use internal roaming engine (int) parm: ignore_probe_fail:always succeed probe for debugging (int)
Die offiziellen Images können von der Raspberry Pi Webseite http://www.raspberrypi.org/downloads geladen werden. Die Images befinden sich in einer zip-Datei, welche optional mit
sha1sum archlinux-hf-2013-02-11.zip
überprüft werden kann, indem der vom Befehl zurück gegebene Hex-Wert mit dem Wert auf der Raspberry Pi Webseite verglichen wird. Die Werte sollten dabei exakt gleich sein. Die img-Datei kann entpackt werden mit
unzip archlinux-hf-2013-02-11.zip
nun erscheint die img-Datei im aktuellen Verzeichnis.
Um herauszufinden welches Device unsere SD-Karte ist kann man den Kommando
fdisk -l
anwenden. Fdisk zeigt mit der Option -l
eine Auflistung aller verfügbaren Speichergeräte.
Meine SD-Karte habe ich als /dev/sdd
identifiziert.
Das Image wird mit dd
auf die komplette Karte geschrieben, dazu wird unsere Karte entladen(unmount). Was gemountet ist kann man mit den Befehl mount
oder df -h
sehen. Da auf meiner Karte 2 Partitionen sind, werde ich beide Partitionen un-mounten.
umount /dev/sdd1 umount /dev/sdd2
Anschließend kann das schreiben des Images auf die Karte erfolgen.
dd bs=4M if=archlinux-hf-2013-02-11.img of=/dev/sdd
Oder gleichzeitiges entpacken und anschließendes schreiben:
unzip -p 2019-07-10-raspbian-buster.zip | sudo dd of=/dev/sdX bs=4M conv=fsync
bzw. falls es als xz komprimiert wurde:
xzcat 2023-12-05-raspios-bookworm-arm64.img.xz | dd of=/dev/sdb status=progress
mit folgenden ging es mit raspios-bookworm-arm64.img.xz nicht(Boot-Partition zeigte nur komische Zeichen als Dateinamen):
xzcat openSUSE-ARM-LXQT-raspberrypi4.aarch64.raw.xz | dd bs=4M of=/dev/sdX iflag=fullblock oflag=direct status=progress
Die Blockgröße von 4MB funktioniert in der Regel immer, wenn nicht, versuch es mit 1MB, auch wenn 1M erheblich länger dauern wird. Der dd
Kommando gibt keine Status Informationen zurück, eine Möglichkeit Informationen über den Status von dd
zu erhalten ist pkill -USR1 -n -x dd
.
Zum Schluß kann mit dem ausführen des sync
Kommando sichergestellt werden das alle Daten auf die Karte geschrieben worden sind.
Die images sind immer in 2 GB Größe verfügbar, bei einer 8GB Karte werden nur 2 GB genutzt. Deshalb kann man nun die Partition auf der SD-Karte vergrößern um den vollen verfügbaren Platz zu bekommen. Dies kann man unter Raspbian später auch automatisch machen lassen, hier wird das manuelle vorgehen trotzdem noch einmal beschrieben.
Die 2. Partition /dev/sdd2 ist die Daten Partition auf der SD-Karte. Mit fdisk -l /dev/sdd
lässt man sich vorher einene Überblick ausgeben.
root@iglu:/# fdisk -l /dev/sdd Platte /dev/sdd: 7964 MByte, 7964983296 Byte 246 Köpfe, 62 Sektoren/Spur, 1019 Zylinder, zusammen 15556608 Sektoren Einheiten = Sektoren von 1 × 512 = 512 Bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Festplattenidentifikation: 0x00014d34 Gerät boot. Anfang Ende Blöcke Id System /dev/sdd1 8192 122879 57344 c W95 FAT32 (LBA) /dev/sdd2 122880 15556607 7716864 83 Linux
Gestartet wird nun mit
fdisk /dev/sdd
nun kann man sich unter fdisk mit m die Hilfe anzeigen lassen. Mit d kann die zweite Partition gelöscht werden - dabei wird nur die Partition entfernt nicht die Daten - und anschließend mit n eine neue erstellt werden. Als Anfangssektor ist es wichtig nun 122880 von der mit fdisk -l erstellten Liste auszuwählen, der Endsektor kann so als Standard bestehen bleiben. Mit w werden die Änderungen auf die SD-Karte geschrieben.
Die weiteren Schritte sind:
e2fsck -f /dev/sdd2
resize2fs /dev/sdd2
überprüfen mit:
fdisk -l
mount /dev/sdd2 /mnt/
df -h
Möchte man WLAN beim ersten starten der neuen SD-Karte haben dann muss die Datei wpa_supplicant.conf
direkt in die Boot-Partition abgelegt werden.
Mit dem Namen des WLANs und den Zugangs-PW, welches idealerweise mit wpa_passphrase
verschlüsselt wurde. Die Datei sieht dann z.B. wie folgt aus:
ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev update_config=1 country=DE network={ ssid="homeWLAN" psk="verschlüsseltes-pw-erstellt-mit-wpa_passphrase" } network={ ssid="FRITZBox Fon WLAN 7660" psk="pw-funktioniert-auch-unverschlüsselt" key_mgmt=WPA-PSK }
Möchte man SSH beim ersten starten der neuen SD-Karte haben, dann muss die Datei ssh
direkt in die Boot-Partition abgelegt werden. Die Datei kann einfach leer sein, das war es auch schon.
Seit dem Raspberry Pi4 gibt es das neue Paket rpi-eeprom
welches die Tools rpi-eeprom-config
und rpi-eeprom-update
bereit stellt. Damit lässt sich dann z.B. die Firmware aktualisieren.
~ $ sudo rpi-eeprom-update *** UPDATE AVAILABLE *** BOOTLOADER: update available CURRENT: Do 3. Sep 12:11:43 UTC 2020 (1599135103) LATEST: Do 29. Apr 16:11:25 UTC 2021 (1619712685) RELEASE: default (/lib/firmware/raspberrypi/bootloader/default) Use raspi-config to change the release. VL805_FW: Using bootloader EEPROM VL805: up to date CURRENT: 000138a1 LATEST: 000138a1
Zunächst auf dem RPi überprüfen ob USB Booten bereits aktiviert ist:
vcgencmd otp_dump | grep 17: 17:3020000a
Wird die obige Ausgabe zurück geliefert ist alles Okay und das Image kann genauso mit dd
auf USB-Stick geschrieben werden wie es mit der SD-Karte gemacht wird.
Falls etwas anderes zurück geliefert wird, dann muss in der /boot/config.txt
die Zeile program_usb_boot_mode=1
eingefügt und der RPi neu gestartet werden. Beim Booten wird dann der USB-Boot Modus fest in den OTP (one-time programmable) Speicher geschrieben. Nachdem dieser gestartet ist kann der RPi wieder ausgeschaltet, die SD-Karte entnommen und ein USB-Speicher zum Booten verwendet werden.
Bei HDMI-Kabel Verbindung (mit Audio) zum Bildschirm folgende Einstellung verwenden:
hdmi_drive=2
Bei DVI-Kabel Verbindung (ohne Audio) zum Bildschirm folgende Einstellung verwenden:
hdmi_drive=1
Die Onboard Soundkarte kann auch deaktiviert werden, evtl. kann damit Energie eingespart werden.
dtparam=audio=off
~ $ aplay -l aplay: device_list:270: keine Soundkarten gefunden ...
Soundkarte aktivieren(ist der Standard):
# Enable audio (loads snd_bcm2835) dtparam=audio=on
Der Kommando aplay -l
sollte nun wieder eine Soundkarte anzeigen.
Test Sound Datei .mp3
Nur mit Raspbian Version vor 2018:
sudo su - cd /boot cp start.elf start.elf_backup perl -pne 's/\x47\xE9362H\x3C\x18/\x47\xE9362H\x3C\x1F/g' < start.elf_backup > start.elf
Nachsehen ob auf dem Raspberry die Multimedia Lizenz aktiviert ist:
$ vcgencmd codec_enabled MPG2 MPG2=enabled
$ vcgencmd codec_enabled WVC1 WVC1=enabled
Raspbian verwendet für den Auslagerungs-Speicher eine Swap-Datei, welche in den Standard Einstellungen
100MB groß ist. Einstellungen zu dieser Swap-Datei werden in der Konfig-Datei /etc/dphys-swapfile
vorgenommen.
Ausserdem gibt es einen Systemd Start-Jobs mit den sich der Swap ein oder ausschalten lässt.
Für die Kompilierung von größeren Programmen, wie z.B. den Spiel Wesnoth, muss genug Arbeitsspeicher zur Verfügung stehen.
Die Swap Konfig-Datei mit einen Editor öffnen:
sudo nano /etc/dphys-swapfile
Den Swap auf 1000MB vergrößern durch das anpassen folgender Zeile:
CONF_SWAPSIZE=1000
Im nano-Editor mit Strg + O die Änderung speichern. Anschließend folgenden Kommando aufrufen:
sudo /sbin/dphys-swapfile setup
Es wird als Ausgabe zurückgeliefert:
want /var/swap=1000MByte, checking existing: deleting wrong size file (104857600), generating swapfile ... of 1000MBytes
Als letztes den swapon
Kommando ausführen:
sudo swapon /var/swap
Neue Werte mit Kommando free
überprüfen:
free -h total used free shared buff/cache available Mem: 748M 297M 76M 45M 375M 370M Swap: 999M 0B 999M
Um die Maximale Leistung aus den Raspberrys zu holen muss auf eine gute Kühlung geachtet werden, denn bei 80° Grad taktet er automatisch runter um Beschädigungen der Platine zu vermeiden. Ein passiver Alu Kühlkörper reicht aus - Die Temperatur im Auge behalten.
ungetestet!!
cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_available_governors conservative ondemand userspace powersave performance schedutil
cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor ondemand
In die Datei /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor
den Wert performance
eintragen.
Für höhere Grafik und Video Leistung den Grafikspeicher höher setzen:
gpu_mem=256
Das System übertakten:
arm_freq=1300 core_freq=500 gpu_freq=500 sdram_freq=500 over_voltage=4
Es geht darum eine einfache Spannungsversorgung über 4xAA (Mingon) Akku-Stapel zu realisieren und das ganze per WLAN ins lokale Netz erreichbar zu machen.
Um die Laufzeit zu erhöhen werden insgesamt 2 Akku-Stapel, bestehend aus 4 Mignon Akkus eingesetzt. Parallel dazu ist eine Solarzelle geschaltet, welche aus mehreren zusammen-geschalteten Einzel-Zellen besteht. Diese Zellen stammten von billigen Solar-Leuchten die es oft in 5er Pack für 5€ gibt. Die zusammengeschaltete Solarzelle liefert ohne Last ca. 6,2 Volt. Ein Strom von nur 0,0186A wurde im Betrieb an der Solarzelle gemessen bei bedeckten Himmel. Eine Diode 1N4007 sorgt dafür das der Strom nur in Richtung zur Batterie hin fließt und nicht nachts von der Batterie zurück zur Solarzelle. An der GPIO-Leiste wird an den Pin 2(5V) und 6(GND) der RPi mit Energie versorgt. Zwei große Kondensatoren mit 4,7mF und 470µF sind parallel zu den Akkus und der Solarzelle geschaltet, diese sollen Spannungsschwankungen mildern.
vereinfachter Schaltplan:
Am Versuchs Aufbau liegt an einem leicht bedeckten Tag ein Spannung von 5,16 Volt. Diese wäre optimal für den RPi, welcher mit einer Spannung von 4,7 bis 5,6 Volt arbeitet.
Versuchs Aufbau:
Das folgende Bild zeigt den gestarteten Raspberry Pi mit aktivierten WLAN:
Der Raspberry 1 verfügt über 2 Messpunkte auf seiner Platine TP1 und TP2, hier sollte man die Versorgungsspg. messen können. In der ersten Minuten waren es immerhin noch 4,78V aber schon nach ca. 3 Minuten waren es nur noch 3,8 V dann wird der RPi instabil und schaltet sich ab. Der WLAN Stick war nach diesen max. 4 Minuten schon ordentlich warm, meiner Meinung nach ist das WLAN der größte Energiefresser.
Um die Laufzeit bei Akku Betrieb zu erhöhen gibt es verschiedene Möglichkeiten. Zum einen sollten die Optionen aus der /boot/config.txt
genutzt werden. Nachfolgend findet man hier weitere Punkte zum Energie sparen.
Falls das light-Image genutzt wird, sollten die meisten Dienste schon nicht installiert sein. Andernfalls sollte man sehe, das man noch weiter Dienste deaktivieren kann:
Der folgende Kommando sollte multi-user.target
zurück liefern aber niemals graphial.target
, da dies bedeuten würde, das die komplette graphische Oberfläche geladen wird.
systemctl get-default
Die folgenden Dienste jeweils mit sudo systemctl stop Dienstname
stoppen und dann mit disable
auch für den nächsten reboot dauerhaft deaktivieren:
sudo systemctl disable cups sudo systemctl disable sound.target sudo systemctl disable bluetooth.target
WLAN und Bluetooth abschalten, wenn es nicht benötigt wird und deaktiviere mit rfkill
auch die zugehörigen Funk-Module um weitere Energie zu sparen.
WLAN ist in meinem Fall allerdings ein muss, aber ich kann die Tx-Power auf den niedrigsten Wert setzen:
iwconfig wlan0 txpower 0
Hier kann am besten in der config.txt
folgender Eintrag gesetzt werden:
# turn wifi and bluetooth off dtoverlay=disable-wifi dtoverlay=disable-bt
HDMI deaktivieren, aber keine Ahnung wie viel Einsparung es bringt
/opt/vc/bin/tvservice --off
Einschalten lässt sich HDMI wieder mit:
/opt/vc/bin/tvservice -p
Eine weitere Möglichkeit ist das Generieren des Videobildes und seine Ausgabe über HDMI zu deaktivieren. Da dies ansonsten ständig geschehen würde, auch wenn der Monitor abgeschaltet ist, spart dies zusätzliche Energie (wenn auch vermutlich nicht besonders viel).
/opt/vc/bin/vcgencmd display_power off
Damit die Einstellungen beim nächsten reboot überleben, muss die Zeile iwconfig wlan0 txpower 0
und die Zeile /opt/vc/bin/tvservice –off
in die Datei /etc/rc.local
vor dem exit0 eingetragen werden.
Neben der Möglichkeit die Funktionen der Power und ACT LED fast beliebig über die Datei /sys/class/leds/led1/trigger
zu definieren. Kann man diese LED's zum Energie sparen auch einfach ausschalten.
Die rote Power LED deaktivieren:
echo none | sudo tee /sys/class/leds/led0/trigger echo 0 | sudo tee /sys/class/leds/led1/brightness
Die grüne ACT LED deaktivieren:
echo none | sudo tee /sys/class/leds/led1/trigger echo 0 | sudo tee /sys/class/leds/led0/brightness
Zum dauerhaften deaktivieren muss das folgende in die /boot/config.txt
eingetragen sein:
# Disable the ACT LED. dtparam=act_led_trigger=none dtparam=act_led_activelow=off # Disable the PWR LED. dtparam=pwr_led_trigger=none dtparam=pwr_led_activelow=off
Falls die Original Pi Camera per Flachbandkabel angeschlossen sein sollte, lässt sich auch hier die rote LED an der Pi Camera deaktivieren. Hierzu muss die folgende Zeile in die /boot/config.txt
eingetragen werden.
disable_camera_led=1
CPU Takt verringern. Dies bringt wahrscheinlich den größtmöglichen Erfolg:
root@raspberryA1:~# cat /boot/config.txt #uncomment to overclock the arm. 700 MHz is the default. #arm_freq=800 gpu_mem=16 arm_freq_min=250 core_freq_min=100 sdram_freq_min=150 over_voltage_min=0
Er läuft nun mit 250MHz und braucht dadurch eine Minute länger zum hochfahren. Ohne Last läuft er mit 250MHz aber bei Last kann er automatisch wieder auf 700MHz zurück gehen.
Achtung auch die LAN Schnittstelle wird dann deaktiviert, da diese per USB angebunden ist.
# disable USB at Raspberry Pi 2 und 3 on Raspbian Stretch echo 0x0 > /sys/devices/platform/soc/3f980000.usb/buspower # to enable USB use the same line as above with "echo 0x1" echo 0x1 > /sys/devices/platform/soc/3f980000.usb/buspower
Um den System Pfad für die USB Energieversorgung in Raspbian Stretch zu finden:
find /sys/devices/ -name `dmesg -t | grep dwc_otg | grep "DWC OTG Controller" | awk '{print $2}' | cut -d ":" -f1`
Nicht benutzte NIC´s deaktivieren.
sudo ip link set eth0 down sudo ifconfig eth0 down
Nachdem der Energie verbrauch des WLANs, die CPU herunter getaktet und die 4 Mignon Zellen eines AkkuStapels mit einem Standard Akkuladegerät geladen wurden gab es einen zweiten Versuch. Dieses mal aber noch mit angeschlossenen Audio Verstärker und angeschlossenen Lautsprecher aus WakiTalki. Die Solarzelle wurde an diesen sonnigen Tag gut platziert.
top
-Kommando wird ausgeführt.aptitude update && aptitute full-upgrade
, Nach 20 Minuten fällt die Spg. ab unter 4V.Trotz zwei Wochen mit diesen harten Experimenten, unsauberes herunter fahren, große Spannungs-Schwankungen blieb das Dateisystem ext4 der SD-Karte immer voll funktionsfähig.
Nach der Installation ist es sinnvoll raspi-config
einmal aufzurufen. Dieses Programm findet sich auch in der grafischen Oberfläche oben links auf die Himbeere klicken, Einstellungen –> Raspberry-Pi-Konfiguration
Ab dieser Version hat sich die Ersteinrichtung für den Headless Betrieb geändert. Hierfür nutze ich das Lite Image. Auf der SD-Karte müss auf der Boot-Partition einige Dateien angelegt werden diese wären:
ssh
userconf
mit dem Inhalt: <username>:<password> Für password wird hier das verschlüsselt Passwort eingetragen, dieses holt man sich mit dem Komando openssl passwd -6
/etc/NetworkManager/system-connections/WLAN-Name.nmconnection
anlegen mit den folgenden Inhalt:[connection] id=WLAN-Name uuid=# random UUID in the format 11111111-1111-1111-1111-111111111111 type=wifi autoconnect=true interface-name=wlan0 [wifi] mode=infrastructure ssid=WLAN-Name [wifi-security] auth-alg=open key-mgmt=wpa-psk psk=WLAN-Passwort [ipv4] method=auto [ipv6] addr-gen-mode=default method=auto
sudo chmod -R 600 <path-to-rootfs>/etc/NetworkManager/system-connections/SSID.nmconnection sudo chown -R root:root <path-to-rootfs>/etc/NetworkManager/system-connections/SSID.nmconnection
Hier soll es eine einzige Datei geben, mit der man alle Punkte ab arbeiten kann:
With Raspberry Pi OS bookworm you can configure WiFi via a custom.toml
that you place in the bootfs partition (first boot only).
Note that this feature is experimental and will be replaced by cloud-init in the future.
An example gist and blog explains some of the options:
I am copying the example from the aforementioned gist (not affiliated):
# Required: config_version = 1 [system] hostname = "raspberrypi" [user] # If present, the default "rpi" user gets renamed to this "name" name = "rpi" # The password can be encrypted or plain. To encrypt, we can use "openssl passwd -5 raspberry" password = "$5$pN7oRnie.WDOHoJY$aWEYmKUytN/S/bxMza5ksBiurbSJmcvcysBKHSmYa45" password_encrypted = true [ssh] # ssh_import_id = "gh:user" # import public keys from github enabled = true password_authentication = false # We can also seed the ssh public keys configured for the default user: # authorized_keys = [ "ssh-rsa ... user@host", ... ] [wlan] ssid = "mywifi" password = "$5$pN7oRnie.WDOHoJY$aWEYmKUytN/S/bxMza5ksBiurbSJmcvcysBKHSmYa45" password_encrypted = true hidden = false # The country is written to /etc/default/crda # Reference: https://wireless.wiki.kernel.org/en/developers/Regulatory country = "IE" [locale] keymap = "gb" timezone = "Europe/London"
You could dig more into the firstboot or init_config scripts (the latter is what loads the config).
Entscheident ist dieses Verzeichnis auf der Wurzel-Partition wo die Einstellungen konfiguriert werden.
root@raspberrypi:~# ls -la /usr/lib/raspberrypi-sys-mods/ total 44 drwxr-xr-x 2 root root 4096 Mar 15 15:01 . drwxr-xr-x 63 root root 4096 Mar 15 15:02 .. -rwxr-xr-x 1 root root 3227 Nov 6 15:03 firstboot -rwxr-xr-x 1 root root 445 Dec 18 10:51 get_fw_loc -rwxr-xr-x 1 root root 419 Jan 6 2022 i2cprobe -rwxr-xr-x 1 root root 5486 Nov 7 09:30 imager_custom -rwxr-xr-x 1 root root 7319 Jul 25 2023 init_config -rwxr-xr-x 1 root root 117 Aug 31 2023 regenerate_ssh_host_keys -rwxr-xr-x 1 root root 339 Jul 25 2023 sshswitch
Falls kein Sound über HDMI möglich scheint oder er nur mit omxplayer
funktioniert aber WebBrowser, Audacity und mpv usw. keinen Sound liefern, hilft:
Beim RPi4 kann es helfen den anderen HDMI Port zu wechseln.
Ansonsten den folgenden Kommando ausführen:
amixer -q cset numid=3 3
Evtl. auch das(ungetestet):
amixer cset numd=1 1 amixer cset numd=1 100% 100% <- volume level
Weitere Möglichkeiten die helfen können:
apt update apt remove --purge alsa-utils* apt remove --purge alsamixer* apt install alsa-utils apt install alsamixer reboot
Nach dem Neustarten wähle oben, im Lautsprecher Icon, HDMI output in der Taskbar.
Diese Lösung kann deshalb funktionieren, weil der omxplayer
welcher ein sehr elementarer Musikspieler ist, nicht den alsa driver nutzt. Der omxplayer nutzt stattdessen seinen eigenen drivers namens openmax, daher kommt das Problem wahrscheinlich vom alsa drivers.
VLC ist in den Raspbian Software Repos ohne Hardwarebeschleunigung vorhanden, daher muss, wenn man VLC verwenden mag, es aus den Quellen kompiliert werden.
VLC mit Hardwarebeschleunigung unter Raspbian installieren:
wget http://steinerdatenbank.de/software/vlc-2.2.8-ffmpeg3-1.patch wget https://download.videolan.org/vlc/2.2.8/vlc-2.2.8.tar.xz sudo apt install autopoint pkg-config libtool build-essential autoconf sudo apt install liba52-0.7.4 libasound2 libass5 libavahi-client3 libavahi-common3 libavc1394-0 libbasicusageenvironment1 libbluray1 libbz2-1.0 libc6 libcairo2 libcddb2 libcdio13 libchromaprint1 libdbus-1-3 libdc1394-22 libdca0 libdirectfb-1.2-9 libdvbpsi10 libdvdnav4 libdvdread4 libebml4v5 libfaad2 libflac8 libfontconfig1 libfreetype6 libfribidi0 libgcc1 libgcrypt20 libglib2.0-0 libgme0 libgnutls30 libgpg-error0 libgroupsock8 libgsm1 libjpeg62-turbo libkate1 liblirc-client0 liblivemedia57 liblua5.2-0 liblzma5 libmad0 libmatroska6v5 libmodplug1 libmp3lame0 libmpcdec6 libmpeg2-4 libmtp9 libncursesw5 libogg0 libopus0 libpng16-16 libpulse0 libraw1394-11 libresid-builder0c2a librsvg2-2 librtmp1 libsamplerate0 libsdl-image1.2 libsdl1.2debian libshine3 libshout3 libsidplay2 libsnappy1v5 libsndio6.1 libspeex1 libspeexdsp1 libssh-gcrypt-4 libssh2-1 libstdc++6 libtag1v5 libtheora0 libtinfo5 libtwolame0 libudev1 libupnp6 libusageenvironment3 libva-drm1 libva-x11-1 libva1 libvcdinfo0 libvorbis0a libvorbisenc2 libvpx4 libwavpack1 libwebp6 libwebpmux2 libx11-6 libx264-148 libx265-95 libxcb-keysyms1 libxcb1 libxml2 libxvidcore4 libzvbi0 zlib1g libgdk-pixbuf2.0-0 libgtk2.0-0 libnotify4 libqt5core5a libqt5gui5 libqt5widgets5 libqt5x11extras5 libxi6 libsmbclient libxext6 libxinerama1 libxpm4 fonts-freefont-ttf libaa1 libcaca0 libegl1-mesa libgl1-mesa-glx libgles1-mesa libgles2-mesa libxcb-shm0 libxcb-xv0 libxcb-randr0 libxcb-composite0 sudo apt install liba52-0.7.4-dev libasound2-dev libass-dev libavahi-client-dev libavc1394-dev libbluray-dev libbz2-dev libc6-dev libcairo2-dev libcddb2-dev libcdio-dev libchromaprint-dev libdbus-1-dev libdc1394-22-dev libdca-dev libdirectfb-dev libdvbpsi-dev libdvdnav-dev libdvdread-dev libebml-dev libfaad-dev libflac-dev libfontconfig1-dev libfreetype6-dev libfribidi-dev libgcc-6-dev libgcrypt20-dev libglib2.0-dev libgme-dev libgnutls28-dev libgpg-error-dev libgsm1-dev libjpeg62-turbo-dev libkate-dev liblircclient-dev liblivemedia-dev liblua5.2-dev liblzma-dev libmad0-dev libmatroska-dev libmodplug-dev libmp3lame-dev libmpcdec-dev libmpeg2-4-dev libmtp-dev libncursesw5-dev libogg-dev libopus-dev libpng-dev libpulse-dev libraw1394-dev libresid-builder-dev librsvg2-dev librtmp-dev libsamplerate0-dev libsdl-image1.2-dev libsdl1.2-dev libshine-dev libshout3-dev libsidplay2-dev libsnappy-dev libsndio-dev libspeex-dev libspeexdsp-dev libssh-gcrypt-dev libssh2-1-dev libstdc++-6-dev libtag1-dev libtheora-dev libtinfo-dev libtwolame-dev libudev-dev libupnp6-dev libva-dev libvcdinfo-dev libvorbis-dev libvpx-dev libwavpack-dev libwebp-dev libx11-dev libx264-dev libx265-dev libxcb-keysyms1-dev libxcb1-dev libxml2-dev libxvidcore-dev libzvbi-dev zlib1g-dev libgdk-pixbuf2.0-dev libgtk2.0-dev libnotify-dev libqt5x11extras5-dev libxi-dev libsmbclient-dev libxext-dev libxinerama-dev libxpm-dev libaa1-dev libcaca-dev libegl1-mesa-dev libgles1-mesa-dev libgles2-mesa-dev libxcb-shm0-dev libxcb-xv0-dev libxcb-randr0-dev libxcb-composite0-dev libavcodec-dev libavformat-dev libgstreamer1.0-dev libswscale-dev tar -xf vlc-2.2.8.tar.xz cd vlc-2.2.8/ ./bootstrap patch -Np1 -i ../vlc-2.2.8-ffmpeg3-1.patch sed -i 's/error-implicit-function-declaration//' configure export CFLAGS="-I/opt/vc/include/ -I/opt/vc/include/interface/vcos/pthreads -I/opt/vc/include/interface/vmcs_host/linux -I/opt/vc/include/interface/mmal -I/opt/vc/include/interface/vchiq_arm -I/opt/vc/include/IL -I/opt/vc/include/GLES2 -I/opt/vc/include/EGL -mfloat-abi=hard -mcpu=cortex-a7 -mfpu=neon-vfpv4" CXXFLAGS="-I/opt/vc/include/ -I/opt/vc/include/interface/vcos/pthreads -I/opt/vc/include/interface/vmcs_host/linux -I/opt/vc/include/interface/mmal -I/opt/vc/include/interface/vchiq_arm -I/opt/vc/include/IL -mfloat-abi=hard -I/opt/vc/include/GLES2 -I/opt/vc/include/EGL -mcpu=cortex-a7 -mfpu=neon-vfpv4" LDFLAGS="-L/opt/vc/lib" ./configure --prefix=/usr --enable-omxil --enable-omxil-vout --enable-rpi-omxil --disable-mmal-codec --disable-mmal-vout --enable-gles2 make -j3 sudo make install
Starte den VLC Player im entpackten vlc Verzeichnis, bzw. von der Stelle aus wo auch obige Kommandos eingegeben wurden mit:
./vlc
Dies ist ein Link auf bin/vlc-static
. Der komplette Pfad ist, wenn man das gepackte vlc Archiv unter Downloads entpackt hatte:
/home/pi/Downloads/vlc-2.2.8/bin/vlc-static
Die Installation legt die Datei /usr/bin/vlc
an welche aber nur eine Konsolen Oberfläche bereit stellt. Daher verschiebe ich die vlc Datei, welche die grafischer Oberfläche bereit stellt, nach /usr/bin/vlc
:
sudo mv bin/vlc-static /usr/bin/vlc
After starting VLC for the first time, change the following options:
VLC will remember these settings.
sudo make uninstall
Weicht die Systemzeit sehr ab, kommt es vor das dass Software VerwaltungsTool apt
einen Fehler liefert. Beim Raspberry kann es leicht vorkommen, da es die Zeit über einen NTP-Server holt und diese bei fehlender Internet Verbindung falsch läuft. Daher die Zeit mit date -s „2020-05-12 19:23:00“
richtig setzen und apt update
erneut ausführen.
An den entsprechenden GPIO Pins können zum testen LED angeschlossen werden. Sind die GPIOs aktiviert und auf high Signal gesetzt so leuchtet die LED.
for GPIO in 17 27 22 23; do echo $GPIO > /sys/class/gpio/export; done for GPIO in 17 27 22 23; do echo out > /sys/class/gpio/gpio$GPIO/direction; done
for GPIO in 17 27 22 23; do sleep 4; echo 1 > /sys/class/gpio/gpio$GPIO/value; done
for GPIO in 17 27 22 23; do sleep 4; echo 0 > /sys/class/gpio/gpio$GPIO/value; done
Nachdem Download von qtox (Binär Paket) funktioniert bei USB-Webcams nur Video, aber nicht das integrierte Mikrofon. Auf der Konsole gestartet, gibt qtox Meldungen über Audio aus, in denen etwas von pulse steht. Nach der Installation von pulseaudio
, lässt sich die USB-Webcam in den Einstellungen von qtox als Audio Eingabegerät auswählen.
apt install pulseaudio
Suse(SLES) gibt es rein als 64Bit für Raspberry Pi3 und neuer. OpenSuse gibt es für alle Raspberry Pi Modelle.
Im Pfad /sys/class/gpio gibt es eine Datei „gpiochip298“. Die bedeutet die GPIO's starten ab 298.
Das kann man anhand der folgenden Datei ersehen:
cat /sys/kernel/debug/gpio gpiochip0: GPIOs 298-351, parent: platform/20200000.gpio, pinctrl-bcm2835: gpio-298 ( |sysfs ) in hi gpio-314 ( |led0 ) out hi
Möchte man nun GPIO 23 steuern, so muss man 298 + 23 nehmen und das Ergebnis „321“ dann in die export Datei schreiben:
echo 321 > /sys/class/gpio/export
GPIO als Output definieren:
echo out > gpio321/direction
Dann z.B. eine LED zum leuchten bringen:
echo 1 > gpio321/value
Mehrere gleichzeitig aktivieren in einer praktischen for-Schleife. Aktivieren der GPIOs 17, 27, 22 und 23
for GPIO in 17 27 22 23; do echo $(expr 298 + $GPIO) > /sys/class/gpio/export; done for GPIO in 17 27 22 23; do echo out > /sys/class/gpio/gpio$(expr 298 + $GPIO)/direction; done
Die GPIOs gleichzeitig einschalten und anschließend wieder deaktivieren:
for GPIO in 17 27 22 23; do echo 1 > /sys/class/gpio/gpio$(expr 298 + $GPIO)/value; sleep 3; done for GPIO in 17 27 22 23; do echo 0 > /sys/class/gpio/gpio$(expr 298 + $GPIO)/value; sleep 3; done
Hier Raspberry Pi 4 1GB Modell
pi@raspberrypi:~ $ lscpu Architecture: armv7l Byte Order: Little Endian CPU(s): 4 On-line CPU(s) list: 0-3 Thread(s) per core: 1 Core(s) per socket: 4 Socket(s): 1 Vendor ID: ARM Model: 3 Model name: Cortex-A72 Stepping: r0p3 CPU max MHz: 1500.0000 CPU min MHz: 600.0000 BogoMIPS: 108.00 Flags: half thumb fastmult vfp edsp neon vfpv3 tls vfpv4 idiva idivt vfpd32 lpae evtstrm crc32
pi@raspberrypi:~ $ cat /proc/cpuinfo processor : 0 model name : ARMv7 Processor rev 3 (v7l) BogoMIPS : 108.00 Features : half thumb fastmult vfp edsp neon vfpv3 tls vfpv4 idiva idivt vfpd32 lpae evtstrm crc32 CPU implementer : 0x41 CPU architecture: 7 CPU variant : 0x0 CPU part : 0xd08 CPU revision : 3 processor : 1 model name : ARMv7 Processor rev 3 (v7l) BogoMIPS : 108.00 Features : half thumb fastmult vfp edsp neon vfpv3 tls vfpv4 idiva idivt vfpd32 lpae evtstrm crc32 CPU implementer : 0x41 CPU architecture: 7 CPU variant : 0x0 CPU part : 0xd08 CPU revision : 3 processor : 2 model name : ARMv7 Processor rev 3 (v7l) BogoMIPS : 108.00 Features : half thumb fastmult vfp edsp neon vfpv3 tls vfpv4 idiva idivt vfpd32 lpae evtstrm crc32 CPU implementer : 0x41 CPU architecture: 7 CPU variant : 0x0 CPU part : 0xd08 CPU revision : 3 processor : 3 model name : ARMv7 Processor rev 3 (v7l) BogoMIPS : 108.00 Features : half thumb fastmult vfp edsp neon vfpv3 tls vfpv4 idiva idivt vfpd32 lpae evtstrm crc32 CPU implementer : 0x41 CPU architecture: 7 CPU variant : 0x0 CPU part : 0xd08 CPU revision : 3 Hardware : BCM2711 Revision : a03111 Serial : 10000000d8dbe01f Model : Raspberry Pi 4 Model B Rev 1.1
pi@raspberrypi:~ $ lspci 00:00.0 PCI bridge: Broadcom Limited Device 2711 (rev 10) 01:00.0 USB controller: VIA Technologies, Inc. VL805 USB 3.0 Host Controller (rev 01)
pi@raspberrypi:~ $ lsusb Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub Bus 001 Device 002: ID 2109:3431 VIA Labs, Inc. Hub Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Settings for eth0: Supported ports: [ TP MII ] Supported link modes: 10baseT/Half 10baseT/Full 100baseT/Half 100baseT/Full 1000baseT/Half 1000baseT/Full Supported pause frame use: Symmetric Receive-only Supports auto-negotiation: Yes Supported FEC modes: Not reported Advertised link modes: 10baseT/Half 10baseT/Full 100baseT/Half 100baseT/Full 1000baseT/Half 1000baseT/Full Advertised pause frame use: Symmetric Receive-only Advertised auto-negotiation: Yes Advertised FEC modes: Not reported Link partner advertised link modes: 10baseT/Full 100baseT/Full 1000baseT/Full Link partner advertised pause frame use: Symmetric Link partner advertised auto-negotiation: Yes Link partner advertised FEC modes: Not reported Speed: 1000Mb/s Duplex: Full Port: MII PHYAD: 1 Transceiver: internal Auto-negotiation: on Cannot get wake-on-lan settings: Operation not permitted Current message level: 0x00000007 (7) drv probe link Link detected: yes
pi@raspberrypi:~ $ vcgencmd measure_volts volt=0.8350V