Friday, 13 November 2009

Karmic IPv6 Global address problems

If you're running IPv6 on Ubuntu 9.10 with multiple interfaces and you're not seeing any global IPv6 addresses assigned to your interfaces, and you're seeing this kind message in /var/log/messages:
Nov 13 10:10:10 my_machine kernel: [ 1000.101010] eth0: IPv6 duplicate address detected!
Then it's obviously Friday 13th and you should put it down to ....Yeah maybe but yesterday it was the same last week....

It seems there's a kernel (2.6.31-15) bug which means IPv6 Duplicate Address Detection (DAD - see RFC4862) is generating false-positives and subsequently not permitting your global address to be assigned to an interface.

To work around this bug do (change eth0 to your iface name):
sudo sysctl net.ipv6.conf.eth0.accept_dad=0

Tuesday, 10 November 2009

Ubuntu 9.10 (Karmic) has dodgy input problem

I just upgraded to Karmic Koala and I'm NOT impressed - My mouse and keyboard have become unresponsive and sluggish - sometimes even losing keystrokes and control of the mouse for a few milliseconds at a time (I had to go back and correct this post due to missing keystrokes that I did make but didn't register).

I'm considering changing distro if this isn't fixed soon.

[update:9mar10]: See possible fixes here

Sunday, 25 October 2009

Our Solar system (planets) broken on Google Earth/Sky

I was trying to see the planets (our solar system) on google earth recently but there seems to be a problem/bug - they do not display - both in the dedicated app and on the google sky website. When you click on the planets in the app (with error reporting on) you get: 404 not found
...and for all the others (maybe it's something else but they're not working on either right now).

Wonder when it'll be fixed?!

I posted a question on the help forums but no response....

Friday, 2 October 2009

MacBook disc crash (and restore)

Well my MacBook's disc decided to die the other week but thanks to Time Machine I had most of my stuff safe (apart from my other two partitions on my triple boot setup ;) - But I hadn't booted into 'em in a while so there can't have had anything tooo serious lost there - I think I'm going to just use VMware/Parallels/VirtualBox from now on...).

Of course I'd been using my TC with encrypted backups so when I attempted a restore using a new Snow Leopard DVD it couldn't find the backups... Oh dang! Luckily there is another way - I upgraded the default Tiger install to shiney new Snow Leopard and then fired off the Migration Assistant (from the another Admin account on the machine - you should not create your original user account with the same name as the one in your backup as it will clash - so just use another [admin] login and once you've run the Migration Assistant it will recreate your old account).

Friday, 25 September 2009

Handy OSX commands

List USB devices (a bit like lsusb on Linux)
On standard installation:
ioreg -c IOUSBDevice -l -w 0
Or using the developer tools:

Airport Wifi Info
There are various arguments you can run it with -h to get a listing but the most useful are -I to get current wireless status, and -s to do a wireless scan.

Mount and mess with disk images
Here's how to mount a dmg:
hdiutil attach your_disk_image.dmg

List process' network connections
sudo lsof -i -P

Tweaking startup apps
- To disable startup items - add/rm a file called .disabled in their directory (i.e. a subdir of /System/Library/StartupItems/ or /System/Library/StartupItems/)
- launchctl -- Interfaces with launchd - in /Library/LaunchDaemons and similar
- Various custom ones; e.g. sudo "/Library/Application Support/VMware Fusion/" --stop

Search using Spotlight on the command line
mdfind your_search_term (or mdfind -name file_to_find to look for file names).
There's also a few other related utilities like mdls to list file attributes etc. For more info see this useful post. It is also possible to enable the unix style locate command but it seems like a waste of space on OSX since you've already got Spotlight - though locate does provide for searching all files (only by name). However one can tweak Spotlight to search these files too...

Playing sounds on the cmd line
Also afinfo gives you info on the file.

Print out OSX version
/usr/bin/sw_vers | grep 'ProductVersion:' | grep -o '[0-9]*\.[0-9]*\.[0-9]*'
Or use system profiler (both suggestions from here):
system_profiler SPSoftwareDataType

There's also other pages with similarly useful info like here.

[updated: 23mar10]

Tuesday, 25 August 2009

Interact with other local Linux terminal sessions

If you're interested in trying to control/inject/view other terminal sessions (e.g. with ssh or telnet on a tty or pts) that you/someone is logged into on that machine then read on. Handy for zapping that vi session you left running at work, or playing havoc with something random ;)

It seems that watch does the trick for FreeBSD, but for Linux there's only things like ttysnoop (for linux-2.6) but that requires you modify your /etc/inittab files which is a bore. There's also conspy but that only works with physical terminal devices not ptys, as far as the docs say...

However you can do it without altering anything:
  • See what's being typed (and subsequent output) in another terminal session by using peekfd - you just need to supply the UID of the shell running on that other terminal (find it using ps). Watch out as the output may well contain some 8-bits chars which can confuse your current terminal - though you can get it back to normal using a terminal reset. (e.g. sudo peekfd /dev/pts/27)
  • Inject characters into a terminal by using the TIOCSTI ioctl() with this neat Perl script (copied below). Find the tty of the process you're interested in (e.g. ps axg | grep vi) and use that as the argument to the perl script e.g. echo 'ZZ' | sudo ./ /dev/pts/27
  • #!/usr/bin/perl -w
    use strict;
    use Fcntl;
    use constant TIOCSTI => 0x5412;
    unless (@ARGV >= 1) {
    print "usage: $0 [vt] <input>\n";
    exit; }
    my $vt = shift @ARGV;
    my $buf = join '', <>;
    &writevt ($vt, $buf) || die "can't write to $vt: $!\n";
    sub writevt {
    my ($vt, $buf) = @_;
    sysopen (VT, $vt, O_RDONLY) || return 0;
    for (my $i = 0; $i < length $buf; $i++) {
    ioctl (VT, TIOCSTI, substr ($buf, $i, 1)) || return 0; }
    close (VT) || return 0;
    return 1; } 
[updated 6jan10]

Monday, 10 August 2009

Panasonic microwave manuals

There seems to be a few annoying websites out there that ask for payment for user manuals - fortunately Panasonic have most of their manuals online for everything from microwaves, cameras, camcorders. There's also a link to their global support site.

Sunday, 2 August 2009

IPv6 Tunnel with Thompson router (from a Time Machine)

[updated 5oct12, 25jul10] I've recently got myself a Thompson router which has a bunch of interesting stuff in it once you get into the telnet access (the username/password used depends on your provider e.g. Plusnet (Administrator/your_router_serial_num), O2 (SuperUser/O2Br0ad64nd OR your_router_serial_num), etc). To get a tunnel working for Hurricane Electric, Sixxs, you need to [temporarily] allow IPv4 pinging of your box. Once you enable it at tunnel setup time - so here's how to do it.
%telnet your_router
{Administrator}=>:service system ifadd name=PING_RESPONDER group=wan

Once you've set it up on the website then you can disable it again:
{Administrator}=>:service system ifdelete name=PING_RESPONDER group=wan

On some systems you may need to allow 6to4 IPv6 tunnelling through the NAT - just try the above first and see if the tunnel works. If it doesn't then you could look here for info enabling it. [Update18jul10]: To enable it telnet to your Thompson box and type the following - filling in outside_addr and inside_addr and intf (on O2 its O2_ADSL2plus) - you can find a list of your box's interfaces by using nat iflist and associated addresses ip iplist):

nat mapadd intf=Internet type=nat outside_addr=your_external_ip_addr inside_addr=your_time_machines_ipv4_addr protocol=6to4

OR if you have a dynamic IP address (common these days) then use the following (and it will dynamically install the appropriate rule to permit your 6to4 IPv6 tunnel through when your router reboots (as suggested on - But to get it all working you will also need to use some sort of dynamic tunnel update as provided by

:nat tmpladd group=wan type=nat outside_addr= inside_addr=your_time_machines_ipv4_addr protocol=6to4

To get a full listing of existing mappings use: nat maplist expand=enabled If you need to change a mapping then you'll need to delete it first using nat mapdelete and then add the modified one. Once you've got the right mapping in place then you'll need to save the config so it is persistent between reboots by typing config save filename=user.ini (on O2 anyway - for others you'll need to check the default config file by: config list)

This article follows on from one on using my Time Machine as IPv6 6to4 tunnel/router - though this advice could also be relevant to someone just using a 6to4 tunnel from any device.

Tuesday, 26 May 2009

Skype codec selection

Ever wondered how to manually choose which codecs Skype uses when you make an audio call? Well here's how (by selecting the Skype codecs you don't want to use):
  • On Windows/Mobile you set this registry key (HKEY_LOCAL_MACHINE/SOFTWARE/Skype/Phone/Audio/DisableCodecs) to contain the codec's you don't want Skype to use (e.g. for Pocket PC you might want to disable higher CPU codecs: "ILBC G729 EG711U")
  • On Linux/OSX you add the disabled codecs inside these tags: <DisableCodecs> <\DisableCodecs> in the config.xml file (usually found in ~/.Skype/your_skype_username/config.xml). They need to be put into the (usually existing) <Call> tag which is within the <Lib> tag.
  • Furthermore you can actually force the use of a particular codec by using the <ForceCodec> tag/Reg key in the relevant place.
Skype has a wide range of codecs (e.g: SILK_WB_V3, SILK_NB_V3, ILBC, G729, EG711U, SVOPC, SILK, ISAC) which seems to get expanded every so often. Note: That disabling G729 may interfere with use of SkypeOut. Skype generally does a good job of automatically selecting the appropriate codec and its rate - unless you use this tweak - so be aware that Skype may not perform optimally when it's range of codecs is impaired.

There's also other fun stuff you can tweak - like adding a <video> section and make Skype use a particular resolution (you'll need to convert this to an appropriate Registry entry on Windows):

For an interesting read on Skype see, and for papers on performance see Politecnico di Bari and Politecnico di Torino.

[Updated: 16mar2012: More on location of Codec config tags]

Monday, 18 May 2009

Weird MagicCam error message from Google talk video device

Have you ever seen this error when attempting to run some capture software on OSX? (Note: The current process label in the error message is dependent upon which app you're running - in my case its one called vic):
[000:029] MagicCam 0: Current process: vic, Flash is loaded: no
[000:029] Error( MagicCam 0: MagicCamOpen: Not an allowed process!

It is coming from the Google Talk's virtual video devices (but it's probably not actually causing any trouble directly - see below) - which are installed here:
/Library/QuickTime/Google Camera Adapter 0.component
And the MacCam related functions are in these two files:
/Library/QuickTime/Google Camera Adapter 0.component/Contents/MacOS/Google Camera Adapter 0
Run strings on it:
strings "/Library/QuickTime/Google Camera Adapter 0.component/Contents/MacOS/Google Camera Adapter 0" | grep -i magiccam)
and you get:

Anyway it's not actually harmful and generally if you've a problem this is unlikely to be the cause of it. You can just [re]move the files as necessary to get rid the messages though your problem may well be somewhere else but at least you can eliminate it as a possible cause.

Friday, 1 May 2009

Just setup Time Capsule as my IPv6 gateway

So Apple have taken a lead in the drift towards IPv6 adoption (though it seems we really are getting to the end IPv4 as we know it) - their Time Capsule (TC) uses IPv6 out of the box for administration when using the AirPort Utility (Using a proprietary encrypted protocol AACP). It also has facilities for setup of an IPv6 [6in4] tunnel using IPv6 in IPv4 encapsulation (specifically IP protocol 41) as specified in RFC4213.

So to get connected to the Global IPv6 Internet (such as it is...) you need to go get a free tunnel endpoint from Hurricane Electric (or others) then use the AirPort Utility and select 'Manual Setup', then go to 'Advanced' and 'IPv6' then select 'IPv6 mode:' as tunnel and select 'Configure IPv6:' as Manually. The enter the addresses as given by your IPv6 tunnel provider. In the LAN IPv6 Address enter an address that has the same IPv6 prefix as the others but with a different host id - the bit after the "::/64" - just choose a number (well up to 8 hex digits separated by ':'s - no "::" prefix used if exactly 8 digits are used for host_id) which will form your TC's [Global] IPv6 address (e.g. your_prefix::FE:ED:CO:FF:EE). It's probably best to disable incoming connections as you could open your machine to IPv6 attacks.

If you're on a public IP address space then you're all set, however if like most of us your TC is behind a DSL router/NAT then you'll need to make hole in your firewall/NAT so Porotocol 41 gets in and out. If you're lucky enough to have a Linux based DSL router then this how to do it - login to you router. If you've got a Netgear router then you can enable telnet access by going to http://your_router/setup.cgi?todo=debug. And then telnet to the router and type the following (which I found here) - given your TC has the address
iptables -t nat -A PREROUTING -i ppp0 -p 41 -j DNAT --to
iptables -t filter -A FORWARD -i ppp0 -p 41 -d -j ACCEPT

You may not need to do the above on some routers - all tht may be necessary is enable pings on the external interface.

[update 2aug09]: If you've got a Thompson router then see my new blog entry.

And you should now be able to access the world of IPv6.... Check out these for starters, the old Kame dancing turtle, and quite a few others...oh and these too...

[updated/corrected 6in4 - 18nov09]

Wednesday, 29 April 2009

Encrypted Timecapsule backups

Timecapsule backups aren't encrypted which seems a little dumb - as if someone nicks your TC then they've also got all your data in the clear too. There's a simple procedure that this smart post lays out - but I've copied it here in case that page goes away as it is so handy:
  • Set up Time Machine to back up to an AFP drive. I don’t think this will work with a local hard drive.
  • Let Time Machine start backing up, then stop the back up. This will have created _.sparsebundle on the AFP drive.
  • Disable Time Machine.
  • Open a Terminal and run these commands (replace name_mac with your mac's name, and TC_drive_name with your TimeCapsule's network drive name - ls /Volumes to check):
    $ cd /Volumes/TC_drive_name/
    $ mv name_mac.sparsebundle name_mac-old.sparsebundle
    $ hdiutil convert -format UDSB -o name_mac.sparsebundle -encryption AES-256 name_mac-old.sparsebundle

    It will ask you for a password. Type in a password you won’t forget.
  • Double click the sparsebundle in the Finder (You should find it in your TimeCapsule network drive). You will be prompted for your password. Type that in and tick the “Remember password” check box.
  • Open /Applications/Utilities/Keychain Access and find name_mac.sparsebundle. Right click it and select Copy name_mac.sparsebundle.
  • Select System Keychain on the left hand side of Keychain Access and paste it in the main area. Allow this action if you are asked. Remember to lock the System Keychain when you are done.
  • If using Snow Leopard then (as suggested here) you'll need to copy "" from the old to the new sparsebundle. You can do this by going to the volume using Terminal as above and then doing:
    $ cd /Volumes/TC_drive_name/
    $ cp name_mac-old.sparsebundle/ name_mac.sparsebundle
  • Unmount the volume and then tell Time Machine to get busy.
  • Time Machine should not have no problem backing up to the encrypted volume. If everything works as planned, feel free to delete the name_mac-old.sparsebundle
[updated: 21sept09, 21aug10]

Tuesday, 28 April 2009

Mounting a Xen .xm (xmfile) disk image file

You've probably wondered how to mount one of these pesky things. It turns out they're actually just entire disk images with a boot sector and often with multiple partitions. On Linux you can use the losetup tool - It allows one to mount a disk image on a /dev/loopX device. If it has multiple partitions then you need to find out where in the image the particular partitions are that you want to mount. Firstly you mount the entire image on a [spare] loop device e.g.:
sudo losetup /dev/loop0 diskimage.xm
Then run fdisk to check out the partition table (in sectors):
sudo fdisk -ul /dev/loop0
It will list the partitions - note down the start of the partition you're interested it and multiply it by 512 (the number of bytes per sector): e.g. If the first partition starts at 63 you multiply it by 512 and get 32256 then you use that as the 'offset' argument (i.e. how far into the disk image your chosen partition resides) to the losetup command:
sudo losetup -o32256 /dev/loop0 diskimage.xm
Next you need to determine the filesystem type - you maybe able to check this what fdisk reports, but you can also use the file command:
file -s /dev/loop0
Then mount that partition onto a spare directory on your system (e.g. ext3 filesystem on /mnt):
sudo mount -text3 /dev/loop0 /mnt
And it should then be mounted at /mnt and away you go. Thanks to this page for getting me going - plus a comment there mentions that there's simpler way to mount the image - if you're running a kernel version > 2.6.26 (You can specify modprobe loop max_part=63 and it will create the partitions automatically on calling losetup - but that only works if loop is a module - which it isn't in Ubuntu 9.04).

[corrected 2oct09]

Monday, 9 March 2009

Adding proxying to an Ubuntu Apache server

You can enable forward proxying server behaviour in Ubuntu 8.* by doing the following:
- Enable the proxy modules:
sudo a2enmod proxy
- Edit the proxy config file:
sudo vi /etc/apache2/mods-enabled/proxy.conf
- Add your allowed hosts to the section, setting ProxyRequests On and the add a new section:
<directory proxy:*>
Order deny,allow
Deny from all
Allow from my_hosts

Restart Apache and you're done:
sudo /etc/init.d/apache2 restart

Thursday, 12 February 2009

This driver is blocked due to incompatibility issues

Yeah this kept popping up and although it told me that the Driver: Virtual PC/Windows CE Emulator was the problem it firstly didn't tell me where it was (i.e. filename) nor how uninstall the damn thing?! (just some useless 'check for solutions online' button).

Finally I tracked it down using Microsoft's (was the excellent Sysinternals) LoadOrder tool and the very handy Autoruns. I tracked it down to: "VPCAppSv Provides application services for Virtual PC. Connectix Corporation c:\windows\system32\drivers\vpcappsv.sys" which turns out to be a black listed driver for WinXP. Nice.

So I just deleted from driver list (under HKLM\System\CurrentControlSet\Services) in Autoruns, then rebooted - and no more warnings ;) Then it can just be deleted.

Sunday, 25 January 2009

Varilight dimmer remote control

Got one of these things a while back - they're neat dimmer switches with a touch control - no moving parts - get 'em from Homebase etc. They're remotely controllable (over IR-InfraRed) - and you can buy a specific remote for from about £5 upwards.

However these Varilight dimmers are smart - you can program them to do a bunch of things - depending on which model you have. It's not clear how to work that out (apart from testing it using its programming mode - see below), but all of them can be programmed to work with any remote control you have - e.g your TV remote. Just choose a spare button that you don't use and you can get the varilight to use it to turn the thing on and off! As mentioned here:

1. Tap switch 6 times - takes it in to 'learning mode' (After the 6 taps the light will go and off once more to indicate it's in learning mode).
2. Point your choose remote at it whilst pressing (for 2 secs or more) that your chosen button at it - the lights will go on and off.
3. Point the remote at the it again whist pressing the button and the lights should go on and off
4. You're done - it should work as your new remote control!

Friday, 23 January 2009

Windows Mobile device sync problem finally fixed!

Finally - after trying a bunch of stuff since November last year I have managed to locate a cure for my 'Error' in WMDC. Amazingly enough this(also ripped off here) was the cure - it cures a related problem I also saw in IE when I attempted to download a cab: "this device is restricted from downloading this file type" - I was led here from the excellent xda forums
  • The problem and fix are incredibly created using Mobile Word ??!!** - when saving docs as plain text files - so beware. Here's the proceedure cribbed from the the link above (in case it disappears):
  • 1) soft reset device
    2) Start / Office Mobile / Word
    3) Create a new document (click on New)
    4) type some text (just plain text - no formatting - it was 'plain text document') just a few characters
    5) File / Save As...
    6) I have selected type 'Plain Text'
    7) It asked me whether I want to save it at 'Word document instead' - I clicked No.
    8) I have powered off the device and did soft reset
    9) Start file explorer, find the file (it was in My Device / My Documents), click on it - it opens Word again.
    10) Add some formatting (I have selected part of text and changed font to bold)
    11) Close Word - it asked whether to save it in Word format - this time I said Yes
    12) Power-off the device and press soft reset again

As to why this works is anyone's guess... I did take the trouble to dump my security registry keys (HKLM\Security\Policies\Policies) before I performed the magical fix but I found no difference in those key values before and afterwards.... But there seems to be a mountain of security related controls in Windows Mobile - see MSDN's Security Policy settings, Provisioning Security Settings - I'm sure somewhere in there is the answer....

Monday, 5 January 2009

Dirty Sexy Money S02E10 - doesn't exist!

Are looking for the "final" episode of Dirty Sexy Money .... or, even worse, have you already downloaded Dirty.Sexy.Money.S02E10.HDTV.XviD-NoTV.avi or Dirty.Sexy.Money.S02E10.HDTV.XviD-NoTV.avi.rar?

And then it asked you for that pesky password from some spam

Look no further ... You've probably seen the last episode of this series already (S02E09) - this E10 is just a bullshit lure. Check the ABC website to check what you have seen.... And save yourself the wasted time...

[update 27may09]: It seems that this episode and newer ones are now/soon becoming available as the series reaches its finale (see comments below for more details).