OSMC Argonone Fan Hat, Dienst startet nicht

  • 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()

  • Moinsen


    Kannst du bitte den Code in der Code Ansicht hier darbieten ? [</>] dieses Symbol sollte auch bei dir in der Menüleiste des Threads zu sehen sein, damit man die Formatierung wirklich erkennen kann.

    Franky

  • 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

  • Moinsen



    Könntest du bitte für Programmcode, Scripte wie auch Dateiinhalte diese aufgezeigte Option nutzen.
    Es ist ein Grauß in der Normaltext-Ansicht ohne Formatierung sowas lesen zu müssen !
    Danke

  • 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 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