May 29 2012

Installing Ubuntu 12.04 (Precise Pangolin) on Fujitsu U820, U2010, U2020

Ubuntu 12.04 has been released almost a month ago and I thought I revive my semi-benched U2010 to see how the hardware support has improved in this new release of Ubuntu.

First off, if you are installing Ubuntu 12.04 and are getting the dreaded black screen issue, follow the Ubuntu Wiki here. Make sure to also install the fix to get suspend/sleep and hibernate working with the new psb_gfx driver.
After the installation you will have to make some minor adjustments to get everything working on the Fujitsu U820/U2010:

/etc/modprobe.d/blacklist.conf

blacklist poulsbo
blacklist fujitsu_laptop

The first line disables the stub driver, the second line makes sure you can actually use the backlight keys (fujitsu_laptop conflicts with the psb_gfx driver).
The enable_msi fix in /etc/modprobe.d/alsa-base.conf is no longer required. The sound will work just fine without it.

To get the microphone working I had to add the following line in /etc/modprobe.d/alsa-base.conf:

options snd-hda-intel model=laptop-amic probe_mask=1

The headphone jack sensing/detection is flacky in this new release. Switching between the headphone jack and the internal speaker will only work after the audio card goes into power-saving mode, ie. a few seconds after the last audio output closed.

/etc/default/grub:

GRUB_CMDLINE_LINUX_DEFAULT="quiet console=tty1 acpi_osi=Linux acpi_backlight=vendor nmi_watchdog=0"

quiet console=tty1 is the recommended workaround for the black screen issue of the new psb_gfx driver in 12.04.
acpi_osi=Linux acpi_backlight=vendor is required to get the backlight controls working.
nmi_watchdog=0 disables the NMI watchdog responsible for detecting a hung system and might issue a reboot. According to Intel PowerTOP this option saves power by producing less wake-ups.

Finally update the bootloader via:

sudo update-grub

2. Installing the Fujitsu Buttons driver (fjbtndrv)

In order to get the screen buttons working we will need to compile and install the latest version of fjbtndrv.
The most current version as of this writing is 2.3.2. Please make sure you download the latest version here.

sudo apt-get install libxrandr-dev libxtst-dev libxi-dev libhal-dev
tar xvzf fjbtndrv-2.3.2.tar.gz
cd fjbtndrv-2.3.2
./configure
make
sudo make install

3. Calibrating the display

The touch screen has been supported for several kernel and Ubuntu versions already. The big problem always was the missing calibration tool. Luckily a calibration is now available in form of xinput-calibrator. At last special drivers are no longer required.

sudo apt-get install xinput-calibrator
sudo mkdir -p /etc/X11/xorg.conf.d
xinput_calibrator

Calibrate the display and save the output to /etc/X11/xorg.conf.d/99-calibration.conf
Here is my calibration config:

Section "InputClass"
        Identifier      "calibration"
        MatchProduct    "Fujitsu Component USB Touch Panel"
        Option  "Calibration"   "58 3877 249 3830"
EndSection

Known problems:

  • Headphone jack detection does not work as expected
  • System freezes when idling, but wakes up again once an interrupt is triggered (e.g. keyboard, mouse, touchscreen etc.). This mostly happens when I am simultaneously using a Bluetooth mouse or a Bluetooth Dialup connection. I have not been able to pin-point or fix the issue yet.
  • Screen rotation is not working with the psb_gfx driver
  • Note to self: Newer versions of the psb_gfx driver are called gma500_gfx

Dec 30 2011

QuasarMX, Qt, QML and the experiments

Some of you following my micro-blogging on Twitter might already know about it: In the last few months I have been busy developing a new application. What initially just started out as a re-write of the user interface of Quasar Media Player has turned into a completely new application called QuasarMX. It is based on the very core of Quasar Media Player but stripped of all the legacy and third-party code. The completely new UI is based on Qt Quick / QML, a new technology which simplicity and elegance I fell in love with over the past year. For me QuasarMX also marks the start of two experiments:

1. How many platforms and operating systems can I port my app to?
2. Is there any commercial viability at all in publishing the software to various app stores (Nokia Ovi store, Android Market etc.) ?

The first experiment is important to me. Now that Nokia put the Qt project into open governance, the Qt community has the unique opportunity to extend primary platform support to Android, iOS and possibly even Windows Phone 7, thus extending the possible market cap and audience for mobile apps based on Qt dramatically. This experiment is largely about experiencing first hand what changes are required to get my application running on these platforms and as a matter of fact what needs to be done in projects like Necessitas (Qt on Android) to make that goal happen.

As for the second experiment I am actually just interested in getting to know the mechanics of the various app stores. I am pretty confident that there is little to no money to be made from yet another music player app. Yet, it is still interesting to see what happens, what works and what not, especially in regards to future apps.

In July Nokia accepted my application and invited me into the Qt Ambassador program. As part of this program Nokia loaned a N950 developer device to me, which I extensively used to develop and test the Harmattan UI for QuasarMX. The new user interface is very much inspired by the simplicity of the MeeGo Harmattan Swipe UI.

As of yesterday the open Beta 1 of QuasarMX is available for the Nokia N9 and N950. Releases for other platforms will follow shortly.


Jun 25 2011

FHEM module for ELV ESA1000 (WZ/Z/GAS) series of devices

FHEM, the amazing home-automation server software, already has support for several sensors, meters and switches produced by ELV. In October 2010 I bought two meters, ESA1000WZ and ESA1000GAS for my house in the hope that FHEM would support them. Unfortunately it did not (at the time). I quickly found some hints that somebody, namely Gerd K., was working on adding support. So I contacted him and a day later received his module for testing. In the meantime eager in anticipation I was hacking away, duplicating the existing EM1000 extension and customizing it to read the raw strings coming from my Busware.de CUL 868 MHz USB adapter. While I got the power meter’s values (ESA1000WZ) figured out pretty quickly, it was a bit more involving to get correct readings from the gas meter (ESA1000GAS). Unfortunately Gerd’s code did not include support for the gas meter, so I emailed him my changes, but sadly never received feedback.
So today I am releasing my code on a works-for-me basis:

Download

UPDATE:Patch for FHEM 5.3 Version: Feb 10th 2013 for FHEM 5.3
Package for FHEM 5.0 Version: Oct 25th 2010 for FHEM 5.0

  • Supports ESA1000WZ power meter (infrared version, possibly others as well)
  • Supports ESA1000Z and ESA1000GAS gas meters (infrared version and version using impulse transducer for the Elster-Kromschroeder BK-G4)
  • Features proper graph files to plot current and cumulated day/month consumption

Photos / Screenshots

Installation

If you are using FHEM 5.3, please download the tar-ball version (or SVN version for that matter) and directly apply the patch cul_esa-for-fhem-5.3.patch.

UPDATE 2: Here is a completely patched version based on the tar-ball version of FHEM 5.3: fhem-5.3-cul_esa.tar.gz Version: Feb 10th 2013

If you are using FHEM 5.0:
Copy 19_CUL_ESA.pm and all .gplot files to your FHEM directories.
Sadly adding autocreate support and extending the CUL module to understand the raw message strings requires patching. Check cul_esa-for-fhem-5.0.patch to patch the files. This was diffed against the Debian package of FHEM 5.0. The very same version of FHEM as tar.gz has some differences in the sourcecode and some files missing. I contacted the author of FHEM about this issue but he has not updated the packages yet. So if you run into issues here it is probably due to these differences.

UPDATE 1: Here is a completely patched version based on the Debian package of FHEM 5.0: fhem-5.0-cul_esa.tar.gz Version: Oct 25th 2010

Here are some notes in German I made while developing the module, mostly concerning the different behavior of the ESA1000GAS compared to the ESA1000WZ:

Der ESA1000GAS mit dem ESA1000Z-Messgerät verhält sich leider anders als das ESA1000WZ, sodaß ich wieder die Korrektur-Faktoren einbinden mußte.
Ich konnte nicht herausfinden, wozu der übermittelte Tick beim ESA1000Z dient. Zwar ändert sich dieser mit geänderter Zählerkonstante, allerdings ergibt der Wert im Zusammenhang mit den von der Einheit übermittelten Werten keinen Sinn, sodaß ich hier direkt mit der Zählerkonstante multipliziere, um die Kubikmeter zu erhalten, und dann zusätzlich noch mit dem Umrechnungsfaktor (bei der EWE ergibt sich dieser aus der Zustandszahl * Brennwert Hs) multipliziere, um die Kilowattstunden aus der Gasmenge zu erhalten.
Leider ändern sich damit die Parameter bei der Definition:

Stromzähler:
define CUL_ESA_286 CUL_ESA 1925 286 1 1 23.086
also:
corr1 = corr2 = 1 (und damit wirkungslos)
CostPerUnit = 23.086 Cent/kWh

Gaszähler:
define CUL_ESA_798 CUL_ESA 1429 798 0.001 9.5154 4.5339
also:
corr1 = 0.001
corr2 = 9.5154 kWh/m3
CostPerUnit = 4.5339 Cent/kWh

Ich habe ebenfalls noch einen Durchschnittswert in Kilowatt implementiert, sodaß man die Durchschnittleistung einigermaßen sinnvoll in einem Diagramm darstellen kann. Hier gab es allerdings bei meinem Drehstromzähler Probleme mit Unterabtastung, weil sich die Drehscheibe bei geringem Verbrauch zu langsam dreht, sodaß das Meßgerät zwischendurch schon Nullwerte zurückmeldet, weil kein Impuls eingegangen ist. Dafür habe ich einen entsprechenden Schwellenwert bei der Berechnung des Durchschnittswertes implementiert. Nicht schön, funktioniert aber für meine Zwecke.


Apr 25 2011

Upgrading the Fujitsu U2010 with a new 120GB SSD

Lately my Fujitsu U2010 was running low on disk space. Having already maxed out the SD card slot with a 32 GB SD card, the only way to go was to replace the internal ZIF-PATA drive. The first generation 64 GB Samsung SSD that I moved from my previous U810 to the new U2010 (see here) is no speed demon but a very reliable and robust performer featuring SLC flash memory. Naturally, I was looking for a faster, bigger and cheaper replacement drive. There are some more 1.8″ 128 GB ZIF drives available, most of them are MLC-based drives well over the 300 Euro price range. I came across a pretty cheap drive produced by a company called Mach Xtreme Technology, a newcomer in the storage segment. The MX-NANO ZIF 120 GB model (MXSSD1MNANOZ-120G) is available here in Germany at several online retailers priced at around 200 Euros. Not cheap compared to a speedy SATA SSD drive, but inexpensive in terms of how uncommon and rare this form factor is. And of course the drive is way cheaper than what I paid for the first-gen Samsung SSD back in 2008. :)
The Eastwho EWS720A controller used in the drive seems to be a solid performer with very good performance figures for what is possible in terms of the old PATA interface. The drive uses 25nm Intel/Micron MLC flash memory (29F64G08CBAAA).
The big problem with this drive is the very unfortunate alignment of the ZIF socket. Unlike any other 1.8″-drive I came across, this drive has to be installed upside-down due to the idiosyncratically flipped ZIF socket. I can only assume this drive was mainly designed as replacement disk for the last-gen iPods or first-gen MacBook Airs. The drive per se will not fit into the Fujitsu U2010 without modification. This is probably true for a lot of other UMPC and netbook devices, too.
The only way to get the drive installed is to remove the metal enclosure. The flat-ribbon ZIF cable can not be twisted due to its length. Removing the enclosure will ultimately void the warranty as you will have to break the seal on it. That is a risk I am willing to take. Either way, I have been running the drive for more than a month now and had no problems whatsoever. Great performance compared to the old Samsung drive.
Below are some obligatory benchmark screenshots, though I have to mention that Eastwho states that their controllers are not benchmark-friendly due to the techniques they employ to ensure low access times.


Apr 24 2011

Disable the auto-hide functionality of Ubuntu Unity 2D

The current version of Unity 2D that comes with Ubuntu 11.04 Beta 2 does not feature any sort of configuration panel and unfortunately there is no easy way to disable the auto-hide feature of the Unity 2D panel. Here is a short script that will give you an icon on your Unity panel to toggle (enable or disable) the auto-hide functionality:

Copy the following script to
/usr/local/bin/unity-2d-toggle-autohide.sh :

#!/bin/sh

if [ $(gconftool-2 --get /desktop/unity-2d/launcher/hide_mode) -eq 0 ]; then
        autoHide=1
        useStrut=false
else
        autoHide=0
        useStrut=true
fi

gconftool-2 --type=int --set /desktop/unity-2d/launcher/hide_mode $autoHide
gconftool-2 --type=bool --set /desktop/unity-2d/launcher/use_strut $useStrut

Now create a menu entry for this helper script and save it as
/usr/share/applications/unity-2d-toggle-autohide.desktop :

[Desktop Entry]
Name=Toggle Unity 2D Panel Auto-Hide
Comment=Enabled or disables Unity 2D's panel auto-hide functionality
Icon=gnome-fs-desktop
Exec=unity-2d-toggle-autohide.sh
Terminal=false
Type=Application
Categories=Utility

Finally from the Terminal start nautilus /usr/share/applications and add the new entry “Toggle Unity 2D Panel Auto-Hide” to your Unity 2D panel via dragging and dropping.

Clicking on it will toggle auto-hide.


Oct 14 2010

Installing Ubuntu 10.10 (Maverick Meerkat) on Fujitsu U820, U2010, U2020

Here are a few notes on how to get the most important hardware of the Fujitsu U820 / U2010 / U2020 working on Ubuntu 10.10 Maverick Meerkat.
Some of the hints might also apply to the Fujistu U810 / U1010 – make sure to ignore step 1 as these devices use the GMA 950 graphics chip which is working perfectly out of the box.

1. Installing the Intel GMA 500 graphics driver

The Ubuntu Wiki has all the necessary information here.

Basically one just needs to do as follows:

sudo add-apt-repository ppa:gma500/ppa 
sudo apt-get update
sudo apt-get install poulsbo-driver-2d poulsbo-driver-3d poulsbo-config

UPDATE: The following step is no longer required.

Unfortunately the version as of this writing does not support Compiz and thus you won’t get any of the funky special effects. However, there is a workaround available as described in the Ubuntu Wiki:

wget http://dl.dropbox.com/u/1338581/poulsbo/poulsbo-config_0.1.2%7E1004um3_all.deb
sudo dpkg --install poulsbo-config_0.1.2~E1004um3_all.deb
sudo apt-get install compiz

2. Installing the Fujitsu Buttons driver (fjbtndrv)

In order to get the buttons and auto-rotation functionality working we will need to compile and install the latest version of fjbtndrv.
The most current version as of this writing is 2.2.1. Please make sure you download the latest version here.

sudo apt-get install libxrandr-dev libxtst-dev libxi-dev libhal-dev
wget http://sourceforge.net/projects/fjbtndrv/files/fjbtndrv/2.2.1/fjbtndrv-2.2.1.tar.gz/download
tar xvzf fjbtndrv-2.2.1.tar.gz
cd fjbtndrv-2.2.1
./configure
make
sudo make install

3. Installing the Fujitsu Touchscreen driver

The touchscreen is working somewhat with the included evdev driver. I could not find a way to calibrate the touch screen via xinput etc. So I went back to using zmiq2‘s touch screen driver available here.
Version 0.3.7 won’t compile because some important USB functions were renamed in kernel 2.6.35.
Straight from the kernel 2.6.35 changelog:

USB: rename usb_buffer_alloc() and usb_buffer_free() users

For more clearance what the functions actually do,

usb_buffer_alloc() is renamed to usb_alloc_coherent()
usb_buffer_free() is renamed to usb_free_coherent()

So, one either needs to patch the fujitsu_usb_touchscreen.c manually and replace every occurrence of the aforementioned function names or we just move on and use the already patched version provided by nerd65536. I mirrored the file he posted to the hosting service linked to in the comments section of zmiq’s blog post.

wget http://katastrophos.net/downloads/fujitsu-usb-touchscreen-0.3.8.tar.gz
tar xvzf fujitsu-usb-touchscreen-0.3.8.tar.gz
cd fujitsu-usb-touchscreen-0.3.8
make
sudo make install

In order to have the auto-rotation functionality of fjbtndrv working with the fujitsu-usb-touchscreen driver we need to add a new startup item: Click on System -> Preferences -> Startup Applications and click Add. Enter following

    Name: Fujitsu Touchscreen Auto-Rotation
    Command: /usr/bin/fujitsu-touchscreen-rotate.py
    Comment: 

Click Add and Close the preferences dialog.

Finally, reboot the system.
Enter the BIOS and make sure that the setting Advanced -> Miscellaneous Configurations -> Touch Panel Setting is set to Tablet, ie. the same setting that is required to use the Tablet functionality in Win XP Tablet, Vista or Seven.

3.1. Calibrating the touchscreen

Once the system has booted and you are back on the Gnome desktop, start a Terminal session and run

fujitsu_touchscreen_calibration.py

to calibrate the touchscreen. Click on any corner of the visible screen (repeat a few times) and press the S key to save the settings.

3.2. Configuring the Right-Click feature

In order to get the feature “right-click by press and hold” go to System -> Preferences -> Mouse, click the tab “Accessibility” and check the option “Trigger secondary click by holding down the primary button“.

4. Fixing the repeating sound issue

If you are experiencing the Ubuntu startup jingle repeating over and over again, the snd_hda_intel module might have problems coping with the ALC269 chip in your device. In this case run the following command:

sudo gedit /etc/modprobe.d/alsa-base.conf

and add the following line to the end of the file:

options snd-hda-intel enable_msi=0

Save and finally reboot the system.


Sep 30 2010

Replacing the hinge and LCD back cover of a Fujitsu LifeBook U2010 / U820

I recently had to replace the hinge on my Fujitsu U2010, not because the hinge itself broke, but rather because I damaged the cable on one of my recent hacks. Fortunately I only damaged a part of the USB cable that connects the webcam to the mainboard. However, the cable harness is contained in the display hinge and can not be replaced separately, so I had to buy the whole part.
The replacement procedure is quite involving and delicate. While I was at it I also replaced the back cover of the display on my unit and replaced the pink back cover (my U2010 is a second hand unit) with a beautiful black cover. However, the particular cover I bought was from the US 3G version of the U820 – the one with the retractable antenna. I was not able to find the antenna assembly part so I had to brew my own…


Mar 28 2010

Quasar Media Player 0.96 beta 4 available

Quasar Media Player

I am pleased to announce beta 4 of Quasar Media Player.
This new version introduces some new features and big improvements in terms of performance and memory-usage.
The previously separate last.fm Audioscrobbler QScrobbler has been integrated into Quasar as add-on.
This release also marks the introduction of the Cover Art Downloader which uses the new open-source katastrophos.net Cover Art search engine to download cover art images for the new Cover Art Flow album browser.

Quasar Media Player on Windows 7Cover Art Downloader on OS X

Binaries for the previous platforms (Sharp Qtopia and pdaXrom) along with new binaries for Windows and OS X (universal) are available on the project’s homepage.


Mar 28 2010

Intel 5300 AGN WiFi in Fujitsu U2010/U820

I recently replaced the Atheros WiFi card in my Fujitsu U2010 with an Intel 5300 AGN half-sized Mini-PCIe card. The default Atheros Wifi card in the Fujitsu does not support MIMO and 802.11n on the 5 GHz band. This is a real let-down for a (draft-)N card.
Luckily the Intel 5300 AGN is one of the very few cards that are available in the half-sized Mini-PCIe form factor, so it fits into the Fujitsu U2010 and U820.

The process is quite involving and not for the faint of heart. Here are some snapshots of the process:

Some of the pictures show my 3G/HSDPA mod.
Also check out the interesting forum thread over at pocketables.


Aug 4 2009

Quick-and-dirty DIY 19″ rack

Why buy an expensive 19″ rack when you can build it yourself for 8 Euro and a bit of work?

There is no magic here. The ingredients are really simple actually: A few pieces of wood, screws and glue.
The construction is rigid. No angles are required due to self-stability of the quadratic frames. Just make sure the inner length of each edge is exactly 19″ (48.26 cm). Glue and screw the pieces together and that’s it.