Skip to content

ROCKPro64 - i2c Bus

Hardware
  • Mal beim Kaffee schnell was Basteln 😉

    Nachmachen auf eigene Gefahr!

    IMG_20190310_103859_ergebnis.jpg

    Auch der ROCKPro64 hat mehrere i2c Bussysteme. Erst mal eine Grafik dazu.

    Bild Text

    Hardware

    Als allererstes eine Warnung! Viele I2C-Module sind für 5 Volt gebaut, der ROCKPro64 kann aber nur 3 Volt Signale verarbeiten. Für den Betrieb der 5V-Module an 3V-Geräten gibt es preiswerte Wandler. Eine Nichtbeachtung kann zur Zerstörung des ROCKPro64 führen!

    Der Adapter ist bestellt, aber ich hatte von der Fa. Wenzel Systems die I2C-Switch-Bar hier liegen und man will das ja ausprobieren. Da bin ich über einen Tipp im Netz gestolpert. Auf dem Board sind zwei Abschlusswiderstände auf den Bus geschaltet. Diese kann man entfernen, dafür sind auf dem Board zwei Lötbrücken SJ1 und SJ2. Das Lötzinn entfernt, nachgemessen das die Verbindung nicht mehr besteht und angeschlossen.

    Schaltplan der Fa. Wenzel Systems
    Schaltplan ROCKPro64 v2.1

    Der Anschluss an einen ROCKPro64 sieht dann wie folgt aus:

    Switch-Bar| RP64v2.1
    -------- | -------- | -------- | ------|-----
    +3,3V | P01
    GND | P09
    SDA | P27 / I2C4 SDA
    SCL | P28 / I2C4 SCL

    Wenn ich das alles richtig verstanden habe, dient die Leitung SCL für die Zeitsignale (Clock) und SDA für die Daten (Data). Die beiden Leitungen bilden den I2C-Bus, die anderen beiden dienen der Stromversorgung der Switch-Bar.

    In der Grafik sind die I2C Busse mit Nummern versehen, hier im Beispiel I2C4, das entspricht dem Bus Nr.4

    Dann weiter...

    Software

    System

    rock64@rockpro64:~/temp$ uname -a
    Linux rockpro64 5.0.0-1101-ayufan-g41eeb7cd789e #ayufan SMP PREEMPT Fri Mar 8 22:14:59 UTC 2019 aarch64 aarch64 aarch64 GNU/Linux
    

    Tools installieren

    sudo apt install i2c-tools
    

    Den Bus absuchen

    rock64@rockpro64:~$ sudo i2cdetect -y 4
         0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f
    00:          -- -- -- -- -- -- -- -- -- -- -- -- -- 
    10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
    20: -- -- 22 -- -- -- -- -- -- -- -- -- -- -- -- -- 
    30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
    40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
    50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
    60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
    70: -- -- -- -- -- -- -- --                         
    

    Oben ist der Originalzustand, ohne das was angeschlossen ist. Jetzt mit angeschlossener Switch-Bar.

    rock64@rockpro64:~/temp$ sudo i2cdetect -y 4
         0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f
    00:          -- -- -- -- -- -- -- -- -- -- -- -- -- 
    10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
    20: -- -- 22 -- -- -- -- -- -- -- -- -- -- -- -- -- 
    30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- 3e -- 
    40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
    50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
    60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
    70: -- -- -- -- -- -- -- --  
    

    Switchbar gefunden 😉

    Ok, ein paar Erläuterungen. Den Befehl mal zerlegen.

    sudo i2cdetect -y 4
    
    • sudo - Der Befehl muss mit Rootrechten ausgeführt werden.
    • -y - Wir stimmen der Ausführung zu
    • 4 - Nummer des i2c Busses, hier die Nummer 4

    Ohne das -y würde das so aussehen.

    rock64@rockpro64:~/temp$ sudo i2cdetect 4
     WARNING! This program can confuse your I2C bus, cause data loss and worse!
     I will probe file /dev/i2c-4.
     I will probe address range 0x03-0x77.
     Continue? [Y/n] n
    

    Wert der Switchbar auslesen

    rock64@rockpro64:~/temp$ sudo i2cget -y 4 0x3e
    0x00
    

    Auch hier wieder die Zustimmung gesetzt -y, Busnummer 4 und die Adresse der Switch-Bar 0x3e.
    Danach die Rückgabe des Wertes 0x00 Das ist auch korrekt, alle DIP-Schalter sind auf OFF.

    Schalter Nr.1 auf ON

    rock64@rockpro64:~/temp$ sudo i2cget -y 4 0x3e
    0x01
    

    Schalter Nr.2 auf ON

    rock64@rockpro64:~/temp$ sudo i2cget -y 4 0x3e
    0x02
    

    Schalter Nr.3 auf ON

    rock64@rockpro64:~/temp$ sudo i2cget -y 4 0x3e
    0x04
    

    Schalter Nr.4 auf ON

    rock64@rockpro64:~/temp$ sudo i2cget -y 4 0x3e
    0x08
    

    Schalter Nr.5 auf ON

    rock64@rockpro64:~/temp$ sudo i2cget -y 4 0x3e
    0x10
    

    Schalter Nr.6 auf ON

    rock64@rockpro64:~/temp$ sudo i2cget -y 4 0x3e
    0x20
    

    usw. Man sieht also, das die Zustände Hexadezimal angezeigt werden.

    Hex Dual Dez
    0 0 0 0 0 00
    1 0 0 0 1 01
    2 0 0 1 0 02
    3 0 0 1 1 03
    4 0 1 0 0 04
    5 0 1 0 1 05
    6 0 1 1 0 06
    7 0 1 1 1 07
    8 1 0 0 0 08
    9 1 0 0 1 09
    A 1 0 1 0 10
    B 1 0 1 1 11
    C 1 1 0 0 12
    D 1 1 0 1 13
    E 1 1 1 0 14
    F 1 1 1 1 15

    Viel Spaß beim Ausprobieren, aber schön vorsichtig 🙂

  • Wireguard

    Verschoben Wireguard
    4
    0 Stimmen
    4 Beiträge
    785 Aufrufe
    FrankMF

    Etwas schnellerer Weg den Tunnel aufzubauen, Voraussetzung

    wireguard modul installiert Keys erzeugt

    Danach dann einfach

    ip link add wg0 type wireguard wg setconf wg0 /etc/wireguard/wg0.conf Datei /etc/wireguard/wg0.conf [Interface] PrivateKey = <Private Key> ListenPort = 60563 [Peer] PublicKey = <Public Key Ziel> Endpoint = <IPv4 Adresse Zielrechner>:58380 AllowedIPs = 10.10.0.1/32

    Die Rechte der Dateien von wireguard müssen eingeschränkt werden.

    sudo chmod 0600 /etc/wireguard/wg0.conf

    Das ganze per rc.local beim Booten laden. Datei /root/wireguard_start.sh

    ############################################################################################### # Autor: Frank Mankel # Startup-Script # Wireguard # Kontakt: frank.mankel@gmail.com # ############################################################################################### ip link add wg0 type wireguard ip address add dev wg0 10.10.0.1/8 wg setconf wg0 /etc/wireguard/wg0.conf ip link set up dev wg0

    Danach Datei ausführbar machen

    chmod +x /root/wireguard_start.sh

    In rc.local

    /root/wireguard_start.sh

    eintragen - Fertig!

  • Ayufan Release 0.7.13 (WiFi)

    ROCKPro64
    6
    0 Stimmen
    6 Beiträge
    461 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
  • Armbian für den ROCKPro64

    Angeheftet Armbian
    1
    0 Stimmen
    1 Beiträge
    517 Aufrufe
    Niemand hat geantwortet
  • Benchmark

    ROCKPro64
    1
    0 Stimmen
    1 Beiträge
    442 Aufrufe
    Niemand hat geantwortet
  • ROCKPro64 - Stromverbrauch

    Hardware
    1
    0 Stimmen
    1 Beiträge
    781 Aufrufe
    Niemand hat geantwortet
  • ROCKPro64 - SD-Karte

    Hardware
    1
    0 Stimmen
    1 Beiträge
    520 Aufrufe
    Niemand hat geantwortet
  • NVMe-Platte einrichten

    ROCKPro64
    1
    0 Stimmen
    1 Beiträge
    1k Aufrufe
    Niemand hat geantwortet
  • ROCKPro64 - kein WLan-Modul möglich?

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

    Heute, 5 Monate später, kann ich bestätigen das WLan möglich ist 🙂 Getestet auf einem ROCKPro64 v2.1 mit 2GB RAM.

    Eine Vorabversion von Recalbox machte es das erste Mal für mich möglich das WLan zu benutzen. Bericht

    Und PCIe ist abgeschaltet im dts File.

    pcie-phy { compatible = "rockchip,rk3399-pcie-phy"; #phy-cells = <0x0>; rockchip,grf = <0x15>; clocks = <0x8 0x8a>; clock-names = "refclk"; resets = <0x8 0x87>; reset-names = "phy"; status = "disabled"; phandle = <0x8b>; }; pcie@f8000000 { compatible = "rockchip,rk3399-pcie"; #address-cells = <0x3>; #size-cells = <0x2>; aspm-no-l0s; clocks = <0x8 0xc5 0x8 0xc4 0x8 0x147 0x8 0xa0>; clock-names = "aclk", "aclk-perf", "hclk", "pm"; bus-range = <0x0 0x1f>; max-link-speed = <0x2>; linux,pci-domain = <0x0>; msi-map = <0x0 0x89 0x0 0x1000>; interrupts = <0x0 0x31 0x4 0x0 0x0 0x32 0x4 0x0 0x0 0x33 0x4 0x0>; interrupt-names = "sys", "legacy", "client"; #interrupt-cells = <0x1>; interrupt-map-mask = <0x0 0x0 0x0 0x7>; interrupt-map = <0x0 0x0 0x0 0x1 0x8a 0x0 0x0 0x0 0x0 0x2 0x8a 0x1 0x0 0x0 0x0 0x3 0x8a 0x2 0x0 0x0 0x0 0x4 0x8a 0x3>; phys = <0x8b>; phy-names = "pcie-phy"; ranges = <0x83000000 0x0 0xfa000000 0x0 0xfa000000 0x0 0x1e00000 0x81000000 0x0 0xfbe00000 0x0 0xfbe00000 0x0 0x100000>; reg = <0x0 0xf8000000 0x0 0x2000000 0x0 0xfd000000 0x0 0x1000000>; reg-names = "axi-base", "apb-base"; resets = <0x8 0x82 0x8 0x83 0x8 0x84 0x8 0x85 0x8 0x86 0x8 0x81 0x8 0x80>; reset-names = "core", "mgmt", "mgmt-sticky", "pipe", "pm", "pclk", "aclk"; status = "disabled";

    Also bleibt weiterhin ungeklärt, ob auch beides zusammen möglich ist. Also gleichzeitig das WLan-Modul und eine PCIe Karte.