Posts tagged: gadgets

Love is in the Air

After 3 years my 13″ Mid-2009 Macbook Pro was getting on a bit, so what better way to upgrade it with a new shiny toy?

And in case you’re wondering if it is any good? Let me just show the before and after images of just the disk speed…

DiskSpeedTest Macbook Pro 2009 DiskSpeedTest Macbook Air 2012

Droidock

About two weeks ago, I finally bit the bullet and retired my trusty iPhone 3G, and went to the dark bright side, with an Orange San Francisco (also known as the ZTE Blade). At £99 (including a compulsory £10 Orange topup) it can be SIM unlocked for free and flashed to Froyo 2.2 with a variety of ROMs.

But despite a incredible take up by punters everywhere, the lack of handset accessories is frustrating. Until recently we couldn’t even get an OSF specific screen protector, let alone a protective cover. And still we can not buy a desktop charger that fits!

And so, when a colleague was unpacking a toner cartridge and I spotted the polystyrene padding material, I thought, why not bodge one myself?

15 minutes (and a sharp blade) later, and voila!

Ooh Arr-duino

Santa this year was very generous to my son and gifted him with a Maverick Atom XT RTR 1/18 Electric 4WD Truggy but failed to mention that the batteries that came with it could only be left in the charger for 6 hours, no longer. With grave warnings about explosions and fire, I tried to find an egg-timer on a socket kind of solution, but could not find anything that would go beyond 4 hours.

So what is a tinkerer to do? He makes one himself! ;)




A long time ago I bought an Arduino, but never really got any further with it than a blinking RGB led. Now I finally found a purpose for it :) I was going to build an Arduino controlled timer socket!

All I needed now were some kind of relay, some sockets, a few buttons and a way of letting the user my son know what the time was set to and if it was on or not. I ended up with a Ciseco Arduino Relay Shield, two Maplin push-to-make switches, a DFRobot I2C 16×2 LCD and a Maplin project box big enough to fit it all in

First a small word of warning. You are dealing with MAINS voltage, which can be lethal if you fool around. DO NOT EVER! connect the bits to mains power when parts of it are exposed. You’ve been warned

I started off with a small mockup of materials and then got my trusty Dremel clone out and started cutting away at the project case.

First off is the socket in which the battery charger can be plugged. A small template on paper is by far the easiest way to make sure you don’t cut out too much behind the socket

With the socket in place, I created the template for the LCD. I took my time with this, as I didn’t want to cut out too much. A lot of careful sanding ensured that only the black part would be visible, and nothing else. Then with the help of some small bolts and nuts, I created some spacers, enabling the LCD to sit nicely in the cutout. Lots of hotglue completes the mounting

The buttons only required some measuring to make sure they are neatly symetric and do not interfere with the LCD

All that remains is the IEC socket where the power will go into the project box

Now with everything in place, all we need to do is connect the components together with some wire using the below schematic

Warm up the soldering iron and just follow the diagram. As my soldering skills are not that great, I also used a bit of heatshrink here and there to make sure that wires could not short on each other :)

I’m using an old iPhone charger to power the Arduino as it provides a neat 5V/1A, with a small retractable USB lead with a Type A to B converter. A quick test of the wiring to make sure it all works as planned

Now with construction over, it was time to do the Arduino coding. The LCD uses the LiquidCrystal I2C library which takes care of all the hard work interfacing to it. Likewise, the Metro library takes care of the timer. So, it is just a simple case of increasing the clock by an hour every time the red button is pressed, and starting the timer when the green button is pressed. Once the timer is running, any button press will stop the timer and reset the state to the beginning.

// Arduino controlled timer socket
// (CC BY) 2011
// http://awooga.nl
 
// pull in libraries
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
#include <Metro.h>
 
 
// arduino pins constants
#define RELAY 2 // black wire connected to input on shield
#define RED   6 // green wire
#define GREEN 7 // white wire
 
// i2c pin A5 = white wire
// i2c pin A4 = green wire
 
// allow between 1 and 6 hours
#define MINIMUM_TIME 1
#define DEFAULT_TIME 6
#define MAXIMUM_TIME 6
 
 
const unsigned long MILLISECONDS=1;
const unsigned long SECONDS=(1000*MILLISECONDS);
const unsigned long MINUTES=(60*SECONDS);
const unsigned long HOURS=(60*MINUTES);
const unsigned long DAYS=(24*HOURS);
 
const unsigned long UNITS=HOURS;
 
 
// prgram states
#define IDLE         0
#define RED_BUTTON   1
#define GREEN_BUTTON 2
#define MENU         3
#define PAUSE        4
#define STOP_TIMER   5
#define CANCEL_TIMER 6
 
 
// global variables
byte events;
byte countdowntime;
boolean menu_running;
boolean timer_running;
 
boolean debug = false;
 
byte currentRed = LOW;
byte currentGreen = LOW;
byte previousRed = LOW;
byte previousGreen = LOW;
 
// set the LCD address to 0x27 for the 16x2 display
LiquidCrystal_I2C lcd(0x27, 16, 2);
 
// initiate Metro object
Metro relayMetro = Metro(0, true);
 
 
// arduino setup routine
void setup() {
 
  // set the arduino pins
  pinMode(RELAY, OUTPUT);
  pinMode(RED, INPUT);
  pinMode(GREEN, INPUT);  
 
  // initialise the lcd
  lcd.init();
  lcd.backlight();
 
  // activate debugging on the serial port
  if (debug) {
    Serial.begin(9600);
    Serial.println("Lets go!");
  }
 
  // initialise variables
  events = IDLE;
  countdowntime = DEFAULT_TIME;
  menu_running = false;
  timer_running = false;
  digitalWrite(RELAY, LOW);
}
 
 
// arduino loop routine
void loop() {
 
  switch (events) {
 
    case IDLE:
      events = Idling();
      break;
 
    case MENU:
      events = MainMenu();
      break;
 
    case RED_BUTTON:
      events = RedButton();
      break;
 
    case GREEN_BUTTON:
      events = GreenButton();
      break;
 
    case PAUSE:
      events = Pause();
      break;
 
    case STOP_TIMER:
      events = StopTimer();
      break;
 
    case CANCEL_TIMER:
      events = CancelTimer();
      break;
 
    default:
      events = IDLE;
      break;
  }
}
 
 
int MainMenu() {
 
  if (timer_running) {
    return IDLE;
  }
 
  if (menu_running) {
    return IDLE;
  }
 
  if (debug) { Serial.println("MainMenu()"); }
 
  lcd.clear();
  lcd.print("  Red: Set time");
  lcd.setCursor(0, 1);
  lcd.print("Green: Go (");
  lcd.print(countdowntime, DEC);
  if (countdowntime == 1) {
    lcd.print("hr)");
  }
  else {
    lcd.print("hrs)");
  }
 
  menu_running = true;
 
  return IDLE;
}
 
 
int Idling() {
 
  boolean do_red = false;
  boolean do_green = false;
 
  if (timer_running) {
    if (relayMetro.check()) {
      return STOP_TIMER;
    }
  }
 
  currentRed = digitalRead(RED);
  currentGreen = digitalRead(GREEN);
 
  if (currentRed != previousRed) {
    do_red = (currentRed == HIGH);
  }
  previousRed = currentRed;
 
  if (currentGreen != previousGreen) {
    do_green = (currentGreen == HIGH);
  }
  previousGreen = currentGreen;
 
  if ((do_red) && (!do_green)) {
    return RED_BUTTON;
  }
 
  if ((!do_red) && (do_green)) {
    return GREEN_BUTTON;
  }
 
  // all other button combinations are ignored
  return MENU;
}
 
 
int RedButton() {
  if (debug) { Serial.println("RedButton()"); }
 
  if (timer_running) {
    return CANCEL_TIMER;
  }
 
  if (++countdowntime > MAXIMUM_TIME) { countdowntime = MINIMUM_TIME; }
 
  lcd.clear();
  lcd.print("Time set to");
  lcd.setCursor(0, 1);
  lcd.print(countdowntime, DEC);
  if (countdowntime == 1) {
    lcd.print(" hour");
  }
  else {
    lcd.print(" hours");
  }
 
  menu_running = false;
 
  return PAUSE;
}
 
 
int GreenButton() {
  if (debug) { Serial.println("GreenButton()"); }
 
  if (timer_running) {
    return CANCEL_TIMER;
  }
 
  lcd.clear();
  lcd.print("Running timer");
  lcd.setCursor(0, 1);
  lcd.print("for ");
  lcd.print(countdowntime, DEC);
  if (countdowntime == 1) {
    lcd.print(" hour");
  }
  else {
    lcd.print(" hours");
  }
 
  unsigned long t = countdowntime * UNITS;
 
  timer_running = true;
  if (debug) {
    Serial.print("Setting metro for ");
    Serial.print(t);
    Serial.println(" seconds");
  }
  relayMetro.interval(t);
 
  digitalWrite(RELAY, HIGH);
 
  return IDLE;
}
 
 
int StopTimer() {
  if (debug) { Serial.println("StopTimer()"); }
 
  digitalWrite(RELAY, LOW);
 
  lcd.clear();
  lcd.print("Timer finished");
 
  timer_running = false;
  menu_running = false;
  relayMetro.reset();
 
  return PAUSE;
}
 
 
int CancelTimer() {
  if (debug) { Serial.println("CancelTimer()"); }
 
  digitalWrite(RELAY, LOW);
 
  lcd.clear();
  lcd.print("Timer stopped");
 
  timer_running = false;
  menu_running = false;
  relayMetro.reset();
 
  return PAUSE;
}
 
 
int Pause() {
  delay(1000);
  return IDLE;
}

Or just download the .pde file here

Obviously you can go all crazy with options and clocks, but I just wanted something quick and working. Changing the code to do all that is just a matter of opening it up, and uploading the new software.




And just to prove it is all working, here’s a small video demonstration. It doesn’t show the timer ending, you just have to take my word on that :D

The Mul-tea Charger

Who doesn’t have a multitude of devices, phones and other gadgets on their desks? I certainly have, and I finally had enough of all the chargers and wallwarts that each item seems to bring with them. With two iPhones almost constantly being charged, and a Nokia phone thrown in for good measure, I needed to have something flexible enough for those plus any future gadgets. So, I googled a bit, and found the IDAPT I3, and the beautiful, but ridiculously priced The Sanctuary. And then I started to think, how easy would it be to put a mains powered USB hub inside a box and have several USB charger leads coming out of the box, each charging a different device?




And the answer is, very easy :)

I started off with a 4 port powered USB hub, which I had lying in a drawer and plugged my iPhone charger leads into it, expecting them to instantly charge my two iPhones. But to my surpise, nothing happened… so another quick Google later, I came accross a blog entry of Carl Hutzler, which details why they won’t charge. All you have to do is sacrifice the hub and forego it’s PC functionality by cutting the D+/- lines and short them. A quick test shows they now finally charge themselves. Apparently it is better to stick 2x 100K Ohm resistors on the D+/- lines, which I will do at some point, but for now, this will do.

All I now had to do was find a suitable SWMBO friendly container, and as our furniture is all beech, the tea storage container I found for £1.99 at QD stores was perfect. I just needed to gut the compartiments out and put something on top of the plastic lid. At my local crafts store I found a small foam pad for 50p which was nice and soft. Unfortunately I got my measurements all wrong, so I messed up the black pad, but SWMBO came to the rescue by rummaging through my kids crafts drawers by digging up a piece of brown padding.

The final thing to do is then drill some holes at the locations convenient for your devices, and put it all together. Job done!





An Apple a day

It’s been 4 long years since I last bought an Apple. But today I took delivery of a nice shiny Macbook Unibody \o/

Glad to be back again

Update 11.06.2009

Just typical… 11 days after I received mine, Apple announces the new 13″ Macbook Pro’s at the Worldwide Developers Conference… I phone the Apple Store the next day to see if I can exchange it for one only to be told that I would have to return and re-order. So I did. Only to receive a new Macbook Pro today on my old order, whilst my new order is now in ‘Prepared for Shipping’, which means I can’t cancel it!

Guess I’ll be keeping the courier in business this month ;)

The Eee PC Digital Picture Frame

I just can’t help myself. It all started way back in 2002 with The Swedish Chef, followed in 2005 by the (still) popular Project Bling: the desire to create the ultimate digital picture frame.

So here it is, the third (and hopefully last) instalment: The Eee PC Digital Picture Frame aka The Eee PF.

I’ve divided it up in four sections, for easy digesting ;) All pictures can be enlarged, and the complete set of pictures can be found in the gallery.

Part 1: Disassembling the Eee PC
Part 2: Mounting the LCD
Part 3: Building the frame
Part 4: Finishing touches




Part 1: Disassembling the Eee PC

It starts off with an Asus Eee PC 701 2G, which is perfectly small, yet cheap enough to destroy in the name of science.

Asus Eee PC 701 2G

Push the three tabs at the top of the keyboard in and lift the keyboard up to reveal the keyboard connector at the bottom of the keyboard. Using a small flat screwdriver, push the two locks open and remove the keyboard completely. Next to the keyboard connector is the touchpad connector which should be disconnected as well.

With the keyboard removed, the bottom half of the case is next. Remove the nine screws as indicated in the pictures. Turn the Eee PC over and remove the six remaining screws. For good measure, also remove the battery by sliding the two latches outwards, and slide the battery out. Flip the Mini over again and open the lid again. Using a plastic wedge (or your finger nails if you have them), pry the case open using some gentle force along the sides. Be patient at this point as the plastic latches inside the case, are fragile and will snap if you exercise too much force.

Now we just need to remove the motherboard. Disconnect the speaker and display connectors. There are two latches holding it in place, located at the bottom edge of the PCB. Lift the motherboard up at the right hand side and then pull it out up and sideways.

Time to separate the LCD from the bezel. Six screws are hidden underneath the plastic covers which are stickied in place. Use a plastic wedge along the side of the bezel but be very careful, it is very fragile. Take your time and be gentle. Just four screws and four sticky metal tape strips to remove before you can lift the LCD clean out.

Voilà, the Eee PC naked! Now we are ready for some serious modding ;)

The Eee PC dissected
 

Part 2: Mounting the LCD

Whatever you do, make sure you buy a frame and mount which have a high WAF since it needs to live in the living room. You don’t want to find yourself building something like this and then SWMBO tossing it in the bin because is clashes with the design ;) Take the mount and measure the dimensions of the LCD and frame and carefully cut it to size. As usual; measure twice, cut once :)

The LCD driver board sits neatly underneath the LCD, but when you mount the display into the frame, it doesn’t fit. Cutting away a bit of the frame allows it to be sunken into it and sit flush with the frame. Some double sided tape holds the mount in place.

On to the motherboard. This needs to be mounted with enough clearance above the LCD so that heat can escape and to do this I made my own spacers using normal motherboard spacers which I had plenty of from my PC building days. The screw holes on the Eee PC are tiny, so cut away at the top of the spacers to make them small enough to fit. Looks rather neat, eh?

The Eee PC mounted
 

Part 3: Building the frame

Before we create the frame, we need to think about an alternative heat sink. Normally, the bottom of the keyboard would dissipate the heat, so after doing some testing, I settled on an Akasa Southbridge cooler and some tiny Maplin heat sinks. Tests showed that the temps remained nicely around the 50ºC mark, which will rise to about 65ºC once the back cover will be on. Well within the limits :)

Using some 4mm Pine Stripwood cut to length, mark out all the ports and crevices that need to be carefully removed from the frame to allow access once everything is closed up again.

Here’s a quick mock up of how it all will fit together once we’ve painted the frame and glued it to the photo frame’s back.

The Eee PC framed

Because the power switch would be covered up when the back is glued on, we need to move the switch’s function to somewhere more convenient. Reading this blog post over at Infinity Squared on an external power switch, I decided to go for the smallest I could find at Maplin. My soldering is definitely not the best, so a bit of heat shrink camouflages most of it ;)

I also wanted to have some sort of visual indication that the frame is on or off (other than the tell-tale display ;)). But how to get the minuscule surface mounted LEDs displayed through the frame? I had seen something previously, where light was transported using a small transparent acrylic tube. And when I was killing some time wandering around my local Tesco, I found my 48p answer… translucent golf markers! Remove the heads, drill a few holes and Bob is a relative.

Almost there. Using some left over black paint, paint all the sides and make sure that once assembled, all the small blemishes are hidden. Well, most of them ;)

Ready for assembly! Some glue, some patience and some skilful balancing of weighty items on top of the corners and all that is left to do is add the back cover.

The Eee PF framed and painted
 

Part 4: Finishing touches

A sheet of hardboard has been cut to be the approximate size and then using patience and lots of sanding made to fit exactly. The space at the bottom of the frame is perfect for the speakers, so using a small drill, create lots of small holes where the sound can penetrate through. It won’t be high fidelity, but it’s good enough for announcements. At the top of the frame, the microphone has been mounted, so we may be able to support voice commands in the future! A quick lick of paint finishes it off.

We’re re-using the stand from the picture frame, but instead of hammering it in the backboard, we have to glue it. I’ve used Araldite, which should create a long lasting strong bond.

And that is it! I’m quite pleased with the result, and even SWMBO commented on how nicely it looks in the living room… result!

The Eee PF finished

As a final note, I haven’t mentioned at all what software the frame is running, so before you bombard me with questions, I better list them here ;)




The OS is a standard Ubuntu 8.10 Desktop, with /usr compressed with squashfs/unionfs so it can fit on the 2GB SSD. After booting, it starts Firefox on my homepage, a PHP/Ajax/MySQL slideshow script which displays the pictures, weather and clock. The mousepointer is hidden using a small utility called Unclutter and the display is automatically switched off at night using sudo vbetool dpms off and switched on again in the morning using sudo vbetool dpms on. It’s still all a bit rough round the edges, but for now it works :)

Current Cost Classic vs CC128

Back in November I bought (well, actually I signed up to a new deal with E.ON which included one) a Current Cost electricity monitor, and hooked it up to my server so I could gather the stats for Cacti. I do this by running a small perl script which looks as follows:

#!/usr/bin/perl
# /usr/local/bin/cc-classic.pl
 
use Device::SerialPort qw( :PARAM :STAT 0.07 );
 
$port = "/dev/currentcost";
 
$ob = Device::SerialPort->new($port)
      or die "Can not open port $port\n";
$ob->baudrate(9600);
$ob->write_settings;
$ob->close;
 
open(SERIAL, "+>$port");
while ($line = <SERIAL>)
{
  if ($line =~ m!<ch1><watts>0*(\d+)</watts></ch1>.*<tmpr>\s*(-*[\d.]+)</tmpr>!)
  {
     $watts = $1;
     $temperature = $2;
     print "watts:$watts temp:$temperature";
     last;
  }
}
close(SERIAL);

This would give me the two values I am interested in; watts and temperature (since it sits in the garage node 0 ;)) in Cacti’s format:

$ /usr/local/bin/cc-classic.pl
watts:761 temp:11.3

But today, I received my new unit, a Current Cost CC128. It’s main benefit is that it supports individual appliance monitors, which makes the output even more useful. So, armed with a draft copy of the CC128 XML output document, I prepared my script to read as follows:

#!/usr/bin/perl
# /usr/local/bin/cc-cc128.pl
 
use Device::SerialPort qw( :PARAM :STAT 0.07 );
 
$port = "/dev/currentcost";
 
$ob = Device::SerialPort->new($port)
      or die "Can not open port $port\n";
$ob->baudrate(57600);
$ob->write_settings;
$ob->close;
 
open(SERIAL, "+>$port");
while ($line = <SERIAL>)
{
  if ($line =~ m!<tmpr>\s*(-*[\d.]+)</tmpr>.*<ch1><watts>0*(\d+)</watts></ch1>!)
  {
     $watts = $2;
     $temperature = $1;
     print "watts:$watts temp:$temperature";
     last;
  }
}
close(SERIAL);

And guess what… that works just fine ;)

For those who read diff:

$ diff /usr/local/bin/cc-classic.pl /usr/local/bin/cc-cc128.pl 
2c2
< # /usr/local/bin/cc-classic.pl
---
> # /usr/local/bin/cc-cc128.pl
10c10
< $ob->baudrate(9600);
---
> $ob->baudrate(57600);
17c17
<   if ($line =~ m!<ch1><watts>0*(\d+)</watts></ch1>.*<tmpr>\s*(-*[\d.]+)</tmpr>!)
---
>   if ($line =~ m!<tmpr>\s*(-*[\d.]+)</tmpr>.*<ch1><watts>0*(\d+)</watts></ch1>!)
19,20c19,20
<      $watts = $1;
<      $temperature = $2;
---
>      $watts = $2;
>      $temperature = $1;

Please note, the above only works with 1 sensor (the main transmitter), so it is likely to change in the future. For now it suits my need.

Lies, damned lies, and statistics

I’ve been using a 1 wire network for quite some time now, but when I deleted a directory to much on my server, I lost a lot of the stats that I had gathered. A couple of weeks ago I finally got my behind in gear again and rebuild my network, this time making sure it all gets backed up ;)

One day I’ll write something about how it’s all been done, but for now you’ll have to suffice with some pretty graphs.

Here’s the daily graph for the temperatures in our bedrooms for the past 24 hours:

Daily temperatures Bedrooms

And recently I added a Current Cost meter to my network, which gives me the shocking facts about my electricity usage for the past 24 hours:

Daily electricy usage

The above graphs are updated hourly, and I’ve got other graphs too, extending the period of graphing. You can find them here for the time being.

Update 25.1.2009

And now you’re able to follow the stats on twitter: http://twitter.com/awoogadotnl

Node Zero 33 1/3 – The Final Install

Node Zero… Every respectable technology enthusiast has one, and so do I. It started all the way back in 2001 when I came across The Automated Home website and it’s associated mailing list. I knew nothing about home automation, audio distribution, video sharing, etc but was keen to learn and introduce at home (often with great resistance from SWMBO ;)).

Node Zero 2002So I build my first node zero to accommodate some of my servers in the garage and distributed the network from there into the living room. Due to the fortunate location of the garage being adjacent to the living room it is the ideal place to put stuff without worrying about the illusive WAF :)
You can’t really call the cupboard a node zero though, but if you closed the doors, at least it hid the cat5 wiring from the switch and modem it housed.

Node Zero 2004Flash forward to 2004 and with an ever increasing gadget count it was time to upgrade node zero. My dad is blessed with the carpentry gene and so with my instructions he set off to partition the garage in two parts where I reserved myself a shelf for the 2nd incarnation of my node zero. On the shelf my two TiVo’s and their satellite receivers were placed, followed soon by a Xbox Media Center, a scart switch and a Kat5 transmitter. The result: spaghetti junction all over again :(

So with an increasing demand on convenience and accessibility, I had to make amends. Bring on 2008 where my dad performs yet another masterpiece and creates a purpose build rack for me. The rack houses all my stuff, and with some space left at the bottom I even have room left for more toys! :D

Node Zero 2008

Find some more pictures in the gallery

Out with the old, in with the new!

Vauxhall Signum 3.2V6 EliteThanks to Lewis at Motoworld Ltd (who made us an p/x offer we couldn’t refuse), we are now the proud owners of another green family fun bus.

Vauxhall Signum 3.2V6 EliteIt’s a Vauxhall Signum 3.2V6 Elite in Bamboo Green with full black leather, cruise control, climate control and memory seats! Or in the words of Jeremy Clarkson, a dadsie car ;)

See some more pictures in the gallery

Dell Ighted!

Just checked my card balance today, and I’ve just received a credit for £11.75 from Dell UK (in case you’re wondering why they would issue this, see this post for the reason). Will they add the 2nd refund later, or have they conveniently forgotten it? To be continued… ;)



Update 23.8.2007

Still no sign of that promised 2nd refund… A polite email is already heading their way :)

Update 4.9.2007

Finally! This morning (after chasing this for the past month) the 2nd £11.75 arrived on my credit card. About time too!

Dell Icious!

Dell Dimension C521A few weeks back I bought a nice new Dell Dimension C521 baseunit (AMD X2 3600+, etc, etc) to replace my homebrew server with the intention of running several VM’s on it using Ubuntu as the operating system of choice. I’ve been using Ubuntu for quite a while now (deflecting from Gentoo as that proved a little more maintenance heavy than I was looking for) and so I had no intention what-so-ever to use the included Microsoft Windows Vista Home Basic installation that came with the PC. As there have been several successful reports in the media of people getting a refund for the forced Microsoft inclusion, I though it was worth a punt over here too.




I contacted Dell UK using the contact form on the website and wrote to them the following:

Hi,

I’ve just taken delivery of my Dimension C521 which came with a copy of the Microsoft Vista Basic operating system. As I will be using the Ubuntu linux operating system, I have not agreed to the Microsoft EULA and installed Ubuntu linux on the PC. Could you please forward me an address where I can send the Microsoft Vista Basic operating system CD to for a refund? Please note, I am not looking to return my PC, just the accompanying Microsoft operating system.

I hit the Submit button and the website told me to expect a reply within 24 hours…

So imagine my surprise that I received a reply within 4 hours from Dell:

Thank you for contacting Dell on-line customer care.

Please be informed that you need not return the CD and I will arrange for the refund of £10, which is the cost of the CD.

I will call you on 27th July with an update regarding the same. If you have any further queries do not hesitate in responding directly to this mail and I will be glad to assist you further.

Woohoo! Result!

Of course, by now I had realised that I had forgotten to mention the Microsoft Works 8.5 CD that came with the order, so I replied with:

Thank you very much for the quick reply. Is it also possible to receive a refund for the Microsoft Works 8.5 CD that came with my PC? Again, I am quite happy to return the CD unopened to you if you forward me an address to send it to.

Nothing ventured, nothing gained ;)

Sure enough, within 30 minutes another reply arrived:

Further to your email, Iam also arranging for the refund of £10 for the works CD. I will call you on 27th with an update regarding the refund.

Please be informed that you need not return the CD. If you have any further queries do not hesitate in responding directly to this mail and I will be glad to assist you further.





How easy was that? It is comforting to know that true customer care still exists, although it would have been a whole lot easier if Dell UK just provided a tick box on their website to decline the operating system when ordering.

Adding infrared to the Xbox

Xbox XIR Easy KitThe original Xbox makes, after a great games console, a fantastic versatile media player with the help of Xbox Media Center, or XBMC. You will need to chip or softmod your Xbox (there are a million guides/opinions on the internet so do some Googling) and a copy of the XBMC application. To fully appreciate XBMC, you also need to buy the DVD playback kit which allows you to control the Xbox using a remote control. The only problem is that Microsoft in its infinite wisdom decided that it doesn’t need the facility to switch the Xbox on remotely. As we are a generation of couch potatoes that is obviously not on!




Various solutions have been invented, but by far the easiest and most elegant one is the XIR Easy Kit, available from www.XIR.us. At $35.65 (£18.68 at today’s rate) it also makes it a bit of a bargain, so there really is no reason to fiddle with anything else.

You can read the pictorial here

The TiVo LCD Project

Flash of the past alert! It was way back in 2003 that I did a small modding project involving my favourite gadget of all time the TiVo and a small character LCD and created a mini How-To for it. I thought I lost the article forever when I accidentally deleted the web pages in one of my (many) server moves. Not so! A certain BobBlueUK knew his way around The Wayback Machine (unlike me) and digged up the original archived copy!

So in all its glory, here it is again :D




Ever wanted to find out what the TiVo is doing? Look no further :) On this page I will describe a way for you to display the program information on a small LCD display. It is only to be taken as a proof of concept, I’ll leave the actual mounting and cosmetics up to someone else.

Components

  1. A warranty voided TiVo
  2. A serial LCD. Mine is a 2×20 LCD pre-fitted with a BPK driver board from Milford Instruments, part number 6-121 @ £30.00
  3. A bit of cable with 3 wires (like cat5)
  4. A 3.5mm stereo jack plug with plastic barrel and strain relief sleeve from Maplin Electronics, part number HF98G @ £0.79
  5. A Futaba Servo Connector from Maplin Electronics, part number GZ94C @ £1.49
  6. 2x 4-Pin 5.08mm (0.2in.) Spacing Polarised Power Connectors (one male, one female) from Maplin Electronics, part numbers JW64U and JW65V @ £0.79 each. These things are better known as molex connectors
  7. A patient SWMBO

TiVo LCD Project

Instructions

The most tricky part of this project is opening up the TiVo, so best invite Stuart Booth over who can do it blindfolded using only his nose to guide him ;-) If he’s not available you will have no choice but to do it yourself, so get a Torx T10 screwdriver and remove the 3 screws at the back of the TiVo. THIS WILL VOID YOUR WARRANTY, but I guess you did that already when you installed the Turbonet card and added a nice big hard disk, right? ;-)

TiVo LCD ProjectWith the TiVo opened, you need to put the 2 molex connectors (item 6) to work by making up a splitter which is put in between the hard disk and the power supply. BE VERY CAREFUL AROUND THE POWER SUPPLY! That thing is lethal as it maintains the charge even after it has been switched off for several hours/days. Anyway, the thing you have to bear in mind is that you need to connect all wires on the molex connectors, and on to the +5V and GND (Ground) add two wires which you need to feed to the outside of the TiVo. I used the same space as where my cat5 cable is going out of the TiVo (the one connected to the Turbonet card), just underneath the fan.

Then it is soldering time… Take the 3.5mm stereo jack and connect a wire to the tip of the connector. That was soldering time :-)

TiVo LCD ProjectNow take all 3 wires (and make sure you have them appropriate coloured, like red for +5V, black for ground and any other colour for the TX (transmit), and connect them to the Servo connector, making sure that you do them in the same order as there are pins on the LCD. My LCD has 3 pins, labelled +5V, GND and Recv (receive), which makes it pretty obvious which wire goes where. Your mileage may vary of course.

Time to test it methinks :-) Close the TiVo and hook it up in your AV setup and power it up again. The LCD display should now be powered, and depending on what model/type you are using it might display something (like garbage or a version number) or in my case, a blank screen with just the backlight on.

Pat yourself on the back, the hard work has been done. Now it is back to the good old computer and open up a telnet and ftp session to the TiVo as you need to install a small .tcl script written by a TiVo community user called Demark. He posted it to this thread and all I had to do was modify it slightly to output the lines correctly. You can find my copy here.

TiVo LCD Project

Install the .tcl file in /var/hack and run it with the ‘&’ to detach it from your shell, otherwise you will reboot your TiVo when you try to interrupt it. To stop the script you simply do a ‘touch /tmp/vfd.stop’ and within a minute the script will stop. Make sure you remove the /tmp/vfd.stop file before you start it again though.




It is quite possible that I’ve skimmed over something which I think is trivial to do, but proves a real nightmare for you, so if you got any questions, please don’t hesitate to contact me. Good luck modding!

Think Different

Mac Mini Mac Mini Mac Mini