Direkt zum Hauptbereich

Kodi keeps crashing when it is started without connected displays. Sometimes I want to startup my kodi setup for some other reasen and start using kodi later.... then kodi was already closed with some crash log file... :(

This script works arround by waiting to start kodi until some hdmi port is connected (modify the grep query to adapt to some other port name).

#!/bin/bash
# Some programs have issues when run without connected display. E.g. Kodi likes to crash when started without any display connected on my system.
# This script starts after some hdmi port is connected.
# Depends on xrandr.

WARNINGTIMEOUTINSECONDS=840
TIMEOUTINSECONDS=900
POLLINGDURATIONINSECONDS=5
LOGFILE="$HOME/waitTillHdmiConnected.log"

#set start conditions
SECONDS=0

triggerTimeoutActions(){
    echo "Shuting down" | tee -a "$LOGFILE"
    echo $(date && echo "shutting realy down") | tee -a "$LOGFILE"
    # e.g. shutdown the system
    #sudo shutdown +1 | tee -a "$LOGFILE"
    exit
}

triggerHdmiConnectedActions(){
    # e.g. set some overscan hack
    #xrandr --output HDMI-3 --transform 1.05,0,-34,0,1.05,-20,0,0,1
    # e.g. start kodi
    #kodi &
    exit
}

echo $(date && echo "Start polling") | tee -a "$LOGFILE"

while [ 1 ]
do
    if xrandr 2> /dev/null | grep -q 'HDMI-[0-9] connected'; then
        echo "HDMI connected" | tee -a "$LOGFILE"
        triggerHdmiConnectedActions
    else
        echo "HDMI not connected waiting $POLLINGDURATIONINSECONDS seconds" | tee -a "$LOGFILE"
        duration=$SECONDS
        #calc if timeout ocured -> shutdown
        echo "$(($duration / 60)) minutes and $(($duration % 60)) seconds elapsed since first poll." | tee -a "$LOGFILE"
        if [ "$duration" -gt "$WARNINGTIMEOUTINSECONDS" ]; then
            echo "Warning: HDMI connection timout is about to occure!" | tee -a "$LOGFILE"
            if [ "$duration" -gt "$TIMEOUTINSECONDS" ]; then
                triggerTimeoutActions
            fi
        fi
        sleep $POLLINGDURATIONINSECONDS
    fi
done

Kommentare

Beliebte Posts aus diesem Blog

Skript kiddies und SSH

Anzahl an fehlerhaften Logins ausgeben: cat /var/logauth.log | grep invalid | wc -l Für einen Server, der in halbes Jahr im Netz läuft finde ich 68350 Versuche. Ein Auszug von /var/logauth.log Jun 3 00:12:02 uhweb69144 sshd[11470]: Invalid user hilary from 201.147.235.91 Jun 3 00:12:02 uhweb69144 sshd[11470]: reverse mapping checking getaddrinfo for static.customer-201-147-235-91.uninet-ide.com.mx failed - POSSIBLE BREAK-IN ATTEMPT! Jun 3 00:12:02 uhweb69144 sshd[11470]: (pam_unix) check pass; user unknown Jun 3 00:12:02 uhweb69144 sshd[11470]: (pam_unix) authentication failure; logname= uid=0 euid=0 tty=ssh ruser= rhost= 201.147.235.91 Jun 3 00:12:04 uhweb69144 sshd[11470]: Failed password for invalid user hilary from 201.147.235.91 port 49507 ssh2 Jun 3 00:12:09 uhweb69144 sshd[11530]: Invalid user howard from 201.147.235.91 Jun 3 00:12:09 uhweb69144 sshd[11530]: reverse mapping checking getaddrinfo for static.customer-201-147-235-91.uninet-ide.com.mx failed - POSS...

ffmpeg wrapper for .net and java

Ok. I built a custom ffmpeg wrapper but it was just a dirty hack. it was not encapsulated clean.... it worked but it was just tooo ugly to develop some extension... wrapping looked something like this: THIS DOES NOT WORK it is refactored to death:    class MencoderSharp     {         public static bool mencoder(System.Uri infovdrpath, string ratio, System.Uri destinationpath, BackgroundWorker worker, bool deleteConverted,string audioparameter, string videoparamter, bool testRun, DoWorkEventArgs e)         {             int returncode = 0;             foreach (string sourcepath in Directory.GetFiles(infovdrpath.ToString().Substring(0, infovdrpath.ToString().Length - 9), "0*.vdr"))             {                 Process p = new Process();                 //p.StartInfo.WorkingDirectory = @"C:\whatever";                 p.StartInfo.FileName = @"mencoder.exe";                 // http://msdn.microsoft.com/de-de/library/system.diagnostics.processstar...