Rhys Goodwin's Weblog
I AM the system administrator. Who do I call?
I AM the system administrator. Who do I call?
Apr 25th
Back in January I posted about my workshop renovation. Since then I’ve completed the network outlets, wired up the security alarm and built a workbench.
Initial workbench concept done in Sketchup.
Each leg is a 2×4 and ply torsion box. Well I had to do something with all the ply offcuts from lining the walls!
The ply is screwed and glued to the 2×4 box. These Irwin QuickGrip clamps are super handy.
Yes the bench is built like the proverbial brick house. Several people have made reference to an earthquake or bomb shelter.
I installed a tub with removable insert to save bench space. (Good call Niten!) Not sure when I’ll to get this plumbed in.
3mm steel galv plate for the metalworking area.
I wanted the plate to sit flush with the surface of the bench so I routed out 3mm across the surface where the plate goes. 25mm per pass. Sucker for punishment? Perhaps. Actually the top was ok – the front – don’t ask. This was done with a Makita RP1800 Router. ‘Like a hot knife through butter’.
I then glued the steel plate in with Contact Adhesive
This is an original ‘Made in England’ Record vice which I did a quick restoration job on. Very robust.
These record vices are now sold under the Irwin brand.
My favourite part…What would a workshop be without a server……tool drawer.
I’d like to add a few more but who knows when I’ll get around to it. I used a Bosch Multi tool to cut out the little recesses where the rails are mounted. Can highly recommend these.
And yes you can cut through a CD ROM drive with a Jig Saw
It’s already getting messy!
Apr 21st
Over the last few months I’ve had the opportunity to play with a very cool toy and thought I’d take some time to share it here. The Kwikwai is a powerful little tool made by Swiss company Incyma. It enables complete access to the HDMI-CEC bus. If you haven’t heard of HDMI-CEC it’s probably because it’s normally re-labelled by manufacturers. Anynet+ (Samsung); Aquos Link (Sharp); BRAVIA Sync (Sony); VIERA Link (Panasonic) etc.
CEC stands for Consumer Electronics Control and it allows various home entertainment components to talk to each other. For example when you switch on your Blu-ray player your TV and amp will turn on and switch to the correct inputs. Or when you turn your TV off the other HDMI connected devices will also turn off.
While this might all sound great in theory, in practice it can be a hit and miss. Different manufactures implement their own flavour of CEC and devices from different manufacturers don’t always play nicely together.
My interest in CEC was not so much in the interaction between devices and more in direct control and automation of each individual device using my HTPC. In fact I don’t even have a blu-ray player or set-top-box. Everything is done through the HTPC. I have a bit of an obsession with having a single remote to control everything with as few buttons as possible. Anyone should be able to pick up the remote, press power and be presented with an intuitive interface (in my case MediaPortal).
While there are plenty video cards that offer HDMI they don’t yet offer communication on the CEC bus. That’s where Kwikwai comes in.
On the front there are 4 indicator LEDs and two HDMI ports which allow the Kwikwai to be placed ‘in-line’ between two devices e.g. Blu-ray player and TV. It doesn’t matter which device connects to which port since the Kwikwai is completely transparent to the devices connected to it. You don’t have to connect it in-line you could just connect to any spare HDMI port on your TV or Amp – everything that goes onto the CEC bus is broadcast across all ports.
On the rear of the Kwikwai there are three connectivity options. Ethernet, RS232 and USB. The USB interface is used for power and also for communication (via USB to RS232). You can power the Kwikwai either from your PC or from any other 5V USB power supply. I’ve really only used the network interface so far.
The Kwikwai is not only great for home theatre automation it’s also a powerful HDMI CEC diagnostic tool and that’s the primary use for the web interface which can be accessed by pointing your browser at http://kwikwai.local
While the web interface provides diagnostics, configuration, and a firmware update facility it’s not ideal for automation. For that we can either use the command line directly or use the API for developing custom software. Most HTPC users will opt for using the command line but if you’ve got some basic c# .NET skills using the API is quite easy.
There is also some sample Python code on the Kwikwai website which would make it pretty easy to implement an Eventghost plug-in, however I was able to get the Kwikwai working in Eventghost by using the existing ZoomPlayer plug-in which allows simple RAW TCP commands to be sent.
Simply enter the Kwikwai address and port number
To send commands to the Kwikwai create a new Zoomplayer ‘Raw Command’ action. For example:
cec:send A FF:36 This will broadcast the ‘Power Off” command to all devices on the CEC bus.
The command syntax can be found on the Kwikwai web site here. And the CEC-O-MATIC is a great online tool to help you build up CEC commands.
Conclusion
The Kwikwai is a very handy device which enables easy automation of home entertainment components without the need to stick ugly infra-red senders to your equipment. At the moment it can be hard to get hold of vendor specific commands to perform more complex control but hopefully that will change over time.
There are two Kwikwai models available. For a full diagnostics solution the K-100 is the more expensive model. For automation the more basic K-090 will be more than adequate. Both models include all the connectivity options.
The only two areas I can see room for improvement in the Kwikwai are:
1) The colour! The Kwikwai looks kind of cool and is very well built but it doesn’t blend in very well with most home theatre gear.
2) It would be nice to see a firmware update that enables the Kwikwai to emulate a ‘player’ device on the HDMI bus so that other devices could become aware of it.
Check out the Kwikwai at http://www.kwikwai.com
Jan 14th
…And I’m back. Yep, it’s been a while since I shared anything much here. That’s partly because I’ve been spending so much of my free time converting my decrepit old garage into a tidy workshop, a project that I started just over a year ago.
It’s been one of those of projects that starts out as a small seed of an idea, something that will take just a few weeks but then grows one “If I’m going to this I might as well do that” statement at a time until it carries on for an entire year. In project terms it’s clear that I failed to define the requirements and scope up front!
In case you don’t make through to the end this very long set of photos I’d like to say a big thanks at the beginning of the post to:
The old garage which is 3.6m x 7.2m was built at the same time as the house in 1956. It has a side entrance and main entrance, which opens out into the carport, which opens out onto the driveway. Having the carport for the car meant that I could convert the old garage into a workshop for anything from woodwork to metalwork, plastics, electronics etc.
My initial intention was just to replace the rotten framing and line the interior with ply. Water had been running under the door when it rained heavily and would flow to one side. Consequently, the bottom plate and the first ~150mm of the most of the studs down one side had pretty bad rot. Water had been coming in the top and around the sides of the window on the back wall resulting in yet more rot. The right-hand side (which has the side door on it) was pretty solid.
The first step was to clear out the bottom plate. I used a couple of the redwood planks for the old workbench to prop up the wall under the top plate. Most of the bottom plate cleared out easily because it was so rotten. I used the angle grinder to cut off the old steel anchor pins.
The next step was to put in the new bottom plate using dynabolts and with a strip of damp-proof course to prevent moisture in the concrete slab from being absorbed into the wood.
With the new bottom plate it was time to sister the rotten studs with new ones.
This all went well and I worked my way along the left hand wall until I reached the first window, at which point I stood back and admired my handy work and for my first ‘building’ project I was pretty happy. It all looked solid and reasonably straight and I thought since I’d come this far I really should replace the old rusty louvre window. I picked up a second hand aluminum window off TradeMe.
Next I moved on to the back wall and back window. This time I had to:
I came across this excellent site which describes how to correctly frame a rough opening for a window.
At this stage I had dealt with all the rotten framing and had a generally sound building. I figured since I’d come this far I should really doing something about the very pitted rough stained floor. In the end I settled on getting a guy in to grind, patch and lay two coats of epxoy. Oh and while I’m at it I might as well install a secondhand roller door.
I was averagely happy with the floor. There are a lot of grind marks and there were a few other issues but I won’t go into that. It’s about 1000% percent better than it was. Finally it was time to start lining. Or was it? As I surveyed the project so far I figured it only made sense to line the ceiling as well as the walls, and if I was going to line the ceiling it would be a shame to miss the opportunity to install insulation.
Of course before I could start any of the lining I had to consider wiring – power points, lighting etc. With a whole new set of electricals I should really install a new main cable back to the house to replace the 50+ year-old one that was there. That task lead me to cut a trench across the path between the workshop and the house. And let’s face it, while you’ve got a trench open you’d be silly not to lay network cables back to the patch panel in the house along with a pipe for water supply. Right?
And finally on to the wall lining and switchboard.
All that’s really left is the workbench and I’ll put that up in another post (hopefully) soon!
Apr 7th
In an effort to better manage our finances I decided to ditch my self-written ASP.NET budgeting tool and adopt GnuCash, an excellent open source accounting application. As well as being a true double entry accounting system, one of the great things about GnuCash is its ability to import a set of transactions in various formats. The idea here is that you import an OFX or CSV from your bank and allocate transactions to various accounts.
After almost 4 years of manually entering every single transaction into my crappy home-grown tool I was on the verge of giving up altogether. I decided that whatever new system I went with would need to be as automated as possible. So partly for the challenge and partly because I’m efficient (lazy) – I decided to automate downloading of transaction files from my bank accounts at Kiwibank.
Now it would be really nice if KiwiBank provided a webservice API to pull these transactions down – of course that would be too good to be true. With an API ruled out that only leaves the front end.
The first option I looked at was a Python based web scraping tool called Scrapy. It’s a really flexible powerful tool for parsing html. As I started getting a grip on the syntax of Scrapy it became clear that it wasn’t going to do the job due to the JavaScript-heavy interface that Kiwibank uses.
The second option was browser automation. To me this seemed like a less elegant option but after finding Selenium I soon forgot about that. Selenium is a web testing and automation suit. It consists of a number of components including a pretty extensive set of development libraries and interfaces. The two tools I used were Selenium Server and Selenium IDE (Integrated Development Environment) for Firefox.
The Selenium IDE Firefox extension allows you to create, record, edit and test Selenium automation scripts.
Start off by creating a new test suit and then a new test case within that suite. Hit the record button and start recording your browser session. Every action you perform in the browser will be recorded as a step in the script. This will give you the basis for the automation. Once you’re done recording you might need to manually edit, add or remove some steps to make the script more robust, or fix bits that don’t play back correctly. You can play the script back with the buttons on the toolbar or you can execute one step at time by selecting the step and pressing ‘x’.
Another extremely useful tool to help analyze page elements is Firebug for Firefox, it’s an excellent compliment to the Selenium IDE.
In an attempt to make their site more secure Kiwibank employ a two step authentication process. The first being AccessNo./Password and the second, a question/answer system which asks you to click the missing letters from the answer. This adds a slight level of security because it means an attacker needs to have a logger that’s a little more extensive than just logging keys.
Now it’s probably possible to get Selenium to read the question, work out which letters are missing and look up a table to determine which JavaScript should be called to complete the answer. And I may end up having to do that if Kiwibank reads this post! But fortunately for me Kiwibank allows you to set your own questions and answers. The questions all have to be different but the answers don’t. Simply setting all the answers to the same five letters means that I always call the same JavaScript.
To be honest it felt good the be the user, circumventing the security for a change!
Selenium allows you specify a file with your own JavaScript functions. The file must be named user-extensions.js. It’s location can be configured in the IDE under options/options. I don’t think these scripts can interact with elements on the page though. Someone please correct me if I’m wrong here.
I created a custom JavaScript function that returned the current date less x number of days given as a parameter.
I used this function to get the last 28 days when specifying the “from date” on the export selector.
The whole purpose of this exercise is to automate downloading of transaction files so we need to tell Firefox to automatically save files of a certain type instead of prompting. We’d also like to save them in a specific location.
The best way to handle this is create a custom Firefox profile for Selenium to use just for this automation. There’s a great post here which details the optimum profile settings for use with Selenium.
The last thing you’ll need to do to the profile is make sure that it handles your chosen export file type correctly. In my case I’m using .OFX so I needed to tell Firefox to always download .OFX files without prompting. This is done through the mimeTypes.rdf file in the profile. Details on this file here.
If you keep getting the add-ons popup every time you use the custom profile I found the following fix:
To disable add-ons window which appears every time when Selenium scripts are run on Custom Firefox Profile.
Close all instances of Firefox browser and delete the following files from the Custom Profile folder
extensions.cache
extensions.ini
extensions.rdf
compatibility.ini
This should reset Extension Manager and disable add-ons pop-up.
Now with a fully working script and customFirefox profile in hand we can set about scheduling this automation with the Selenium server and the Windows task scheduler. The Selenium server would normally be stated and left running like any other server application. In our case we’ll just start it, run our script and then exit.
Once you get the command working at the command prompt you can then use it in a scheduled task running under it’s own user account. If you do this, everything will run in the background and you won’t see any windows pop up and it will run even if no one is logged on to the PC.
Here is the command I use to run my Kiwibank automation:
java -jar selenium-server.jar -singlewindow -htmlSuite "*firefox" "https://www.ib.kiwibank.co.nz" "D:\Selenium\Kiwibank\SeleniumSuitKiwibank.html" "D:\Selenium\Kiwibank\SeleniumSuitKiwibankResults.html" -firefoxProfileTemplate "D:\Selenium\FirefoxProfiles\Kiwibank" -userExtensions "D:\Selenium\JavaScript\user-extensions.js"
Notes about the command:
That’s it. Fully automated transaction file download! Make sure you observe good security practices with this sort of stuff – Principle of Least Privilege.
Nov 19th
Now for something completely different….after shelling out for one of these awesome microchip cat doors to be installed I thought I’d DIY the opening in my security mesh door. – As the weather warms up hopefully I’ll get more DIY stuff up here.

Mark the bars you'll need to cut to get make a square just a little bigger than the cat door opening

Cut where you marked using some hefty bolt cutters - a good excuse to buy tools, it would cost more to get a guy out to do the job, right? For now only cut the bars not the screen.

Make up 2 "picture frames" using mitre saw. The inner dimension should be about the same size as the cat door opening or just slightly bigger. I glued and tacked mine together with small nails.

Put the screws into the drilled frame and push through the mesh screen to hold it in place. Cut out the mesh, and put some dabs of glue to hold the mesh
Nov 8th
This one cost me some time!
Symptoms
After installing and configuring OpenAM you’re unable to log on to the admin console with the amAdmin account and password you set during the install. It doesn’t give an error message, just drops you back to the login page.
Cause
When you go through the custom configuration wizard you get asked for the cookie domain. If your OpenAM server is openam.mydomain.co.nz then your cookie domain should be .mydomain.co.nz but by default the wizard just takes the trailing two domain components from the server name – i.e. .co.nz. Unless you specifically set the cookie domain correctly you’ll get the issue described above. As you can imagine this issue wouldn’t occur if your OpenAM server was called openam.mydomain.com.
This means that if you have a domain name with more than 2 domain components then you’ll always need to run the custom config wizard.
Oct 11th
I’ve been meaning to get this out there for a while now. I’m not going to go into great detail on ADFS but you can get more background on ADFS and federation in these posts:
Salesforce SSO with ADFS 2.0 – Everything You Need to Know
ADFS 2.0 Choose Your Attributes Wisely
SAML WebSSO Federation Made Easy
My scenario is as follows:
Here are the high level hoops I had to jump through to get this working:
setspn -a HOST/federate.internal.com stjohn\Svc.ADFS
C:\Program Files\Active Directory Federation Services 2.0\
Run the following command to configure and new ADFS 2.0 farm
FSConfig.exe CreateFarm /ServiceAccount "INTERNAL\Svc.ADFS" /ServiceAccountPassword "somebiglongpassword" /AutoCertRolloverEnabled /FederationServiceName "federate.internal.com
Notes

Add-PSSnapin Microsoft.Adfs.Powershell Set-ADFSProperties -AutoCertificateRollover $true Update-AdfsCertificate -Urgent
This might not be the only way to get this working and I haven’t tested it thoroughly – your mileage may vary! But as always I’m keen to hear how you get on and happy to field questions.
Jul 24th
In my last post I showed you my RG6 coax patch panel build which included cabling up the 4 outputs of my LNB. Well there was a reason I risked life and limb on the roof in high winds.
TBS Technology of Shenzhen China have only been making TV cards for about 5 years but they’re starting to build a good reputation amongst HTPC enthusiasts, and for good reason – as you’ll see the 6984 is a solid performer. This review will focus on using the TBS 6984 with MediaPortal TV Server.
The TBS6984 really is the grand-daddy of DVB-S cards! It’s a DVB-S/S2 PCI Express card with 4 tuners allowing you capture from 4 different satellite transponders simultaneously. At $249USD the price is right. That’s about $62 per tuner – considerably cheaper than buying 4 separate DVB-S2 cards and much more convenient.
TBS list the following specifications:
Receiving Frequency: 925~2175 MHz Tuning Range
Input Level: -69~23dBm
4x Advanced DVB-S2/DVB-S 8PSK QPSK Demodulator
Symbol Rates:
DVB-S QPSK: 1-45 Msps
DVB-S2 8PSK/QPSK: 2-36 Msps
Code Rates:
DVB-S: 1/2, 2/3, 3/4, 5/6, 7/8
DVB-S2 QPSK: 1/2, 3/5, 2/3, 3/4. 4/5. 5/6, 8/9, 9/10
DVB-S2 8PSK: 3/5, 2/3. 3/4. 5/6. 8/9, 9/10
I’m not going to pretend that I could explain all the technical aspects of these specs, but suffice to say this card will handle pretty much anything you can throw at it.
The build quality of the card is excellent – all the soldering looks clean and solid, and the components are well aligned. The bracket has labels for the tuners ‘A’ through ‘D’ stamped on it – a nice touch. The chipset consists of the following:
The remote is pretty basic; but let’s be honest, if you’re looking for a quad tuner card you’re probably an HTPC enthusiast in which case you’ll already have an advanced remote. If not you’ll need to get one! It has TV and navigation buttons, but lacks buttons for the advanced features you’d typically find in media centre packages like MediaPortal. That said, it will do just fine to get you up and running with basic TV software.
As for the driver CD, I haven’t even put it in my PC. Personally I never use the driver CDs which come with any hardware. I prefer to go straight to the web and download the very latest version. It would be nice if TBS released a white-box version of this product, which included just the card and the power cable.
TBS state that the additional power cable is only required when you need extra current for driving things like dish positioning motors and some LNBs. In general, you shouldn’t require it which is good – the less cables floating around the better when it comes to an HTPC that you’re trying to keep cool with a minimum of fans.
Installation
I’d love to go into great detail about the installation but there really isn’t much to say. The hardware side is obvious – unplug your PC and install the card into a spare PCIe 1x slot.
As for the driver, TBS keeps it simple which I really appreciate. You don’t have to run an installer (although there is one). You can simply let Windows detect the card and then tell it where to find the latest driver files and the device installs without any fuss. I wish more manufacturers would take this simple clean approach. With an installer, you don’t really know what you’re getting and what’s being changed on your system. I’m running Windows 7 x64. Once the driver is installed, you’ll see a single “TBS 6984 Quad DVBS/S2 BDA Tuners” device listed in device manager. The driver is a BDA driver, which means it conforms to Microsoft’s broadcast driver architecture so the card will be compatible with any TV software which supports BDA devices.
MediaPortal
MediaPortal is a free and open source media centre package for Windows.
You can get a wealth of information and support at the Team-MediaPortal site, but these are the basic components that you’ll need to get TV up and running with the TBS 6984. The remainder of this review will focus on the TV Server component of MediaPortal.
Once you’ve got the driver installed TV Server will detect the card. You’ll have to restart the TV Service and TV Server configuration tool if they are already running.
One thing I really like about this card is the way it identifies itself. In the Windows device manager it just shows a single device, but once you open up the TV Server configuration tool you’ll see all 4 tuners and they’re actually labelled A, B, C and D – unlike some other dual cards I’ve seen, which just show 2 identical tuners so you can’t tell which one is which.
Scanning speed is impressive – just over 6 minutes to scan 41 transponders. Both DVB-S and DVB-S2 channels are found correctly.
Now the part you’ve been waiting for – recording 4 channels at once. In fact, with MediaPortal TV Server you can record even more than that because it allows you to record all the channels on a given transponder at the same time. The TBS 6984 can tune into 4 separate transponders, so if each of those transponders carries 6 channels that would mean you could record 24 channels simultaneously! Below you can see I’m receiving 12 channels quite happily and the 6984 doesn’t skip a beat! “Just try that Windows 7 Media Center!”
The driver seems to report the signal quality and strength much more accurately than a lot of other cards I’ve seen, and also updates these quite frequently – which is great.
Channel Change Speed
The most common question I hear when discussing various TV cards with HTPC enthusiasts is “How fast can it change channels?”. There are a number of things that can affect this – system hardware, TV card, TV card driver, TV software, media codecs, etc. It also depends on where you take the measurement. The following results are taken from the TV Server logs, and indicate the time it takes for the TV card to switch channels.
Start DVB-S Channel (Same channel/transponder for each tune) 1st Tune: 437ms 2nd Tune: 218ms 3rd Tune: 203ms 4th Tune: 281ms 5th Tune: 124ms
Start DVB-S Channel (Different channel/transponder for each tune) 1st Tune: 390ms 2nd Tune: 718ms 3rd Tune: 531ms 4th Tune: 796ms 5th Tune: 609ms
Change DVB-S Channel (Same transponder for each tune) 1st Tune: 437ms 2nd Tune: 453ms 3rd Tune: 374ms 4th Tune: 281ms 5th Tune: 593ms
Change DVB-S Channel (Switch transponder for each tune) 1st Tune: 475ms 2nd Tune: 374ms 3rd Tune: 468ms 4th Tune: 468ms 5th Tune: 687ms
Change DVB-S2 Channel (Same transponder for each tune) 1st Tune: 234ms 2nd Tune: 296ms 3rd Tune: 234ms 4th Tune: 343ms 5th Tune: 171ms
Change DVB-S2 to DVB-S (Switch transponder for each tune) 1st Tune: 656ms 2nd Tune: 390ms 3rd Tune: 718ms 4th Tune: 656ms 5th Tune: 687ms
Change DVB-S to DVB-S2 (Switch transponder for each tune) 1st Tune: 2159ms 2nd Tune: 2124ms 3rd Tune: 2156ms 4th Tune: 2218ms 5th Tune: 2187ms
Very impressive, with all tests sub-second, except DVB-S to DVB-S2 switching which takes a little longer.
DiSEqC
The TBS 6984 supports DiSEqC 2.x. MediaPortal TV Server doesn’t yet support DiSEqC for this card, but I’ve spoken to a member of the MediaPortal development team who has informed me that they will be adding it soon, and has asked me to be a tester when the time comes.
All-in-all, my only criticism is that such a high-end card should be matched with a high-end remote. I think the best solution is a white box version of the product so the user can choose their own remote.
The channel change speed tests speak for themselves; that, combined with the solid driver and excellent build quality, makes the 6984 an excellent choice for anyone looking to build or expand an HTPC. In fact, unless you’re certain you won’t need more than 2 tuners, I would say just go straight for the 6984 because you’ll end up saving money in the long run.
As for TBS support – while I haven’t needed any technical support, from what I’ve read elsewhere they seem to have a reputation of being very responsive as well as being happy to interact with the MediaPortal development team. They also make their SDK (software development kit) freely available.