Montag, 28. April 2008

Long trip ahead

Image taken from Google Earth
Tomorrow will be a hard day. I have to leave at 6 a.m. as I have an appointment at 2 p.m. in the bodensee region, an interview for my next job. Then I'll return to the north, hopefully I'll be back home before midnight. Wish me luck!

Sonntag, 27. April 2008

Yet another Xvid-build with a bugfix

As I blogged earlier, there was an issue with motion vectors (MVs), an array was too small so a wrong MV could have been chosen in some cases. Since those MVs are costly bitrate-wise, it should have happened very seldom.

I spoke to sysKin and he verified that this issue should be fixed, he also recommended using CVS head/main instead of "old" 1.1.3 nowerdays. Anyhow, I updated Xvid-1.1.3 and Xvid-1.1.3-VAQ. You can find the builds over on my homepage.

On a sidenote, today we made already over half an hour of sport, each one, my GF and I. If this keeps going on, that WiiFit-game would be a very nice investment! ;-)

Samstag, 26. April 2008


Yesterday was the release of WiiFit here in germany. I had to fetch that game as my GF really wanted it for some weeks now as she saw the promotion videos on the net.

It's really fun to pretend to make sport that way! But somehow I didn't really understand that "You have to play WiiFit now!" after she got up this morning...

Hmpf. Ok, I'll continue getting fit now. :-)

Freitag, 25. April 2008

Another Xvid-Bugfix in testing

Plugh pointed out another minor bug in Xvid-1.1.3 affecting the choice of motion vectors (MVs). In some cases it is possible that Xvid choses a MV that is wrong. This should happen only in very high bitrate encodes, possibly only if quantizer 1 is allowed, as those MVs would be costing much bitrate according to syskin. A discussion of the problem was taking place at Doom9's forum.

I built a core dll and sent it to plugh so he can test if it works correctly. If it does I'll create a new installer and make it available on my website

By the way, it seems plenty of people still link to my old domain. I'd like to ask everyone out there to change the stolen domain koepi dot org in links to Otherwise you are supporting that domain thief (who copied all the old text content of the site and puts it on the stolen domain pretending to be me to increase his hits). He claims to sit in Istanbul/Turkey; maybe I can pull some strings there.

If anyone at google could simply replace the .org-domain with the .info in the databases it would be helping, too. I reported the old domain as spam, let's see if google will react!

Ok, off to work...


Donnerstag, 24. April 2008

DVB-T on the EeePC

Another thing not working out of the box was a USB-DVB-T-Stick I had in my hardware grab-bag. Popular, cheap DVB-T-Sticks like Terratecs Cinergy Hybrid XS or Pinnacles PCTV DVB-T Stick Solo (72e) are based on the EM2880 chipset. You can use them with a driver in development. It depends on an updated v4l-stack. While compiling the EM2880 driver is nearly straight forward using the guides on that website, the new v4l-stack will break the webcam. The module won't load anymore due to mismatching symbols.

The Pinnacle Stick was really cheap at the german Saturn markets (22 Euros) so I think it is widespread in the meantime. It won't work with the current EM2880-driver. A solution would be a patched EM2880-driver which you can download here. It also includes the necessary firmware which you need to copy to the firmware-directory after extracting the archive: sudo cp firmware/dvb-usb-dib0700-1.10.fw /lib/firmware/.

For making the webcam work again e.g. for Skype you have to fetch the sources of the linux UVC driver and compile them yourself, too. That won't help as there are still mismatching symbols. The solution: you have to copy the file Module.symvers from the EM2880-sources after compiling that driver over to the UVC directory. The driver will compile with the correct symbols and both devices work.

Because I didn't want to install KDE-libraries like Qt on the tiny SSD, I was looking for a TV-Software which is easy to use, allows for usual TV watching and even to record TV. The solution I found is Me-TV. You can install it if you add the repositories

deb gutsy main
deb-src gutsy main

with apt-get or synaptic. Now that I got the stick to work I'll make it a present for a friend.

Samstag, 19. April 2008

Putting Windows XP on a SD-Card

I wanted to test Windows XP on my EeePC but didn't want to loose my fine-tuned Ubuntu on the internal SSD. My first try following some guides on the net wasn't successful, Windows always wanted to modify data on the SSD. So I had to mix up things I found on the net to finally get it to work. I have Windows XP booting of an SD-Card in the internal card reader now and had not to destroy any data that was already on my EeePC. The information about how I got it to work might be useful for others as well so I decided to write down what I did.

What do you need for that?

* A Windows XP installation CD and a valid key, of course.
* An external USB-Drive (can be a USB-Stick, but a USB-HDD was my "sure bet")
* For making the USB-Drive bootable you can use the HP-tool which is included in the BIOS-updater-archive from Anarethos
* Microsofts CAB-SDK
* The Hitachi Microdrove driver for pretending that the SD-Card in the Card Reader is a harddisk / fixed drive
* Drivers from the EeePC-DVD
* You may need this hotfix for support of SDHC cards with more than 4 GB capacity from Microsoft
* For changing the display resolution to for example 1000 x 600 pixels (scaled, but quite readable): AS-Tray Plus

Some of these tools stem from users that I don't know and therefore can't trust. I scanned all the executable files I used from them with Virustotal to make sure they aren't infected with a backdoor or something similar. Of course the files aren't guaranteed to be clean, but as all those virus scanners didn't find anything suspicious it made me feel a little better. Since those archives and tools are updated every so often, you should scan them as well before using them.

First, I created a partition which is a little bit smaller than my SD-Card on the USB-HDD, in my case I used a 3800 MB FAT32-partition. To make the USB-HDD bootable, I used the HPUSBF.EXE from the BIOS-Update-Tool-Archive. The syntax in my case was:

hpusbf.exe <drive-letter of my USB-HDD> -FS:FAT32 -B:<drive letter and full path to the unpacked BIOS-Update-Archive>\Boot -Y -Q

i.e.: hpusbf.exe F: -FS:FAT32 -B:D:\EeeBIOS\Boot -Y -Q

Then I copied the i386-folder from the Windows XP installation CD to my USB-HDD. There I changed the files DOSNET.INF, TXTSETUP.SIF,
USB.IN_, USBPORT.IN_ and USBSTOR.IN_ according to the description in this guide from Ngine (starting at point 4 of the guide) and created the new file USBBOOT.INF. After applying the changes I copied the modified and newly created files into the i386-folder on my USB-HDD. Some people seem to use a tool called XP3eSD which should do that patching automatically, but it didn't work for me. Although I found the correctly modified files in my users temp-directory – you might want to try that if that patching by hand is too much of a hassle for you.

Another hint I found was to put the files boot.ini, NTDETECT.COM and ntldr to root directory of the USB-HDD. The Windows-Installer will accept a drive with those files in the root-directory as installation-target. You can use an empty boot.ini, or copy the file from an existing Windows XP installation. Using this configuration will install Windows XP, but it'll take ages. So I also placed a tool which was useful back in those good old DOS times on the drive as well: smartdrv.exe.

Now you're ready for booting from the USB-HDD and to install Windows XP to it. You have to press the "ESC"-button after powering on the EeePC and get presented a boot-menu where you can choose of which device you want to boot from. Choose the USB-HDD. At the DOS prompt, enter smartdrv. To start the installation, enter i386\winnt.exe. This will start what looks like a usual Windows installation. You have to select where the source files are though and where you want to install Windows XP – both times choose the USB-HDD.

After the installation is finished, you should remove the i386- and the boot-folder. You should also convert the drive to NTFS; I didn't encounter any problems with the journaling capabilities of NTFS. Windows will complain about the missing swapfile. You should disable swapping entirely by choosing "properties" after a right-click on "My Computer". You find the settings on the advanced-tab of the Performance Options, select "virtual memory" there and make it use "no paging file".

At this point you should make a snapshot of the partition as the following changes will destroy the possibility to boot the installation of a USB-Stick or USB-HDD. Also, you can use that image to apply for example the upcoming Service Pack 3 for Windows XP. I booted into linux and made sure the Windows-partition is unmounted and used dd for the backup:

dd if=/dev/sda of=/mount/backup/eeewin-bootsector.iso bs=512 count=1
dd if=/dev/sda1 of=/mount/backup/eeewin-usb-hdd.iso

Then I went fetching a coffee and watched an episode of The Simpsons – creating that image of the partition may take a while. After that, you can boot into Windows again. Now you need that Hitachi Microdrive driver. The download can take a while even if the driver is extremely small. Extract the driver.

Run regedit and go to "HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Enum\USBSTOR\". There should be a subtree called "Disk&Ven_USB2.0&Prod_CardReader_SD0&Rev_0100". Double click the key "Hardware ID" on the right pane and select the first line and copy it. Now open the file cfadisk.inf from directory where you extracted the Hitachi Microdrive driver to. Remove all entries in the section "[cfadisk_device]". Add a new line which starts "%MicroDrive_devdesc% = cfadisk_install," and paste the copied line from the registry in there. Save the file.

Now you have to open the device manager. In the "disk drives" section you should see the SSD as SiliconMotion and the USB2.0 Card Reader. Right-click on the Card-Reader-entry and choose to update the driver. You have to select a manual installation and force the installation of the .inf-File that you just changed. Now the driver gets installed.

If you reboot now, you could run into the problem that Windows won't start from the USB-HDD anymore. So now boot into linux again and copy the Windows partition from USB-HDD to the SD-Card. I used GParted which I installed from the Ubuntu repositories. You can copy the whole partition with that to the SD-Card and after that resize the partition to completely use all space on the card.

The SD-Card might not boot yet. So it's time to copy the boot-sector over to it:

dd if=/mount/backup/eeewin-bootsector.iso of=/dev/sdc

Make sure that the SD-Card really is /dev/sdc. You can do that by checking the system messages with the command dmesg at the console. If you have done all that you can unmount and unplug the USB-HDD and boot from the SD-Card and fine-tune your fresh installation. You might want to run Windows Update for example. After applying all updates you should delete the directory \Windows\SoftwareDistribution\Download. You may remove all those $NtUninstall-folders in \Windows\ as well. That'll save about a whole GB of space on the SD-Card.

Samstag, 12. April 2008

Did it anyways

I added the one-line-patch of plugh to Xvid-1.1.3's encoder.c. That patch is already in CVS but wasn't back-ported to Xvid-1.1.3.

In encoder.c, change

frame->coding_type = B_VOP;
call_plugins(pEnc, pEnc->current, NULL, XVID_PLG_FRAME, NULL, NULL, NULL);


frame->coding_type = B_VOP;
call_plugins(pEnc, frame, NULL, XVID_PLG_FRAME, NULL, NULL, NULL);

The old code seems to have handed over the wrong frame to the plugin-system if the frame was a b-frame. There are two new builds up on my my webpage, the usual Xvid-1.1.3 and the one with the VAQ-patch from Dark Shikari.

Now I have to leave for shopping with my GF for the party we're having today -- celebrating her b-day a little later :-)


Too little time

I was hoping that I'd find the time to make new Xvid-builds with a small bugfix: As plugh pointed out, plugins may not be called correctly when using b-frames. It shouldn't be a big problem though.

Well, but then I had some days off and went to my future wife's place as it was her birthday this week, only armed with my little EeePC. I do have a windows-installation on a SDHC-card but didn't install any compilers, they simply wouldn't fit on that tiny 4GB card. So there's currently no way to use the EeePC for windows-development.

Now I'm home again, but still am busy with other things. My GFs sister wants a laptop, too, after my b-day-gift for my GF was a cheap, but nice HP 6715s. So I'm currently busy setting up another laptop instead of taking the time to add plugh's proposed bugfix and upload new binaries.


Donnerstag, 3. April 2008

VAQ-Build with experimental SMP

Some users over at Doom9's requested a build with the VAQ-patch based on sysKins old SMP-experimental-code. So I also created a new binary based on that code. The code base is over two years old though. Anyhow, I hope the build works!

...have to leave to work now.


Mittwoch, 2. April 2008

Xvid-build with h264's Variable Adaptive Quantization

I found some time to download and apply Dark Shikari's patch which adds the Variable Adaptive Quantization (VAQ) from h264 to Xvid. You can download the build at my website. To make compilation work with Intel compilers I had to move some variable declarations around but I'm quite positive that I didn't break anything.

I didn't test if the code works at all, I just compiled the new build and created a new installer. The installer works at least... You enable the code by activating Adaptive Quantization in the Xvid user interface.

Adaptive quantization varies the quantization within a frame on macroblock level to save more space. In two pass scenarios this can improve the overall quality quite a bit as the saved bitrate can be distributed over the whole encoding in the second pass.

Blog opened

Hello everyone!

I decided to start my own blog as the news items of my webpage didn't seem to be the right place to post about smaller and more personal things. I hope to find some time to post an entry more often than I find the time to create a new Xvid-build.