I thought I’ll make this thread for all of you out there who have questions but are afraid to ask them. This is your chance!

I’ll try my best to answer any questions here, but I hope others in the community will contribute too!

  • @[email protected]
    link
    fedilink
    27 months ago

    This one seemed perfect but nothing lasts after the reboot for whatever reason. If i manually re-enable the service its all good so I suspect theres no issue with the below - I added the after=multi-user.target after the first time it didn’t hold after reboot.

    
    [Unit]
    Description=Runs alsactl restore to fix microphone loop into headphones
    After=multi-user.target
    [Service]
    ExecStart=alsactl restore
    
    [Install]
    WantedBy=multi-user.target
    

    When I run a status check it shows it deactivates as soon as it runs

    Apr 11 20:32:24 XXXXX systemd[1]: Started Runs alsactl restore to fix microphone loop into headphones.
    Apr 11 20:32:24 XXXXX systemd[1]: alsactl-restore.service: Deactivated successfully.
    
    • @[email protected]
      link
      fedilink
      2
      edit-2
      7 months ago

      Does after=... solve the problem or cause the problem? Sorry, I cannot parse what you were trying to say.

      • @[email protected]
        link
        fedilink
        27 months ago

        It seems to have no effect either way. Originally I attempted without, then when it didn’t hold after a reboot and some further reading I added the After= line in attempt to ensure the service isn’t trying to initiate before it should be possible.

        I can manually enable the service with or without the After= line with the same results of it actually working. Just doesn’t hold after a reboot.

        • @[email protected]
          link
          fedilink
          2
          edit-2
          7 months ago

          That is interesting. BTW, I don’t assume that command will run forever right, i.e. it will terminate relatively soon? so that could be why the service is deactivated, not because it is not run. You can try to add ; echo "command terminated" at the end of ExecStart to see if it is terminated, you can also try to echo the exit code to debug.

          If the program you use has a verbose mode, you can also try to turn it on to see if there is any error. EDIT: indeed, alsactrl restore --debug

          There is also a possiblity that this service is run before the device you need to restore is loaded, so it won’t have any effect.

          On a related note, did you install the program via your package manager, and what distro are you running. Because sometimes SELinux will block the program running. But the error message will say permission denied, instead of your message.