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.
Es muss sichergestellt werden, dass keine Schreiboperationen auf USB-Geräte Stattfinden, während das Installationsprogramm ausgeführt wird.
rpiboot
aufrufen. Windows sollte nun die Hardware finden und den Treiber installieren. 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.
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.
sudo su apt update -y && apt full-upgrade -y && apt autoremove -y sudo rpi-eeprom-update -a sudo reboot
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
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.
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.
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
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
Dieser Pin erfüllt eine Reihe von Funktionen:
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
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.
Nach der Änderung die Konfiguration neu laden:
sudo /etc/init.d/networking reload sudo systemctl daemon-reload sudo systemctl restart dhcpcd
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:
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
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
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
sudo systemctl status bluetooth sudo bluetoothctl
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:~ $
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.
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