Als Relais verwende ich zum Schalten der Netzteilkreise u. zum Muten der Verstärker dieses Relais + 1 SSR.
Leider habe ich erst zu spät gelesen, dass es mit den GPIOs der div. ARM-Platformen u. den letzten Kernelreleases Probleme gibt, da die "sysfs"-Ansteuerung der GPIOs nach u. nach abgekündigt werden.
Jetzt habe ich den MS4L Code ein wenig unter die Lupe genommen, und ein Skript so modifiziert, dass ich die Relais verwenden kann, und nicht den Umweg über HID USB Relais gehen muss.
hismastersvoice : Vielleicht kannst ja kurz drüberschauen, ob du das in deine nächste Version so übernimmst, damit mir meine Änderungen mit dem nächsten Musicserverupdate nicht überschrieben werden. Als nächsten Schritt könnte man die Änderungen vom N2 auch auf die anderen ARM-basierten Boards ausweiten.
Habe folgendes gemacht:
- Ich verwende jetzt die Library "libgpiod". Diese ist nicht sysfs-basierend, und sollte deshalb zukunftssicher sein.
Installation:
sudo apt update sudo apt install -y gpiod libgpiod-dev
davor:
if [[ $type == *"N2"* ]]; then $2 > /sys/class/gpio/export 2>/dev/null out > /sys/class/gpio/gpio$2/direction $3 > /sys/class/gpio/gpio$2/value else if ! [ -d /sys/class/gpio/gpio$2 ]; then sudo echo "$2" > /sys/class/gpio/export sudo echo "out" > /sys/class/gpio/gpio$2/direction fi
if [[ $type == *"N2"* ]]; then sudo gpioset gpiochip0 $2=$3 else if ! [ -d /sys/class/gpio/gpio$2 ]; then sudo echo "$2" > /sys/class/gpio/export sudo echo "out" > /sys/class/gpio/gpio$2/direction fi
Getestet wurden die ersten 3 Relais mit dem Kommando:
sudo mstools set_gpio 62 1
sudo mstools set_gpio 72 1
sudo mstools set_gpio 80 1
Ohne Änderung des Pinnings d. 4. Relais, lässt sich dieses mit dem Odroid N2 nicht betreiben, da der Kernel auf dem Pin d. 4. Relais einen analogen ADC-Eingang gemappt hat. Werde die Leitung demnächst auftrennen, und auf einen anderen Pin verlegen.
Auf folgendes muss man hier schauen, damit man die richtigen GPIO-Nummern für die libgpiod vom Kernel bekommt:
Absetzen des Kommandos:
gpioinfo gpiochip0
line 46: unnamed unused input active-high line 47: unnamed "cd" input active-low [used] line 48: unnamed unused input active-high line 49: "PIN_44" unused input active-high line 50: "PIN_46" unused input active-high line 51: "PIN_45" unused input active-high line 52: "PIN_47" unused input active-high line 53: "PIN_26" unused input active-high line 54: unnamed unused input active-high line 55: unnamed unused input active-high line 56: unnamed unused input active-high line 57: unnamed unused input active-high line 58: unnamed unused input active-high line 59: unnamed unused input active-high line 60: "PIN_42" unused input active-high line 61: "PIN_32" unused input active-high line 62: "PIN_7" unused output active-high line 63: "PIN_27" unused input active-high line 64: "PIN_28" unused input active-high line 65: "PIN_16" unused input active-high line 66: "PIN_18" unused input active-high line 67: "PIN_22" unused input active-high line 68: "PIN_11" unused input active-high line 69: "PIN_13" unused input active-high line 70: "PIN_33" unused input active-high line 71: "PIN_35" unused input active-high line 72: "PIN_15" unused input active-high line 73: "PIN_19" unused input active-high line 74: "PIN_21" unused input active-high line 75: "PIN_24" unused input active-high line 76: "PIN_23" unused input active-high line 77: "PIN_8" unused input active-high line 78: "PIN_10" unused input active-high line 79: "PIN_29" unused input active-high line 80: "PIN_31" unused input active-high line 81: "PIN_12" unused input active-high line 82: "PIN_3" unused input active-high line 83: "PIN_5" unused input active-high line 84: "PIN_36" unused input active-high
Beispiel Relais 1: Dazu wird der PIN_7 verwendet. D.h. die GPIO-Nummer ist hier 62