Running the Dibbler DHCPv6 Client as a Service

In a previous post, I explained how to install and configure the Dibbler DHCPv6 client, which is necessary for using IPv6 at certain providers such as online.net. Perplexingly, I could only get the client to run interactively and not as a service. This meant that I would need to make sure that I ran the client every time the server started, and that I needed to restart the client if it ever crashed and exited. Less than ideal.

Running dibbler-client.exe install will install a system service, but as mentioned in my previous post when running dibbler-client.exe start to start the service, it errors with “Service DHCPv6Client startup failed” with no further information on the console or in the logs.

Delving in to the System log using the Windows Event Viewer however reveals two very interesting events attributed to the Service Control Manager;

The Microsoft IPv6 Protocol Driver service failed to start due to the following error: 
The system cannot find the file specified.

The Dibbler - a DHCPv6 client service depends on the Microsoft IPv6 Protocol Driver service which failed to start because of the following error: 
The system cannot find the file specified.

So in short, the Dibbler client service can’t start because it depends on the Microsoft IPv6 Protocol Driver, which has also failed to start. A little Googling reveals this might be caused by running Hyper-V (which I am), but with no solid confirmation. There is also no information as to why the Microsoft IPv6 Protocol Driver fails to start. Considering however that the Dibbler client runs fine interactively, this suggests that it isn’t really dependent on the Microsoft IPv6 Protocol Driver. Therefore, if the service dependency is removed, the Dibbler client service should run.

Removing the dependency isn’t too complicated, but does require editing the registry. Open the Registry Editor by running regedit and browse to HKLM\SYSTEM\CurrentControlSet\Services\DHCPv6Client. Edit the DependOnService key so that it only contains “winmgmt” and does not include “tcpip6″.

Close down the Registry Editor and restart your system. When it comes back up again, check the status of the Dibber client in the service manager, the status should show as “Running”. If it isn’t, check the System Event Log again for any errors. You can also check the dibber-client.log file in Dibber’s installation directory for any further errors.

Installing Newer Kernels in Ubuntu

As part of the ongoing TV streaming project i’m working on, I tried a new DVB-T tuner (the August DVB-T210). Whilst it is supported by the Linux TV project, support is only available in kernel version 3.14 and newer.

At the time of writing, Kernel 3.14 is so new that it only received a stable release a week ago. Naturally, no Linux distribution is providing this kernel as a default option yet as it is so new.

But what if you’re dependent on a new bit of hardware support or a new feature in a newer kernel? In the past, you would have needed  to download the new source and compile the new kernel from scratch – not an easy process. Luckily though, Ubuntu provides pre-compiled, packaged kernels which can be easily installed! These are known as mainline kernels, instead of the default stable kernel which is part of the current version of Ubuntu.

These kernels are located at http://kernel.ubuntu.com/~kernel-ppa/mainline/. Then, find the kernel version you wish to install, in this case v3.14. The word after the version denotes which version of Ubuntu this kernel is meant for – at the moment 3.14 is only available for Trusty (Ubuntu 14.04). If you’re not running this version of Ubuntu, you can try installing the kernel, but things will likely break!

Inside the folder for the version you wish to install, you’ll find a multitude of files. First, decide on the variant of kernel you want – in most cases this will be generic. At this point, you should also know what platform you’re running on, most systems now are 64-bit, so you’ll likely want the amd64 platform.

Now, download the following files in to an empty directory;

  • linux-headers-version-variant-version-platform.deb
  • linux-headers-version-version-all.deb
  • linux-image-version-variant-version-platform.deb

For example, if I wanted the 3.14 generic 64-bit kernel, I would have downloaded;

Once downloaded, we need to install the new kernel packages. To do this, use the dpkg -i command. If you’ve downloaded the packages to an empty directory, you can simply run dpkg -i * to install all of them, otherwise you’ll need to specify each file after the dpkg -i command. Installing packages requires root privileges, so prefix the dpkg command with sudo if you’re not already root.

dpkg will now install the kernel for you and update your GRUB configuration so that next time you reboot, the new kernel is loaded instead of your current one. Once the installation is complete, just issue a reboot command and wait for your computer to reboot. While your computer is rebooting, pay careful attention to the GRUB screen, it should show your new kernel in the list of available boot options and it should also be the default.

Once the reboot is completed, check that the new kernel is loaded by running uname -a. This will output the current kernel version. For example, after installing the above packages, uname -a outputs;

Linux hostname 3.14.0-031400-generic #201403310035 SMP Mon Mar 31 04:36:23 UTC 2014 x86_64 x86_64 x86_64 GNU/Linux

This is all the confirmation we need that the kernel installation was successful. If the output does not match the kernel version, variant and platform you installed before, then the installation likely went wrong or another kernel version has taken precedence.

Of course, running a non-stable kernel does come with inherent risks. You’re now running a kernel which hasn’t been certified against the packages for that version of Ubuntu and you’re also now responsible for updating the kernel to receive bug and security fixes. Switching to the mainline kernel isn’t a decision that should be taken lightly and you should only do it if there’s a specific feature you need in a newer kernel.

Resetting the IPMI Password on the ASRock E3C224D2I

Note: This will likely work for other similar ASRock boards too (e.g. E3C226D2I), however as I’ve only got the E3C224D2I I cannot verify if it does or not. Due to the method, it may even work on other boards too. Proceed at your own risk!

I recently bought the ASRock E3C224D2I motherboard for a new Home NAS build. It has an integrated IPMI controller, so regardless of the state of the system it is possible to connect over the network to view the video output and use the keyboard and mouse. You can even mount images and directories from your computer making it possible to carry out an installation fully remotely. Perfect for troubleshooting when things go really wrong!

Unfortunately, after experimenting with the firmware upgrade option on the IPMI controller I locked myself out. No passwords would work, not the default admin/admin login nor admin and the password I had set before. I couldn’t find any way to reset the password either – the IPMI’s password reset interface required a working SMTP server to be configured, which I hadn’t done. Additionally, there seemed to be no option in the BIOS to reset the password. I really didn’t want to lose access to the IPMI as it’s one of the main reasons I chose this board.

After much Googling, I came across a forum post where someone had the same problem. A reply from an ASRock Rack representative said to contact them for a tool that would reset the password. I did so, but while waiting I thought it was worth trying another mechanism.

Supermicro, another motherboard vendor that often features IPMI on their motherboards, provides a download for ipmicfg. This DOS tool is intended for performing operations on the built-in IPMI chip without having to go through the IPMI interface – perfect for password resets. Despite being from another vendor, I thought I’d give it a go, and what do you know, it works!

So, to reset your password using ipmicfg;

  1. Prepare a bootable DOS USB stick via your preferred means. I used rmprepusb to create a bootable FreeDOS USB stick.
  2. Download and place the ipmicfg files on to your newly created USB stick.
  3. Boot from your USB stick on the machine whose IPMI password you are trying to reset.
  4. Run ipmicfg -m to verify communication with the IPMI chip is working. If the command succeeds, you should see the IP address and MAC address of the IPMI displayed.
  5. Run ipmicfg -user list. This will display a list of users that can log in to the IPMI. Note down the User ID for the account whose password you wish to reset.
  6. Run ipmicfg -user setpw userid password, replacing userid with the User ID you found with the previous command and password with the new password you wish to set.
  7. Done! Try logging in to the IPMI again with your new passwords. If things still don’t work, try running ipmicfg -fd to reset the IPMI to its factory defaults.

As to why this worked with a non-Supermicro board, I theorise that it’s because the IPMI chip on the ASRock board complies the IPMI standards. Therefore, any tool which is compliant to the standards, such as the Supermicro ipmicfg tool, should be able to interact with the chip.

It’s also worth noting that ASRock Rack did get back to me about a day later with a tool to reset the password, but I didn’t use it having found a way to do it with ipmicfg. If you don’t feel like trying out a method using another vendor’s tool, contact them and wait for their reply.

Good luck!

No Text Displayed on Windows 7

I often end up doing various bits of technical support for my relatives. Recently however, I came across an interesting issue – a relative said that their Windows 7 laptop was displaying no text whatsoever – no text on the desktop icons, no text in most applications and if you clicked the start button, nothing would appear.

Connecting remotely, I confirmed the issue. Of course, diagnosing the issue was hampered by the fact that I couldn’t read any event log messages or such. Anything that used the System Default font was simply not rendered.

Reading around, this is sometimes caused by a corrupt font, and is easily fixable. Booting into Safe Mode, I was at least able to get a working command prompt up and ran sfc /scannow. This command checks the integrity of all core Windows files and repairs any that are corrupt or missing.

After scanning, the command confirmed that some files were found to be corrupt and had been successfully repaired. After rebooting back into the normal Windows environment, all text was rendered as before. Problem solved!

The sfc /scannow command does generate a log at C:\Windows\Logs\CBS\CBS.log which I took for further investigation.  Reviewing later, this log did confirm that several font related files such as segoeui.ttf, seguisym.ttf and segoeuib.ttf did not match known-good ones and were replaced.

So if you ever come across this problem yourself;

  1. Reboot in to Safe Mode.
  2. Open a Command Prompt and run the command sfc /scannow.
  3. Wait for the command to complete – depending on the speed of your system drive this could take tens of minutes.
  4. Review the output of the command to see if any files were found to be corrupt or missing and replaced.
  5. Reboot.

Titanium Backup: None on chosen platform

It’s always a horrifying experience to find that the backups you so carefully took previously now don’t work. Unfortunately, i’ve just run in to this problem.

After sending my phone back for repair, I attempted to restore the backups I took beforehand using Titanium Backup. While it recognised the backups, every one said “1 backup. None on chosen platform”. Unfortunately, a quick Google only turned up a handful of other people who were having the same problem, with no resolution.

After a bit of fiddling however, I came across a simple resolution. On the Backup/Restore tab, tap “Click to edit filters” and then “Filter by platform”. In the Filter by ROM build date section, you’ll probably see two or more values: only one of which is checked. Check all of them, then tap the checkmark to accept your new filter. Your backups should now read “1 backup: Latest xx/yy/zzzz 00:00″ and can be restored.

Phew.