Skip to content

DTS DTB Files bearbeiten

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

    Diese kleinen Platinen haben ja unzählige Funktionen, Ein- und Ausgänge usw. Das ganze muss ja irgendwie konfiguriert werden. Auf den ARM-Boards macht man das mit DTB Files.

    Wir nehmen mal eine geflashte SD-Karte und stecken die in einen Kartenleser. Dann öffnen wir die Boot Partition.

     frank@frank-MS-7A34 /media/frank/boot $ ls -la
     insgesamt 25272
     drwxr-xr-x  3 frank frank    16384 Jan  1  1970 .
     drwxr-x---+ 3 root  root      4096 Jun 13 13:35 ..
     -rw-r--r--  1 frank frank    69042 Jun 13 13:00 dtb
     drwxr-xr-x  2 frank frank     2048 Jun 10 20:44 extlinux
     -rw-r--r--  1 frank frank 19425288 Jun 10 20:45 Image
     -rw-r--r--  1 frank frank  6358282 Jun 10 20:45 initrd.img
    

    Das File was uns interessiert ist das File mit dem Namen dtb Dieses File kann man aber nicht so ohne weiteres bearbeiten, wie aber so oft unter Linux, gibt es für fast alles ein Tool. In diesem Fall heißt das Tool dtc (devive tree compiler) Das kann man so installieren.

    sudo apt-get install device-tree-compiler
    

    Dieser Compiler kann aus dem File dtb, was ein Binärfile ist, ein lesbares Textfile generieren und anders rum.

    Aus dem dtb File ein lesbares File erzeugen!

    cp /media/frank/boot/dtb /home/frank/dts
    dtc -I dtb -O dts -o testfile dtb
    
    • /media/frank/boot ist der Mountpoint
    • /home/frank/dts ist mein Testordner zum Spielen

    In dem Beispiel kopiere ich das File dtb von der SD-Karte in mein Testverzeichnis. Im nächsten Schritt wird dann aus dem dtb File das lesbare Textfile mit Namen testfile erzeugt.

    Dieses könnt ihr dann mit Eurem Lieblings Texteditor öffnen.

    code testfile
    

    Dann ist die Datei lesbar und änderbar.

    Beispiel (gekürzt)

    /dts-v1/;
    
    / {
    	compatible = "pine64,rockpro64", "rockchip,rk3399";
    	interrupt-parent = <0x1>;
    	#address-cells = <0x2>;
    	#size-cells = <0x2>;
    	model = "Pine64 RockPro64";
    
    	ddr_timing {
    		compatible = "rockchip,ddr-timing";
    		ddr3_speed_bin = <0x15>;
    		pd_idle = <0x0>;
    		sr_idle = <0x0>;
    		sr_mc_gate_idle = <0x0>;
    		srpd_lite_idle = <0x0>;
    		standby_idle = <0x0>;
    		auto_lp_dis_freq = <0x29a>;
    		ddr3_dll_dis_freq = <0x12c>;
    		phy_dll_dis_freq = <0x104>;
    		ddr3_odt_dis_freq = <0x29a>;
    		ddr3_drv = <0x28>;
    		ddr3_odt = <0x78>;
    		phy_ddr3_ca_drv = <0x28>;
    		phy_ddr3_dq_drv = <0x28>;
    		phy_ddr3_odt = <0xf0>;
    		lpddr3_odt_dis_freq = <0x29a>;
    		lpddr3_drv = <0x22>;
    		lpddr3_odt = <0xf0>;
    		phy_lpddr3_ca_drv = <0x22>;
    		phy_lpddr3_dq_drv = <0x22>;
    		phy_lpddr3_odt = <0xf0>;
    		lpddr4_odt_dis_freq = <0x320>;
    		lpddr4_drv = <0xf0>;
    		lpddr4_dq_odt = <0x28>;
    		lpddr4_ca_odt = <0x0>;
    		phy_lpddr4_ca_drv = <0x28>;
    		phy_lpddr4_ck_cs_drv = <0x28>;
    		phy_lpddr4_dq_drv = <0x3c>;
    		phy_lpddr4_odt = <0x28>;
    		phandle = <0x8f>;
    	};
    
    	aliases {
    		i2c0 = "/i2c@ff3c0000";
    		i2c1 = "/i2c@ff110000";
    		i2c2 = "/i2c@ff120000";
    		i2c3 = "/i2c@ff130000";
    		i2c4 = "/i2c@ff3d0000";
    		i2c5 = "/i2c@ff140000";
    		i2c6 = "/i2c@ff150000";
    		i2c7 = "/i2c@ff160000";
    		i2c8 = "/i2c@ff3e0000";
    		serial0 = "/serial@ff180000";
    		serial1 = "/serial@ff190000";
    		serial2 = "/serial@ff1a0000";
    		serial3 = "/serial@ff1b0000";
    		serial4 = "/serial@ff370000";
    		dsi0 = "/dsi@ff960000";
    		dsi1 = "/dsi@ff968000";
    		ethernet0 = "/ethernet@fe300000";
    	};
    
    	cpus {
    		#address-cells = <0x2>;
    		#size-cells = <0x0>;
    
    		cpu-map {
    
    			cluster0 {
    
    				core0 {
    					cpu = <0x2>;
    				};
    
    				core1 {
    					cpu = <0x3>;
    				};
    
    				core2 {
    					cpu = <0x4>;
    				};
    
    				core3 {
    					cpu = <0x5>;
    				};
    			};
    
    			cluster1 {
    
    				core0 {
    					cpu = <0x6>;
    				};
    
    				core1 {
    					cpu = <0x7>;
    				};
    			};
    		};
    
    		cpu@0 {
    			device_type = "cpu";
    			compatible = "arm,cortex-a53", "arm,armv8";
    			reg = <0x0 0x0>;
    			enable-method = "psci";
    			#cooling-cells = <0x2>;
    			dynamic-power-coefficient = <0x64>;
    			clocks = <0x8 0x8>;
    			cpu-idle-states = <0x9 0xa>;
    			operating-points-v2 = <0xb>;
    			sched-energy-costs = <0xc 0xd>;
    			cpu-supply = <0xe>;
    			phandle = <0x2>;
    		};
    
    		cpu@1 {
    			device_type = "cpu";
    			compatible = "arm,cortex-a53", "arm,armv8";
    			reg = <0x0 0x1>;
    			enable-method = "psci";
    			clocks = <0x8 0x8>;
    			cpu-idle-states = <0x9 0xa>;
    			operating-points-v2 = <0xb>;
    			sched-energy-costs = <0xc 0xd>;
    			cpu-supply = <0xe>;
    			phandle = <0x3>;
    		};
    
    		cpu@2 {
    			device_type = "cpu";
    			compatible = "arm,cortex-a53", "arm,armv8";
    			reg = <0x0 0x2>;
    			enable-method = "psci";
    			clocks = <0x8 0x8>;
    			cpu-idle-states = <0x9 0xa>;
    			operating-points-v2 = <0xb>;
    			sched-energy-costs = <0xc 0xd>;
    			cpu-supply = <0xe>;
    			phandle = <0x4>;
    		};
    
    		cpu@3 {
    			device_type = "cpu";
    			compatible = "arm,cortex-a53", "arm,armv8";
    			reg = <0x0 0x3>;
    			enable-method = "psci";
    			clocks = <0x8 0x8>;
    			cpu-idle-states = <0x9 0xa>;
    			operating-points-v2 = <0xb>;
    			sched-energy-costs = <0xc 0xd>;
    			cpu-supply = <0xe>;
    			phandle = <0x5>;
    		};
    
    		cpu@100 {
    			device_type = "cpu";
    			compatible = "arm,cortex-a72", "arm,armv8";
    			reg = <0x0 0x100>;
    			enable-method = "psci";
    			#cooling-cells = <0x2>;
    			dynamic-power-coefficient = <0x1b4>;
    			clocks = <0x8 0x9>;
    			cpu-idle-states = <0x9 0xa>;
    			operating-points-v2 = <0xf>;
    			sched-energy-costs = <0x10 0x11>;
    			cpu-supply = <0x12>;
    			phandle = <0x6>;
    		};
    
    		cpu@101 {
    			device_type = "cpu";
    			compatible = "arm,cortex-a72", "arm,armv8";
    			reg = <0x0 0x101>;
    			enable-method = "psci";
    			clocks = <0x8 0x9>;
    			cpu-idle-states = <0x9 0xa>;
    			operating-points-v2 = <0xf>;
    			sched-energy-costs = <0x10 0x11>;
    			cpu-supply = <0x12>;
    			phandle = <0x7>;
    		};
    
    		idle-states {
    			entry-method = "psci";
    
    			cpu-sleep {
    				compatible = "arm,idle-state";
    				local-timer-stop;
    				arm,psci-suspend-param = <0x10000>;
    				entry-latency-us = <0x78>;
    				exit-latency-us = <0xfa>;
    				min-residency-us = <0x384>;
    				phandle = <0x9>;
    			};
    
    			cluster-sleep {
    				compatible = "arm,idle-state";
    				local-timer-stop;
    				arm,psci-suspend-param = <0x1010000>;
    				entry-latency-us = <0x190>;
    				exit-latency-us = <0x1f4>;
    				min-residency-us = <0x7d0>;
    				phandle = <0xa>;
    			};
    		};
    	};
    
    	pmu_a53 {
    		compatible = "arm,cortex-a53-pmu";
    		interrupts = <0x1 0x7 0x8 0x13>;
    	};
    
    	pmu_a72 {
    		compatible = "arm,cortex-a72-pmu";
    		interrupts = <0x1 0x7 0x8 0x14>;
    	};
    
    	psci {
    		compatible = "arm,psci-1.0";
    		method = "smc";
    	};
    
    	timer {
    		compatible = "arm,armv8-timer";
    		interrupts = <0x1 0xd 0x8 0x0 0x1 0xe 0x8 0x0 0x1 0xb 0x8 0x0 0x1 0xa 0x8 0x0>;
    	};
    
    	xin24m {
    		compatible = "fixed-clock";
    		clock-frequency = <0x16e3600>;
    		clock-output-names = "xin24m";
    		#clock-cells = <0x0>;
    	};
    
    	dummy_cpll {
    		compatible = "fixed-clock";
    		clock-frequency = <0x0>;
    		clock-output-names = "dummy_cpll";
    		#clock-cells = <0x0>;
    	};
    
    	dummy_vpll {
    		compatible = "fixed-clock";
    		clock-frequency = <0x0>;
    		clock-output-names = "dummy_vpll";
    		#clock-cells = <0x0>;
    	};
    
    	amba {
    		compatible = "arm,amba-bus";
    		#address-cells = <0x2>;
    		#size-cells = <0x2>;
    		ranges;
    
    		dma-controller@ff6d0000 {
    			compatible = "arm,pl330", "arm,primecell";
    			reg = <0x0 0xff6d0000 0x0 0x4000>;
    			interrupts = <0x0 0x5 0x4 0x0 0x0 0x6 0x4 0x0>;
    			#dma-cells = <0x1>;
    			clocks = <0x8 0xd3>;
    			clock-names = "apb_pclk";
    			peripherals-req-type-burst;
    			phandle = <0x98>;
    		};
    
    		dma-controller@ff6e0000 {
    			compatible = "arm,pl330", "arm,primecell";
    			reg = <0x0 0xff6e0000 0x0 0x4000>;
    			interrupts = <0x0 0x7 0x4 0x0 0x0 0x8 0x4 0x0>;
    			#dma-cells = <0x1>;
    			clocks = <0x8 0xd4>;
    			clock-names = "apb_pclk";
    			peripherals-req-type-burst;
    		};
    	};
    
    	ethernet@fe300000 {
    		compatible = "rockchip,rk3399-gmac";
    		reg = <0x0 0xfe300000 0x0 0x10000>;
    		rockchip,grf = <0x15>;
    		interrupts = <0x0 0xc 0x4 0x0>;
    		interrupt-names = "macirq";
    		clocks = <0x8 0x69 0x8 0x67 0x8 0x68 0x8 0x66 0x8 0x6a 0x8 0xd5 0x8 0x166>;
    		clock-names = "stmmaceth", "mac_clk_rx", "mac_clk_tx", "clk_mac_ref", "clk_mac_refout", "aclk_mac", "pclk_mac";
    		resets = <0x8 0x89>;
    		reset-names = "stmmaceth";
    		power-domains = <0x16 0x16>;
    		status = "okay";
    		phy-supply = <0x17>;
    		phy-mode = "rgmii";
    		clock_in_out = "input";
    		snps,reset-gpio = <0x18 0xf 0x1>;
    		snps,reset-active-low;
    		snps,reset-delays-us = <0x0 0x2710 0xc350>;
    		assigned-clocks = <0x8 0xa6>;
    		assigned-clock-parents = <0x19>;
    		pinctrl-names = "default", "sleep";
    		pinctrl-0 = <0x1a>;
    		pinctrl-1 = <0x1b>;
    		tx_delay = <0x28>;
    		rx_delay = <0x20>;
    	};
    
    	dwmmc@fe310000 {
    		compatible = "rockchip,rk3399-dw-mshc", "rockchip,rk3288-dw-mshc";
    		reg = <0x0 0xfe310000 0x0 0x4000>;
    		interrupts = <0x0 0x40 0x4 0x0>;
    		clock-freq-min-max = <0x30d40 0x2faf080>;
    		clocks = <0x8 0x1ee 0x8 0x4d 0x8 0x9c 0x8 0x9d>;
    		clock-names = "biu", "ciu", "ciu-drive", "ciu-sample";
    		fifo-depth = <0x100>;
    		power-domains = <0x16 0x1c>;
    		status = "okay";
    		clock-frequency = <0x2faf080>;
    		supports-sdio;
    		bus-width = <0x4>;
    		disable-wp;
    		cap-sd-highspeed;
    		cap-sdio-irq;
    		keep-power-in-suspend;
    		mmc-pwrseq = <0x1c>;
    		non-removable;
    		num-slots = <0x1>;
    		pinctrl-names = "default";
    		pinctrl-0 = <0x1d 0x1e 0x1f>;
    		sd-uhs-sdr104;
    	};
    
    	dwmmc@fe320000 {
    		compatible = "rockchip,rk3399-dw-mshc", "rockchip,rk3288-dw-mshc";
    		reg = <0x0 0xfe320000 0x0 0x4000>;
    		interrupts = <0x0 0x41 0x4 0x0>;
    		clock-freq-min-max = <0x61a80 0x8f0d180>;
    		clocks = <0x8 0x1ce 0x8 0x4c 0x8 0x9a 0x8 0x9b>;
    		clock-names = "biu", "ciu", "ciu-drive", "ciu-sample";
    		fifo-depth = <0x100>;
    		power-domains = <0x16 0x1b>;
    		status = "okay";
    		clock-frequency = <0x2faf080>;
    		supports-sd;
    		bus-width = <0x4>;
    		cap-mmc-highspeed;
    		cap-sd-highspeed;
    		disable-wp;
    		num-slots = <0x1>;
    		vqmmc-supply = <0x20>;
    		pinctrl-names = "default";
    		pinctrl-0 = <0x21 0x22 0x23 0x24>;
    		card-detect-delay = <0x320>;
    	};
    
    	sdhci@fe330000 {
    		compatible = "rockchip,rk3399-sdhci-5.1", "arasan,sdhci-5.1";
    		reg = <0x0 0xfe330000 0x0 0x10000>;
    		interrupts = <0x0 0xb 0x4 0x0>;
    		arasan,soc-ctl-syscon = <0x15>;
    		assigned-clocks = <0x8 0x4e>;
    		assigned-clock-rates = <0xbebc200>;
    		clocks = <0x8 0x4e 0x8 0xf0>;
    		clock-names = "clk_xin", "clk_ahb";
    		clock-output-names = "emmc_cardclock";
    		#clock-cells = <0x0>;
    		phys = <0x25>;
    		phy-names = "phy_arasan";
    		power-domains = <0x16 0x17>;
    		status = "okay";
    		bus-width = <0x8>;
    		mmc-hs200-1_8v;
    		supports-emmc;
    		non-removable;
    		keep-power-in-suspend;
    		phandle = <0x96>;
    	};
    

    Das dts des ROCKPro64. Nun kann man die Änderungen vornehmen und abspeichern. Danach muss man das File wieder in das Binärformat umwandeln.

    Aus dem testfile wieder ein dtb File erzeugen!

    dtc -I dts -O dtb -o dtb testfile
    cp /home/frank/dts/dtb /media/frank/boot
    

    Sollte selbsterklärend sein, macht aus dem testfile wieder ein dtb und kopiert es auf die SD-Karte zurück.

    Danach kann man dann seine Änderungen ausprobieren.

  • Hat sich was geändert?

    Neuer Pfad:

    cd /boot/dtbs/4.4.132-1066-rockchip-ayufan-g48b9d1455011/rockchip
    

    Übersetzen

    dtc -I dtb -O dts -f rk3399-rockpro64.dtb -o testfile.dts
    

    Bearbeiten

    code testfile.dts
    

    Zurück

     dtc -I dts -O dtb -f testfile.dts -o rk3399-rockpro64.dtb
    
  • Oder, ganz einfach

    sudo dtedit
    

    🙂

  • FrankMF FrankM hat am auf dieses Thema verwiesen

  • [V] ROCKPro64 incl. PCIe SATA-Karte

    Verschoben Archiv
    2
    0 Stimmen
    2 Beiträge
    207 Aufrufe
    FrankMF

    Verkauft!

  • Mainline 5.13.x

    Images
    1
    0 Stimmen
    1 Beiträge
    176 Aufrufe
    Niemand hat geantwortet
  • ROCKPro64 - Debian Bullseye Teil 3

    ROCKPro64
    1
    0 Stimmen
    1 Beiträge
    287 Aufrufe
    Niemand hat geantwortet
  • Ayufan Release 0.7.13 (WiFi)

    ROCKPro64
    6
    0 Stimmen
    6 Beiträge
    460 Aufrufe
    FrankMF

    Für Bluetooth scheint noch was zu fehlen

    root@rockpro64:/mnt/home/rock64# service bluetooth status ● bluetooth.service - Bluetooth service Loaded: loaded (/lib/systemd/system/bluetooth.service; enabled; vendor preset: enabled) Active: active (running) since Sat 2019-04-06 17:36:54 UTC; 2min 11s ago Docs: man:bluetoothd(8) Main PID: 2421 (bluetoothd) Status: "Running" Tasks: 1 (limit: 2380) CGroup: /system.slice/bluetooth.service └─2421 /usr/lib/bluetooth/bluetoothd Apr 06 17:36:54 rockpro64 systemd[1]: Starting Bluetooth service... Apr 06 17:36:54 rockpro64 bluetoothd[2421]: Bluetooth daemon 5.48 Apr 06 17:36:54 rockpro64 systemd[1]: Started Bluetooth service. Apr 06 17:36:54 rockpro64 bluetoothd[2421]: Starting SDP server Apr 06 17:36:54 rockpro64 bluetoothd[2421]: kernel lacks bnep-protocol support Apr 06 17:36:54 rockpro64 bluetoothd[2421]: System does not support network plugin Apr 06 17:36:54 rockpro64 bluetoothd[2421]: Bluetooth management interface 1.10 initialized
  • ROCKPro64 - Armbian nand-sata-install

    Verschoben Armbian
    14
    0 Stimmen
    14 Beiträge
    2k Aufrufe
    FrankMF

    Ich habe heute, nachdem es einige Updates von Armbian gab, mal nachgeschaut ob ein spezieller Fehler verschwunden ist.
    Und zwar geht es um das Resizen der Partion nachdem wir Armbian auf eine USB-HDD (USB3) installiert haben.

    Ich setze dafür folgendes System ein.

    Hardware ROCKPro64v2.0 4GB RAM SanDisk 240GB 2,5 Zoll HDD (nix tolles) Software Welcome to ARMBIAN 5.67.181217 nightly Debian GNU/Linux 9 (stretch) 4.4.167-rockchip64

    Was sehe ich nach dem Reboot?

    root@rockpro64:~# df -h Filesystem Size Used Avail Use% Mounted on udev 1.9G 0 1.9G 0% /dev tmpfs 388M 5.3M 383M 2% /run /dev/sda1 220G 1.3G 207G 1% / tmpfs 1.9G 0 1.9G 0% /dev/shm tmpfs 5.0M 4.0K 5.0M 1% /run/lock tmpfs 1.9G 0 1.9G 0% /sys/fs/cgroup tmpfs 1.9G 4.0K 1.9G 1% /tmp /dev/mmcblk0p1 58G 1.3G 57G 3% /media/mmcboot /dev/zram0 49M 3.0M 43M 7% /var/log tmpfs 388M 0 388M 0% /run/user/0

    Korrekt die Größe angepasst!

    Schnell mal den USB3 testen

    root@rockpro64:~# sudo dd if=/dev/zero of=sd.img bs=1M count=4096 conv=fdatasync 4096+0 records in 4096+0 records out 4294967296 bytes (4.3 GB, 4.0 GiB) copied, 38.0723 s, 113 MB/s

    Der Adapter

    root@rockpro64:~# lsusb -vvv Bus 004 Device 002: ID 2109:0715 VIA Labs, Inc. Device Descriptor: bLength 18 bDescriptorType 1 bcdUSB 3.10 bDeviceClass 0 (Defined at Interface level) bDeviceSubClass 0 bDeviceProtocol 0 bMaxPacketSize0 9 idVendor 0x2109 VIA Labs, Inc. idProduct 0x0715 bcdDevice 1.31 iManufacturer 1 VLI Manufacture String iProduct 2 VLI Product String iSerial 3 000000123ADA bNumConfigurations 1 Configuration Descriptor: bLength 9 bDescriptorType 2 wTotalLength 121 bNumInterfaces 1 bConfigurationValue 1 iConfiguration 0 bmAttributes 0x80 (Bus Powered) MaxPower 224mA Interface Descriptor: bLength 9 bDescriptorType 4 bInterfaceNumber 0 bAlternateSetting 0 bNumEndpoints 2 bInterfaceClass 8 Mass Storage bInterfaceSubClass 6 SCSI bInterfaceProtocol 80 Bulk-Only iInterface 0 Endpoint Descriptor: bLength 7 bDescriptorType 5 bEndpointAddress 0x81 EP 1 IN bmAttributes 2 Transfer Type Bulk Synch Type None Usage Type Data wMaxPacketSize 0x0400 1x 1024 bytes bInterval 0 bMaxBurst 15 Endpoint Descriptor: bLength 7 bDescriptorType 5 bEndpointAddress 0x02 EP 2 OUT bmAttributes 2 Transfer Type Bulk Synch Type None Usage Type Data wMaxPacketSize 0x0400 1x 1024 bytes bInterval 0 bMaxBurst 15 Interface Descriptor: bLength 9 bDescriptorType 4 bInterfaceNumber 0 bAlternateSetting 1 bNumEndpoints 4 bInterfaceClass 8 Mass Storage bInterfaceSubClass 6 SCSI bInterfaceProtocol 98 iInterface 0 Endpoint Descriptor: bLength 7 bDescriptorType 5 bEndpointAddress 0x04 EP 4 OUT bmAttributes 2 Transfer Type Bulk Synch Type None Usage Type Data wMaxPacketSize 0x0400 1x 1024 bytes bInterval 0 bMaxBurst 0 Command pipe (0x01) Endpoint Descriptor: bLength 7 bDescriptorType 5 bEndpointAddress 0x85 EP 5 IN bmAttributes 2 Transfer Type Bulk Synch Type None Usage Type Data wMaxPacketSize 0x0400 1x 1024 bytes bInterval 0 bMaxBurst 15 MaxStreams 32 Data-in pipe (0x03) Endpoint Descriptor: bLength 7 bDescriptorType 5 bEndpointAddress 0x06 EP 6 OUT bmAttributes 2 Transfer Type Bulk Synch Type None Usage Type Data wMaxPacketSize 0x0400 1x 1024 bytes bInterval 0 bMaxBurst 15 MaxStreams 32 Data-out pipe (0x04) Endpoint Descriptor: bLength 7 bDescriptorType 5 bEndpointAddress 0x87 EP 7 IN bmAttributes 2 Transfer Type Bulk Synch Type None Usage Type Data wMaxPacketSize 0x0400 1x 1024 bytes bInterval 0 bMaxBurst 0 MaxStreams 32 Status pipe (0x02) Binary Object Store Descriptor: bLength 5 bDescriptorType 15 wTotalLength 70 bNumDeviceCaps 4 FIXME: alloc bigger buffer for device capability descriptors Device Status: 0x0000 (Bus Powered)

    Ein lästiger Fehler weniger. 😉

  • Eure Meinung zum ROCKPro64 ?

    ROCKPro64
    1
    0 Stimmen
    1 Beiträge
    570 Aufrufe
    Niemand hat geantwortet
  • NAS/Server/Desktop Gehäuse

    Hardware
    6
    0 Stimmen
    6 Beiträge
    2k Aufrufe
    FrankMF

    Nettes Video

  • nodejs & NodeBB

    ROCKPro64
    1
    0 Stimmen
    1 Beiträge
    505 Aufrufe
    Niemand hat geantwortet