Category: Technology

  • Backing up my tweets

    Twitter logoOver the last month or so, I have gone Twitter crazy. I’ve been transformed from someone who didn’t “get it” into someone who uses Twitter as his main source of news… leaving behind a big pile of unread RSS feeds from blogs (which is exactly why this blog integrates with my Twitter feed). I’d like to further integrate Twitter with this blog (using something like Twitter Tools) but I’m still on an old release of WordPress and still have a way to go on testing the new site (although you can catch a a sneak preview as I inch forward in my development).

    In the meantime, I wanted to archive my “tweets” in order to keep a backup as well as to manually transpose the useful ones (not all of the inane babble) into a blog post – sort of like the ones that come from my Delicious feed (although I use Postalicious for that).

    I tried various scripts in Python (this one looked hopeful but it uses a deprecated API call), and PowerShell (incidentally, James O’Neill and Joe Pruitt have done some interesting stuff using PowerShell to interface with Twitter) but eventually I realised that a simple curl command could pull all of my Twitter status updates into one or more local XML files. Stage 2 is working out how to apply XSLT (or some other developer magic) to the XML and present it the way I would like, but at least I know I have a local copy of my tweets. The command I used is simple:

    curl -O -k -u username:password “https://twitter.com/statuses/user_timeline.xml?count=100&page=[1-32]”

    (thanks to Damon Cortesi for posting thismore information on the statuses user_timeline method can be found in the Twitter API documentation.)

    I’d like to give one more piece of advice though: the Twitter API restricts the number of calls you can make in an hour to 150. With TweetDeck polling every minute or so, and this command pulling multiple pages of updates through the API, it didn’t take long for me to hit my limit during testing, so you may like to use the maximum page size of 200 tweets (up to 16 times to pull the maximum of 3200 updates that Twitter allows):

    curl -O -k -u username:password “https://twitter.com/statuses/user_timeline.xml?count=200&page=[1-16]”

    This gives me the data in XML format but I noticed that I can also get hold of it in JSON, RSS or ATOM format – unfortunately I can’t seem to retrieve results based on multiple parameters (e.g. http://twitter.com/statuses/user_timeline.rss?count=200?screen_name=markwilsonit) so Google Reader (or another RSS reader) is limited to the last 20 updates.

    Just before I sign off, I’ll mention that, as I was writing this post, I saw that I’ve even begun to open my colleagues’ eyes to the power of Twitter… David Saxon (@dmsaxon) has just joined the party (mind you he pretty much had to after asking our IT Security guys to remove the proxy server restrictions on Twitter use during core working hours today…). Welcome to the fold Dave.

    You can follow me on Twitter @markwilsonit.

  • Injecting network drivers into a Hyper-V Server (or Windows Server) installation

    A couple of weeks ago, I blogged about running Windows from a flash drive – specifically running Hyper-V Server 2008 R2. One thing I hadn’t got around to at that time though was injecting the necessary drivers to provide network access to/from the server – which is pretty critical for a virtualisation host! Under network settings, the Hyper-V Server Configuration (sconfig.vbs) showed that there were no active network adapters found but I knew this should be pretty easy to fix.

    One of the strengths of the Hyper-V architecture is that it uses the standard Windows device driver model. This is in stark contrast to the monolithic model used for VMware ESX (and ESXi) and is the reason that I can’t do something similar with ESXi. In fact, adding network drivers to Hyper-V Server (or for that matter Windows Server 2008 running in server core mode, or even for command line administration of a full Windows Server 2008 installation) is pretty straightforward.

    The network card I needed to support is a Marvell Yukon 88E8055 PCI-E Gigabit Ethernet Controller and, even though Windows 7 recognised the hardware and installed the appropriate drivers at installation time, I couldn’t find the drivers in the install.wim file on the DVD. That was no problem – Marvell’s download site had x64 drivers for Windows 7 available and these are also be suitable for Windows Server 2008 R2 and Hyper-V Server 2008 R2. Armed with the appropriate driver (yk62x64.sys v11.10.7.3), I ran pnputil -i -a yk62x64.inf on my Hyper-V Server:

    Microsoft PnP Utility

    Processing inf :            yk62x64.inf
    Successfully installed the driver on a device on the system.
    Driver package added successfully.
    Published name :            oem0.inf

    Total attempted:              1
    Number successfully imported: 1

    (oem0.inf and an associated oem0.pnf file were created in the %windir%\inf\ folder)

    With drivers loaded, I restarted the server (probably not necessary but I wanted to ensure that all services were running) and Hyper-V Server recognised the network card, allowing me to make configuration changes if required.

    To validate the configuration, I ran pnputil -e, to which the response was:

    Microsoft PnP Utility

    Published name :            oem0.inf
    Driver package provider :   Marvell
    Class :                     Network adapters
    Driver date and version :   07/20/2009 11.10.7.3
    Signer name :               Microsoft Windows Hardware Compatibility Publisher

    So, that’s installing network drivers on Hyper-V Server, what about removing them? Here, I was less successful. I tried removing the plug and play package with pnputil -f -d oem0.inf and this removed the package from %windir%\inf but, after a reboot, my network settings persisted. I also used devcon.exe, the command line equivalent to the Windows Device Manager (making sure I had the amd86 version, not i386 or ia64) to successfully remove the PnP package (devcon -f dp_delete oem0.inf) as well as the network interface (devcon remove "PCI\VEN_11AB&DEV_4363") but this still left several copies of yk62x64.sys available in various Windows system folders. Again, after a reboot the network card was re-enabled. Uninstalling network drivers is not a very likely scenario in most cases but, with a bootable flash device potentially roaming between hardware platforms, it would be good to work out how to do this. Of course, my work is based on the release candidate – the RTM version of Hyper-V Server 2008 R2 is yet to be released to web.

  • Running Windows from a USB flash drive

    I’ve titled this post as “Running Windows from a USB flash drive” because the same principles should be equally applicable to all Windows 7-based operating systems (and even Vista if the Windows 7 bootloader is used) but my specific scenario was based on Hyper-V Server 2008 R2.

    I got this working a few hours after Windows 7, Server 2008 and Hyper-V Server 2008 R2 were released to manufacturing but I was still using release candidate code – fingers crossed it still works with the final release!

    Boot from VHD is a fantastic new technology in Windows 7/Server 2008 R2 and derivative operating systems and I’ve often wondered if it’s possible to use it to run Hyper-V from a USB flash drive (just like the “embedded” version of VMware ESXi offered by some OEMs). Well, as it happens it is – and this post describes the steps I had to take to make it work.

    First of all, I needed to create a virtual hard disk and install an operating system onto it. As Keith Combs noted, there are various ways to do this but only one is supported; however there is also a handy video on TechNet which takes you through the steps of creating a VHD and booting from it.

    Using the TechNet video as a guide, I issued the following commands from the command prompt to create my virtual hard disk and apply an image from the Hyper-V Server 2008 R2 release candidate DVD:

    diskpart
    create vdisk file=driveletter:\virtualharddisk.vhd maximum=15000 type=expandable
    select vdisk file=driveletter:\virtualharddisk.vhd
    attach vdisk
    list disk

    (make a note of the disk number.)

    select disk disknumber
    create partition primary
    select partition 1
    active
    format fs=ntfs quick
    assign
    exit

    (note the drive letter for the newly mounted VHD.)

    imagex /info dvddrive:\sources\install.wim

    (identify the correctentry.)

    imagex /apply dvddrive:\sources\install.wim /check imageindex vhddrive:\
    diskpart
    select vdisk file=driveletter:\virtualharddisk.vhd
    detach vdisk
    exit

    At this point, Hyper-V Server had been imaged into my new VHD, which could then be copied to the USB flash drive.

    Next, to load the VHD from the Boot Manager, I edited the boot configuration data (which is what would be required in a standard boot from VHD scenario); however, as I found later, a different set of actions is needed for booting from the USB flash drive.

    bcdedit /copy {current} /d “Hyper-V Server 2008 R2”
    bcdedit

    (make a note of the GUID for the newly created entry.)

    bcdedit /set {guid} device vhd=[usbdrive:]\virtualharddisk.vhd
    bcdedit /set {guid} osdevice vhd=[usbdrive:]\virtualharddisk.vhd
    bcdedit /set {guid} detecthal on
    bcdedit /set {guid} description “Hyper-V Server 2008 R2”

    It’s worth understanding that the use of drive letters (which are transient in nature) does not cause a problem as the BCD Editor (bcdedit.exe) extracts the data about the partition and saves it in the BCD store (i.e. it does not actually save the drive letter).

    After rebooting, Hyper-V Server loaded from my USB flash drive and ran through the out of box experience. At this stage I had Hyper-V Server running off the flash drive but only if my original Windows installation (with the boot manager) was available and, as soon as I removed the hard disk (I wanted to be sure that I was booting off the flash drive with no other dependencies), then the whole thing collapsed in a heap. Thanks to Garry Martin, I checked my BIOS configuration and made sure that USB device boots were enabled (they were not) but I then spent about a day playing around with various BCD configurations (as well as various attempts to fix my BCD with bootrec.exe) until I stumbled on a post from Vineet Sarda (not for the first time, based on the comments that include one from yours truly a few weeks back!) that discusses booting from VHD without a native operating system.

    Following Vineet’s example, I booted my system into Windows 7 (I could have used the Windows Recovery Environment), reformatted the USB flash drive before copying my VHD image back onto it, and issued the following commands:

    diskpart
    select vdisk file=usbdrive:\virtualharddisk.vhd
    attach vdisk
    list volume
    exit

    (note the drive letter for the newly mounted VHD.)

    bcdboot vhddrive:\Windows /s usbdrive: /v

    (i.e. copying the BCD from the operating system image contained within the VHD, to the physical USB drive. Note that, when running on a live system it is important to specify the target drive for the BCD in order to avoid overwriting the live configuration.)

    I then shut down the system, removed the hard disk and booted from the USB flash drive, after which the Windows Boot Manager loaded an operating system from within the VHD.

    Looking at my BCD configuration (shown here for reference), I can see the source of my many hours of confusion – the Boot Manager resides on the physical media (my USB key – which was allocated drive D: in this case) and loads an operating system from the virtual disk that is given another drive letter (in this case C:):

    Windows Boot Manager
    ——————–
    identifier              {bootmgr}
    device                  partition=D:
    description             Windows Boot Manager
    locale                  en-us
    inherit                 {globalsettings}
    default                 {current}
    resumeobject            {27f66313-771a-11de-90bb-00037ab36ab6}
    displayorder            {current}
    toolsdisplayorder       {memdiag}
    timeout                 30

    Windows Boot Loader
    ——————-
    identifier              {current}
    device                  partition=C:
    path                    \windows\system32\winload.exe
    description             Hyper-V Server 2008 R2
    locale                  en-us
    inherit                 {bootloadersettings}
    osdevice                partition=C:
    systemroot              \windows
    resumeobject            {27f66313-771a-11de-90bb-00037ab36ab6}
    nx                      OptOut
    detecthal               Yes

    It took a while to boot (my flash drive was a freebie is not the fastest in the world) but, once loaded into memory, Hyper-V Server seemed to run without any noticeable delay. I figure that, as long as the workload is stored on another disk this should not present any problems and, given suitably fast flash memory, it ought to be possible to improve boot times as well. Running a full Windows operating System (e.g. Windows 7) in this manner is an entirely different matter – very few USB flash drives will be able to stand the constant writes and further testing would be required.

    Now that I have Hyper-V Server running from an inexpensive USB flash drive with no reliance on my PC’s internal hard disk, all I need to do is inject the correct network drivers and I will have a virtualisation solution for colleagues who want to run a full hypervisor on their corporate notebooks, without deviating from the company’s standard client build.

    Additional information

    The following notes/links may provide useful background information:

  • Defining custom presence states for Office Communicator 2007 R2

    Late last year I wrote a blog post about defining custom presence states for Microsoft Office Communicator. Unfortunately, when I updated my client to Office Communicator 2007 R2, the custom presence states stopped appearing.

    One of my colleagues told me that by default, Office Communicator 2007 R2 doesn’t support reading the custom presence information from a local file and that it has to come from a secure web server. I tried that without success (using Windows Live SkyDrive to serve the file as HTTPS) but the fix that eventually worked for me was to add another registry key – a DWORD value for EnableSIPHighSecurity (set to 0), in the same location as the CustomStateURL:

    Windows Registry Editor Version 5.00

    [HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Communicator]
    @=""
    "CustomStateURL"="file:///C:/Users/username/Documents/presence.xml"
    "EnableSIPHighSecurityMode"=dword:00000000

    Whilst I’m revisiting this topic, it’s probably worth highlighting a couple more resources:

  • The Pirate Party takes 7% of the vote in Sweden… meanwhile the European Commission wants Windows users to vote for their browser!

    Last Friday saw the election of representatives to the European Parliament (MEPs) and the results were out today. Whilst this might not have the global impact of President Obama’s election in the United States, for the 375 million of us that live in the 27 EU member states (sorry, sovereign nations), it is pretty significant because, according to the eurosceptics, 75% of our national laws are passed down from Europe.

    Here in the UK, minority parties faired well – partly as a protest against our own incumbent (or should that be incompetent?) Government and partly as a result of the proportional representation system that is used for the European elections. Whilst the UK Green party narrowly missed out on a third seat in South East England (but the far right British National Party gained significant support in the North of England…), it’s the result in Sweden that has perplexed me the most – 7.1% of Swedish voters said “yes” to the Pirate Party – formed in response to copyright laws and the impact of the Pirate Bay filesharing network!

    Now, I’ve been very careful not to express any political views in this post but, with a new Parliament in place, it seems to me that now is the time to sort out the idiots in Europe who are pushing ahead with yet more action against Microsoft for bundling Internet Explorer in Windows (hey guys – you’re too late – the damage was done 10 years ago, the American Courts did very little about it, and Internet Explorer has credible competition in the shape of Firefox today). It seems that Microsoft’s componentisation of Windows and provision for the removal of Internet Explorer 8 is not enough for the European Commission – they want users to vote for their browser of choice when installing Windows!

    Personally, I would like to install Windows quickly with the least possible user interaction. Then, once the base operating system is installed, I’d like to select roles/features (as I do for Windows Server 2008) and install any third party software that I choose – independently of the Windows setup routine. If we have to have something to please the minority browsers (Opera, Chrome, Safari, etc.) then Windows already lets me choose search providers, media players, mail clients, etc. – why not use the same mechanism for browsers? There’s more about this madness over on Mary Jo Foley’s All About Microsoft blog but I really do wish that my taxes (which pay for Neelie Kroes and her organisation to bring about action like this) were being used more effectively…

  • Quick tip for opening Microsoft Office files without installing Office

    From time to time, I find myself working on a server and thinking it would be useful to be able to open a document and, whilst WordPad usually manages to open enough of a Word document for me to get by, sometimes I need to open a spreadsheet – and this is what happened a few minutes ago when I was checking to see if a couple of hotfixes were included in Windows Server 2008 service pack 2.

    Microsoft publishes this information as an Excel spreadsheet, which is all very well if I want to open it on my PC, but doesn’t help if I’m working directly on a server (which is unlikely to have any Office applications installed).

    This is where my Office Live Workspace came in handy. I uploaded the file to my online Documents workspace and, within a few seconds, I was able to preview it (including searching for the relevant hotfix numbers), without having to go and find a computer with Excel installed.

    Microsoft Office Live Workspace opening an Excel spreadsheet

  • Microsoft Virtualization: the R2 wave

    The fourth Microsoft Virtualisation User Group (MVUG) meeting took place last night and Microsoft’s Matt McSpirit presented a session on the R2 wave of virtualisation products. I’ve written previously about some of the things to expect in Windows Server 2008 R2 but Matt’s presentation was specifically related to virtualisation and there are some cool things to look forward to.

    Hyper-V in Windows Server 2008 R2

    At last night’s event, Matt asked the UK User Group what they saw as the main limitations in the original Hyper-V release and the four main ones were:

    • USB device support
    • Dynamic memory management (ballooning)
    • Live Migration
    • 1 VM per storage LUN

    Hyper-V R2 does not address all of these (regardless of feedback, the product group is still unconvinced about the need for USB device support… and dynamic memory was pulled from the beta – it’s unclear whether it will make it back in before release) but live migration is in and Windows finally gets a clustered file system in the 2008 R2 release.

    So, starting out with clustering – a few points to note:

    • For the easiest support path, look for cluster solutions on the Windows Server Catalog that have been validated by Microsoft’s Failover Cluster Configuration Program (FCCP).
    • FCCP solutions are recommended by Microsoft but are not strictly required for support – as long as all the components (i.e. server and SAN) are certified for Windows Server 2008 – a failover clustering validation report will still be required though – FCCP provides another level of confidence.
    • When looking at cluster storage, fibre channel (FC) and iSCSI are the dominant SAN technologies. With 10Gbps Ethernet coming onstream, iSCSI looked ready to race ahead and has the advantage of using standard Ethernet hardware (which is why Dell bought EqualLogic and HP bought LeftHand Networks) but then Fibre Channel over Ethernet came onstream, which is potentially even faster (as outlined in a recent RunAs Radio podcast).

    With a failover cluster, Hyper-V has always been able to offer high availability for unplanned outages – just as VMware do with their HA product (although Windows Server 2008 Enterprise or Datacenter Editions were required – Standard Edition does not include failover clustering).

    For planned outages, quick migration offered the ability to pause a virtual machine and move it to another Hyper-V host but there was one significant downside of this. Because Microsoft didn’t have a clustered file system, each storage LUN could only be owned by one cluster node at a time (a “shared nothing” model). If several VMs were on the same LUN, all of them needed to be managed as a group so that they could be paused, the connectivity failed over, and then restarted, which slowed down transfer times and limited flexibility. The recommendation was for 1 LUN per VM and this doesn’t scale well with tens, hundreds, or thousands of virtual machines although it does offer one advantage as there is no contention for disk access. Third party clustered file system solutions are available for Windows (e.g. Sanbolic Melio FS) but, as Rakesh Malhotra explains on his blog, these products have their limitations too.

    Windows Server 2008 R2 Hyper-V can now provide Live Migration for planned failovers – so Microsoft finally has an alternative to VMware VMotion (at no additional cost). This is made possible because of the new clustered shared volume (CSV) feature with IO fault tolerance (dynamic IO) overcomes the limitations with the shared nothing model and allows up to 256TB per LUN, running on NTFS with no need for third party products. The VM is still stored on a shared storage volume and at the time of failover, memory is scanned for dirty pages whilst still running on the source cluster node. Using an iterative process of scanning memory for dirty pages and transferring them to the target node, the memory contents are transferred (over a dedicated network link) until there are so few that the last few pages may be sent and control passed to the target node in fraction of a second with no discernible downtime (including ARP table updates to maintain network connectivity).

    Allowing multiple cluster nodes to access a shared LUN is as simple as marking the LUN as a CSV in the Failover Clustering MMC snap-in. Each node has a consistent namespace for LUNS so as many VMs as required my be stored on a CSV as need (although all nodes must use the same letter for the system drive – e.g. C:). Each CSV appears as an NTFS mount point, e.g. C:\ClusterStorage\Volume1
    and even though the volume is only mounted on one node, distributed file access is co-ordinated through another node so that the VM can perform direct IO. Dynamic IO ensures that, if the SAN (or Ethernet) connection fails then IO is re-routed accordingly and if the owning node fails then volume ownership is redirected accordingly. CSV is based on two assumptions (that data read/write requests far outnumber metadata access/modification requests; and that concurrent multi-node cached access to files is not needed for files such as VHDs) and is optimised for Hyper-V.

    At a technical level, CSVs:

    • Are implemented as a file system mini-filter driver, pinning files to prevent block allocation movement and tracking the logical-to-physical mapping information on a per-file basis, using this to perform direct reads/writes.
    • Enable all nodes to perform high performance direct reads/writes to all clustered storage and read/write IO performance to a volume is the same from any node.
    • Use SMB v2 connections for all namespace and file metadata operations (e.g. to create, open, delete or extend a file).
    • Need:
      • No special hardware requirements.
      • No special application requirements.
      • No file type restrictions.
      • No directory structure or depth limitations.
      • No special agents or additional installations.
      • No proprietary file system (using the well established NTFS).

    Live migration and clustered storage are major improvements but other new features for Hyper-V R2 include:

    • 32 logical processor (core) support, up from 16 at RTM and 24 with a hotfix (to support 6-core CPUs) so that Hyper-V will now support up to 4 8-core CPUs (and I would expect this to be increased as multi-core CPUs continue to develop).
    • Core parking to allow more intelligent use of processor cores – putting them into a low power suspend state if the workload allows (configurable via group policy).
    • The ability to hot add/remove storage so that additional VHDs or pass through disks may be assigned to to running VMs if the guest OS supports supports the Hyper-V SCSI controller (which should cover most recent operating systems but not Windows XP 32-bit or 2000).
    • Second Level Address Translation (SLAT) to make use of new virtualisation technologies from Intel (Intel VT extended page tables) and AMD (AMD-V nested paging) – more details on these technologies can be found in Johan De Gelas’s hardware virtualisation article at AnandTech.
    • Boot from VHD – allowing virtual hard disks to be deployed to virtual or or physical machines.
    • Network improvements (jumbo frames to allow larger Ethernet frames and TCP offload for on-NIC TCP/IP processing).

    Hyper-V Server

    So that’s covered the Hyper-V role in Windows Server 2008 R2 but what about its baby brother – Hyper-V Server 2008 R2? The good news is that Hyper-V Server 2008 R2 will have the same capabilities as Hyper-V in Windows Server 2008 R2 Enterprise Edition (previously it was based on Standard Edition) to allow access to up to 1TB of memory, 32 logical cores, hot addition/removal of storage, and failover clustering (with clustered shared volumes and live migration). It’s also free, and requires no dedicated management product although it does need to be managed using the RSAT tools for Windows Server 2008 R2 of Windows 7 (Microsoft’s advice is never to manage an uplevel operating system from a downlevel client).

    With all that for free, why would you buy Windows Server 2008 R2 as a virtualisation host? The answer is that Hyper-V Server does not include licenses for guest operating systems as Windows Server 2008 Standard, Enterprise and Datacenter Editions do; it is intended for running non-Windows workloads in a heterogeneous datacentre standardised on Microsoft virtualisation technologies.

    Management

    The final piece of the puzzle is management:

    There are a couple of caveats to note: the SCVMM 2008 R2 features mentioned are in the beta – more can be expected at final release; and, based on previous experience when Hyper-V RTMed, there may be some incompatibilities between the beta of SCVMM and the release candidate of Windows Server Hyper-V R2 (expected to ship soon).

    SCVMM 2008 R2 is not a free upgrade – but most customers will have purchased it as part of the Server Management Suite Enterprise (SMSE) and so will benefit from the two years of software assurance included within the SMSE pricing model.

    Wrap-up

    That’s about it for the R2 wave of Microsoft Virtualization – for the datacentre at least – but there’s a lot of improvements in the upcoming release. Sure, there are things that are missing (memory ballooning may not a good idea for server consolidation but it will be needed for any kind of scalability with VDI – and using RDP as a workaround for USB device support doesn’t always cut it) and I’m sure there will be a lot of noise about how VMware can do more with vSphere but, as I’ve said previously, VMware costs more too – and I’d rather have most of the functionality at a much lower price point (unless one or more of those extra features will make a significant difference to the business case). Of course there are other factors too – like maturity in the market – but Hyper-V is not far off its first anniversary and, other than a couple of networking issues on guests (which were fixed) I’ve not heard anyone complaining about it.

    I’ll write more about Windows 7 and Windows Server 2008 R2 virtualisation options (i.e. client and server) as soon as I can but, based on a page which briefly appeared on the Microsoft website, the release candidate for is expected to ship next month and, after reading Paul Thurrott’s post about a forthcoming Windows 7 announcement, I have a theory (and that’s all it is right now) as to what a couple of the Windows 7 surprises may be…

  • Interact 2009

    Interact 2009I spent yesterday at Microsoft’s Interact 2009 event, which was a fantastic opportunity to meet with representatives from the Exchange Server and Office Communications Server groups at Microsoft as well as to network with MVPs, key customers and other people that Microsoft considers influential in the Unified Communications (UC) space.Delegates network at Interact 2009 (UK event) Through 7 hours of workshops, a variety of topics were covered (some live, some via video links) providing feedback to Microsoft on product direction as well as receiving guidance on implement the technologies.

    Yours truly at the at Interact 2009 (UK event)Those who know me of old (long before the days of blogging) will remember the youthful consultant who used to know a fair amount about Active Directory and Exchange Server. These days I’m more of a generalist (with less hair, slowly turning grey) but I still enjoy going back to my messaging roots and Interact allowed me to bring myself up to speed around the upcoming release of Exchange Server and the current release of Office Communications Server (OCS).

    Today, is the day when Microsoft will officially announce Exchange Server 2010 (formerly known just by its version number – Exchange 14), along with general availability of the beta and, time-permitting, I hope to write a few posts over the coming weeks with a general UC (Exchange and OCS) focus, starting out with an overview of the new features in Exchange Server 2010.

    PubWorld at Interact 2009 (UK event)Finally, for this post, I thought I’d share some pictures from yesterday evening’s event in Reading (which, along with the other pictures in this post were supplied by Microsoft UK courtesy of Eileen Brown). I don’t know what was planned for Redmond and Boston but, over here, one of the meeting rooms in building 3PubWorld at Interact 2009 (UK event) on the Microsoft UK Campus was converted to a “traditional English pub”. We had a bar serving warm beer (in the form of bottles of London Pride), which caused some confusion for at least one senior ‘softie from “Corp” (there was chilled lager available too, as well as wine and a selection of soft drinks!), as well as a simulated fireplace, a darts board, various items of pub paraphernalia, picnic tables on a “terrace” outside and also some modern accompaniments – such as Xbox 360 kiosks, Air Hockey and Table Football – with a 1950’s jukebox thrown in for good measure!

  • More on integrating an Apple iPhone 3G with Audi’s telephony and audio systems

    A few days ago, it was my birthday. Whilst 37 is not a particularly significant age to celebrate (I prefer to think of it as the 16th anniversary of my 21st birthday), I did get a little present at the start of the month (hopefully it wasn’t an April fool’s joke) when my new company car was delivered. Bye bye Saab (I liked you at first but you soon showed yourself to be a Vauxhall Vectra in disguise… with aftersales service to match…) – this time I’ve gone down the German route and plumped for an Audi A4 Avant S-Line. I have to say that, even though it’s still early days, this could shape up to be one of the best cars I’ve ever driven (especially with the extra toys I’ve added to the spec) – mind you, I’ve always liked German cars and have bought a few Volkswagens over the years.

    Don’t worry – I’m not going to start writing car reviews – but I did write something a few months ago about integrating an Apple iPhone 3G with Audi’s telephony and audio systems and I wanted to write a follow-up, now that I’ve had some opportunity to spend a bit more time with a suitably equipped car.

    First up, telephony integration. This is simple, as long as the car has the Mobile Telephone Preparation Low option. No cradle is required as the mobile phone preparation provides Bluetooth connectivity. As I wrote in my earlier post, just pair the iPhone with the car using the code 1234 within 30 seconds of opening the car and inserting the key (i.e. activating the car’s systems). The handsfree device will be something like Audi UHV 0000, although the number will vary and, once paired, calls will ring the iPhone and the car simultaneously. The Bluetooth logo and signal strength are displayed on the Audi Multi Media Interface (MMI) display:

    Audi telephone connection (MMI)Audi telephone connection (Driver Display)

    My iPhone 3G is running software version 2.2.1 and I seem to have no difficulties accessing the phone’s number lists and directory (although voice activation/control is not availablethe phonebook that this refers to is the voice tag system, not the directory accessed on the phone over Bluetooth):

    Audi accessing iPhone phonebook (Driver Display)

    One thing to note – the car can only act as a handsfree for one phone at a time (although it can pair with up to 4 devices). When I’m “on the clock”, I turn off the Bluetooth on my iPhone so that the Nokia 6021 I use for work can access the car systems.

    If you’re still having trouble, Audi provides a Bluetooth FAQ as well as a PDF with details of supported handsets (which is now over a year old and so does not include the iPhone 3G, although it appears to work).

    Because Apple has not provided Advanced Audio Distribution Profile (A2DP) functionality on the current iPhone 3G or the first-generation iPhone, to integrate my iPhone with the music system so that I can access the phone’s playlists, etc., I needed to specify the Audi Music Interface option and buy an AMI iPod cable for £29. I think there is a minimum requirement on the sound system for this too (mine is the Audi Concert system).

    The AMI is in the glovebox (close enough for a Bluetooth signal for the phone to carry on working) and the cable will charge my phone at the same time. The only problem is that the iPhone complains that the AMI is not a supported accessory and wants to go into airplane mode. If I tell it not to, the AMI will usually find the iPhone and let me navigate the playlists, etc. but I have found it seems to work better if I put start the iPod application on the iPhone before connecting:

    This accessory is not made to work with iPhoneAccessory connected
    Audi AMI access to iPhone playlists (MMI)Audi AMI access to iPhone playlists (Driver Display)

    The good news is that the forthcoming iPhone 3.0 software is expected to include A2DP (and it should work with the iPhone 3G – but not the original iPhone), after which I should be able to stop using the cable (although I may just leave an old iPod semi-permanently connected to the car at that point).

    [Update 12 December 2011: Even though iOS is now at v5.0.1, I’ve been unable to use A2DP. This worked in another Audi I drove recently so I assume the car needs a software update too.  This information from an AudiForums thread might be useful too:

    “First, the difference between AMI and MMI, which threw me off, so hopefully someone else will find this helpful. This is for my 2011 A4… I don’t know what other years/models it may apply to.

    • MMI (Multi-Media Interface) is just the screen/knob system that controls the radio/sat/cd/settings/etc.
    • AMI (Audi Music Interface) is the link between the MMI system and your iPod or other MP3 device. It is a port in the glove box that you can attach different cables to for different music devices.”]
  • Resuming stuck downloads in the Microsoft File Transfer Manager

    Microsoft File Transfer ManagerThe chances are that if you’ve been reading this blog then, by now, you’ve had a go at downloading the Windows 7 beta. If, like me, you used Microsoft Connect to get your copy, then you’ve been using the Microsoft File Transfer Manager (FTM) to download the software and, in my experience, sometimes this gets stuck. In my case, after downloading 8GB of software (I have multiple build variants to test – and now I’m waiting to see if my ISP invokes it’s fair use policy…), it stuck with 30MB to go.

    It might be useful to note that when this happens there is a workaround – sometimes just suspending and resuming the download will do the trick – other times the suspend doesn’t seem to work either. In that case, exit the File Transfer Manager, then attempt to download something else (starting a new instance of the FTM). If you want to keep the new download then let it run it’s course but, if not, you can cancel it (you only needed to download something to access a new instance of FTM) – either way you should be able to resume the stuck download.