Skip to content

Quartz64 - dts File bearbeiten

Angeheftet Verschoben Quartz64
  • ACHTUNG, nur was für erfahrene Nutzer. Beschädigungen der Hardware nicht ausgeschlossen!! Also, Hirn einschalten!!

    Was ist das dts File?

    Wenn ich das alles richtig verstanden habe, wird in diesem File das SBC hardwaremäßig definiert.

    Beispiel

            cpus {
                    #address-cells = <0x02>;
                    #size-cells = <0x00>;
    
                    cpu@0 {
                            device_type = "cpu";
                            compatible = "arm,cortex-a55";
                            reg = <0x00 0x00>;
                            clocks = <0x02 0x00>;
                            #cooling-cells = <0x02>;
                            enable-method = "psci";
                            operating-points-v2 = <0x03>;
                            cpu-supply = <0x04>;
                            phandle = <0x06>;
                    };
    
                    cpu@100 {
                            device_type = "cpu";
                            compatible = "arm,cortex-a55";
                            reg = <0x00 0x100>;
                            #cooling-cells = <0x02>;
                            enable-method = "psci";
                            operating-points-v2 = <0x03>;
                            cpu-supply = <0x04>;
                            phandle = <0x07>;
                    };
    
                    cpu@200 {
                            device_type = "cpu";
                            compatible = "arm,cortex-a55";
                            reg = <0x00 0x200>;
                            #cooling-cells = <0x02>;
                            enable-method = "psci";
                            operating-points-v2 = <0x03>;
                            cpu-supply = <0x04>;
                            phandle = <0x08>;
                    };
    
                    cpu@300 {
                            device_type = "cpu";
                            compatible = "arm,cortex-a55";
                            reg = <0x00 0x300>;
                            #cooling-cells = <0x02>;
                            enable-method = "psci";
                            operating-points-v2 = <0x03>;
                            cpu-supply = <0x04>;
                            phandle = <0x09>;
                    };
    

    Das File liegt bei der Benutzung des Manjaro Images unter /boot/dtbs/rockchip/ und hat folgenden Namen

    rk3566-quartz64-a.dtb
    

    oder

      rk3566-quartz64-b.dtb
    

    Ok, diese Files sind Binärfiles, das heißt wir können sie nicht einfach lesen, ändern und speichern. Dazu braucht man ein Tool mit dem Namen Device-Tree-Compiler - oder auch dtc

    Installiert man unter Manjaro mit

    pacman -S dtc
    

    Dann kopiert man sich das .dtb mal irgendwo hin, sicher ist sicher 😉

    cp /boot/dtbs/rockchip/rk3566-quartz64-b.dtb /root
    

    Nun wandeln wir das File in ein lesbares Format um.

    dtc -I dtb -O dts -o /root/testfile.dts /root/rk3566-quartz64-b.dtb
    
    • -I dtb - Input format
    • -O dts - Output format
    • -o - Output file
    • und am Ende das Sourcefile

    Für mich etwas seltsamer Aufbau, so das ich immer durcheinander komme. Für mich wäre Quelle -> Ziel logischer. Aber gut, so schreibe ich das mal wieder hier hin, damit ich es beim nächsten Mal nachlesen kann.

    Wir bekommen ein File mit dem Namen testfile.dts

    .dts steht für Source File
    .dtb steht für Binär File

    Dieses File ist ein ganz normales Textfile, was wir nun lesen, ändern und speichern können.

            pmu {
                    compatible = "arm,cortex-a55-pmu";
                    interrupts = <0x00 0xe4 0x04 0x00 0xe5 0x04 0x00 0xe6 0x04 0x00 0xe7 0x04>;
                    interrupt-affinity = <0x06 0x07 0x08 0x09>;
            };
    
            psci {
                    compatible = "arm,psci-1.0";
                    method = "smc";
            };
    
            timer {
                    compatible = "arm,armv8-timer";
                    interrupts = <0x01 0x0d 0x04 0x01 0x0e 0x04 0x01 0x0b 0x04 0x01 0x0a 0x04>;
                    arm,no-tick-in-suspend;
            };
    
            xin24m {
                    compatible = "fixed-clock";
                    clock-frequency = <0x16e3600>;
                    clock-output-names = "xin24m";
                    #clock-cells = <0x00>;
                    phandle = <0xa8>;
            };
    
            xin32k {
                    compatible = "fixed-clock";
                    clock-frequency = <0x8000>;
                    clock-output-names = "xin32k";
                    pinctrl-0 = <0x0a>;
                    pinctrl-names = "default";
                    #clock-cells = <0x00>;
                    phandle = <0xa9>;
            };
    
            sram@10f000 {
                    compatible = "mmio-sram";
                    reg = <0x00 0x10f000 0x00 0x100>;
                    #address-cells = <0x01>;
                    #size-cells = <0x01>;
                    ranges = <0x00 0x00 0x10f000 0x100>;
    
                    sram@0 {
                            compatible = "arm,scmi-shmem";
                            reg = <0x00 0x100>;
                            phandle = <0x05>;
                    };
            };
    
            sata@fc400000 {
                    compatible = "snps,dwc-ahci";
                    reg = <0x00 0xfc400000 0x00 0x1000>;
                    clocks = <0x0b 0x9b 0x0b 0x9c 0x0b 0x9d>;
                    clock-names = "sata\0pmalive\0rxoob";
                    interrupts = <0x00 0x5f 0x04>;
                    interrupt-names = "hostc";
                    phys = <0x0c 0x01>;
                    phy-names = "sata-phy";
                    ports-implemented = <0x01>;
                    power-domains = <0x0d 0x0f>;
                    status = "okay";
                    phandle = <0xaa>;
            };
    

    wird fortgesetzt....

  • Teil 2

    Wir wollen aus dem Souce-File wieder ein .dtb machen.

     dtc -I dts -O dtb -o /root/rk3566-quartz64-b.dtb /root/testfile.dts
    
    • -I dts - Input format
    • -O dtb - Output format
    • -o - Output file
    • und am Ende das Sourcefile

    Wir drehen die beiden Parameter -I und -O um und passen die Files an. Danach kommen ganz viele Warnungen, so was hier

    /root/testfile.dts:1119.3-56: Warning (clocks_property): /mmc@fe2b0000:clocks: cell 0 is not a phandle reference
    /root/testfile.dts:1119.3-56: Warning (clocks_property): /mmc@fe2b0000:clocks: cell 2 is not a phandle reference
    

    Aber, da fehlen mir die Kenntnisse um beurteilen zu können, ob das funktioniert.

    Zum Schluss kopiert man das fertig geändert .dtb wieder in den /boot Ordner.

    cp /root/rk3566-quartz64-b.dtb /boot/dtbs/rockchip/
    

    Das Bord neustarten und hoffen 🙂

  • Ich weiß nicht, wonach ich gesucht habe, vermutlich nach

    apt install device-tree-compiler
    

    das gibt es im Manjaro Image nicht, es heißt ganz einfach dtc 😎 Also, ganz einfach mit

    pacman -S dtc
    

    installieren. Dann kann man sich diesen Umweg mit snapd sparen.

  • FrankMF FrankM verschob dieses Thema von Quartz64 am
  • FrankMF FrankM verschob dieses Thema von Quartz64 - A am
  • FrankMF FrankM hat dieses Thema am angepinnt

  • Rest-Server v0.13.0 released

    Restic
    2
    0 Stimmen
    2 Beiträge
    281 Aufrufe
    FrankMF
    Download Rest-Server und installieren

    Im Github Repository den aktuellen Release suchen. Hier am Beispiel der aktuellen Version 0.13.0 (27.07.2024) Datei herunterladen

    wget https://github.com/restic/rest-server/releases/download/v0.13.0/rest-server_0.13.0_linux_amd64.tar.gz

    Die Datei entpacken

    tar -xf rest-server_0.13.0_linux_amd64.tar.gz

    Ins Verzeichnis wechseln

    cd rest-server_0.13.0_linux_amd64

    Wenn der Rest-Server läuft, dann muss man diesen erst mal stoppen.

    systemctl stop rest-server

    Danach kopiert man das File nach bin. Wer mag sichert vorher das alte File.

    cp rest-server /usr/local/bin

    Danach kann man den Rest-Server wieder starten.

    systemctl start rest-server

    Versionskontrolle

    root@rest-server:~# rest-server -v rest-server version rest-server 0.13.0 compiled with go1.22.5 on linux/amd64

    Die Hilfe vom Rest-Server

    root@rest-server:~# rest-server -h Run a REST server for use with restic Usage: rest-server [flags] Flags: --append-only enable append only mode --cpu-profile string write CPU profile to file --debug output debug messages -h, --help help for rest-server --htpasswd-file string location of .htpasswd file (default: "<data directory>/.htpasswd)" --listen string listen address (default ":8000") --log filename write HTTP requests in the combined log format to the specified filename (use "-" for logging to stdout) --max-size int the maximum size of the repository in bytes --no-auth disable .htpasswd authentication --no-verify-upload do not verify the integrity of uploaded data. DO NOT enable unless the rest-server runs on a very low-power device --path string data directory (default "/tmp/restic") --private-repos users can only access their private repo --prometheus enable Prometheus metrics --prometheus-no-auth disable auth for Prometheus /metrics endpoint --tls turn on TLS support --tls-cert string TLS certificate path --tls-key string TLS key path -v, --version version for rest-server Systemd

    Wer noch ein passendes systemd File benötigt.

    [Unit] Description=Rest Server After=syslog.target After=network.target [Service] Type=simple User=rest-server Group=rest-server ExecStart=/usr/local/bin/rest-server --private-repos --tls --tls-cert /mnt/rest-server/<DOMAIN>/fullchain.pem --tls-key /mnt/rest-server/<DOMAIN>/key.pem --path /mnt/rest-server Restart=always RestartSec=5 # Optional security enhancements NoNewPrivileges=yes PrivateTmp=yes ProtectSystem=strict ProtectHome=yes ReadWritePaths=/mnt/rest-server [Install] WantedBy=multi-user.target
  • Redis Insight - Desktop UI

    Redis
    1
    0 Stimmen
    1 Beiträge
    104 Aufrufe
    Niemand hat geantwortet
  • Semaphore - Die API

    Verschoben Ansible
    2
    0 Stimmen
    2 Beiträge
    162 Aufrufe
    FrankMF

    Ich hasse schlecht lesbaren Code, scheint man sich bei Python so anzugewöhnen. Habe da nochmal was mit der langen Zeile getestet.

    stages: - deploy deploy: stage: deploy script: # $SEMAPHORE_API_TOKEN is stored in gitlab Settings/ CI/CD / Variables - >- curl -v XPOST -H 'Content-Type: application/json' -H 'Accept: application/json' -H "Authorization: Bearer $SEMAPHORE_API_TOKEN " -d '{"template_id": 2}' https://<DOMAIN>/api/project/2/tasks only: - master # Specify the branch to trigger the pipeline (adjust as needed)

    Hier noch was Dr. ChatGPT dazu schreibt

    631de9d4-b04d-4043-bfff-c5f2d1b6eea7-grafik.png

    Erledigt - läuft 🙂 Und verstanden habe ich es auch.

  • Ansible - Hetzner Server erstellen

    Verschoben Ansible
    1
    0 Stimmen
    1 Beiträge
    226 Aufrufe
    Niemand hat geantwortet
  • Quartz64 - Modell B - WiFi

    Quartz64 - B
    1
    0 Stimmen
    1 Beiträge
    173 Aufrufe
    Niemand hat geantwortet
  • Quartz64 - Modell B - M.2 Anschluss

    Quartz64 - B
    3
    0 Stimmen
    3 Beiträge
    240 Aufrufe
    FrankMF

    Ich hatte schon drauf getippt, das der Slot nur mit einer Lane angeschlossen ist.

    <pgwipeout> It is a single lane pcie2 port.

    Und damit ist das das erwartete Ergebnis

    root@debian:/mnt/nvme# dd if=/dev/zero of=sd.img bs=4M count=4096 oflag=direct 4096+0 records in 4096+0 records out 17179869184 bytes (17 GB, 16 GiB) copied, 58.4993 s, 294 MB/s

    Das alles mit Debian 10, was man mit Peters Buildsystem installieren kann. Kann man aber auch bei Bedarf auf 11.3 hochziehen 🙂

    root@debian:/etc# uname -a Linux debian 5.17.0 #1 SMP PREEMPT Thu Apr 7 13:38:56 UTC 2022 aarch64 GNU/Linux root@debian:/etc# cat debian_version 11.3 root@debian:/etc#
  • ROCKPro64 - Debian Bullseye Teil 1

    ROCKPro64
    17
    0 Stimmen
    17 Beiträge
    2k Aufrufe
    FrankMF

    Durch diesen Beitrag ist mir mal wieder eingefallen, das wir das erneut testen könnten 😉

    Also die aktuellen Daten von Debian gezogen. Das Image gebaut, könnt ihr alles hier im ersten Beitrag nachlesen. Da die eingebaute Netzwerkschnittstelle nicht erkannt wurde, habe ich mal wieder den USB-to-LAN Adapter eingesetzt.

    Bus 005 Device 002: ID 0b95:1790 ASIX Electronics Corp. AX88179 Gigabit Ethernet

    Die Installation wollte ich auf einem NVMe Riegel installieren.

    Die Debian Installation durchgezogen und nach erfolgreicher Installation neugestartet. Und siehe da, ohne das man alles möglich ändern musste, bootete die NVMe SSD 🤓

    Eingesetzter uboot -> 2020.01-ayufan-2013......

    Die nicht erkannte LAN-Schnittstelle müsste an nicht freien Treibern liegen, hatte ich da irgendwo kurz gelesen. Beim Schreiben dieses Satzes kam die Nacht und ich konnte noch mal drüber schlafen. Heute Morgen, beim ersten Kaffee, dann noch mal logischer an die Sache ran gegangen.

    Wir schauen uns mal die wichtigsten Dinge an.

    root@debian:~# ip a 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000 link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 inet 127.0.0.1/8 scope host lo valid_lft forever preferred_lft forever inet6 ::1/128 scope host valid_lft forever preferred_lft forever 2: eth0: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN group default qlen 1000 link/ether 62:03:b0:d6:dc:b3 brd ff:ff:ff:ff:ff:ff 3: enx000acd26e2c8: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000 link/ether 00:0a:cd:26:e2:c8 brd ff:ff:ff:ff:ff:ff inet 192.168.3.208/24 brd 192.168.3.255 scope global dynamic enx000acd26e2c8 valid_lft 42567sec preferred_lft 42567sec inet6 fd8a:6ff:2880:0:20a:cdff:fe26:e2c8/64 scope global dynamic mngtmpaddr valid_lft forever preferred_lft forever inet6 2a02:908:1260:13bc:20a:xxxx:xxxx:xxxx/64 scope global dynamic mngtmpaddr valid_lft 5426sec preferred_lft 1826sec inet6 fe80::20a:cdff:fe26:e2c8/64 scope link valid_lft forever preferred_lft forever

    Ok, er zeigt mir die Schnittstelle eth0 ja an, dann kann es an fehlenden Treibern ja nicht liegen. Lässt dann auf eine fehlerhafte Konfiguration schließen. Nächster Halt wäre dann /etc/network/interfaces

    Das trägt Debian ein

    # This file describes the network interfaces available on your system # and how to activate them. For more information, see interfaces(5). source /etc/network/interfaces.d/* # The loopback network interface auto lo iface lo inet loopback # The primary network interface allow-hotplug enx000acd26e2c8 iface enx000acd26e2c8 inet dhcp # This is an autoconfigured IPv6 interface iface enx000acd26e2c8 inet6 auto

    Gut, bei der Installation hat Debian ja nur die zusätzliche Netzwerkschnittstelle erkannt, folgerichtig ist die auch als primäre Schnittstelle eingetragen. Dann ändern wir das mal...

    # This file describes the network interfaces available on your system # and how to activate them. For more information, see interfaces(5). source /etc/network/interfaces.d/* # The loopback network interface auto lo iface lo inet loopback # The primary network interface #allow-hotplug enx000acd26e2c8 allow-hotplug eth0 #iface enx000acd26e2c8 inet dhcp iface eth0 inet dhcp # This is an autoconfigured IPv6 interface #iface enx000acd26e2c8 inet6 auto iface eth0 inet6 auto

    Danach einmal alles neu starten bitte 😉

    systemctl status networking

    Da fehlte mir aber jetzt die IPv4 Adresse, so das ich einmal komplett neugestartet habe. Der Ordnung halber, so hätte man die IPv4 Adresse bekommen.

    dhclient eth0

    Nachdem Neustart kam dann das

    root@debian:/etc/network# ip a 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000 link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 inet 127.0.0.1/8 scope host lo valid_lft forever preferred_lft forever inet6 ::1/128 scope host valid_lft forever preferred_lft forever 2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000 link/ether 62:03:b0:d6:dc:b3 brd ff:ff:ff:ff:ff:ff inet 192.168.3.172/24 brd 192.168.3.255 scope global dynamic eth0 valid_lft 42452sec preferred_lft 42452sec inet6 fd8a:6ff:2880:0:6003:b0ff:fed6:dcb3/64 scope global dynamic mngtmpaddr valid_lft forever preferred_lft forever inet6 2a02:908:1260:13bc:6003:xxxx:xxxx:xxxx/64 scope global dynamic mngtmpaddr valid_lft 5667sec preferred_lft 2067sec inet6 fe80::6003:b0ff:fed6:dcb3/64 scope link valid_lft forever preferred_lft forever 3: enx000acd26e2c8: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN group default qlen 1000 link/ether 00:0a:cd:26:e2:c8 brd ff:ff:ff:ff:ff:ff

    Fertig, eth0 läuft. Nun kann man den zusätzlichen Adapter entfernen oder halt konfigurieren, wenn man ihn braucht.

    Warum der Debian Installer die eth0 nicht erkennt verstehe ich nicht, aber vielleicht wird das irgendwann auch noch gefixt. Jetzt habe ich erst mal einen Workaround um eine Installation auf den ROCKPro64 zu bekommen.

  • [HOWTO] Verschlüsseltes NAS aufsetzen

    Verschoben ROCKPro64
    12
    0 Stimmen
    12 Beiträge
    3k Aufrufe
    FrankMF

    Da btrfs bei mir ja nicht so der Bringer war, Fehler im Image vom Kamil?, Fehler in btrfs? Ich weiß es nicht, also weg damit! Da ich das NAS noch richtig produktiv genutzt hatte, waren die Daten schnell gesichert. Danach das NAS neugestartet, nun sind die beiden Platten nicht mehr gemountet und wir können damit arbeiten.

    ACHTUNG! Ich bitte wie immer darum, das Gehirn ab hier einzuschalten! Sonst droht Datenverlust! Aus Sicherheitsgründen gebe ich hier die Laufwerke so an = sdX1 Das X bitte entsprechend austauschen!

    Die beiden Platten mit

    sudo fdisk /dev/sdX

    neu einrichten. Alte Partition weg, neu einrichten usw. Im Detail gehe ich hier jetzt nicht drauf ein. Ich gehe davon aus, das das bekannt ist.

    Der Plan

    raid_pool0 = sdX1 = /dev/mapper/raid_pool0
    raid_pool1 = sdX1 = /dev/mapper/raid_pool1

    Verschlüsseln sudo cryptsetup --key-size 512 --hash sha256 --iter-time 5000 --use-random luksFormat /dev/sdX1 sudo cryptsetup --key-size 512 --hash sha256 --iter-time 5000 --use-random luksFormat /dev/sdX1 Platten entschlüsseln sudo cryptsetup open /dev/sdX1 raid_pool0 sudo cryptsetup open /dev/sdX1 raid_pool1 RAID1 anlegen sudo mdadm --create /dev/md0 --auto md --level=1 --raid-devices=2 /dev/mapper/raid_pool0 /dev/mapper/raid_pool1 sudo mkfs.ext4 /dev/md0 Script zum Entschlüsseln und Mounten crypt.sh #!/bin/bash ###############################################################################$ # Autor: Frank Mankel # Verschlüsseltes Raid1 einbinden! # # Hardware: # ROCKPro64v2.1 # PCIe SATA Karte # 2St. 2,5 Zoll HDD Platten a 2TB # # Software: # bionic-minimal 0.7.9 # Kontakt: frank.mankel@gmail.com # ###############################################################################$ #Passwort abfragen echo "Passwort eingeben!" read -s password echo "Bitte warten......" #Passwörter abfragen echo -n $password | cryptsetup open /dev/sdX1 raid_pool0 -d - echo -n $password | cryptsetup open /dev/sdX1 raid_pool1 -d - #Raid1 mounten mount /dev/md0 /mnt/raid echo "Laufwerke erfolgreich gemountet!"

    Bis jetzt sieht das Raid ok aus, ich werde das die nächsten Tage mal ein wenig im Auge behalten.

    [ 82.430293] device-mapper: uevent: version 1.0.3 [ 82.430430] device-mapper: ioctl: 4.39.0-ioctl (2018-04-03) initialised: dm-devel@redhat.com [ 108.196397] md/raid1:md0: not clean -- starting background reconstruction [ 108.196401] md/raid1:md0: active with 2 out of 2 mirrors [ 108.240395] md0: detected capacity change from 0 to 2000260497408 [ 110.076860] md: resync of RAID array md0 [ 110.385099] EXT4-fs (md0): recovery complete [ 110.431715] EXT4-fs (md0): mounted filesystem with ordered data mode. Opts: (null) [57744.301662] md: md0: resync done.