Open Source Software

Public GitHub.com Repositories

Hausautomation mit Homeassistant

Funkmast

Freifunk, Amateurfunk und ADS-B Funk

Hardware Funkmast:

  • ADS-B 1090 MHz Antenna (1.2m, 8.5dBi) (pimoroni.com)
  • Albrecht Allband Discone-Antenne (RX-Bereiche: 25-1300 MHz)
  • Ubiquiti PicoStation M2 (WLAN-Antenne für Freifunk)

ADS-B:

WLAN:

Angeschlossen an:

  • Raspberry Pi3 mit 2x NooElec NESDR SMArt
  • 1Gb/s Netzwerkanbindung
Extracting Files

with unrar

Easy: run unrar e -r inside destination folder

mkdir Folder_To_Extract_Files_Into
cd Folder_To_Extract_Files_Into
unrar e -r Folder_With_Subfolder_containing_rar_Files

No tailing slash!

Compiling TvHeadend

from source with static libffmpeg

Before you start, install some software:

sudo apt-get install build-essential git pkg-config libssl-dev bzip2 wget libavahi-client-dev zlib1g-dev libavcodec-dev libavutil-dev libavformat-dev libswscale-dev gettext cmake

Get the source code:

cd ~
mkdir -p ~/workspace/
cd ~/workspace/
git clone https://github.com/tvheadend/tvheadend

Compile with / rerun to update:

cd ~/workspace/tvheadend/
make clean
git pull
./configure --enable-libffmpeg_static
make -j8

Replace "8" with amount of CPU Cores.

Run with: 

./build.linux/tvheadend

Hint: use screen to keep control of your tvheadend instance. If you run tvheadend the first time, use

./build.linux/tvheadend -C

More links: TvHeadend Wiki: Building

HTML Quicksheet

Quicksheet für CSS, HTML, JavaScript

  • Sanfte Umbrüche: shy­­
Bilder auf 16:9 zuschneiden

mit GIMP

Ablauf:

  1. Gimp öffnen
  2. Datei öffnen
  3. Bild > Leinwandgröße
  4. 0,5625 x Breite im Taschenrechner ergibt die Höhe

Herleitung Faktor:

  • 0,5625 = 9 / 16 = 1 / (16 / 9)
UDP Paketverlust vermeiden
su 
netstat -su | grep Paketempfangfehler

falls keine Ausgabe erfolgt, ist die Systemsprache vermutlich Englisch:

netstat -su | grep "packet receive errors" 

Falls Ausgabe > 0:

echo 2147483647 > /proc/sys/net/core/rmem_max

Der Wert 2147483647 ist willkürlich und kann von System (RAM) unterschieden werden. Kontrolle, ob der Wert erlaubt ist, mit

cat echo /proc/sys/net/core/rmem_max

Damit der Buffer nach Neustart erhalten bleibt:

nano /etc/sysctl.conf 

dort folgendes anhängen:

net.core.rmem_max=2147483647
PulseEight USB-CEC HDMI Port

Falls beim Einschalten von Kodi der A/V Receiver z.B. auf Eingang "Video" anstatt "SAT" schaltet, kann dies in Kodi mit Einstellungen > Eingabegeräte > libCEC > HDMI Port auf 4 schalten gelöst werden.

Synchronisation mit Syncthing unter Debian

Syncthing via apt-get installieren. 

sudo apt-get install syncthing

Danach als User (z.B. "christian") Syncthing starten:

christian@nzxt:~$ syncthing 

Die Configs anpassen:

nano ~/.config/syncthing/config.xml

Dort nach address suchen und die IP anpassen

0.0.0.0:8384

Dann den Dienst einrichten:

  • Wichtig: "christian" mit dem eigenen Benutzernamen ersetzen

Der Dienst muss als System-Dienst laufen (siehe https://docs.syncthing.net/users/autostart.html#how-to-set-up-a-system-service)

sudo systemctl enable syncthing@christian.service

Und dann den Dienst starten:

sudo systemctl start syncthing@christian.service

Status ausgeben mit:

sudo systemctl status syncthing@christian.service

Webbrowser öffnen: http://localhost:8384

Bluray Disc BD unter Debian Linux brennen

Benötigte Software-Pakete:

sudo apt-get install brasero brasero-cdrkit cdrskin dvd+rw-tools growisofs
  1. Mit Brasero ein ISO (Abbild) erstellen, z.B. BACKUP001.iso (max. 25GB)
  2. cdrskin -v dev=/dev/sr1 -dao /home/christian/Downloads/Brennen/CCMBU-20160510-20170518.iso

Quellen / Referenzen: Debian Wiki

VPN mit Programmen nutzen

Einem Prozess eine bestimme IP-Adresse zuweisen

bind.c herunterladen und unterLinux kompilieren:

wget http://www.ryde.net/code/bind.c.txt -O bind.c
gcc -nostartfiles -fpic -shared bind.c -o bind.so -ldl -D_GNU_SOURCE

Die Fehlermeldung kann ignoriert werden, im Ordner wurde die Datei bind.so erstell.

IP-Adresse der VPN-Verbindung herausfinden:

ip addr

Die tun0-Adresse kopieren und das gewünschte Programm starten. Z.B.:

BIND_ADDR="ip_of_tun0" LD_PRELOAD=./bind.so twinkle

Twinkle kommuniziert nun über den VPN

 

Alternativ:

sudo groupadd vpnrout
sudo iptables -A OUTPUT -m owner --gid-owner vpnroute \! -o tun0 -j REJECT
sudo -g vpnroute transmission-gtk &

für Winden / Pfalz

Wir betreiben einen Freifunk Hotspot in Winden/Pfalz

Weitere Informationen

Plex: Youtube

Youtube Agent für Plex

Vorabeiten:

  • Aktuelle youtube-dl Version
  • Youtube-Videos im Format
    • ./youtube-dl -o "%(uploader)s [%(channel_id)s]/%(playlist_title)s [%(playlist_id)s]/%(playlist_index)s - %(title)s [%(id)s].%(ext)s" -f bestvideo+bestaudio <Playlist-URL>

Absolute Series Scanner:

  • Installation Absolute Series Scanner für Plex
  • (ggf. /var/lib/plexmediaserver/Library/Application Support/Plex Media Server/X-Plex-Token.id anlegen, Inhalt siehe hier)

Youtube Agent:

  • Installation via WebTools UAS http://localhost:33400
  • Plugin-Name "YouTube Series and Movies Metadata Agent"

Plex:

  • Neustart
  • Neue Mediathek anlegen
    • Mediathek-Typ: Serien
    • Name: z.B. "Youtube"
    • Erweitert
      • Scanner: Absolute Series Scanner
      • Agent: YouTubeSeries
      • eigener "YouTube Data API v3" Key
Postgresql Backups

Lokale .pgpass Datei erzeugen:

nano .pgpass
localhost:5432:<dbname>:postgres:password
chmod 600 .pgpass

SQL-Datei erstellen:

pg_dump <dbname> -h localhost -U postgres > backup.sql

Script:

nano backup_db.sh
#!/bin/bash
TS=$(date +"%Y-%m-%d_%H-%M-%S")
DUMP=/home/ckarrie/pgdump_$TS.sql
TAR_DUMP=/home/ckarrie/pgdump_$TS.tar.gz
pg_dump kb2020 -h localhost -U postgres > $DUMP
tar -cpPzf $TAR_DUMP $DUMP
mv $TAR_DUMP /home/ckarrie/sql_backups/
rm $DUMP
chmod ug+x backup_db.sh

in Crontab einfügen:

# m h  dom mon dow   command
  20 12    *  *    *   bash /home/ckarrie/backup_kb2020_db.sh
Live-TV via Plex

Sat>IP, TvHeadend, xTeVe

Funktionsweise:

Sat>IP → TvHeadend → m3u-Export → xTeVe → Plex DVR

Einrichtung User/Streaming-Profil TvHeadend:

Damit trotz Authentifizierung seitens TVHeadend der m3u-Export problemlos funktioniert, muss man einen Persistent authentication code für einen User erstellen. Zunächst loggt man sich dazu im TvHeadend Frontend ein: http://192.168.178.33:9981 und geht im Menü unter Konfiguration > Benutzer > Passwörter und wählt den User aus, der für das Streaming verwendet werden soll. Dort aktiviert man "Persistent authentification".

Unter "Schreibgeschütze Informationen" kann man den Code nun rauskopieren.

Die m3u Playlist URL für xTeVe setzt nun wie folgt zusammen:

http://<IP/Hostname>:9981/playlist/auth?auth=<Persistent authentification code>&profile=<Stream-Profile>

Das Stream-Profil lasse ich leer, da der Plex DVR TS-Pakete erwartet (Standart bei IPTV). Implizit wird also das pass-Profile verwendet.

xTeVe:

Die Installation von xTeVe erfolgt nach github.com/xteve-project/xTeVe-Documentation

Starten von xTeVe mit

./xteve

Und öffnet dann das WebUI im Browser http://<IP/Host>:34400/web/ und richtet dort die Playlist ein (m3u-Link ist der oben genannte).

Ich empfehle auch hier den Einsatz von Authentifizierung. Die Benutzerverwaltung aktiviert man unter Settings > WEB Authentication > Save.

Einrichtung von Plex DVR:

Zunächst muss man bei der Tunereinrichtung auf den orangenen Link klicken "IP Adresse manuell eingeben" und gibt dort den Link zu der xTeVe-Instanz an: 

  • Mit WEB Authentication: http://<xteveuser>:<pass>@<xteveserver>:34400
  • Ohne WEB Authentication: http://<xteveserver>:34400

Im letzen Schritt mappt man die gefundenen Sender den EPG-Kanälen zu. Nur gemappte Sender werden angezeigt.