OSMC Argonone Fan Hat, Dienst startet nicht

Heute ist Stammtischzeit:
Jeden Donnerstag 20:30 Uhr hier im Chat.
Wer Lust hat, kann sich gerne beteiligen. ;)
  • Ich habe mal eine Frage an die Spezis hier ?

    Vor zwei Wochen ca, habe ich ein Update bei OSMC gemacht. Ist ja auch Debian Basis. Seit dem läuft mein Argon Fan Hat immer voll auf 100%, ich kann ihn nicht mehr einstellen, weil der argononed Dienst nicht mehr startet. Weder automatisch noch manuell, es kommt immer eine Fehlermeldung. Und der macht auf Dauer echt Lärm, auch wenn ich den Ton lauter mache, er ist immer zu hören!

    Wenn ich den ExecStart Befehl manuell im CLI eingebe und ausführe, dann bekomme ich bei dem Befehl:

    ExecStart=/usr/bin/python3 /usr/bin/argononed.py

    folgende Fehlermeldung:

    Traceback (most recent call last):

    File "/usr/bin/argononed.py", line 9, in <module>

    bus = smbus.SMBus(1)

    FileNotFoundError: [Errno 2] No such file or directory

    Wenn ich die Pfade überprüfe, dann sind sie vorhanden ebenso wie die Dateien darin. Auf welchen Pfad könnte er sich noch beziehen, auf den smbus Pfad?

    Python 3 inklusive smbus und gpio Paketen habe ich mit purge entfernt und dann neu installiert. Genau so wie das argonone1.sh Script. Dennoch startet der Dienst nicht.

    Hier der Inhalt der argononed.service Datei aus dem systemd multiuser target Verzeichnis:

    [Unit]

    Description=Argon One Fan and Button Service

    After=multi-user.target

    [Service]

    Type=simple

    Restart=always

    RemainAfterExit=true

    ExecStart=/usr/bin/python3 /usr/bin/argononed.py

    [Install]

    WantedBy=multi-user.target

    OSMC Version: 2022-08-23
    Kodi: 19.4.0 somit...
    Hardware RPI3 b+, 1GB Ram

    Über Ideen zur weiteren Vorgehensweise wäre ich sehr dankbar!

    Gruß Eyk ?

  • Danke für die schnelle Antwort :)

    Alle Dateien liegen da wo sie liegen sollen, diese liegt hier: /usr/bin/argononed.py

    Wenn er in dem Script den smbus ausführen will, gehts nicht weiter, er springt genau in Zeile 9 raus.

    Das hier ist der Inhalt der argononed.py Datei

    #!/usr/bin/python3

    import smbus

    import RPi.GPIO as GPIO

    import os

    import time

    from threading import Thread

    rev = GPIO.RPI_REVISION

    if rev == 2 or rev == 3:

    bus = smbus.SMBus(1)

    else:

    bus = smbus.SMBus(0)

    GPIO.setwarnings(False)

    GPIO.setmode(GPIO.BCM)

    shutdown_pin=4

    GPIO.setup(shutdown_pin, GPIO.IN, pull_up_down=GPIO.PUD_DOWN)

    def shutdown_check():

    while True:

    pulsetime = 1

    GPIO.wait_for_edge(shutdown_pin, GPIO.RISING)

    time.sleep(0.01)

    while GPIO.input(shutdown_pin) == GPIO.HIGH:

    time.sleep(0.01)

    pulsetime += 1

    if pulsetime >=2 and pulsetime <=3:

    os.system("reboot")

    elif pulsetime >=4 and pulsetime <=5:

    os.system("shutdown now -h")

    def get_fanspeed(tempval, configlist):

    for curconfig in configlist:

    curpair = curconfig.split("=")

    tempcfg = float(curpair[0])

    fancfg = int(float(curpair[1]))

    if tempval >= tempcfg:

    if fancfg < 1:

    return 0

    elif fancfg < 25:

    return 25

    return fancfg

    return 0

    def load_config(fname):

    newconfig = []

    try:

    with open(fname, "r") as fp:

    for curline in fp:

    if not curline:

    continue

    tmpline = curline.strip()

    if not tmpline:

    continue

    if tmpline[0] == "#":

    continue

    tmppair = tmpline.split("=")

    if len(tmppair) != 2:

    continue

    tempval = 0

    fanval = 0

    try:

    tempval = float(tmppair[0])

    if tempval < 0 or tempval > 100:

    continue

    except:

    continue

    try:

    fanval = int(float(tmppair[1]))

    if fanval < 0 or fanval > 100:

    continue

    except:

    continue

    newconfig.append( "{:5.1f}={}".format(tempval,fanval))

    if len(newconfig) > 0:

    newconfig.sort(reverse=True)

    except:

    return []

    return newconfig

    def temp_check():

    fanconfig = ["65=100", "60=55", "55=10"]

    tmpconfig = load_config("/etc/argononed.conf")

    if len(tmpconfig) > 0:

    fanconfig = tmpconfig

    address=0x1a

    prevblock=0

    while True:

    try:

    tempfp = open("/sys/class/thermal/thermal_zone0/temp", "r")

    temp = tempfp.readline()

    tempfp.close()

    val = float(int(temp)/1000)

    except IOError:

    val = 0

    block = get_fanspeed(val, fanconfig)

    if block < prevblock:

    time.sleep(30)

    prevblock = block

    try:

    if block > 0:

    bus.write_byte(address,100)

    time.sleep(1)

    bus.write_byte(address,block)

    except IOError:

    temp=""

    time.sleep(30)

    try:

    t1 = Thread(target = shutdown_check)

    t2 = Thread(target = temp_check)

    t1.start()

    t2.start()

    except:

    t1.stop()

    t2.stop()

    GPIO.cleanup()

  • Ja, i2c ist aktiviert, habe ich über die /boot/config.txt manuell eingestellt, da OSMC kein raspi-config hat, oder das zumindest nicht aufrufbar ist. Das läuft dann über My OSMC und da kann ich keinen Eintrag in die Datei schreiben.

    Hier die /boot/config.txt

    [pi4]

    dtoverlay=rpivid-v4l2

    arm_64bit=1

    kernel=kernel.img

    [all]

    dtoverlay=vc4-kms-v3d,cma-512

    disable_overscan=1

    start_x=1

    disable_splash=1

    disable_fw_kms_setup=1

    hdmi_ignore_cec_init=1

    include config-user.txt

    [pi02]

    dtoverlay=vc4-kms-v3d,cma-256

    [board-type=0x0e]

    dtoverlay=vc4-kms-v3d,cma-256


    dtparam=i2c_arm=on

    dtparam=i2c-1=on

    enable_uart=1

  • Das kommt raus, wenn ich das hier eingebe:

  • Also sitzt Du im Bus der Linie 2.

    Ist die Linie 0 auch besetzt oder ist der Fahrer ausgefallen (sudo i2cdetect -y 0) und eine ander Linie fährt die Haltestellen der 0 mit ab?

    Sonst kommt ggf. gleich die nächste Fehlermeldung für Zeile #11 im Skript (bus = smbus.SMBus(0))

    Das war hoffentlich nicht zu "blumig" formuliert. ^^ Falls doch, dann sorry und frage gerne nach!

  • Also sitzt Du im Bus der Linie 2.

    Ist die Linie 0 auch besetzt oder ist der Fahrer ausgefallen (sudo i2cdetect -y 0) und eine ander Linie fährt die Haltestellen der 0 mit ab?

    Sonst kommt ggf. gleich die nächste Fehlermeldung für Zeile #11 im Skript (bus = smbus.SMBus(0))

    Das war hoffentlich nicht zu "blumig" formuliert. ^^ Falls doch, dann sorry und frage gerne nach!

    Also das bekomme ich als Rückmeldung im Terminal zu dein einzelnen Linien, bei Linie 1 siehst auch so aus, nur 2 ist offenbar betriebsbereit :) .

    Was genau soll/kann ich jetzt tun, damit der Dienst wieder startet, wo muss ich was verändern, damit er in Linie 2 einsteigen kann oder kann ich die Linien verändern? Soweit stecke ich da bisher nicht drin.


    Gruß :)
    PS: Nein war nicht zu blumig :D

  • Moinsen,

    Python
    bus = smbus.SMBus(1)
        else:
    bus = smbus.SMBus(0)

    einfach durch

    Code
    bus = smbus.SMBus(2) 

    ersetzen.

    Vielen Dank :)

    Also das hat in so fern funktioniert, dass der Dienst wieder startet. Doch der Lüfter regelt sich nicht, obwohl ich es über argonone-config konfiguriert habe, die Infos sind auch in der der Datei, da habe ich nachgesehen. Wenn ich dann "systemctl daemon-reload" ausgeführt habe in der Vergangenheit, hat das auch alles funktioniert. Doch gerade tut es das nicht. Auch ein reboot hat nichts gebracht, der Lüfter läuft voll durch, egal welche Temperatur. Klar der Prozessor ist schön kühl, doch das Summen des Lüfters ist schon sehr nervig... :-/ :)

    Noch eine Idee wo ich mal schauen könnte?

  • Moinsen,

    Erst einmal den Code in der Code-View posten. Dein Post aus #3 ist nutzlos, weil die Einrückungen und damit der Sinn des Codes fehlt !

    Ok ist gut, hier:

  • Moinsen,

    Welche Version von GPi.GPIO ist bei dir installiert ?
    Weil, wenn abweichend eine andere Version installiert ist hast du nur eine Möglichkeit !

    Python
    if rev == 2 or rev == 3:

    Nimm diese Zeile mal raus, und rücke die Zeile darunter wieder ganz nach vorne.
    Damit wird diese Abfrage übergangen !
    Denn in den Zeilen 94-100 wird ein möglicher Fehler bei der BUS Nutzung nicht mit einer Fehelrmeldungsausgabe einfach so übergangen !

    Franky

Jetzt mitmachen!

Du hast noch kein Benutzerkonto auf unserer Seite? Registriere dich kostenlos und nimm an unserer Community teil!