Timer to restart Raspberry Pi 3

Written by pmd - - no comments

A timer just in case shit happens whaile playing through ssh:

sudo nano /home/pi/sshcheck.sh
for (( c=$1; c>1; c-- ))
   echo -n "Reboot in $c minute(s)...  "
   date +%H:%M
   sleep 1m
echo "Reboot in 1 minute(s)..."
sleep 1s
for (( c=59; c>0; c-- ))
   echo -e "\e[101mReboot in $c second(s)... (CTRL+C to cancel rebooting)\e[49m"
   sleep 1s
echo -e "\e[101mReboot in $c second(s)...\e[49m"
echo -e "\e[101mREBOOT!!!\e[49m"
sudo reboot

Then need to start it in a screen:

screen bash /home/pi/sshcheck.sh number_of_minutes

Subsonic on Raspberry Pi 3

Written by pmd - - no comments

Install java:

sudo apt-get install openjdk-8-jre

Download the Subsonic .deb package and install it:

sudo dpkg -i subsonic-x.x.deb

Change user (i have set pi instead of root) :

sudo nano /etc/default/subsonic

For troubleshooting interesting files are here: /var/subsonic

It was interesting because it allowed me to understand why Subsonic web interface was OK but impossible to play a file :

cat /var/subsonic/subsonic.log
[2018-01-14 10:59:44,539] INFO TranscodeInputStream - Starting transcoder: /var/subsonic/transcode/ffmpeg -i /home/pi/Music/Paul Kalkbrenner - Berlin Calling/07_Paul_Kalkbrenner_-_Torted_Original Mix.mp3 -map 0:0 -b:a 128k -v 0 -f mp3 -
[2018-01-14 10:59:44,551] INFO InputStreamReaderThread - (/var/subsonic/transcode/ffmpeg) /var/subsonic/transcode/ffmpeg: 1: /var/subsonic/transcode/ffmpeg: Syntax error: "(" unexpected

It was a problem linked with ffmpeg. I think the problem comes from the fact that ffmpeg given in deb is made for ubuntu/debian but probably not ARM processor. THis is why I install ffmpeg from repository and then linked Subsonic folder to this ffmpeg freshly installed:

sudo apt-get install ffmpeg
sudo rm /var/subsonic/transcode/ffmpeg
sudo ln -s /usr/bin/ffmpeg /var/subsonic/transcode/ffmpeg

Restart Subsonic:

sudo service subsonic restart

Configure Subsonic using web interface and admin account.

It worked! I could play my music from Astana, Kazakhstan while it was actually stocked in my Raspberry in Paris!

In my opinion it works quiet nice! Not laggy I mean.

Samba on Raspberry Pi 3

Written by pmd - - no comments

Install samba:

sudo apt-get install samba

Edit configuration file:

sudo nano /etc/samba/smb.conf
# The specific set of interfaces / networks to bind to
# This can be either the interface name or an IP address/netmask;
# interface names are normally preferred
interfaces = wlan0
bind interfaces only = yes
comment = Samba sharing on Raspberry Pi
path = /home/pi/Downloads
writable = yes
guest ok = yes
guest only = yes
create mode = 0777
directory mode = 0777
share modes = yes

Let everyone read and write on /home/pi/Downloads:

sudo chmod -R 777 /home/pi/Downloads

Restart samba:

sudo /etc/init.d/samba restart

It should be visible in windows Networks.

ddclient on Raspberry Pi 3

Written by pmd - - no comments


sudo apt-get install ddclient

Configure for for two different service with two different website to check IP adress:

sudo nano /etc/ddclient.conf

# Configuration file for ddclient generated by debconf
# /etc/ddclient.conf
use=web, web=checkip.dyndns.com/, web-skip='Current IP Address: '

## DtDNS (www.dtdns.com)
use=web, web=ifconfig.co/ip,
#use=web, web=checkip.dyndns.com/, web-skip='Current IP Address: '


To run ddclient as a daemon, set run_daemon to 'true' in /etc/default/ddclient.

Once it is configured as daemon, restart it:

sudo /etc/init.d/ddclient restart

To debug :

sudo ddclient -daemon=0 -debug -verbose -noquiet (-force)

Transmission only through and when OpenVPN is connected

Written by pmd - - no comments

I only want to have some process owned by specific users to use the VPN. This means two route table, or more.

Create a new table "42" for marked packet:

sudo ip rule add fwmark 42 table 42

List all route table:

ip rule list
0:      from all lookup local
32765:  from all fwmark 0x2a lookup 42
32766:  from all lookup main
32767:  from all lookup default

Show a table route:

ip route show table main
default via dev wlan0 src metric 303 dev tun0 proto kernel scope link src dev wlan0 proto kernel scope link src metric 303

Add a default route in table 42:

sudo ip route add via dev tun0 table 42

You can delete all routes of a specific table:

sudo ip route flush table 42

to be written...




To prevent DNS leak and/or not to rely on the router you are connected to the internet, modify the file:

sudo nano /etc/resolv.conf.head
#OpenDns Servers
#Google Servers

In fact I want to set the DNS servers directly in the Raspberry Pi, because it allows me to remove the default route to the router in table 42 and keep it as tidy as possible.

Then reboot the Pi 3:

sudo reboot

You can now check that these are the first DNS server is use:

pi@raspberrypi:~ $ cat /etc/resolv.conf
# Generated by resolvconf
#OpenDns Servers
#Google Servers
domain home

From your Pi3, check the DNS leakage from this website: https://dnsleaktest.com/





Transmission on Raspberry Pi 3

Written by pmd - - no comments

Install transmission:

sudo apt-get install transmission-daemon

Start and stop transmission daemon:

sudo /etc/init.d/transmission-daemon start
sudo /etc/init.d/transmission-daemon stop

Edit configuration of transmission (stop transmission first):

sudo nano /etc/transmission-daemon/settings.json
"incomplete-dir": "/home/pi/Downloads/torrents/.incomplete",
"incomplete-dir-enabled": true,
"rpc-password": "write_it_here",
"rpc-whitelist": ",192.168.1.*",

Check your transmission's IP:

To avoid permission issues:

sudo adduser pi debian-transmission
sudo adduser debian-transmission pi
sudo chmod -R 777 /home/pi/Downloads/torrents
sudo chmod -R 777 /home/pi/Downloads/torrents/.incomplete

OpenVPN on Raspberry Pi 3

Written by pmd - - no comments

Know your IP address:

curl ifconfig.me/ip

Install OpenVPN:

sudo apt-get install openvpn

Know your route before OpenVPN is connected:


Copy all necessary conf files in:


Interesting settings:

script-security 2
up /etc/openvpn/up.sh
down /etc/openvpn/down.sh

Start openvpn from command line to test if tun0 mounts:

sudo openvpn --config /etc/openvpn/openvpn.conf

To connect to VPN at startup, put conf file in /etc/openvpn. Example: openvpn will connect at startup to VPN1 and VPN2:


Excel tricks

Written by pmd - - no comments

1- Generate a calendar in Excel

Here is how to generate a calendar in Excel. Using Excel 2010 in my case.

In cell B1 (by example), put a date :


In cell B2 :


Then you just have to drag-n-drop down and right (or left).

To highlight saturdays and sundays :


Here is the result :<image>

2- Number of days in one month

Put a date in cell B1. Then in another cell, formula is :


It will return the number of days of the month in cell B1.

How to install Transmission on WNR3500L

Written by pmd - - no comments

How to set up Optware on WRT3500L with firmware Tomato Firmware 1.28.0000 MIPSR2-138 K26 USB miniVPN by shibby.
How to install Transmission BitTorrent client on external drive plug on USB of WNR3500L. 

First, you should have a partition in ext2/ext3 in order to be able to install Optware on it (you cannot install optware directly on you router memory neither on FAT and NTFS partitions). 

In administration interface of your router, go to section "USB and NAS >> USB Support". Make sure ext2/ext3 File Systems Support is checked.

I plugged in my router one HDD of 250GB. 249GB formatted in NTSF. 1GB formatted in ext3 called <harddisk label> where I will install different packages such as Transmission.

1. make sure mounted usb harddisk is detected. ls /tmp/mnt/<harddisk> should be present
2. cd /tmp/mnt/<harddisk>
3. mkdir /tmp/mnt/<harddisk>/opt
4. mount -o bind /tmp/mnt/<harddisk>/opt /opt
5. cd /tmp/mnt/<harddisk>/opt
6. install your optware, sh /usr/sbin/optware-install.sh
7. update optware, ipkg update and ipkg upgrade
8. install transmission, ipkg install transmission
9. you can list all packages available with ipkg list

Then, go enable BitTorrent in router adminitration, section "USB and NAS >> BitTorrent Client".

Once it's started you can monitor Transmission via http :

Et voila !

Rss feed of the articles