Benutzer-Werkzeuge

Webseiten-Werkzeuge


Seitenleiste


C - Programmierung am Raspberry  Schaltpläne und Bauteilbeschreibungen  Adapterkabel  Mechanik  EDV-Literatur deutsch 



    FIAN Österreich     Imkerei WANKO
    Marktplatz Natur    
    Bäckerei Freitag

cm4_osinstall

Inbetriebnahme des CM4

Letztes Update 2021/02/17 01:27

Die Anleitung beschreibt die Installation eines Compute Modules mit eMMC-RAM, d.h. eines Speichers, der eine MicroSD Karte überflüssig macht. Nach dem Aufstecken des Compute Moduls 4 (in weiterer Folge CM4) und der Kontrolle, ob das CM4 vollständig eingerastet ist, eine Kurzschlußbrücke an J2/Fit Jumper to disable eMMC Boot stecken.

Eine Verbindung vom USB-Anschluss am Computer zum MicroUSB-Slave Anschluss am I/O Board des CM4 (in weiterer Folge CM4IO) herstellen.

Jedes Netzteil kann verwendet wereden, solange es 12 V bei 2 A oder mehr liefert und über einen 2,1 mm x 5,5 mm großen Zylinderstecker verfügt.

Installation unter Windows

Es muss sichergestellt werden, dass keine Schreiboperationen auf USB-Geräte Stattfinden, während das Installationsprogramm ausgeführt wird.

  • Das Windows-Installationsprogramm herunterladen und ausführen, um die Treiber und das Boot-Tool zu installieren.
  • Die CM4IO Karte einschalten. Die rote D1-LED leuchtet auf.
  • Nach der Installation das Programm rpiboot aufrufen. Windows sollte nun die Hardware finden und den Treiber installieren.
  • Nach einigen Sekunden wird das Compute Module eMMC unter Windows als Datenträger (USB-Massenspeichergerät) angezeigt.

Mit einem bevorzugten Programm, hier Etcher, das aktuelle Image auf das angezeigte USB-Massenspeichergerät kopieren. Nach dem erfolgreichen Kopieren des Images das CM4 rebooten und in das Boot-Directory eine Datei ohne Endung mit dem Namen ssh anlegen. Die Kurzschlußbrücke an J2 entfernen und das CM4 neu starten.

Das USB-Kabel zwischen PC und CM4IO entfernen, da ansonsten der USB-Anschluss, auch nach dem Eintrag dtoverlay=dwc2,dr_mode=host in der config.txt nicht funktioniert.

Jetzt können mit Putty die weiteren Einstellungen vorgenommen werden.
Als erstes, wie bereits oben erwähnt, einen Eintrag in der config.txt vornehmen.

sudo nano /boot/config.txt

Am Ende der config.txt folgenden Eintrag vornehmen:

dtoverlay=dwc2,dr_mode=host

und mit Strg+o und Strg+x speichern und beenden. Nach einem Neustart können die USB-Anschlüsse verwendet werden.

Installation unter Linux

Um die auführbare Datei rpiboot zu erstellen, muss eine USB-Bibliothek am Linux-Rechner installiert werden:

sudo apt install -y libusb-1.0-0-dev

Das USB-Boot-Repository auf den Linux Computer klonen:

git clone --depth=1 https://github.com/raspberrypi/usbboot

rpiboot erstellen:

cd usbboot
make

Um nun den eMMC-Speicher bereitzustellen, rpiboot aufrufen:

sudo ./rpiboot

Einige Sekunden später sollte das boot-Volume auf dem Linux-Computer bereitgestellt werden. Möglicherweise leuchtet auch die D2-LED auf. Das bedeutet, dass auf der eMMC Lese- / Schreibaktivitäten auf der Festplatte vorhanden sind. Nun kann das RaspberryOS Image auf den bereitgestellten Volume extrahiert werden. Die weiteren Schritte wie bei der Windows-Istallation durchführen.


Paketlisten aktualisieren

sudo su
apt update -y && apt full-upgrade -y && apt autoremove -y
sudo rpi-eeprom-update -a
sudo reboot

Fixe IP-Adresse

Der Raspberry Pi bekommt eine fixe IP-Adresse, hier 192.168.20.210. Hierfür öffnen wir die dhcpcd.conf:

sudo nano /etc/dhcpcd.conf

und fügen an das Ende der Datei folgendes ein:

# Eigenes Netzwerk
interface eth0
static ip_address=192.168.20.221/24
static routers=192.168.20.20
static domain_name_servers=192.168.20.20

Die dhcpcd.conf speichern und den Pi rebooten:

sudo reboot

Passwort für User pi ändern

Das Standardpasswort für den User pi ändern. Bei der Eingabe wird nichts angezeigt.

~ $ passwd
Changing password for pi.
Current password:altes_passwort
New password:neues_passwort
Retype new password:neues_passwort
passwd: password updated successfully
~ $ 

Wenn password updated successfully angezeigt wird, gilt ab sofort das neu eingegebene Passwort.


Midnight Commander installieren

Für die Bequemlichkeit wird der Midnight Commander installiert.

sudo apt install mc -y

Weitere Informationen sind im Artikel Midnight Commander auf dem RPi installieren zu finden.


Key-basierte SSH Logins mit PuTTY

Da bereits ein Key besteht, wird hier nur beschrieben, dass der Key in das .ssh kopiert werden soll. Detailierte Anweisungen befinden sich in der Beschreibung Raspberry als Dokuwiki-Server Teil 1.

mkdir ~/.ssh
chmod 700 ~/.ssh

Wireless aktivieren

Der CM4 verfügt über eine integrierte WLAN-Antenne. Wenn diese verwendet wird, sollte sie nicht von Metall umgeben sein. Alternativ dazu befindet sich am Modul ein Standard-U.FL-Anschluss (siehe Abbildung 1), sodass eine externe Antenne verwendet werden kann. Als Anschluss dient ein Hirose U.FL Stecker mit 2mm Ø. An diesen Stecker wird das Raspberry Antennen-Set angeschlossen. Dieses Antennenkit ist für die Verwendung mit dem Raspberry Pi Compute Module 4 zertifiziert.

Die Auswahl der internen oder externen Antenne erfolgt beim Booten durch einen Eintrag in der Datei config.txt und kann während des Betriebs nicht geändert werden. Die config.txt-Optionen sind dtparam=ant1, um die interne Antenne auszuwählen, oder dtparam=ant2 für die externe Antenne.

sudo nano /boot/config.txt
# Externe WLAN-Antenne einschalten
dtparam=ant2

WL_nDisable

Dieser Pin erfüllt eine Reihe von Funktionen:

  • Er kann verwendet werden, um den Aktivierungs- / Deaktivierungsstatus von drahtlosen Netzwerken zu überwachen oder anzuzeigen. Ein logisches high bedeutet, dass das WLAN-Modul eingeschaltet ist.
  • Wenn der Pin mit GND verbunden ist, wird das Einschalten des WLAN-Netzwerkmoduls verhindert. Dies ist nützlich, um den Stromverbrauch zu reduzieren oder in Anwendungen, in denen sichergestellt werden muss, dass das drahtlose Netzwerk deaktiviert bleibt.

WLAN aktivieren

Das WLAN kann entweder mit raspi-config aktiviert werden, oder durch einen Eintrag in der Datei wpa_supplicant.conf in der Boot-Partition.

1. Durch raspi-config

sudo raspi-config
  • 1 System Options Configure system settings
  • S1 Wireless LAN Enter SSID and passphrase

In den nächsten Abfragen die WLAN_Daten wie SSID und Kennwort, etc. eingeben und neu starten.

2. Durch einen Eintrag in der wpa_supplicant.conf

sudo nano /etc/wpa_supplicant/wpa_supplicant.conf
ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
update_config=1
country=AT

network={
        ssid="Netzwerkname"
        # scan_ssid=1 - Wenn der Netzwerkname nicht übertragen wird 
        scan_ssid=1
        psk="Kennwort"
}

Dieser Eintrag kann, analog zum Eintrag ssh in der Boot-Partition, nach dem Aufspielen des Raspi OS vorgenommen werden. Damit kann sich der Raspberry bereits beim ersten Hochfahren mit dem WLAN-Netz verbinden.

Wenn der Ländercode nicht in Großbuchstaben angegeben ist oder fehlt, wird der WLAN-Controller nicht aktiviert!

Nach der Änderung die Konfiguration neu laden:

sudo /etc/init.d/networking reload

sudo systemctl daemon-reload
sudo systemctl restart dhcpcd

WLAN-Netzwerkdetails

Um nach drahtlosen Netzwerken zu suchen, kann der Befehl sudo iwlist wlan0 scan verwendet werden. Dadurch werden alle verfügbaren drahtlosen Netzwerke zusammen mit anderen nützlichen Informationen aufgelistet.

sudo iwlist wlan0 scan

Besonders Interessant sind:

  • ESSID: „name“ ist der Name des drahtlosen Netzwerks.
  • IE: IEEE 802.11i / WPA2 Version 1 ist die verwendete Authentifizierung. In diesem Fall ist es WPA2, der neuere und sicherere Wireless-Standard ist WPA2, der neuere und sicherere Wireless-Standard, der WPA ersetzt.

WLAN aus- / einschalten

sudo ip link set wlan0 down && sudo ip link set wlan0 up

oder

sudo ifconfig wlan0 down && sudo ifconfig wlan0 up

Reset WLAN-Interface

sudo wpa_cli -i wlan0 reconfigure

WLAN Powersave ausschalten

Um das Powersave des WLAN-Adapters auszuschalten, ist in der rc.lokal der Eintrag /sbin/iw wlan0 set power_save off vor exit 0 vorzunehmen.

sudo nano /etc/rc.lokal
/sbin/iw wlan0 set power_save off

Nach dem Speichern den RPi mit sudo reboot neu starten.

Der Zustand von Power save kann mit iw wlan0 get power_save kontrolliert werden:

pi@raspberrypi:~ $ iw wlan0 get power_save
Power save: off

Notizen:

iwconfig
sudo systemctl daemon-reload
sudo systemctl restart dhcpcd
sudo iw wlan0 set power_save on / off
iw wlan0 get power_save
sudo iwlist wlan0 scan

https://revolution.kunbus.de/tutorials/uebersicht-revpi-flat/wlan-und-bluetooth-einrichten-flat/
https://www.raspberrypi.org/documentation/configuration/wireless/wireless-cli.md

Keep the device from going to sleep
Enter the command sudo nano /etc/rc.local to edit the rc.local file
Add line /sbin/iw wlan0 set power_save off above exit 0
check: /sbin/iw wlan0 get power_save

Bluetooth

Notizen:

sudo systemctl status bluetooth
sudo bluetoothctl


WiringPi

Die Versionen von WiringPi für den RPi3 und RPi4 funktionieren leider nicht mehr am CM4. Gordon Henderson hat aus verständlichen Gründen die Weiterentwicklung (vorerst) eingestellt. Daher großen Dank an meinen Freund Josef F. für den Patch, der WiringPi auch am CM4 verfügbar macht.

Falls bereits eine Version von WiringPi installiert ist, diese mit:

sudo apt purge wiringpi
hash -r

entfernen. Die Version wiringpi-2.60-1 nach /home/pi kopieren und mit

sudo dpkg -i wiringpi-2.60-1.deb

installieren. Mit

gpio readall

die Funktion kontrollieren. Die Ausgabe wird in etwa so aussehen:

 +-----+-----+---------+------+---+---Pi CM4-+---+------+---------+-----+-----+
 | BCM | wPi |   Name  | Mode | V | Physical | V | Mode | Name    | wPi | BCM |
 +-----+-----+---------+------+---+----++----+---+------+---------+-----+-----+
 |     |     |    3.3v |      |   |  1 || 2  |   |      | 5v      |     |     |
 |   2 |   8 |   SDA.1 | ALT0 | 1 |  3 || 4  |   |      | 5v      |     |     |
 |   3 |   9 |   SCL.1 | ALT0 | 1 |  5 || 6  |   |      | 0v      |     |     |
 |   4 |   7 | GPIO. 7 |   IN | 1 |  7 || 8  | 1 | IN   | TxD     | 15  | 14  |
 |     |     |      0v |      |   |  9 || 10 | 1 | IN   | RxD     | 16  | 15  |
 |  17 |   0 | GPIO. 0 |   IN | 0 | 11 || 12 | 0 | IN   | GPIO. 1 | 1   | 18  |
 |  27 |   2 | GPIO. 2 |   IN | 0 | 13 || 14 |   |      | 0v      |     |     |
 |  22 |   3 | GPIO. 3 |   IN | 0 | 15 || 16 | 0 | IN   | GPIO. 4 | 4   | 23  |
 |     |     |    3.3v |      |   | 17 || 18 | 0 | IN   | GPIO. 5 | 5   | 24  |
 |  10 |  12 |    MOSI |   IN | 0 | 19 || 20 |   |      | 0v      |     |     |
 |   9 |  13 |    MISO |   IN | 0 | 21 || 22 | 0 | IN   | GPIO. 6 | 6   | 25  |
 |  11 |  14 |    SCLK |   IN | 0 | 23 || 24 | 1 | IN   | CE0     | 10  | 8   |
 |     |     |      0v |      |   | 25 || 26 | 1 | IN   | CE1     | 11  | 7   |
 |   0 |  30 |   SDA.0 |   IN | 1 | 27 || 28 | 1 | IN   | SCL.0   | 31  | 1   |
 |   5 |  21 | GPIO.21 |   IN | 1 | 29 || 30 |   |      | 0v      |     |     |
 |   6 |  22 | GPIO.22 |   IN | 1 | 31 || 32 | 0 | IN   | GPIO.26 | 26  | 12  |
 |  13 |  23 | GPIO.23 |   IN | 0 | 33 || 34 |   |      | 0v      |     |     |
 |  19 |  24 | GPIO.24 |   IN | 0 | 35 || 36 | 0 | IN   | GPIO.27 | 27  | 16  |
 |  26 |  25 | GPIO.25 |   IN | 0 | 37 || 38 | 0 | IN   | GPIO.28 | 28  | 20  |
 |     |     |      0v |      |   | 39 || 40 | 0 | IN   | GPIO.29 | 29  | 21  |
 +-----+-----+---------+------+---+----++----+---+------+---------+-----+-----+
 | BCM | wPi |   Name  | Mode | V | Physical | V | Mode | Name    | wPi | BCM |
 +-----+-----+---------+------+---+---Pi CM4-+---+------+---------+-----+-----+

Oder mit gpio -v

pi@raspberrypi:~ $ gpio -v
gpio version: 2.60
Copyright (c) 2012-2018 Gordon Henderson
This is free software with ABSOLUTELY NO WARRANTY.
For details type: gpio -warranty

Raspberry Pi Details:
  Type: CM4, Revision: 00, Memory: 4096MB, Maker: Sony
  * Device tree is enabled.
  *--> Raspberry Pi Compute Module 4 Rev 1.0
  * This Raspberry Pi supports user-level GPIO access.
pi@raspberrypi:~ $

Anhang

PCIe USB-Karten müssen ein VLI VL805 chipset haben, um vom CM4 voll unterstützt zu werden.


PCIe NVMe Support: mit modprobe nvme-core das Kernel-Modul einschalten und rebooten. An den NVMe-Adapter eine Samsung 970 EVO Plus anschliessen. Mit lsblk finden, formattieren und mounten.


Um den Antennenanschluss zu aktivieren (und die integrierte PCB-Antenne zu deaktivieren), muss in die Datei /boot/config.txt die folgende Zeile hinzufügen werden und der Pi neu gestartet werden:

# Switch to external antenna.
dtparam=ant2

Der Lüfter Anschluss unterstützt 12V Lüfter mit PWM-Antrieb und Tachoausgang. Ein EMC2301 steuert den Lüfter über I2C. Die 12V-Spannung für den Lüfter kommt vom 12V-Eingang und ist nicht geregelt.


Echtzeituhr (RTC)

Auf der Raspberry Pi Compute Module 4-I/O-Karte befindet sich eine PCF85063AT-RTC. Für eine CR2032-Batterie ist eine Batteriewanne vorhanden. Bei der Ersteinrichtung sollte das CLKOUT der RTC deaktiviert werden, um Strom zu sparen. Der Alarmausgang der RTC wird verwendet, um den CM4 von einem vorherigen Herunterfahren zu aktivieren. Wenn während des normalen Betriebs ein Alarm ausgelöst wird, wird der CM4 zurückgesetzt. Dieser kann bei Bedarf als Watchdog-Timer verwendet werden.
Um den I2C-Bus zur RTC zu aktivieren, muss dtparam=i2c_vc=on in der config.txt eingetragen sein. Die RTC befindet sich dann auf der i2c-10-Adresse 0x51 (7-Bit-Adresse). Rebooten.

I2C in raspi-config einschalten.

sudo apt install -y i2c-tools
i2cdetect -y 10
     0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f
00:          -- -- -- -- -- -- -- -- -- 0c -- -- --
10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 2f
30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
50: -- 51 -- -- -- -- -- -- -- -- -- -- -- -- -- --
60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
70: -- -- -- -- -- -- -- --

timedatectl aufrufen. Die RTC time wird n/a anzeigen.

pi@raspberrypi:~ $ timedatectl
               Local time: Sun 2021-02-07 01:35:19 CET
           Universal time: Sun 2021-02-07 00:35:19 UTC
                 RTC time: n/a
                Time zone: Europe/Vienna (CET, +0100)
System clock synchronized: yes
              NTP service: active
          RTC in local TZ: no
pi@raspberrypi: ~ $ sudo raspi-config nonint do_i2c 0
sudo nano /boot/config.txt

[cm4]
dtparam=i2c_vc=on
dtoverlay=i2c-rtc,pcf85063a,i2c_csi_dsi
sudo raspi-config nonint do_i2c 0

Den RPi mit sudo reboot neu starten

Nun nochmals timedatectl aufrufen und die RTC time zeigt die aktuelle Uhrzeit an.

pi@raspberrypi:~ $ timedatectl
               Local time: Sun 2021-02-07 01:42:52 CET
           Universal time: Sun 2021-02-07 00:42:52 UTC
                 RTC time: Sun 2021-02-07 00:42:53
                Time zone: Europe/Vienna (CET, +0100)
System clock synchronized: yes
              NTP service: active
          RTC in local TZ: no

cm4_osinstall.txt · Zuletzt geändert: 2021/04/11 15:30 von administrator