Category Archives: General

Windows 10 Device Portal

One of the nicest and possibly most useful things that the latest bakes of Windows 10 have is the device portal, and there’s not a lot of information about it in the open online.

So here goes,


Pop into the Config Manager, and under Windows Update then for Developers.

Turn on Developer Mode (and a reboot is required), then enable the option. Now if you pop to http://ipaddress-of-machine:50443 and you get the device portal.


Very useful!

August EP650B Headphone Review

I’ve been using some in ear headphones at work for a while now, and although they worked just fine, the office has become a very noisy place as of recent so I decided to treat myself to some over ear headphones to get some of the noise isolation I wasn’t getting with the in ear ones.

I didn’t want to spend a fortune on them (and hence Active noise cancel was out) and prefered if they had BT4 / APTx support so at least over Bluetooth they would sound half decent. So I went looking for what was around.

I found a few that had decent writeups and the likes, but just then I had an email arrive, Amazon had these at a discount on one of their “Deal of the Day” offers. So thought “what’s the harm” and took the plunge.


Bluetooth Specification: Bluetooth V4.0 (APTx and CSR support)
Operating Range: Up to 10m
Frequency Response: 60Hz – 20KHz
Speaker Output: 30mW
SNR: ≥85dB
Distortion: ≤1.0%
Battery: 3.7V/220mAh Built-in Li-ion Battery
Working Time: 10 Hours
Charging Time: 2 Hours
Standby Time: 30 Days
Weight: 235g
Dimensions: 176.6 x 188.6 x 71mm


Now I know the specs don’t look outstanding, but remember these headphones were under £30 shipped, and had all the features I was looking for, at least on paper. The Frequency range is above average for the price and support BT4/APTx while adding a good level of noise isolation.


OK, so they are headphones, so how do they sound? Answer… Pretty darn good! Now I will say straight away, they are bass heavy, but that is not necessarily a bad thing (depending on what you listen too obviously). I’ve tweaked this in the equaliser on my phone and PC, so they are less ‘boomy’ but if you are into metal/hard rock, I’m sure they would be just fine for you. Other frequency ranges are a lot more equalised, with mids and high’s representing themselves well, as long as not drowned out by bass that is. This could be read as a critical point, however other headphone hardware that cost’s a lot more (looking at you Beats) have the same sound representation, so it seems to be what all of the manufacturers are doing at the moment (only Sennheiser seem to have refrained at the moment), Sony started the ‘I can do Bass’ trend a while back. Hopefully it will move on at some point soon, as we all know that better magnets have allowed bigger bass, it’s like the whole blue LED thing, see them everywhere now, even on things that are designed for the bedroom, if the LED is on it’s like daylight in the room.


IMG_20160427_140656The build quality on the headphones seems to be sound enough. the fit and finish looks pretty good, and I know the ‘B’ spec units have had some tweaks over the original because of issues with the plastics around the headphone cups. Only time will tell however, so if anything happens I’ll update this post. They fold to allow easier travel as well, which is nice. Pity they don’t come with some sort of case (although one is available on Amazon if you want one). They are packaged with a USB cable and a 3.5″ Headphone cable.


One of the main reasons for purchasing them was the BT4 support, allowing me to use them to listen and take calls on from my phone (Nexus 6P). And in this regard they work admirably.  I have been pleasantly surprised with how well they handle calls over the phone and Skype for Business, with no complaints from the people I’m speaking to about the noise/quality.

Bluetooth audio quality is great, yes it’s not the exact same as hardwired quality, but as long as your phone supports APTx it’s well within the margins of the flexibility over quality weighing up. They also have the standard BT controls on the Right earphone exterior, so volume, skip and play/pause all work. Just remember, the controls only work over BT, and not over 3.5″ or USB.

NFC pairing is supported, and worked just fine on the Nexus when tested.

The one thing that I didn’t realise, and is not well documented on the box or manual, the USB connectivity allows for more than just charging. When plugged into the PC (Windows 10IP) it registers as a media device with both Audio and Microphone support, and so can be used as a device on that as well. With the extremely useful ability to be connected to both the PC (USB) and the Phone (BT4) at the same time, and switches between the most recently used source. So if listening to the Phone, and then you press play on the PC it sends a Pause command to the phone, and audio on the PC takes over instantly, and vice versa, Very useful!


Battery life is rated at 10 hours+, and I have no reason to doubt that. It’s obviously dependent on how loud you drive them, and what source you use to do it, but I’ve not run out of charge yet through a complete working day, so that’s fine with me.


I was surprised by the abilities of these ‘cost effective’ headphones, I bought them on a whim to see if they would do until I found something that I could live with long term, and to be honest, I’ve stopped looking. These are much better than the price would make you believe. In fact one of the nicest things to be said for them is that after I purchased mine, two of my colleagues have also purchased some for the same reason. Not much higher praise really if you ask me than three ‘geeks’ in the same team owning them.

Update : Got the travel pack for them and it’s perfectly functional, nothing special but hey, it’s only to hold them safe, so cant expect too much I suppose.

Buy now at

Creating a Netflix USA Proxy on Azure

Here we go. A Simple guide to setting up a Netflix DNS/Proxy using Azure.

First how it works, Netflix, Hulu etc all use 3rd party content delivery networks (CDN), Akamai in most cases, but the ‘checks’ for country location are done at the service hosts servers. So they check who you are, where you are and then pass you off to the CDN to actually get the content. So the checks are done only once (well multiple times actually, but hey) on specific DNS Names. So if we ‘look’ like we are in the right country when we speak to those services, we an get the CDN content directly.

This has a benefit that the large amounts of data (Video/Music content) that’s delivered by the CDN gets sent directly to the client machine/console/TV directly, with no proxy in the way to slow things down, however the dns names that actually do the check get proxied via a machine that’s in the country it needs to be.

Let’s get going then.

1First lets create an Azure Linux VM. I’ve selected the Ununtu LTS Server

Setup the settings, I picked a fixed external IP Address is it will make life easier in the long run.

2After it’s all installed, bring up the settings and add the required endpoints, we need UDP 53 (DNS) and TCP 80/443 added. There should already be the SSH port 22 TCP one created, but if not add that one too.

Next we need Putty Downloaded so we can SSH into the VM. So fire that up, create a new profile with the service name as the connection and login.

Lets make sure everything is upto date, so sudo apt-get update then sudo apt-get upgrade then sudo apt-get install dpkg-dev cdbs debhelper dh-autoreconf libev-dev libpcre3-dev pkg-config libudns-dev git

Next we need to install Bind, so sudo apt-get install bind9

Now we need to mod the config for bind, so sudo nano /etc/bind/named.conf.options

options {
directory “/var/cache/bind”;

forwarders {;;

auth-nxdomain no; # conform to RFC1035
listen-on-v6 { any; };
allow-query { trusted; };
allow-recursion { trusted; };
recursion yes;
dnssec-enable no;
dnssec-validation no;

That should setup the server to use the Google DNS Servers.

Then we need to setup some security, so sudo nano /etc/bind/named.conf.local

// Do any local configuration here

// Consider adding the 1918 zones here, if they are not used in your
// organization
//include “/etc/bind/zones.rfc1918”;

include “/etc/bind/rndc.key”;

acl “trusted” {; // Local IP address of VM;; // External Ip address of the VM
86.0/24; // Client – Add the IP address of the client range (ISP Range).

include “/etc/bind/zones.override”;

logging {
channel bind_log {
file “/var/log/named/named.log” versions 5 size 30m;
severity info;
print-time yes;
print-severity yes;
print-category yes;
category default { bind_log; };
category queries { bind_log; };

Next up lets setup the overides sudo nano /etc/bind/zones.override

zone “” {
type master;
file “/etc/bind/db.override”;
zone “” {
type master;
file “/etc/bind/db.override”;
zone “” {
type master;
file “/etc/bind/db.override”;
zone “” {
type master;
file “/etc/bind/db.override”;
zone “” {
type master;
file “/etc/bind/db.override”;
zone “” {
type master;
file “/etc/bind/db.override”;
zone “” {
type master;
file “/etc/bind/db.override”;
zone “” {
type master;
file “/etc/bind/db.override”;
zone “” {
type master;
file “/etc/bind/db.override”;
zone “” {
type master;
file “/etc/bind/db.override”;
zone “” {
type master;
file “/etc/bind/db.override”;
zone “” {
type master;
file “/etc/bind/db.override”;

Then sudo nano /etc/bind/db.override

; BIND data file for overridden IPs
$TTL 86400
@ IN SOA ns1 root (
2012100401 ; serial
604800 ; refresh 1w
86400 ; retry 1d
2419200 ; expiry 4w
86400 ; minimum TTL 1d

; need at least a nameserver
IN NS ns1
; specify nameserver IP address
ns1 IN A 104.x.x.x ; external IP from Azure
; provide IP address for domain itself
@ IN A 104.x.x.x ; external IP from Azure
; resolve everything with the same IP address as ns1
* IN A 104.x.x.x ; external IP from Azure

Righto, now lets install the SNI-Proxy, this does the initial conversation with the overridden DNS names.

Lets make sure we are in our home so cd ~ Then lets sudo git clone then cd sniproxy/

Now lets build the package so we can install it, we build it with sudo dpkg-buildpackage then install it with cd ~ then sudo dpkg -i sniproxy_0.4.0_amd64.deb (obviously change version number if you have later release than I used here)

Then let’s turn it on, sudo nano /etc/default/sniproxy and change ENABLED from 0 to 1 and then sudo nano /etc/sniproxy.conf and make sure that the listener for port 80 and 443 is defined (ive used a * listener and then add the hosts we need to cache to the table, so my config looks like this (bolded the changes)

# sniproxy example configuration file
# lines that start with # are comments
# lines with only white space are ignored

user daemon

# PID file
pidfile /var/run/

error_log {
# Log to the daemon syslog facility
syslog daemon

# Alternatively we could log to file
#filename /var/log/sniproxy/sniproxy.log

# Control the verbosity of the log
priority notice

# blocks are delimited with {…}
listen 80 {
proto http
table http_hosts
# Fallback backend server to use if we can not parse the client request
fallback localhost:8080

access_log {
filename /var/log/sniproxy/http_access.log
priority notice

listen 443 {
proto tls
table https_hosts

filename /var/log/sniproxy/https_access.log
priority notice

# named tables are defined with the table directive
table http_hosts {

# pattern:
# valid Perl-compatible Regular Expression that matches the
# hostname
# target:
# – a DNS name
# – an IP address (with optional port)
# – ‘*’ to use the hostname that the client requested
# pattern target
#.*\.itunes\.apple\.com$ *:443

# named tables are defined with the table directive
table https_hosts {
# When proxying to local sockets you should use different tables since the
# local socket server most likely will not autodetect which protocol is
# being used unix:/var/run/server.sock

# if no table specified the default ‘default’ table is defined
table {
# if no port is specified default HTTP (80) and HTTPS (443) ports are
# assumed based on the protocol of the listen block using this table

# pattern target
#.*\.itunes\.apple\.com$ *:443

# named tables are defined with the table directive
table https_hosts {
# When proxying to local sockets you should use different tables since the
# local socket server most likely will not autodetect which protocol is
# being used unix:/var/run/server.sock

# if no table specified the default ‘default’ table is defined
table {
# if no port is specified default HTTP (80) and HTTPS (443) ports are
# assumed based on the protocol of the listen block using this table

(hulu|huluim)\.com *
abc\.(go\.)?com *
(nbc|nbcuni)\.com *
netflix\.com *
ip2location\.com *


That should do it, now we just need to start the relevant services, so sudo service sniproxy start and sudo service bind9 start

That should get you up and running, now all you need to do is set the DNS server of the device you want to look like it’s coming from the USA to the external IP address of your Azure host, and hey presto, Magically your in the USA…. or whatever country you have the Azure server hosted in that is.

Wiring up the Media Server

Right, so we have setup our media server, so we now need to wire it all together, so the system downloads what it needs, when it needs to.

So let’s get to it. First decisions, where are we going to store our media, remember video takes up significant space. I’m going to be storing it locally, but obviously if you are storing on a network location it needs to be mounted in the Linux partition. Easiest way to do that is probably through the Linux file manager, but with so many options when it comes to storage, for this demonstration we will take the simplest option.

1I recommend splitting how you store the media up now, as will make it simpler going forward, I’ve created a TV and a Movies folder , but if you have kids and music and pictures then you may want to add these areas too. Get it organised now how you want though, as it’s easier now without having to deal with huge amounts of content.

2Now lets set the Plex Libraries up, this is done by going to and clicking the + sign on the left next to your media server name. Simply select the right media type and point it at the location the media will live.

3Now we need to configure the server to connect to the Plex service, so click the Config Icon (Spanner/Screwdriver at the top right) and select the Server area, then Make sure the Friendly name is as you want it, and click the Connect section, login with your Plex username (If you don’t have one, set one up), and with that, the basics of Plex server are done.


Next up is SabNzbd. This is the actual news server download engine, the bit that does the work so to say. Goto and click on the Config item.

Click on General, and create a username and password and click save, obviously login when it asks you to. Click the Folders item, and lets setup where things go. As a general rule the Downloads/incomplete and Downloads/complete folders are fine, but if you want to place them elsewhere then here’s where to change the locations, we also need to point the Post Processing script folder, so type in /home/username/.sickbeard/autoProcessTV

4Click the Servers option, then we need to setup our News Server (if you haven’t already) I use AstraWeb for my news service, and can highly recommend them, so if you don’t already have a news server account then hop over and get one. The details I’ll be showing here are Astraweb‘s, but obviously replace with yours. See the image to the right for the AstraWeb settings, I use the SSL server for all my connections, just to be safe.

Next we need to create some categories for our downloads, so click the categories option, and we need to create a Movies one and set a path for it, I’m putting it in Downloads/incomplete/Movies click save, then add a new one TV and point it at Downloads/incomplete/TV and in the Script option, select and click save.

That should pretty much sort out SabNzbd for now, next onto


Bring up and click Config/General, untick the Launch Browser, and put a username and password in the Web Interface area and click save, tick the enable API box, then generate, and click save.

Next click Search Settings at the top, and change the NZB Method to SABnzbd and in the URL field put http://localhost:8080/ put your username and password in and then get the API Key from the Config/General area of SABNzbd and click test, then Save.

In Search providers you can add any other NZB sites you may be a member of, but for now leave it as it is.

Post processing is where we get the shows organised after they are downloaded, and all the Meta Data setup for them, so in the TV Download Folder we need the full path the the download location, in our case /home/user/Downloads/complete browse for 5it if your not 100% sure, untick the Keep original box if ticked. The naming logic is upto your personal preference, but how it is out of the box will probably suite. And finally in this section, Metadata type needs to be set to MediaBrowser, and make sure you select the data you want downloaded (screenshot of my config attached)

Notifications we will leave alone for now, you can however research this section later if desired.


Let’s get CouchPotato set up now, so bring up in your browser and click the cog in the top right then settings.

Click the Searcher option, select the First Search to be usenet, and select NZBClub and BinSearch. I recommend signing up on a Newznab host, I use but the others mentioned are just as good, use whichever suits yourself. Click categories sub area and make sure in the ignored section you have NL, nl, GERM, DK, FR, germ, dk, fr, ger, dut, german, dutch, french, truefrench, danish, swedish, spanish, italian, korean, dubbed, swesub, korsub, dksubs, vain, 3D 6as this will stop a lot of the ‘spam’ getting through, add more if you notice a type of movie getting through you don’t want. Click qualities and Create one that suits yourself, I have a quality setup as the picture to the right shows. You can also add R5/Screener etc if you want to.

Click the Downloaders menu option, select Sabnzbd and make sure the host is localhost:8080 The API key is the one from the general page in the SAB config area, and Category is movies, click test and make sure it says everything is all good.

Click Renamer, this is where the completed movies get moved to the right place, and labeled etc. So click all 3 boxes to enable the options, then in the To field click  the folder icon and select the Movies folder where completed films need to go to be seen by Plex (the same folder we set up in the Plex library earlier). Tick the UNRar and cleanup options, then the From icon and select the Movies folder we selected in the SABNzbd category earlier, type en  into the language for subtitles, and select a quality for the trailer (if you want it). Click the Metatdata sub menu, and select XBMC.

Next click the Manage menu option on the Left, and point this to the completed movie folder (the directory Plex is watching), if you want movies automatically added, you can click the Automation option, and get it to add movies based on taste etc from IMDB, Trakt etc.

That should be about it. Time to test something out.


Click the magnifying glass at the top of the window, and search for a movie.


As you can see, I’ve searched for an Open Source movie call Big Buck Bunny, but whatever you want to find is OK. Click the Add button, then click Home at the top, and the movie. Check that it’s been found, and that Sabnzbd is downloading it, next goto the Sick Beard interface, select Add Shows, then search for a show, click the one you want from the search results and select next, then click new and create a TV location, this is the same location that Plex is looking at for it’s TV Content. Click next and set the quality etc. After you click add, it should start downloading the TV.

Enjoy your automated TV and Movies.

Create a self contained Media Server

Been a while since I’ve updated the guides on here, so here go’s, how to install the Required components onto a Linux Mint 17 machine.

First, obviously download the Linux Mint disk, I use the 64bit Mate version, but if you are more a fan of Cinnamon then that’s upto you.

Once the basic install of Mint is complete (Just your standard next/next, through the install). Login to the server, bring up Terminal

sudo apt-get update
sudo apt-get install guake
sudo apt-get upgrade
sudo apt-get dist-upgrade

That will get Mint upto the latest version of everything in it’s base install. After all that’s complete just reboot the machine/VM.

Setup for the Services

First off, we need Samba installed (probably, if you don’t then skip this section, but if you have a Windows machine on the network, it’s worth doing).

sudo apt-get install samba

That will get Samba basics installed. How much we setup depends, for now though we are going to leave it as it is (most of the time it’s already installed)

Plex Server

Pop along to the Plex Download Page and download the Ubuntu 64bit release. This get’s downloaded as a Debian Package (deb) file, and by default will be in the ~/Downloads folder. So to install this we need to use DPKG, so from the Terminal

sudo dpkg -i ~/Downloads/plexmediaserver????.deb

That should install the server on the local machine, to test bring up a browser and goto After agreeing to the license you should get a nice empty server display.

Sick Beard

Next up, automating TV Downloads. For this we will be using Sick Beard, so let’s do that.

First let’s make sure you have an up to date version of Python installed. To do this from Terminal

python -V

Make sure it comes back with 2.5 or later (Mint 17.1 should be 2.7.6), next up we need Cheetah installed, this is easy from Terminal type

 sudo apt-get install python-cheetah

That will get Cheetah installed, now we need to get the Sick Beard source down and compile it. So from the Terminal (I’ve used the HTTP git source of the repo, because of possible proxy issues, but if you have issues, use git:// instead of http://)

cd ~
git clone .sickbeard

That will put the application in the .sickbeard folder ‘hidden’ in your home folder, cd into it (cd ~/.sickbeard) to continue setup. Then

cp -a autoProcessTV/autoProcessTV.cfg.sample autoProcessTV/autoProcessTV.cfg

python ~/.sickbeard/ -q

Then goto from your local browser to make sure it’s up and running.

Next, we need to automate it so we don’t have to do that everytime.

sudo cp ~/.sickbeard/init.ubuntu /etc/init.d/sickbeard
sudo chmod +x /etc/init.d/sickbeard
sudo nano /etc/default/sickbeard

When nano opens up, you need the following 3 lines in it, obviously changing the relevant sections so they are correct for your install (basically the username part in /home/??? and SB_USER)


Then we need to add the correct bit’s to make sure it all starts at boot time.

sudo chmod +x /etc/default/sickbeard
sudo update-rc.d sickbeard defaults

That should be it, just give the box a reboot now, to make sure. After the machine comes back up, got and and make sure both services we have already installed are up and running.


Next we need to install Couch Potato,  the easiest way to do this is to clone it via Git, that’s easy enough to do.

cd ~
git clone git:// .couchpotato

That will grab the latest code, and pop it into the ‘hidden’ folder .couchpotato

Next we need to set it up to auto start, so

cd ~/.couchpotato/init
sudo cp ~/.couchpotato/init/ubuntu /etc/init.d/couchpotato
sudo chmod +x /etc/init.d/couchpotato
sudo nano ~/.couchpotato/init/ubuntu.default

That will start nano editor up, and we need to put the relevant information on the home directory and the user in here, mine looks like this

# COPY THIS FILE TO /etc/default/couchpotato


So just make sure the path’s and user name is correct, and copy the above, then lets add all this to the init.d

sudo cp ~/.couchpotato/init/ubuntu.default /etc/default/couchpotato
sudo chmod +x /etc/default/couchpotato
sudo update-rc.d couchpotato defaults

and now you should be able to use sudo /etc/init.d/couchpotato start/stop  to start and stop the process. So go ahead and start it. Then make sure you can get to, it should launch the wizard to finish the configuration off. Just put a username and password in, and untick the launch browser box. I also change the port to 8082 as it’s easier to remember as next up from Sick Beard and what we are installing next (the download glue)


sudo add-apt-repository ppa:jcfp/ppa
sudo apt-get update

That will add the right repository, and update everything so we can then just go

sudo apt-get install par2
sudo apt-get install sabnzbdplus
sudo apt-get install sabnzbdplus-theme-mobile

All the dependencies that are needed will be listed, then just Say and away you go.

Now let’s get it setup so it automatically starts at boot, that’s done pretty much the same way we have done the others so far, so

sudo nano /etc/default/sabnzbdplus

and we need to edit a couple of variables in there, the USER= one should be your mint username, and HOST= should be and I set the PORT= to be 8080 as then all the apps we have just installed are nicely concatenated together in a port range.

Save the file out, and sudo service sabnzbdplus restart 

Launch a browser on and go through the initial setup (news server etc).

Next up is configuring it all. So that in my next post.

Linux Mint 17 upgrade

Running Linux Mint 16 still? Want Linux Mint 17?

$ sudo sed -i 's/saucy/trusty/' /etc/apt/sources.list

$ sudo sed -i 's/petra/qiana/' /etc/apt/sources.list

$ sudo sed -i 's/saucy/trusty/' /etc/apt/sources.list.d/official-package-repositories.list

$ sudo sed -i 's/petra/qiana/' /etc/apt/sources.list.d/official-package-repositories.list

That will replace the versions in the relevant files, so when you run an apt-get update it will read the Mint 17 versions. Then to actually do the update….

$ sudo apt-get update && sudo apt-get dist-upgrade

$ sudo apt-get upgrade

Job done, Reboot to be safe 🙂

Linksys Reverse NAT Loopback

I was a bit annoyed when I got my EA6900, Seems Linksys in their insane wisdom have disabled the ability to do Reverse Nat Loopback (call an ‘internal’ service using it’s internet name).

That HAD to be fixed, I can’t be bothered modifying host files every time I come home etc, just to access the services at home.

It seems Linksys have a reason for it (that basically means the hacker already has control of your router anyhow, so not really a security issue!) Here’s the reason JFYI

Here’s how to disable the ‘blocking’ of doing the Reverse NAT Loopback…..



That’s right! just disable the default setting for Cut Through Forwarding, it’s actually a pain anyway if devices don’t meet 100% spec on some protocols, and causes lag in some streaming services (iPlayer stuttered with it, doesn’t without!)

Linksys don’t actually know 100% what it does anyhow, because it’s actually a chipset setting (Broadcom) so other routers have the feature as well, some call it “Hardware Acceleration” others “CTF” but it’s all just enabling  ctf.ko in the kernel load of the device.

Just turn it off, no problems then, and the supposed benefits wont be seen on any standard UK broadband network anyhow, and I’m on 152/15.

Mounting a Windows Network share as a Local Device in Linux Mint

Just because I’ve had to work it out, I’ve got Picassa all installed in Linux Mint 16 (no mean feat as you probably know). Now I need to be able to get to the Network share that has the pictures on it.

sudo mount -t cifs //<ServerName>/<ShareName> /mnt/<MountName> –verbose -o user=<WindowsUserName>

That obviously mounts the network share to somewhere that Linux can see it (in the above case /mnt/<MountName>), so if we ls /mnt/<MountName> we will get the list of files/folders back.

OK, so lets get it so that Picassa/Wine can get to it easily.

cd ~/.wine/drive_c
ln -s /mnt/<MountName> /<FolderName>

That will create a symbolic link to the mnt folder, (obviously use something Windows can ‘see’ not <FolderName>) and then launch Picassa, tools, monitor folders, and set it to the pictures folder.