OSMC Raspberry – Script per aggiornare dtns.com con il proprio IP

Se come me avete la necessità di aggiornare l’IP dinamico di un vostro hostname su dtdns.com potete sfruttare un Raspberry che, ogni ora tramite le API di dtdns, invierà un eventuale nuovo IP.

Per prima cosa eseguiamo il login in SSH al nostro Raspberry (nel mio caso gestito tramite OSMC) e installiamo cron (in OSMC non è nativamente presente):

sudo apt-get install crontab

Una volta installato verifichiamo che sia in esecuzione:

sudo systemctl status cron

Se vedete “active (running)” è tutto in regola, diversamente lanciate un “service cron start”.

Un altro pacchetto che dobbiamo installare è dnsutils:

sudo apt install dnsutils

Ora dobbiamo creare il nostro script che verrà lanciato ogni ora. Scegliete una posizione (ad esempio /home/osmc/) e lanciate:

nano dtdnsupdate.sh

Incollate questo script:

#!/bin/bash

IPADDR="$(dig +short myip.opendns.com @resolver1.opendns.com)"
LASTIP=`nslookup YOUR_HOSTNAME ns1.darktech.org | grep -A1 YOUR_ID |
grep Address | awk '{
print $2 }'`

echo -n "`date` - "
if [ "$IPADDR" != "$LASTIP" ]; then
echo -e "GET /api/autodns.cfm?id=YOUR_ID&pw=YOUR_PASSWORD&client=BSD
HTTP/1.1\nHost: www.dtdns.com\nUser-Agent: bash\n\n" | \
nc www.dtdns.com 80 > /dev/null 2>&1
echo "Posted IP change from $LASTIP to $IPADDR"
else
echo "IP still $IPADDR"
fi

Prendendo come esempio un hostname chiamato “myhostname.dtdns.net” dovrete sostituire i seguenti valori con:

YOUR_ID: myhostname
YOUR_HOSTNAME: myhostname.dtdns.net
YOUR_PASSWORD: la vostra password con cui vi collegate al sito dtdns.com

Impostiamo lo script come eseguibile lanciando

chmod +x dtdnsupdate.sh

Prima di impostarlo in cron come operazione pianificata verifichiamo che tutto funzioni regolarmente lanciando lo script:

./dtdnsupdate.sh

Se l’IP è cambiato dovreste vedere qualcosa come:

mar 13 dic 2016, 20.04.27, CET - Posted IP change from XX.XX.XX.XX to XX.XX.XX.XX

Diversamente, se l’ip è rimasto il medesimo:

mar 13 dic 2016, 19.26.45, CET - IP still XX.XX.XX.XX

Verificato che tutto funzioni correttamente possiamo procedere con il crontab ma prima potrebbe essere interessante crearsi un file di log dove tenersi traccia degli update del nostro IP:

touch dtdnsupdate.log

Accediamo quindi alla maschera di modifica di crontab:

crontab -e

E, per lanciare l’update ogni ora, inseriamo:

0 * * * * /home/osmc/dtdnsupdate.sh >> /home/osmc/dtdnsupdate.log

Chiaramente potete modificare l’orario secondo le vostre esigenze, a tal proposito vi segnalo questo ottimo strumento per la sintassi del crontab: https://crontab.guru/

Dopo qualche giorno potreste anche modificare lo script rimuovendo l’else finale in modo tale da loggare esclusivamente i cambi di IP.

Approfondisci

VLC git su Ubuntu Xenial 16.04

VLC è senza ombra di dubbio uno dei migliori player video in circolazione.

Purtroppo però, ad oggi, anche l’ultimissima release ha grossi problemi con dispositivi FHD e in generale con monitor HiDPI: video in fullscreen grandi come un francobollo, lag e controlli del player inutilizzabili.

Come suggerito dall’utilissima pagina di ArchWiki la versione vlc-git contiene una serie di bug fixes che fanno al caso nostro.

L’unica cosa che dovremo fare è compilarci il pacchetto dai sorgenti scaricando l’ultima release dalla repo git ufficiale di VLC.

Ho trovato un’ottima guida che mi ha aiutato molto ma che personalmente ho dovuto integrare per poterla applicare al mio notebook XPS 9350 con Ubuntu Xenial 16.04.

Aprite il vostro terminale (CTRL+ALT+T) e seguite passo passo la procedura:

1. Prepariamo il nostro sistema con i pacchetti base
sudo apt-get -y install build-essential git-core checkinstall \
automake yasm cmake && mkdir -pv $HOME/vlc_build

2. Installiamo i pacchetti -dev per VLC
sudo apt-get -y install liba52-0.7.4-dev libaa1-dev libasound2-dev libass-dev \
libavahi-client-dev libcaca-dev libcairo2-dev libcddb2-dev libcdio-dev libdca-dev \
libdvbpsi-dev libebml-dev libfaad-dev libflac-dev libfreetype6-dev libfribidi-dev \
libgcrypt11-dev libgl1-mesa-dev libglib2.0-0 libgnutls28-dev libid3tag0-dev \
libjack-jackd2-dev libkate-dev liblircclient-dev liblua5.1-0-dev libmad0-dev \
libmatroska-dev libmodplug-dev libmpcdec-dev libmpeg2-4-dev libmtp-dev \
libncursesw5-dev libnotify-dev libogg-dev liboggkate-dev libpango1.0-dev \
libpng12-dev libprojectm-dev libprojectm-qt-dev libproxy-dev libpulse-dev \
libqt4-dev libraw1394-dev librsvg2-dev libschroedinger-dev libsdl-image1.2-dev \
libsdl1.2-dev libshout3-dev libsmbclient-dev libspeex-dev libsqlite3-dev \
libsysfs-dev libtag1-dev libtar-dev libgme-dev libtheora-dev libtool \
libtwolame-dev libudev-dev libupnp-dev libv4l-dev libvcdinfo-dev libvorbis-dev \
libva-dev libvpx-dev libx11-dev libx11-xcb-dev libxcb-composite0-dev libx265-dev \
libxcb-keysyms1-dev libxcb-randr0-dev libxcb-shm0-dev libxcb-xv0-dev libxcb-xvmc0-dev \
libxcb1-dev libxext-dev libxml2-dev libxpm-dev libxt-dev libxv-dev libzvbi-dev lua5.1 \
qt4-qtconfig libspeexdsp-dev libsamplerate0-dev libvdpau-dev libxpm-dev libxinerama-dev \
libtar-dev libgtk2.0-dev libdc1394-22-dev libopus-dev libmpg123-dev protobuf-c-compiler \
libdvdnav-dev libdvdnav4 libdvdread-dev libdvdread4

3. Modifica rispetto alla guida originale: libfdk-aac-dev
sudo apt-get install libfdk-aac-dev

4. Installiamo i pacchetti per la riproduzione di DVD protetti
sudo apt-get install libdvd-pkg && sudo dpkg-reconfigure libdvd-pkg

5. Installiamo libfdk-aac
if [ "$(uname -m)" = "x86_64" ]; then
ARCHOPTS="--with-pic"
else
ARCHOPTS=""
fi && \
cd $HOME/vlc_build && \
wget --content-disposition https://github.com/mstorsjo/fdk-aac/archive/v0.1.4.tar.gz && \
tar xvf fdk-aac-0.1.4.tar.gz && cd fdk-aac-0.1.4 && \
autoreconf -fiv && \
./configure --prefix=$HOME/vlc_build/vlcdeps/usr \
$ARCHOPTS \
--disable-shared \
--enable-static && \
make && make install && make distclean

6. Rimuoviamo i file e le directory temporanee di libfdk-aac
rm -rfv $HOME/vlc_build/vlcdeps/usr/include/fdk-aac && \
rm -v $HOME/vlc_build/vlcdeps/usr/lib/libfdk-aac* && \
rm -v $HOME/vlc_build/vlcdeps/usr/lib/pkgconfig/fdk-aac.pc && \
rm -rfv $HOME/vlc_build/fdk-aac-0.1.4 && rm $HOME/vlc_build/fdk-aac-0.1.4.tar.gz

7. Installiamo i pacchetti x264 per la riproduzione di file H264
if [ "$(uname -m)" = "x86_64" ]; then
ARCHOPTS="--enable-pic"
else
ARCHOPTS=""
fi && \
cd $HOME/vlc_build && \
git clone git://git.videolan.org/x264.git --depth 1 && \
cd x264 && \
./configure --prefix=$HOME/vlc_build/vlcdeps/usr \
--enable-static \
--disable-cli \
$ARCHOPTS && \
make && make install

8. Rimuoviamo i file e le directory temporanee di h264
rm -v $HOME/vlc_build/vlcdeps/usr/include/x264* && \
rm -v $HOME/vlc_build/vlcdeps/usr/lib/libx264.a && \
rm -v $HOME/vlc_build/vlcdeps/usr/lib/pkgconfig/x264.pc

9. Installiamo il pacchetto live555
cd $HOME/vlc_build && sudo apt-get -y remove liblivemedia-dev && \
wget http://download.videolan.org/pub/contrib/live555/live.2015.06.24.tar.gz && \
tar xvf live.2015.06.24.tar.gz && chmod -R u+w live && cd live && \
if [ "$(uname -m)" = "x86_64" ]; then
./genMakefiles linux-64bit && make
else
./genMakefiles linux && make
fi && \
cp -v \
groupsock/libgroupsock.a liveMedia/libliveMedia.a UsageEnvironment/libUsageEnvironment.a \
BasicUsageEnvironment/libBasicUsageEnvironment.a $HOME/vlc_build/vlcdeps/usr/lib/ && \
cp -v \
groupsock/include/*.hh groupsock/include/*.h liveMedia/include/*.hh UsageEnvironment/include/*.hh \
BasicUsageEnvironment/include/*.hh $HOME/vlc_build/vlcdeps/usr/include/

10. Rimuoviamo i file e le directory temporanee di live555
rm -v $HOME/vlc_build/vlcdeps/usr/include/{*.hh,NetCommon.h} && \
rm -v $HOME/vlc_build/vlcdeps/usr/lib/{libgroupsock.a,libliveMedia.a,\
libUsageEnvironment.a,libBasicUsageEnvironment.a} && \
rm -rfv $HOME/vlc_build/live && \
rm -v $HOME/vlc_build/live.*.tar.gz

11. Installiamo il pacchetto FFmpeg
sudo apt-get -y install libmp3lame-dev zlib1g-dev && \
cd $HOME/vlc_build && \
wget http://ffmpeg.org/releases/ffmpeg-3.0.2.tar.bz2 && \
tar xvf ffmpeg-3.0.2.tar.bz2 && cd ffmpeg-3.0.2 && \
if [ "$(uname -m)" = "x86_64" ]; then
ARCHOPTS="--enable-pic"
else
ARCHOPTS=""
fi && \
CPPFLAGS="-I$HOME/vlc_build/vlcdeps/usr/include" \
LDFLAGS="-L$HOME/vlc_build/vlcdeps/usr/lib" \
PKG_CONFIG_PATH="$HOME/vlc_build/vlcdeps/usr/lib/pkgconfig" \
./configure --prefix=$HOME/vlc_build/vlcdeps/usr \
$ARCHOPTS \
--enable-gpl \
--enable-version3 \
--enable-nonfree \
--enable-libmp3lame \
--enable-libvpx \
--enable-libfdk-aac \
--enable-libx265 \
--disable-programs \
--disable-doc \
--disable-filters \
--disable-avdevice \
--disable-devices \
--disable-avfilter \
--disable-avresample && \
make -j 8 && make install-libs install-headers && make distclean

12. Rimuoviamo i file e le directory temporanee di FFmpeg
rm -rfv $HOME/vlc_build/vlcdeps/usr/include/{libav*,libpostproc,libsw*} && \
rm -v $HOME/vlc_build/vlcdeps/usr/lib/{libav*.a,libpostproc.a,libsw*.a} && \
rm -v $HOME/vlc_build/vlcdeps/usr/lib/pkgconfig/{libav*.pc,libpostproc.pc,libsw*.pc} && \
rm -rfv $HOME/vlc_build/ffmpeg-*

13. Ed ora (finalmente) installiamo vlc-git
cd $HOME/vlc_build && git clone git://git.videolan.org/vlc.git --depth 1 && \
cd $HOME/vlc_build/vlc && ./bootstrap && \
CPPFLAGS="-I$HOME/vlc_build/vlcdeps/usr/include" \
LDFLAGS="-L$HOME/vlc_build/vlcdeps/usr/lib" \
PKG_CONFIG_PATH="$HOME/vlc_build/vlcdeps/usr/lib/pkgconfig" \
./configure --prefix=/usr/local && \
make -j 8 && \
mkdir -vp doc-pak && cp -v AUTHORS COPYING INSTALL NEWS README THANKS doc-pak && \
sudo checkinstall --pakdir "$HOME/vlc_build" --backup=no --deldoc=yes --pkgname vlc \
--pkgversion "3.0.0-git~$(git rev-parse --short HEAD)" \
--fstrans=no --deldesc=yes --delspec=yes --default && \
make distclean && sudo ldconfig

Terminata questa lunga procedura dovreste poter lanciare “vlc” direttamente dal terminale.
Per essere certi di utilizzare l’ultima versione potete dare un’occhiata in Aiuto > Informazioni.

vlc-git-latest-version

Come vedete, ad oggi, l’ultima versione è la 3.0.0-git che testata con video 4K, 1080P (60/120fps) si comporta perfettamente su un monitor FHD 13″ :)

Plus: mantenere aggiornato vlc-git
Avendo compilato manualmente i sorgenti di VLC abbiamo “bypassato” le repo ufficiali di Ubuntu per cui non riceveremo gli aggiornamenti con un semplice “apt upgrade”.
Possiamo però crearci uno script che ogni tanto possiamo lanciare per aggiornare all’ultima release il nostro vlc-git:

cd $HOME/vlc_build/vlc && git pull && ./bootstrap && \
CPPFLAGS="-I$HOME/vlc_build/vlcdeps/usr/include" \
LDFLAGS="-L$HOME/vlc_build/vlcdeps/usr/lib" \
PKG_CONFIG_PATH="$HOME/vlc_build/vlcdeps/usr/lib/pkgconfig" \
./configure --prefix=/usr/local && \
make -j 8 && \
mkdir -vp doc-pak && cp -v AUTHORS COPYING INSTALL NEWS README THANKS doc-pak && \
sudo checkinstall --pakdir "$HOME/vlc_build" --backup=no --deldoc=yes --pkgname vlc \
--pkgversion "3.0.0-git~$(git rev-parse --short HEAD)" \
--fstrans=no --deldesc=yes --delspec=yes --default && \
make distclean && sudo ldconfig

Plus 2: mantenere aggiornato x264
Anche il pacchetto x264 per la riproduzione di file h264 riceve parecchi aggiornamenti per cui possiamo usare questo script:

if [ "$(uname -m)" = "x86_64" ]; then
ARCHOPTS="--enable-pic"
else
ARCHOPTS=""
fi && \
cd $HOME/vlc_build/x264 && git pull && \
./configure --prefix=$HOME/vlc_build/vlcdeps/usr \
--enable-static \
--disable-cli \
$ARCHOPTS && \
make && make install

Approfondisci

Ubuntu 15.04 e il driver Ralink RT3290

Dopo aver aggiornato ad Ubuntu 15.04 (e successivamente ad Ubuntu 15.10 Beta 2) ho purtroppo riscontrato gli stessi problemi di drop di connessioni che avevo con Ubuntu 14.10 sul portatile ASUS F550LDV-XX483H.

Il driver proprietario di questa sfortunata scheda di rete non è compatibile con il nuovo kernel in quanto restituisce una serie di errori in fase di compilazione.

Per fortuna, grazie all’intervento di un utente di askUbuntu (sia lode a cscarney), ecco il file compatibile con il kernel di default di Ubuntu 15.04 e Ubuntu 15.10:

L’installazione è molto semplice:

– installate, se non presente, il pacchetto dkms (sudo apt-get install dkms)
– scaricate il pacchetto
– decomprimete la cartella del file tar nella directory /usr/src (servono i permessi di root)
– installate il nuovo driver con il comando sudo dkms install -m rt3290sta -v 2.6.0.0 –force
– riavviate il computer

Dopo questo la qualità del segnale è triplicato e i drop scomparsi.

Approfondisci